All Downloads are FREE. Search and download functionalities are using the official Maven repository.

webapp.flowDiagram-b222e15a.22308258.js.map Maven / Gradle / Ivy

{"mappings":"A,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,I,E,A,W,iB,C,A,C,E,E,Q,A,E,Q,S,C,C,C,E,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,E,E,O,C,I,I,G,I,E,E,S,E,E,S,E,E,SC4CA,IAAM,EAAU,CACd,UArCgB,CAAC,EAAM,EAAM,KAC7B,AAAA,CAAA,EAAA,EAAA,CAAE,AAAF,EAAI,KAAK,CAAC,sBAAuB,GACjC,EAAK,MAAM,CAAC,QAAQ,MAAM,CAAC,UAAU,IAAI,CAAC,KAAM,EAAK,IAAM,EAAO,mBAAmB,IAAI,CAAC,QAAS,oBAAsB,GAAM,IAAI,CAAC,OAAQ,IAAI,IAAI,CAAC,OAAQ,GAAG,IAAI,CAAC,cAAe,KAAK,IAAI,CAAC,eAAgB,KAAK,IAAI,CAAC,SAAU,QAAQ,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAK,sBACnQ,EAAK,MAAM,CAAC,QAAQ,MAAM,CAAC,UAAU,IAAI,CAAC,KAAM,EAAK,IAAM,EAAO,iBAAiB,IAAI,CAAC,QAAS,oBAAsB,GAAM,IAAI,CAAC,OAAQ,GAAG,IAAI,CAAC,OAAQ,GAAG,IAAI,CAAC,cAAe,IAAI,IAAI,CAAC,eAAgB,IAAI,IAAI,CAAC,SAAU,QAAQ,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAK,qBAChQ,EAkCE,YAjCkB,CAAC,EAAM,EAAM,KAC/B,EAAK,MAAM,CAAC,QAAQ,MAAM,CAAC,UAAU,IAAI,CAAC,KAAM,EAAK,IAAM,EAAO,qBAAqB,IAAI,CAAC,QAAS,sBAAwB,GAAM,IAAI,CAAC,OAAQ,IAAI,IAAI,CAAC,OAAQ,GAAG,IAAI,CAAC,cAAe,KAAK,IAAI,CAAC,eAAgB,KAAK,IAAI,CAAC,SAAU,QAAQ,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAK,4BACvQ,EAAK,MAAM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","sources":["","node_modules/mermaid/dist/edges-066a5561.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n      var $parcel$global = globalThis;\n    var parcelRequire = $parcel$global[\"parcelRequire3bab\"];\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"hl1Sc\", function(module, exports) {\n\n$parcel$export(module.exports, \"a\", () => $c9f5d9d2defd176e$export$407448d2b89b1813);\n$parcel$export(module.exports, \"c\", () => $c9f5d9d2defd176e$export$db3b6bfb95261072);\n$parcel$export(module.exports, \"l\", () => $c9f5d9d2defd176e$export$882b5998b3b9117c);\n$parcel$export(module.exports, \"u\", () => $c9f5d9d2defd176e$export$3b14a55fb2447963);\n$parcel$export(module.exports, \"i\", () => $c9f5d9d2defd176e$export$23f2a1d2818174ef);\n$parcel$export(module.exports, \"e\", () => $c9f5d9d2defd176e$export$f1e1789686576879);\n$parcel$export(module.exports, \"s\", () => $c9f5d9d2defd176e$export$2408f22a0fab9ae5);\n$parcel$export(module.exports, \"b\", () => $c9f5d9d2defd176e$export$8b22cf2602fb60ce);\n$parcel$export(module.exports, \"p\", () => $c9f5d9d2defd176e$export$ffb5f4729a158638);\n$parcel$export(module.exports, \"g\", () => $c9f5d9d2defd176e$export$39b482c5e57630a8);\n$parcel$export(module.exports, \"k\", () => $c9f5d9d2defd176e$export$342063e11d6c3cad);\n$parcel$export(module.exports, \"m\", () => $c9f5d9d2defd176e$export$953cecd6e717a553);\n$parcel$export(module.exports, \"d\", () => $c9f5d9d2defd176e$export$4368d992c4eafac0);\n$parcel$export(module.exports, \"f\", () => $c9f5d9d2defd176e$export$2d1720544b23b823);\n$parcel$export(module.exports, \"j\", () => $c9f5d9d2defd176e$export$35e795649ee09318);\n$parcel$export(module.exports, \"h\", () => $c9f5d9d2defd176e$export$dda1d9f60106f0e9);\n\nvar $4jcZX = parcelRequire(\"4jcZX\");\n\nvar $2YFJl = parcelRequire(\"2YFJl\");\n\nvar $fmBVZ = parcelRequire(\"fmBVZ\");\nconst $c9f5d9d2defd176e$var$insertMarkers = (elem, markerArray, type, id)=>{\n    markerArray.forEach((markerName)=>{\n        $c9f5d9d2defd176e$var$markers[markerName](elem, type, id);\n    });\n};\nconst $c9f5d9d2defd176e$var$extension = (elem, type, id)=>{\n    (0, $4jcZX.l).trace(\"Making markers for \", id);\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).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\");\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).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\");\n};\nconst $c9f5d9d2defd176e$var$composition = (elem, type, id)=>{\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).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\");\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).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\");\n};\nconst $c9f5d9d2defd176e$var$aggregation = (elem, type, id)=>{\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).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\");\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).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\");\n};\nconst $c9f5d9d2defd176e$var$dependency = (elem, type, id)=>{\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).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\");\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).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\");\n};\nconst $c9f5d9d2defd176e$var$lollipop = (elem, type, id)=>{\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).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);\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).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);\n};\nconst $c9f5d9d2defd176e$var$point = (elem, type, id)=>{\n    elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).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\");\n    elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).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\");\n};\nconst $c9f5d9d2defd176e$var$circle$1 = (elem, type, id)=>{\n    elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).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\");\n    elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).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\");\n};\nconst $c9f5d9d2defd176e$var$cross = (elem, type, id)=>{\n    elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).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\");\n    elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).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\");\n};\nconst $c9f5d9d2defd176e$var$barb = (elem, type, id)=>{\n    elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-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\");\n};\nconst $c9f5d9d2defd176e$var$markers = {\n    extension: $c9f5d9d2defd176e$var$extension,\n    composition: $c9f5d9d2defd176e$var$composition,\n    aggregation: $c9f5d9d2defd176e$var$aggregation,\n    dependency: $c9f5d9d2defd176e$var$dependency,\n    lollipop: $c9f5d9d2defd176e$var$lollipop,\n    point: $c9f5d9d2defd176e$var$point,\n    circle: $c9f5d9d2defd176e$var$circle$1,\n    cross: $c9f5d9d2defd176e$var$cross,\n    barb: $c9f5d9d2defd176e$var$barb\n};\nconst $c9f5d9d2defd176e$export$407448d2b89b1813 = $c9f5d9d2defd176e$var$insertMarkers;\nfunction $c9f5d9d2defd176e$var$applyStyle(dom, styleFn) {\n    if (styleFn) dom.attr(\"style\", styleFn);\n}\nfunction $c9f5d9d2defd176e$var$addHtmlLabel(node) {\n    const fo = (0, $2YFJl.select)(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n    const div = fo.append(\"xhtml:div\");\n    const label = node.label;\n    const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n    div.html('\" + label + \"\");\n    $c9f5d9d2defd176e$var$applyStyle(div, node.labelStyle);\n    div.style(\"display\", \"inline-block\");\n    div.style(\"white-space\", \"nowrap\");\n    div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n    return fo.node();\n}\nconst $c9f5d9d2defd176e$var$createLabel = (_vertexText, style, isTitle, isNode)=>{\n    let vertexText = _vertexText || \"\";\n    if (typeof vertexText === \"object\") vertexText = vertexText[0];\n    if ((0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels)) {\n        vertexText = vertexText.replace(/\\\\n|\\n/g, \"
\");\n (0, $4jcZX.l).debug(\"vertexText\" + vertexText);\n const node = {\n isNode: isNode,\n label: (0, $4jcZX.M)(vertexText).replace(/fa[blrs]?:fa-[\\w-]+/g, // cspell: disable-line\n (s)=>``),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = $c9f5d9d2defd176e$var$addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") rows = vertexText.split(/\\\\n|\\n|/gi);\n else if (Array.isArray(vertexText)) rows = vertexText;\n else rows = [];\n for (const row of rows){\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) tspan.setAttribute(\"class\", \"title-row\");\n else tspan.setAttribute(\"class\", \"row\");\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\nconst $c9f5d9d2defd176e$export$db3b6bfb95261072 = $c9f5d9d2defd176e$var$createLabel;\nconst $c9f5d9d2defd176e$export$882b5998b3b9117c = async (parent, node, _classes, isNode)=>{\n let classes;\n const useHtmlLabels = node.useHtmlLabels || (0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels);\n if (!_classes) classes = \"node default\";\n else classes = _classes;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) labelText = \"\";\n else labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") text = (0, $fmBVZ.a)(label, (0, $4jcZX.d)((0, $4jcZX.M)(labelText), (0, $4jcZX.c)()), {\n useHtmlLabels: useHtmlLabels,\n width: node.width || (0, $4jcZX.c)().flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n });\n else text = textNode.appendChild($c9f5d9d2defd176e$export$db3b6bfb95261072((0, $4jcZX.d)((0, $4jcZX.M)(labelText), (0, $4jcZX.c)()), node.labelStyle, false, isNode));\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if ((0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = (0, $2YFJl.select)(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/]*>/g, \"\").trim() === \"\";\n await Promise.all([\n ...images\n ].map((img)=>new Promise((res)=>{\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = (0, $4jcZX.c)().fontSize ? (0, $4jcZX.c)().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else img.style.width = \"100%\";\n res(img);\n }\n setTimeout(()=>{\n if (img.complete) setupImage();\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })));\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n else label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n if (node.centerLabel) label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n label.insert(\"rect\", \":first-child\");\n return {\n shapeSvg: shapeSvg,\n bbox: bbox,\n halfPadding: halfPadding,\n label: label\n };\n};\nconst $c9f5d9d2defd176e$export$3b14a55fb2447963 = (node, element)=>{\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\nfunction $c9f5d9d2defd176e$var$insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\"points\", points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nfunction $c9f5d9d2defd176e$var$intersectNode(node, point2) {\n return node.intersect(point2);\n}\nfunction $c9f5d9d2defd176e$var$intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) dx = -dx;\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) dy = -dy;\n return {\n x: cx + dx,\n y: cy + dy\n };\n}\nfunction $c9f5d9d2defd176e$var$intersectCircle(node, rx, point2) {\n return $c9f5d9d2defd176e$var$intersectEllipse(node, rx, rx, point2);\n}\nfunction $c9f5d9d2defd176e$var$intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && $c9f5d9d2defd176e$var$sameSign(r3, r4)) return;\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && $c9f5d9d2defd176e$var$sameSign(r1, r2)) return;\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) return;\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return {\n x: x,\n y: y\n };\n}\nfunction $c9f5d9d2defd176e$var$sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\nfunction $c9f5d9d2defd176e$var$intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for(var i = 0; i < polyPoints.length; i++){\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect2 = $c9f5d9d2defd176e$var$intersectLine(node, point2, {\n x: left + p1.x,\n y: top + p1.y\n }, {\n x: left + p2.x,\n y: top + p2.y\n });\n if (intersect2) intersections.push(intersect2);\n }\n if (!intersections.length) return node;\n if (intersections.length > 1) intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n return intersections[0];\n}\nconst $c9f5d9d2defd176e$var$intersectRect = (node, point2)=>{\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) h = -h;\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) w = -w;\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return {\n x: x + sx,\n y: y + sy\n };\n};\nconst $c9f5d9d2defd176e$export$23f2a1d2818174ef = $c9f5d9d2defd176e$var$intersectRect;\nconst $c9f5d9d2defd176e$var$intersect = {\n node: $c9f5d9d2defd176e$var$intersectNode,\n circle: $c9f5d9d2defd176e$var$intersectCircle,\n ellipse: $c9f5d9d2defd176e$var$intersectEllipse,\n polygon: $c9f5d9d2defd176e$var$intersectPolygon,\n rect: $c9f5d9d2defd176e$export$23f2a1d2818174ef\n};\nconst $c9f5d9d2defd176e$var$note = async (parent, node)=>{\n const useHtmlLabels = node.useHtmlLabels || (0, $4jcZX.c)().flowchart.htmlLabels;\n if (!useHtmlLabels) node.centerLabel = true;\n const { shapeSvg: shapeSvg, bbox: bbox, halfPadding: halfPadding } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, \"node \" + node.classes, true);\n (0, $4jcZX.l).info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, rect2);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$note$1 = $c9f5d9d2defd176e$var$note;\nconst $c9f5d9d2defd176e$var$expandAndDeduplicateDirections = (directions)=>{\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions)switch(direction){\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n return uniqueDirections;\n};\nconst $c9f5d9d2defd176e$var$getArrowPoints = (duplicatedDirections, bbox, node)=>{\n const directions = $c9f5d9d2defd176e$var$expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) return [\n // Bottom\n {\n x: 0,\n y: 0\n },\n {\n x: midpoint,\n y: 0\n },\n {\n x: width / 2,\n y: 2 * padding\n },\n {\n x: width - midpoint,\n y: 0\n },\n {\n x: width,\n y: 0\n },\n // Right\n {\n x: width,\n y: -height / 3\n },\n {\n x: width + 2 * padding,\n y: -height / 2\n },\n {\n x: width,\n y: -2 * height / 3\n },\n {\n x: width,\n y: -height\n },\n // Top\n {\n x: width - midpoint,\n y: -height\n },\n {\n x: width / 2,\n y: -height - 2 * padding\n },\n {\n x: midpoint,\n y: -height\n },\n // Left\n {\n x: 0,\n y: -height\n },\n {\n x: 0,\n y: -2 * height / 3\n },\n {\n x: -2 * padding,\n y: -height / 2\n },\n {\n x: 0,\n y: -height / 3\n }\n ];\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) return [\n {\n x: midpoint,\n y: 0\n },\n {\n x: width - midpoint,\n y: 0\n },\n {\n x: width,\n y: -height / 2\n },\n {\n x: width - midpoint,\n y: -height\n },\n {\n x: midpoint,\n y: -height\n },\n {\n x: 0,\n y: -height / 2\n }\n ];\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) return [\n {\n x: 0,\n y: 0\n },\n {\n x: midpoint,\n y: -height\n },\n {\n x: width - midpoint,\n y: -height\n },\n {\n x: width,\n y: 0\n }\n ];\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) return [\n {\n x: 0,\n y: 0\n },\n {\n x: width,\n y: -midpoint\n },\n {\n x: width,\n y: -height + midpoint\n },\n {\n x: 0,\n y: -height\n }\n ];\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) return [\n {\n x: width,\n y: 0\n },\n {\n x: 0,\n y: -midpoint\n },\n {\n x: 0,\n y: -height + midpoint\n },\n {\n x: width,\n y: -height\n }\n ];\n if (directions.has(\"right\") && directions.has(\"left\")) return [\n {\n x: midpoint,\n y: 0\n },\n {\n x: midpoint,\n y: -padding\n },\n {\n x: width - midpoint,\n y: -padding\n },\n {\n x: width - midpoint,\n y: 0\n },\n {\n x: width,\n y: -height / 2\n },\n {\n x: width - midpoint,\n y: -height\n },\n {\n x: width - midpoint,\n y: -height + padding\n },\n {\n x: midpoint,\n y: -height + padding\n },\n {\n x: midpoint,\n y: -height\n },\n {\n x: 0,\n y: -height / 2\n }\n ];\n if (directions.has(\"up\") && directions.has(\"down\")) return [\n // Bottom center\n {\n x: width / 2,\n y: 0\n },\n // Left pont of bottom arrow\n {\n x: 0,\n y: -padding\n },\n {\n x: midpoint,\n y: -padding\n },\n // Left top over vertical section\n {\n x: midpoint,\n y: -height + padding\n },\n {\n x: 0,\n y: -height + padding\n },\n // Top of arrow\n {\n x: width / 2,\n y: -height\n },\n {\n x: width,\n y: -height + padding\n },\n // Top of right vertical bar\n {\n x: width - midpoint,\n y: -height + padding\n },\n {\n x: width - midpoint,\n y: -padding\n },\n {\n x: width,\n y: -padding\n }\n ];\n if (directions.has(\"right\") && directions.has(\"up\")) return [\n {\n x: 0,\n y: 0\n },\n {\n x: width,\n y: -midpoint\n },\n {\n x: 0,\n y: -height\n }\n ];\n if (directions.has(\"right\") && directions.has(\"down\")) return [\n {\n x: 0,\n y: 0\n },\n {\n x: width,\n y: 0\n },\n {\n x: 0,\n y: -height\n }\n ];\n if (directions.has(\"left\") && directions.has(\"up\")) return [\n {\n x: width,\n y: 0\n },\n {\n x: 0,\n y: -midpoint\n },\n {\n x: width,\n y: -height\n }\n ];\n if (directions.has(\"left\") && directions.has(\"down\")) return [\n {\n x: width,\n y: 0\n },\n {\n x: 0,\n y: 0\n },\n {\n x: width,\n y: -height\n }\n ];\n if (directions.has(\"right\")) return [\n {\n x: midpoint,\n y: -padding\n },\n {\n x: midpoint,\n y: -padding\n },\n {\n x: width - midpoint,\n y: -padding\n },\n {\n x: width - midpoint,\n y: 0\n },\n {\n x: width,\n y: -height / 2\n },\n {\n x: width - midpoint,\n y: -height\n },\n {\n x: width - midpoint,\n y: -height + padding\n },\n // top left corner of arrow\n {\n x: midpoint,\n y: -height + padding\n },\n {\n x: midpoint,\n y: -height + padding\n }\n ];\n if (directions.has(\"left\")) return [\n {\n x: midpoint,\n y: 0\n },\n {\n x: midpoint,\n y: -padding\n },\n // Two points, the right corners\n {\n x: width - midpoint,\n y: -padding\n },\n {\n x: width - midpoint,\n y: -height + padding\n },\n {\n x: midpoint,\n y: -height + padding\n },\n {\n x: midpoint,\n y: -height\n },\n {\n x: 0,\n y: -height / 2\n }\n ];\n if (directions.has(\"up\")) return [\n // Bottom center\n {\n x: midpoint,\n y: -padding\n },\n // Left top over vertical section\n {\n x: midpoint,\n y: -height + padding\n },\n {\n x: 0,\n y: -height + padding\n },\n // Top of arrow\n {\n x: width / 2,\n y: -height\n },\n {\n x: width,\n y: -height + padding\n },\n // Top of right vertical bar\n {\n x: width - midpoint,\n y: -height + padding\n },\n {\n x: width - midpoint,\n y: -padding\n }\n ];\n if (directions.has(\"down\")) return [\n // Bottom center\n {\n x: width / 2,\n y: 0\n },\n // Left pont of bottom arrow\n {\n x: 0,\n y: -padding\n },\n {\n x: midpoint,\n y: -padding\n },\n // Left top over vertical section\n {\n x: midpoint,\n y: -height + padding\n },\n {\n x: width - midpoint,\n y: -height + padding\n },\n {\n x: width - midpoint,\n y: -padding\n },\n {\n x: width,\n y: -padding\n }\n ];\n return [\n {\n x: 0,\n y: 0\n }\n ];\n};\nconst $c9f5d9d2defd176e$var$formatClass = (str)=>{\n if (str) return \" \" + str;\n return \"\";\n};\nconst $c9f5d9d2defd176e$var$getClassesFromNode = (node, otherClasses)=>{\n return `${otherClasses ? otherClasses : \"node default\"}${$c9f5d9d2defd176e$var$formatClass(node.classes)} ${$c9f5d9d2defd176e$var$formatClass(node.class)}`;\n};\nconst $c9f5d9d2defd176e$var$question = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n {\n x: s / 2,\n y: 0\n },\n {\n x: s,\n y: -s / 2\n },\n {\n x: s / 2,\n y: -s\n },\n {\n x: 0,\n y: -s / 2\n }\n ];\n (0, $4jcZX.l).info(\"Question main (Circle)\");\n const questionElem = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, questionElem);\n node.intersect = function(point2) {\n (0, $4jcZX.l).warn(\"Intersect called\");\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$choice = (parent, node)=>{\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n {\n x: 0,\n y: s / 2\n },\n {\n x: s / 2,\n y: 0\n },\n {\n x: 0,\n y: -s / 2\n },\n {\n x: -s / 2,\n y: 0\n }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\"points\", points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \"));\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.circle(node, 14, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$hexagon = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n {\n x: m,\n y: 0\n },\n {\n x: w - m,\n y: 0\n },\n {\n x: w,\n y: -h / 2\n },\n {\n x: w - m,\n y: -h\n },\n {\n x: m,\n y: -h\n },\n {\n x: 0,\n y: -h / 2\n }\n ];\n const hex = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, hex);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$block_arrow = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = $c9f5d9d2defd176e$var$getArrowPoints(node.directions, bbox, node);\n const blockArrow = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, blockArrow);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$rect_left_inv_arrow = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n {\n x: -h / 2,\n y: 0\n },\n {\n x: w,\n y: 0\n },\n {\n x: w,\n y: -h\n },\n {\n x: -h / 2,\n y: -h\n },\n {\n x: 0,\n y: -h / 2\n }\n ];\n const el = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$lean_right = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n {\n x: -2 * h / 6,\n y: 0\n },\n {\n x: w - h / 6,\n y: 0\n },\n {\n x: w + 2 * h / 6,\n y: -h\n },\n {\n x: h / 6,\n y: -h\n }\n ];\n const el = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, el);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$lean_left = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n {\n x: 2 * h / 6,\n y: 0\n },\n {\n x: w + h / 6,\n y: 0\n },\n {\n x: w - 2 * h / 6,\n y: -h\n },\n {\n x: -h / 6,\n y: -h\n }\n ];\n const el = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, el);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$trapezoid = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n {\n x: -2 * h / 6,\n y: 0\n },\n {\n x: w + 2 * h / 6,\n y: 0\n },\n {\n x: w - h / 6,\n y: -h\n },\n {\n x: h / 6,\n y: -h\n }\n ];\n const el = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, el);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$inv_trapezoid = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n {\n x: h / 6,\n y: 0\n },\n {\n x: w - h / 6,\n y: 0\n },\n {\n x: w + 2 * h / 6,\n y: -h\n },\n {\n x: -2 * h / 6,\n y: -h\n }\n ];\n const el = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, el);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$rect_right_inv_arrow = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n {\n x: 0,\n y: 0\n },\n {\n x: w + h / 2,\n y: 0\n },\n {\n x: w,\n y: -h / 2\n },\n {\n x: w + h / 2,\n y: -h\n },\n {\n x: 0,\n y: -h\n }\n ];\n const el = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, el);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$cylinder = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, el);\n node.intersect = function(point2) {\n const pos = $c9f5d9d2defd176e$var$intersect.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point2.y - node.y > 0) y = -y;\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$rect = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox, halfPadding: halfPadding } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, \"node \" + node.classes + \" \" + node.class, true);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n $c9f5d9d2defd176e$var$applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey)=>{\n (0, $4jcZX.l).warn(`Unknown node property ${propKey}`);\n });\n }\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, rect2);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$composite = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox, halfPadding: halfPadding } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, \"node \" + node.classes, true);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n $c9f5d9d2defd176e$var$applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey)=>{\n (0, $4jcZX.l).warn(`Unknown node property ${propKey}`);\n });\n }\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, rect2);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$labelRect = async (parent, node)=>{\n const { shapeSvg: shapeSvg } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, \"label\", true);\n (0, $4jcZX.l).trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n $c9f5d9d2defd176e$var$applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey)=>{\n (0, $4jcZX.l).warn(`Unknown node property ${propKey}`);\n });\n }\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, rect2);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nfunction $c9f5d9d2defd176e$var$applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length)=>{\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length)=>{\n strokeDashArray.push(0, length);\n };\n if (borders.includes(\"t\")) {\n (0, $4jcZX.l).debug(\"add top border\");\n addBorder(totalWidth);\n } else skipBorder(totalWidth);\n if (borders.includes(\"r\")) {\n (0, $4jcZX.l).debug(\"add right border\");\n addBorder(totalHeight);\n } else skipBorder(totalHeight);\n if (borders.includes(\"b\")) {\n (0, $4jcZX.l).debug(\"add bottom border\");\n addBorder(totalWidth);\n } else skipBorder(totalWidth);\n if (borders.includes(\"l\")) {\n (0, $4jcZX.l).debug(\"add left border\");\n addBorder(totalHeight);\n } else skipBorder(totalHeight);\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\nconst $c9f5d9d2defd176e$var$rectWithTitle = (parent, node)=>{\n let classes;\n if (!node.classes) classes = \"node default\";\n else classes = \"node \" + node.classes;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") title = text2[0];\n else title = text2;\n (0, $4jcZX.l).info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild($c9f5d9d2defd176e$export$db3b6bfb95261072(title, node.labelStyle, true, true));\n let bbox = {\n width: 0,\n height: 0\n };\n if ((0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = (0, $2YFJl.select)(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n (0, $4jcZX.l).info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild($c9f5d9d2defd176e$export$db3b6bfb95261072(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true));\n if ((0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = (0, $2YFJl.select)(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n (0, $2YFJl.select)(descr).attr(\"transform\", \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\");\n (0, $2YFJl.select)(text).attr(\"transform\", \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\");\n bbox = label.node().getBBox();\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\");\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, rect2);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$stadium = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, rect2);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$circle = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox, halfPadding: halfPadding } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n (0, $4jcZX.l).info(\"Circle main\");\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, circle2);\n node.intersect = function(point2) {\n (0, $4jcZX.l).info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return $c9f5d9d2defd176e$var$intersect.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$doublecircle = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox, halfPadding: halfPadding } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n (0, $4jcZX.l).info(\"DoubleCircle main\");\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, outerCircle);\n node.intersect = function(point2) {\n (0, $4jcZX.l).info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return $c9f5d9d2defd176e$var$intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$subroutine = async (parent, node)=>{\n const { shapeSvg: shapeSvg, bbox: bbox } = await $c9f5d9d2defd176e$export$882b5998b3b9117c(parent, node, $c9f5d9d2defd176e$var$getClassesFromNode(node, void 0), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n {\n x: 0,\n y: 0\n },\n {\n x: w,\n y: 0\n },\n {\n x: w,\n y: -h\n },\n {\n x: 0,\n y: -h\n },\n {\n x: 0,\n y: 0\n },\n {\n x: -8,\n y: 0\n },\n {\n x: w + 8,\n y: 0\n },\n {\n x: w + 8,\n y: -h\n },\n {\n x: -8,\n y: -h\n },\n {\n x: -8,\n y: 0\n }\n ];\n const el = $c9f5d9d2defd176e$var$insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, el);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$start = (parent, node)=>{\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, circle2);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$forkJoin = (parent, node, dir)=>{\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$end = (parent, node)=>{\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, circle2);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$class_box = (parent, node)=>{\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) classes = \"node default\";\n else classes = \"node \" + node.classes;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xab\" + node.classData.annotations[0] + \"\\xbb\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild($c9f5d9d2defd176e$export$db3b6bfb95261072(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if ((0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = (0, $2YFJl.select)(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if ((0, $4jcZX.c)().flowchart.htmlLabels) classTitleString += \"<\" + node.classData.type + \">\";\n else classTitleString += \"<\" + node.classData.type + \">\";\n }\n const classTitleLabel = labelContainer.node().appendChild($c9f5d9d2defd176e$export$db3b6bfb95261072(classTitleString, node.labelStyle, true, true));\n (0, $2YFJl.select)(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if ((0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = (0, $2YFJl.select)(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) maxWidth = classTitleBBox.width;\n const classAttributes = [];\n node.classData.members.forEach((member)=>{\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if ((0, $4jcZX.c)().flowchart.htmlLabels) parsedText = parsedText.replace(//g, \">\");\n const lbl = labelContainer.node().appendChild($c9f5d9d2defd176e$export$db3b6bfb95261072(parsedText, parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle, true, true));\n let bbox = lbl.getBBox();\n if ((0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = (0, $2YFJl.select)(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) maxWidth = bbox.width;\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((member)=>{\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if ((0, $4jcZX.c)().flowchart.htmlLabels) displayText = displayText.replace(//g, \">\");\n const lbl = labelContainer.node().appendChild($c9f5d9d2defd176e$export$db3b6bfb95261072(displayText, parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle, true, true));\n let bbox = lbl.getBBox();\n if ((0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = (0, $2YFJl.select)(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) maxWidth = bbox.width;\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n (0, $2YFJl.select)(interfaceLabel).attr(\"transform\", \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\");\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n (0, $2YFJl.select)(classTitleLabel).attr(\"transform\", \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\");\n verticalPos += classTitleBBox.height + rowPadding;\n 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);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl)=>{\n (0, $2YFJl.select)(lbl).attr(\"transform\", \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\");\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n 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);\n verticalPos += lineHeight;\n classMethods.forEach((lbl)=>{\n (0, $2YFJl.select)(lbl).attr(\"transform\", \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\");\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n $c9f5d9d2defd176e$export$3b14a55fb2447963(node, rect2);\n node.intersect = function(point2) {\n return $c9f5d9d2defd176e$var$intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst $c9f5d9d2defd176e$var$shapes = {\n rhombus: $c9f5d9d2defd176e$var$question,\n composite: $c9f5d9d2defd176e$var$composite,\n question: $c9f5d9d2defd176e$var$question,\n rect: $c9f5d9d2defd176e$var$rect,\n labelRect: $c9f5d9d2defd176e$var$labelRect,\n rectWithTitle: $c9f5d9d2defd176e$var$rectWithTitle,\n choice: $c9f5d9d2defd176e$var$choice,\n circle: $c9f5d9d2defd176e$var$circle,\n doublecircle: $c9f5d9d2defd176e$var$doublecircle,\n stadium: $c9f5d9d2defd176e$var$stadium,\n hexagon: $c9f5d9d2defd176e$var$hexagon,\n block_arrow: $c9f5d9d2defd176e$var$block_arrow,\n rect_left_inv_arrow: $c9f5d9d2defd176e$var$rect_left_inv_arrow,\n lean_right: $c9f5d9d2defd176e$var$lean_right,\n lean_left: $c9f5d9d2defd176e$var$lean_left,\n trapezoid: $c9f5d9d2defd176e$var$trapezoid,\n inv_trapezoid: $c9f5d9d2defd176e$var$inv_trapezoid,\n rect_right_inv_arrow: $c9f5d9d2defd176e$var$rect_right_inv_arrow,\n cylinder: $c9f5d9d2defd176e$var$cylinder,\n start: $c9f5d9d2defd176e$var$start,\n end: $c9f5d9d2defd176e$var$end,\n note: $c9f5d9d2defd176e$var$note$1,\n subroutine: $c9f5d9d2defd176e$var$subroutine,\n fork: $c9f5d9d2defd176e$var$forkJoin,\n join: $c9f5d9d2defd176e$var$forkJoin,\n class_box: $c9f5d9d2defd176e$var$class_box\n};\nlet $c9f5d9d2defd176e$var$nodeElems = {};\nconst $c9f5d9d2defd176e$export$f1e1789686576879 = async (elem, node, dir)=>{\n let newEl;\n let el;\n if (node.link) {\n let target;\n if ((0, $4jcZX.c)().securityLevel === \"sandbox\") target = \"_top\";\n else if (node.linkTarget) target = node.linkTarget || \"_blank\";\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await $c9f5d9d2defd176e$var$shapes[node.shape](newEl, node, dir);\n } else {\n el = await $c9f5d9d2defd176e$var$shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) el.attr(\"title\", node.tooltip);\n if (node.class) el.attr(\"class\", \"node default \" + node.class);\n newEl.attr(\"data-node\", \"true\");\n newEl.attr(\"data-id\", node.id);\n $c9f5d9d2defd176e$var$nodeElems[node.id] = newEl;\n if (node.haveCallback) $c9f5d9d2defd176e$var$nodeElems[node.id].attr(\"class\", $c9f5d9d2defd176e$var$nodeElems[node.id].attr(\"class\") + \" clickable\");\n return newEl;\n};\nconst $c9f5d9d2defd176e$export$2408f22a0fab9ae5 = (elem, node)=>{\n $c9f5d9d2defd176e$var$nodeElems[node.id] = elem;\n};\nconst $c9f5d9d2defd176e$export$8b22cf2602fb60ce = ()=>{\n $c9f5d9d2defd176e$var$nodeElems = {};\n};\nconst $c9f5d9d2defd176e$export$ffb5f4729a158638 = (node)=>{\n const el = $c9f5d9d2defd176e$var$nodeElems[node.id];\n (0, $4jcZX.l).trace(\"Transforming node\", node.diff, node, \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\");\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) el.attr(\"transform\", \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\");\n else el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n return diff;\n};\nconst $c9f5d9d2defd176e$export$39b482c5e57630a8 = ({ flowchart: flowchart })=>{\n var _a, _b;\n const subGraphTitleTopMargin = ((_a = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _a.top) ?? 0;\n const subGraphTitleBottomMargin = ((_b = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _b.bottom) ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin: subGraphTitleTopMargin,\n subGraphTitleBottomMargin: subGraphTitleBottomMargin,\n subGraphTitleTotalMargin: subGraphTitleTotalMargin\n };\n};\nconst $c9f5d9d2defd176e$var$markerOffsets = {\n aggregation: 18,\n extension: 18,\n composition: 18,\n dependency: 6,\n lollipop: 13.5,\n arrow_point: 5.3\n};\nfunction $c9f5d9d2defd176e$var$calculateDeltaAndAngle(point1, point2) {\n if (point1 === void 0 || point2 === void 0) return {\n angle: 0,\n deltaX: 0,\n deltaY: 0\n };\n point1 = $c9f5d9d2defd176e$var$pointTransformer(point1);\n point2 = $c9f5d9d2defd176e$var$pointTransformer(point2);\n const [x1, y1] = [\n point1.x,\n point1.y\n ];\n const [x2, y2] = [\n point2.x,\n point2.y\n ];\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n return {\n angle: Math.atan(deltaY / deltaX),\n deltaX: deltaX,\n deltaY: deltaY\n };\n}\nconst $c9f5d9d2defd176e$var$pointTransformer = (data)=>{\n if (Array.isArray(data)) return {\n x: data[0],\n y: data[1]\n };\n return data;\n};\nconst $c9f5d9d2defd176e$export$342063e11d6c3cad = (edge)=>{\n return {\n x: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn($c9f5d9d2defd176e$var$markerOffsets, edge.arrowTypeStart)) {\n const { angle: angle, deltaX: deltaX } = $c9f5d9d2defd176e$var$calculateDeltaAndAngle(data[0], data[1]);\n offset = $c9f5d9d2defd176e$var$markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn($c9f5d9d2defd176e$var$markerOffsets, edge.arrowTypeEnd)) {\n const { angle: angle, deltaX: deltaX } = $c9f5d9d2defd176e$var$calculateDeltaAndAngle(data[data.length - 1], data[data.length - 2]);\n offset = $c9f5d9d2defd176e$var$markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n }\n return $c9f5d9d2defd176e$var$pointTransformer(d).x + offset;\n },\n y: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn($c9f5d9d2defd176e$var$markerOffsets, edge.arrowTypeStart)) {\n const { angle: angle, deltaY: deltaY } = $c9f5d9d2defd176e$var$calculateDeltaAndAngle(data[0], data[1]);\n offset = $c9f5d9d2defd176e$var$markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn($c9f5d9d2defd176e$var$markerOffsets, edge.arrowTypeEnd)) {\n const { angle: angle, deltaY: deltaY } = $c9f5d9d2defd176e$var$calculateDeltaAndAngle(data[data.length - 1], data[data.length - 2]);\n offset = $c9f5d9d2defd176e$var$markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n }\n return $c9f5d9d2defd176e$var$pointTransformer(d).y + offset;\n }\n };\n};\nconst $c9f5d9d2defd176e$export$953cecd6e717a553 = (svgPath, edge, url, id, diagramType)=>{\n if (edge.arrowTypeStart) $c9f5d9d2defd176e$var$addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n if (edge.arrowTypeEnd) $c9f5d9d2defd176e$var$addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n};\nconst $c9f5d9d2defd176e$var$arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nconst $c9f5d9d2defd176e$var$addEdgeMarker = (svgPath, position, arrowType, url, id, diagramType)=>{\n const endMarkerType = $c9f5d9d2defd176e$var$arrowTypesMap[arrowType];\n if (!endMarkerType) {\n (0, $4jcZX.l).warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n};\nlet $c9f5d9d2defd176e$var$edgeLabels = {};\nlet $c9f5d9d2defd176e$var$terminalLabels = {};\nconst $c9f5d9d2defd176e$export$4368d992c4eafac0 = ()=>{\n $c9f5d9d2defd176e$var$edgeLabels = {};\n $c9f5d9d2defd176e$var$terminalLabels = {};\n};\nconst $c9f5d9d2defd176e$export$2d1720544b23b823 = (elem, edge)=>{\n const useHtmlLabels = (0, $4jcZX.m)((0, $4jcZX.c)().flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? (0, $fmBVZ.a)(elem, edge.label, {\n style: edge.labelStyle,\n useHtmlLabels: useHtmlLabels,\n addSvgBackground: true\n }) : $c9f5d9d2defd176e$export$db3b6bfb95261072(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = (0, $2YFJl.select)(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n $c9f5d9d2defd176e$var$edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = $c9f5d9d2defd176e$export$db3b6bfb95261072(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!$c9f5d9d2defd176e$var$terminalLabels[edge.id]) $c9f5d9d2defd176e$var$terminalLabels[edge.id] = {};\n $c9f5d9d2defd176e$var$terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n $c9f5d9d2defd176e$var$setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = $c9f5d9d2defd176e$export$db3b6bfb95261072(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!$c9f5d9d2defd176e$var$terminalLabels[edge.id]) $c9f5d9d2defd176e$var$terminalLabels[edge.id] = {};\n $c9f5d9d2defd176e$var$terminalLabels[edge.id].startRight = startEdgeLabelRight;\n $c9f5d9d2defd176e$var$setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = $c9f5d9d2defd176e$export$db3b6bfb95261072(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!$c9f5d9d2defd176e$var$terminalLabels[edge.id]) $c9f5d9d2defd176e$var$terminalLabels[edge.id] = {};\n $c9f5d9d2defd176e$var$terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n $c9f5d9d2defd176e$var$setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = $c9f5d9d2defd176e$export$db3b6bfb95261072(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!$c9f5d9d2defd176e$var$terminalLabels[edge.id]) $c9f5d9d2defd176e$var$terminalLabels[edge.id] = {};\n $c9f5d9d2defd176e$var$terminalLabels[edge.id].endRight = endEdgeLabelRight;\n $c9f5d9d2defd176e$var$setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\nfunction $c9f5d9d2defd176e$var$setTerminalWidth(fo, value) {\n if ((0, $4jcZX.c)().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\nconst $c9f5d9d2defd176e$export$35e795649ee09318 = (edge, paths)=>{\n (0, $4jcZX.l).debug(\"Moving label abc88 \", edge.id, edge.label, $c9f5d9d2defd176e$var$edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = (0, $4jcZX.c)();\n const { subGraphTitleTotalMargin: subGraphTitleTotalMargin } = $c9f5d9d2defd176e$export$39b482c5e57630a8(siteConfig);\n if (edge.label) {\n const el = $c9f5d9d2defd176e$var$edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = (0, $4jcZX.u).calcLabelPosition(path);\n (0, $4jcZX.l).debug(\"Moving label \" + edge.label + \" from (\", x, \",\", y, \") to (\", pos.x, \",\", pos.y, \") abc88\");\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = $c9f5d9d2defd176e$var$terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = (0, $4jcZX.u).calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = $c9f5d9d2defd176e$var$terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = (0, $4jcZX.u).calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = $c9f5d9d2defd176e$var$terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = (0, $4jcZX.u).calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = $c9f5d9d2defd176e$var$terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = (0, $4jcZX.u).calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n};\nconst $c9f5d9d2defd176e$var$outsideNode = (node, point2)=>{\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) return true;\n return false;\n};\nconst $c9f5d9d2defd176e$var$intersection = (node, outsidePoint, insidePoint)=>{\n (0, $4jcZX.l).debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) res.x = outsidePoint.x;\n if (Q === 0) res.y = outsidePoint.y;\n (0, $4jcZX.l).debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) r = outsidePoint.x - w - x;\n else r = x - w - outsidePoint.x;\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n (0, $4jcZX.l).debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, {\n _x: _x,\n _y: _y\n });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) _x = outsidePoint.x;\n if (Q === 0) _y = outsidePoint.y;\n return {\n x: _x,\n y: _y\n };\n }\n};\nconst $c9f5d9d2defd176e$var$cutPathAtIntersect = (_points, boundaryNode)=>{\n (0, $4jcZX.l).debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2)=>{\n if (!$c9f5d9d2defd176e$var$outsideNode(boundaryNode, point2) && !isInside) {\n const inter = $c9f5d9d2defd176e$var$intersection(boundaryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p)=>{\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e)=>e.x === inter.x && e.y === inter.y)) points.push(inter);\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) points.push(point2);\n }\n });\n return points;\n};\nconst $c9f5d9d2defd176e$export$dda1d9f60106f0e9 = function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n (0, $4jcZX.l).debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if ((head == null ? void 0 : head.intersect) && (tail == null ? void 0 : tail.intersect)) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n (0, $4jcZX.l).debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = $c9f5d9d2defd176e$var$cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n (0, $4jcZX.l).debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = $c9f5d9d2defd176e$var$cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p)=>!Number.isNaN(p.y));\n let curve = (0, $2YFJl.curveBasis);\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) curve = edge.curve;\n const { x: x, y: y } = $c9f5d9d2defd176e$export$342063e11d6c3cad(edge);\n const lineFunction = (0, $2YFJl.line)().x(x).y(y).curve(curve);\n let strokeClasses;\n switch(edge.thickness){\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch(edge.pattern){\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if ((0, $4jcZX.c)().flowchart.arrowMarkerAbsolute || (0, $4jcZX.c)().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n $c9f5d9d2defd176e$export$953cecd6e717a553(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) paths.updatedPath = points;\n paths.originalPath = edge.points;\n return paths;\n};\n\n});\n\n\n//# sourceMappingURL=flowDiagram-b222e15a.22308258.js.map\n","import { l as log, m as evaluate, c as getConfig, M as decodeEntities, d as sanitizeText, u as utils } from \"./mermaid-6dc72991.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { a as createText } from \"./createText-ca0c5216.js\";\nconst insertMarkers = (elem, markerArray, type, id) => {\n markerArray.forEach((markerName) => {\n markers[markerName](elem, type, id);\n });\n};\nconst extension = (elem, type, id) => {\n log.trace(\"Making markers for \", id);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionStart\").attr(\"class\", \"marker extension \" + type).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\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-extensionEnd\").attr(\"class\", \"marker extension \" + type).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\");\n};\nconst composition = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionStart\").attr(\"class\", \"marker composition \" + type).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\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-compositionEnd\").attr(\"class\", \"marker composition \" + type).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\");\n};\nconst aggregation = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationStart\").attr(\"class\", \"marker aggregation \" + type).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\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-aggregationEnd\").attr(\"class\", \"marker aggregation \" + type).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\");\n};\nconst dependency = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyStart\").attr(\"class\", \"marker dependency \" + type).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\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-dependencyEnd\").attr(\"class\", \"marker dependency \" + type).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\");\n};\nconst lollipop = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopStart\").attr(\"class\", \"marker lollipop \" + type).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);\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-lollipopEnd\").attr(\"class\", \"marker lollipop \" + type).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);\n};\nconst point = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointEnd\").attr(\"class\", \"marker \" + type).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\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-pointStart\").attr(\"class\", \"marker \" + type).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\");\n};\nconst circle$1 = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleEnd\").attr(\"class\", \"marker \" + type).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\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-circleStart\").attr(\"class\", \"marker \" + type).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\");\n};\nconst cross = (elem, type, id) => {\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossEnd\").attr(\"class\", \"marker cross \" + type).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\");\n elem.append(\"marker\").attr(\"id\", id + \"_\" + type + \"-crossStart\").attr(\"class\", \"marker cross \" + type).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\");\n};\nconst barb = (elem, type, id) => {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", id + \"_\" + type + \"-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\");\n};\nconst markers = {\n extension,\n composition,\n aggregation,\n dependency,\n lollipop,\n point,\n circle: circle$1,\n cross,\n barb\n};\nconst insertMarkers$1 = insertMarkers;\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlLabel(node) {\n const fo = select(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n '\" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\nconst createLabel = (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"
\");\n log.debug(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n // cspell: disable-line\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n};\nconst createLabel$1 = createLabel;\nconst labelHelper = async (parent, node, _classes, isNode) => {\n let classes;\n const useHtmlLabels = node.useHtmlLabels || evaluate(getConfig().flowchart.htmlLabels);\n if (!_classes) {\n classes = \"node default\";\n } else {\n classes = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(label, sanitizeText(decodeEntities(labelText), getConfig()), {\n useHtmlLabels,\n width: node.width || getConfig().flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n });\n } else {\n text = textNode.appendChild(\n createLabel$1(\n sanitizeText(decodeEntities(labelText), getConfig()),\n node.labelStyle,\n false,\n isNode\n )\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig().fontSize ? getConfig().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n};\nconst updateNodeBounds = (node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\nfunction intersectCircle(node, rx, point2) {\n return intersectEllipse(node, rx, rx, point2);\n}\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect2 = intersectLine(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect2) {\n intersections.push(intersect2);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\nconst intersectRect = (node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n};\nconst intersectRect$1 = intersectRect;\nconst intersect = {\n node: intersectNode,\n circle: intersectCircle,\n ellipse: intersectEllipse,\n polygon: intersectPolygon,\n rect: intersectRect$1\n};\nconst note = async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst note$1 = note;\nconst expandAndDeduplicateDirections = (directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n};\nconst getArrowPoints = (duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding },\n { x: midpoint, y: -padding },\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding },\n // top left corner of arrow\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding },\n // Two points, the right corners\n { x: width - midpoint, y: -padding },\n { x: width - midpoint, y: -height + padding },\n { x: midpoint, y: -height + padding },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: 0, y: -height + padding },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding },\n { x: midpoint, y: -padding },\n // Left top over vertical section\n { x: midpoint, y: -height + padding },\n { x: width - midpoint, y: -height + padding },\n { x: width - midpoint, y: -padding },\n { x: width, y: -padding }\n ];\n }\n return [{ x: 0, y: 0 }];\n};\nconst formatClass = (str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n};\nconst getClassesFromNode = (node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n};\nconst question = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst choice = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect.circle(node, 14, point2);\n };\n return shapeSvg;\n};\nconst hexagon = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst block_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_left_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_right = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst lean_left = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst inv_trapezoid = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst rect_right_inv_arrow = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst cylinder = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n};\nconst rect = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst composite = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst labelRect = async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = (length) => {\n strokeDashArray.push(length, 0);\n };\n const skipBorder = (length) => {\n strokeDashArray.push(0, length);\n };\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\nconst rectWithTitle = (parent, node) => {\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel$1(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel$1(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst stadium = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst circle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n};\nconst doublecircle = async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n};\nconst subroutine = async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect.polygon(node, points, point2);\n };\n return shapeSvg;\n};\nconst start = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst forkJoin = (parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst end = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle2);\n node.intersect = function(point2) {\n return intersect.circle(node, 7, point2);\n };\n return shapeSvg;\n};\nconst class_box = (parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes;\n if (!node.classes) {\n classes = \"node default\";\n } else {\n classes = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations && node.classData.annotations[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"«\" + node.classData.annotations[0] + \"»\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel$1(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel$1(classTitleString, node.labelStyle, true, true));\n select(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n parsedText = parsedText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n parsedText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n const classMethods = [];\n node.classData.methods.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let displayText = parsedInfo.displayText;\n if (getConfig().flowchart.htmlLabels) {\n displayText = displayText.replace(//g, \">\");\n }\n const lbl = labelContainer.node().appendChild(\n createLabel$1(\n displayText,\n parsedInfo.cssStyle ? parsedInfo.cssStyle : node.labelStyle,\n true,\n true\n )\n );\n let bbox = lbl.getBBox();\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const div = lbl.children[0];\n const dv = select(lbl);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight;\n if (hasInterface) {\n let diffX2 = (maxWidth - interfaceBBox.width) / 2;\n select(interfaceLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX2) + \", \" + -1 * maxHeight / 2 + \")\"\n );\n verticalPos = interfaceBBox.height + rowPadding;\n }\n let diffX = (maxWidth - classTitleBBox.width) / 2;\n select(classTitleLabel).attr(\n \"transform\",\n \"translate( \" + (-1 * maxWidth / 2 + diffX) + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n verticalPos += classTitleBBox.height + rowPadding;\n 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);\n verticalPos += lineHeight;\n classAttributes.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n verticalPos += lineHeight;\n 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);\n verticalPos += lineHeight;\n classMethods.forEach((lbl) => {\n select(lbl).attr(\n \"transform\",\n \"translate( \" + -maxWidth / 2 + \", \" + (-1 * maxHeight / 2 + verticalPos) + \")\"\n );\n const memberBBox = lbl == null ? void 0 : lbl.getBBox();\n verticalPos += ((memberBBox == null ? void 0 : memberBBox.height) ?? 0) + rowPadding;\n });\n rect2.attr(\"style\", node.style).attr(\"class\", \"outer title-state\").attr(\"x\", -maxWidth / 2 - halfPadding).attr(\"y\", -(maxHeight / 2) - halfPadding).attr(\"width\", maxWidth + node.padding).attr(\"height\", maxHeight + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect.rect(node, point2);\n };\n return shapeSvg;\n};\nconst shapes = {\n rhombus: question,\n composite,\n question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\n block_arrow,\n rect_left_inv_arrow,\n lean_right,\n lean_left,\n trapezoid,\n inv_trapezoid,\n rect_right_inv_arrow,\n cylinder,\n start,\n end,\n note: note$1,\n subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box\n};\nlet nodeElems = {};\nconst insertNode = async (elem, node, dir) => {\n let newEl;\n let el;\n if (node.link) {\n let target;\n if (getConfig().securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target);\n el = await shapes[node.shape](newEl, node, dir);\n } else {\n el = await shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n if (node.class) {\n el.attr(\"class\", \"node default \" + node.class);\n }\n newEl.attr(\"data-node\", \"true\");\n newEl.attr(\"data-id\", node.id);\n nodeElems[node.id] = newEl;\n if (node.haveCallback) {\n nodeElems[node.id].attr(\"class\", nodeElems[node.id].attr(\"class\") + \" clickable\");\n }\n return newEl;\n};\nconst setNodeElem = (elem, node) => {\n nodeElems[node.id] = elem;\n};\nconst clear$1 = () => {\n nodeElems = {};\n};\nconst positionNode = (node) => {\n const el = nodeElems[node.id];\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n};\nconst getSubGraphTitleMargins = ({\n flowchart\n}) => {\n var _a, _b;\n const subGraphTitleTopMargin = ((_a = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _a.top) ?? 0;\n const subGraphTitleBottomMargin = ((_b = flowchart == null ? void 0 : flowchart.subGraphTitleMargin) == null ? void 0 : _b.bottom) ?? 0;\n const subGraphTitleTotalMargin = subGraphTitleTopMargin + subGraphTitleBottomMargin;\n return {\n subGraphTitleTopMargin,\n subGraphTitleBottomMargin,\n subGraphTitleTotalMargin\n };\n};\nconst markerOffsets = {\n aggregation: 18,\n extension: 18,\n composition: 18,\n dependency: 6,\n lollipop: 13.5,\n arrow_point: 5.3\n};\nfunction calculateDeltaAndAngle(point1, point2) {\n if (point1 === void 0 || point2 === void 0) {\n return { angle: 0, deltaX: 0, deltaY: 0 };\n }\n point1 = pointTransformer(point1);\n point2 = pointTransformer(point2);\n const [x1, y1] = [point1.x, point1.y];\n const [x2, y2] = [point2.x, point2.y];\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n return { angle: Math.atan(deltaY / deltaX), deltaX, deltaY };\n}\nconst pointTransformer = (data) => {\n if (Array.isArray(data)) {\n return { x: data[0], y: data[1] };\n }\n return data;\n};\nconst getLineFunctionsWithOffset = (edge) => {\n return {\n x: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaX } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaX } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.cos(angle) * (deltaX >= 0 ? 1 : -1);\n }\n return pointTransformer(d).x + offset;\n },\n y: function(d, i, data) {\n let offset = 0;\n if (i === 0 && Object.hasOwn(markerOffsets, edge.arrowTypeStart)) {\n const { angle, deltaY } = calculateDeltaAndAngle(data[0], data[1]);\n offset = markerOffsets[edge.arrowTypeStart] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n } else if (i === data.length - 1 && Object.hasOwn(markerOffsets, edge.arrowTypeEnd)) {\n const { angle, deltaY } = calculateDeltaAndAngle(\n data[data.length - 1],\n data[data.length - 2]\n );\n offset = markerOffsets[edge.arrowTypeEnd] * Math.abs(Math.sin(angle)) * (deltaY >= 0 ? 1 : -1);\n }\n return pointTransformer(d).y + offset;\n }\n };\n};\nconst addEdgeMarkers = (svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n};\nconst arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nconst addEdgeMarker = (svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n};\nlet edgeLabels = {};\nlet terminalLabels = {};\nconst clear = () => {\n edgeLabels = {};\n terminalLabels = {};\n};\nconst insertEdgeLabel = (elem, edge) => {\n const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(elem, edge.label, {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n }) : createLabel$1(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel$1(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel$1(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel$1(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel$1(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n};\nfunction setTerminalWidth(fo, value) {\n if (getConfig().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\nconst positionEdgeLabel = (edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n};\nconst outsideNode = (node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n};\nconst intersection = (node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n};\nconst cutPathAtIntersect = (_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n};\nconst insertEdge = function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if ((head == null ? void 0 : head.intersect) && (tail == null ? void 0 : tail.intersect)) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig().flowchart.arrowMarkerAbsolute || getConfig().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n};\nexport {\n insertMarkers$1 as a,\n clear$1 as b,\n createLabel$1 as c,\n clear as d,\n insertNode as e,\n insertEdgeLabel as f,\n getSubGraphTitleMargins as g,\n insertEdge as h,\n intersectRect$1 as i,\n positionEdgeLabel as j,\n getLineFunctionsWithOffset as k,\n labelHelper as l,\n addEdgeMarkers as m,\n positionNode as p,\n setNodeElem as s,\n updateNodeBounds as u\n};\n"],"names":["$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","parcelRequire","$parcel$global","globalThis","parcelRegister","register","module","exports","$c9f5d9d2defd176e$export$407448d2b89b1813","$c9f5d9d2defd176e$export$db3b6bfb95261072","$c9f5d9d2defd176e$export$882b5998b3b9117c","$c9f5d9d2defd176e$export$3b14a55fb2447963","$c9f5d9d2defd176e$export$23f2a1d2818174ef","$c9f5d9d2defd176e$export$f1e1789686576879","$c9f5d9d2defd176e$export$2408f22a0fab9ae5","$c9f5d9d2defd176e$export$8b22cf2602fb60ce","$c9f5d9d2defd176e$export$ffb5f4729a158638","$c9f5d9d2defd176e$export$39b482c5e57630a8","$c9f5d9d2defd176e$export$342063e11d6c3cad","$c9f5d9d2defd176e$export$953cecd6e717a553","$c9f5d9d2defd176e$export$4368d992c4eafac0","$c9f5d9d2defd176e$export$2d1720544b23b823","$c9f5d9d2defd176e$export$35e795649ee09318","$c9f5d9d2defd176e$export$dda1d9f60106f0e9","$4jcZX","$2YFJl","$fmBVZ","$c9f5d9d2defd176e$var$markers","extension","elem","type","id","l","trace","append","attr","composition","aggregation","dependency","lollipop","point","style","circle","cross","barb","markerArray","forEach","markerName","_vertexText","isTitle","isNode","vertexText","m","c","flowchart","htmlLabels","replace","debug","$c9f5d9d2defd176e$var$addHtmlLabel","node","styleFn","fo","select","document","createElementNS","div","label","labelClass","html","labelStyle","dom","M","svgLabel","setAttribute","row","split","Array","isArray","tspan","setAttributeNS","textContent","trim","appendChild","parent","_classes","classes","labelText","text","useHtmlLabels","shapeSvg","insert","domId","textNode","bbox","labelType","a","d","width","wrappingWidth","getBBox","halfPadding","padding","children","dv","images","getElementsByTagName","noImgText","Promise","all","map","img","res","setupImage","display","flexDirection","parseInt","fontSize","window","getComputedStyle","body","minWidth","maxWidth","setTimeout","complete","addEventListener","getBoundingClientRect","height","centerLabel","element","$c9f5d9d2defd176e$var$insertPolygonShape","w","h","points","x","y","join","point2","sx","sy","dx","dy","Math","abs","rx","cx","cy","px","py","det","sqrt","ry","polyPoints","x1","y1","intersections","minX","Number","POSITIVE_INFINITY","minY","entry","min","left","top","i","length","p1","p2","intersect2","$c9f5d9d2defd176e$var$intersectLine","q1","q2","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","offset","num","push","sort","p","q","pdx","pdy","distp","qdx","qdy","distq","$c9f5d9d2defd176e$var$expandAndDeduplicateDirections","directions","uniqueDirections","Set","direction","add","$c9f5d9d2defd176e$var$getArrowPoints","duplicatedDirections","midpoint","has","$c9f5d9d2defd176e$var$formatClass","str","$c9f5d9d2defd176e$var$getClassesFromNode","otherClasses","class","$c9f5d9d2defd176e$var$question","info","questionElem","intersect","warn","$c9f5d9d2defd176e$var$intersect","$c9f5d9d2defd176e$var$applyNodePropertyBorders","rect2","borders","totalWidth","totalHeight","strokeDashArray","addBorder","skipBorder","includes","$c9f5d9d2defd176e$var$forkJoin","dir","$c9f5d9d2defd176e$var$shapes","rhombus","composite","positioned","props","propKeys","keys","delete","propKey","question","rect","labelRect","rectWithTitle","innerLine","text2","flat","title","textRows","slice","titleBox","descr","choice","choice2","circle2","doublecircle","circleGroup","outerCircle","innerCircle","gap","stadium","hexagon","hex","block_arrow","blockArrow","rect_left_inv_arrow","el","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","pos","start","end","note","subroutine","fork","class_box","topLine","bottomLine","maxHeight","labelContainer","verticalPos","hasInterface","classData","annotations","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleString","classTitleLabel","classTitleBBox","classAttributes","members","member","parsedInfo","getDisplayDetails","parsedText","displayText","lbl","cssStyle","classMethods","methods","diffX2","diffX","lineHeight","memberBBox","$c9f5d9d2defd176e$var$nodeElems","newEl","link","target","securityLevel","linkTarget","shape","tooltip","haveCallback","diff","clusterNode","_a","_b","subGraphTitleTopMargin","subGraphTitleMargin","subGraphTitleBottomMargin","bottom","subGraphTitleTotalMargin","$c9f5d9d2defd176e$var$markerOffsets","arrow_point","$c9f5d9d2defd176e$var$calculateDeltaAndAngle","point1","angle","deltaX","deltaY","$c9f5d9d2defd176e$var$pointTransformer","x2","y2","atan","data","edge","hasOwn","arrowTypeStart","cos","arrowTypeEnd","sin","svgPath","url","diagramType","$c9f5d9d2defd176e$var$addEdgeMarker","$c9f5d9d2defd176e$var$arrowTypesMap","arrow_cross","arrow_barb","arrow_circle","position","arrowType","endMarkerType","$c9f5d9d2defd176e$var$edgeLabels","$c9f5d9d2defd176e$var$terminalLabels","labelElement","addSvgBackground","edgeLabel","startLabelLeft","startLabelElement","startEdgeLabelLeft","inner","slBox","startLeft","$c9f5d9d2defd176e$var$setTerminalWidth","startLabelRight","startEdgeLabelRight","startRight","endLabelLeft","endLabelElement","endEdgeLabelLeft","endLeft","endLabelRight","endEdgeLabelRight","endRight","value","paths","path","updatedPath","originalPath","u","calcLabelPosition","calcTerminalLabelPosition","$c9f5d9d2defd176e$var$outsideNode","$c9f5d9d2defd176e$var$intersection","outsidePoint","insidePoint","JSON","stringify","r","Q","R","_x","_y","$c9f5d9d2defd176e$var$cutPathAtIntersect","_points","boundaryNode","lastPointOutside","isInside","inter","pointPresent","some","clusterDb","graph","strokeClasses","pointsHasChanged","tail","head","unshift","toCluster","fromCluster","reverse","lineData","filter","isNaN","curve","curveBasis","lineFunction","line","thickness","pattern","arrowMarkerAbsolute","state","location","protocol","host","pathname","search"],"version":3,"file":"flowDiagram-b222e15a.22308258.js.map"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy