{"version":3,"file":"static/js/mermaid-vendor.38df6fc3.js","mappings":"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AO,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAO,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAI,GAAI,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,EAAK,GAAIC,GAAO,CAAE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI1C,EAAK,GAAIC,EAAK,GAAIC,EAAK,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C,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAA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","sources":["../../node_modules/mermaid/dist/c4Diagram-817c8e44.js","../../node_modules/mermaid/dist/classDiagram-48ab76fb.js","../../node_modules/mermaid/dist/classDiagram-v2-8ecb0bfc.js","../../node_modules/mermaid/dist/createText-aebacdfe.js","../../node_modules/mermaid/dist/edges-80f1ebb6.js","../../node_modules/mermaid/node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/mermaid/node_modules/uuid/dist/esm-browser/regex.js","../../node_modules/mermaid/node_modules/uuid/dist/esm-browser/validate.js","../../node_modules/mermaid/node_modules/uuid/dist/esm-browser/parse.js","../../node_modules/mermaid/node_modules/uuid/dist/esm-browser/sha1.js","../../node_modules/mermaid/node_modules/uuid/dist/esm-browser/v5.js","../../node_modules/mermaid/node_modules/uuid/dist/esm-browser/v35.js","../../node_modules/mermaid/dist/erDiagram-9cfc3649.js","../../node_modules/mermaid/dist/flowDb-170db09d.js","../../node_modules/mermaid/dist/flowDiagram-61eb444c.js","../../node_modules/mermaid/dist/flowDiagram-v2-2f8f667a.js","../../node_modules/mermaid/dist/flowchart-elk-definition-e097735e.js","../../node_modules/mermaid/dist/ganttDiagram-db6931fb.js","../../node_modules/mermaid/dist/gitGraphDiagram-6b463803.js","../../node_modules/mermaid/dist/index-67a42d7d.js","../../node_modules/mermaid/dist/infoDiagram-a336098b.js","../../node_modules/mermaid/dist/journeyDiagram-deae3313.js","../../node_modules/mermaid/dist/mermaid-934d9bea.js","../../node_modules/mermaid/dist/mindmap-definition-617cf8dd.js","../../node_modules/mermaid/dist/pieDiagram-a5166659.js","../../node_modules/mermaid/dist/quadrantDiagram-6c355bbc.js","../../node_modules/mermaid/dist/requirementDiagram-4038b16c.js","../../node_modules/mermaid/dist/sankeyDiagram-6db3d513.js","../../node_modules/mermaid/dist/sequenceDiagram-465a088a.js","../../node_modules/mermaid/dist/stateDiagram-b620d43f.js","../../node_modules/mermaid/dist/stateDiagram-v2-2671c3d1.js","../../node_modules/mermaid/dist/styles-4ba6ed67.js","../../node_modules/mermaid/dist/styles-b966c4ae.js","../../node_modules/mermaid/dist/styles-bbc3fe3b.js","../../node_modules/mermaid/dist/svgDrawCommon-ad5ef572.js","../../node_modules/mermaid/dist/timeline-definition-732a2638.js","../../node_modules/mermaid/dist/xychartDiagram-f746c04c.js"],"sourcesContent":["import { s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, c as getConfig, d as sanitizeText, e as common, f as assignWithDepth, h as calculateTextWidth, l as log, i as configureSvgSize, w as wrapLabel, j as calculateTextHeight } from \"./mermaid-934d9bea.js\";\nimport { select } from \"d3\";\nimport { d as drawRect$1, g as getNoteRect } from \"./svgDrawCommon-ad5ef572.js\";\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 24], $V1 = [1, 25], $V2 = [1, 26], $V3 = [1, 27], $V4 = [1, 28], $V5 = [1, 63], $V6 = [1, 64], $V7 = [1, 65], $V8 = [1, 66], $V9 = [1, 67], $Va = [1, 68], $Vb = [1, 69], $Vc = [1, 29], $Vd = [1, 30], $Ve = [1, 31], $Vf = [1, 32], $Vg = [1, 33], $Vh = [1, 34], $Vi = [1, 35], $Vj = [1, 36], $Vk = [1, 37], $Vl = [1, 38], $Vm = [1, 39], $Vn = [1, 40], $Vo = [1, 41], $Vp = [1, 42], $Vq = [1, 43], $Vr = [1, 44], $Vs = [1, 45], $Vt = [1, 46], $Vu = [1, 47], $Vv = [1, 48], $Vw = [1, 50], $Vx = [1, 51], $Vy = [1, 52], $Vz = [1, 53], $VA = [1, 54], $VB = [1, 55], $VC = [1, 56], $VD = [1, 57], $VE = [1, 58], $VF = [1, 59], $VG = [1, 60], $VH = [14, 42], $VI = [14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VJ = [12, 14, 34, 36, 37, 38, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74], $VK = [1, 82], $VL = [1, 83], $VM = [1, 84], $VN = [1, 85], $VO = [12, 14, 42], $VP = [12, 14, 33, 42], $VQ = [12, 14, 33, 42, 76, 77, 79, 80], $VR = [12, 33], $VS = [34, 36, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"direction\": 5, \"direction_tb\": 6, \"direction_bt\": 7, \"direction_rl\": 8, \"direction_lr\": 9, \"graphConfig\": 10, \"C4_CONTEXT\": 11, \"NEWLINE\": 12, \"statements\": 13, \"EOF\": 14, \"C4_CONTAINER\": 15, \"C4_COMPONENT\": 16, \"C4_DYNAMIC\": 17, \"C4_DEPLOYMENT\": 18, \"otherStatements\": 19, \"diagramStatements\": 20, \"otherStatement\": 21, \"title\": 22, \"accDescription\": 23, \"acc_title\": 24, \"acc_title_value\": 25, \"acc_descr\": 26, \"acc_descr_value\": 27, \"acc_descr_multiline_value\": 28, \"boundaryStatement\": 29, \"boundaryStartStatement\": 30, \"boundaryStopStatement\": 31, \"boundaryStart\": 32, \"LBRACE\": 33, \"ENTERPRISE_BOUNDARY\": 34, \"attributes\": 35, \"SYSTEM_BOUNDARY\": 36, \"BOUNDARY\": 37, \"CONTAINER_BOUNDARY\": 38, \"NODE\": 39, \"NODE_L\": 40, \"NODE_R\": 41, \"RBRACE\": 42, \"diagramStatement\": 43, \"PERSON\": 44, \"PERSON_EXT\": 45, \"SYSTEM\": 46, \"SYSTEM_DB\": 47, \"SYSTEM_QUEUE\": 48, \"SYSTEM_EXT\": 49, \"SYSTEM_EXT_DB\": 50, \"SYSTEM_EXT_QUEUE\": 51, \"CONTAINER\": 52, \"CONTAINER_DB\": 53, \"CONTAINER_QUEUE\": 54, \"CONTAINER_EXT\": 55, \"CONTAINER_EXT_DB\": 56, \"CONTAINER_EXT_QUEUE\": 57, \"COMPONENT\": 58, \"COMPONENT_DB\": 59, \"COMPONENT_QUEUE\": 60, \"COMPONENT_EXT\": 61, \"COMPONENT_EXT_DB\": 62, \"COMPONENT_EXT_QUEUE\": 63, \"REL\": 64, \"BIREL\": 65, \"REL_U\": 66, \"REL_D\": 67, \"REL_L\": 68, \"REL_R\": 69, \"REL_B\": 70, \"REL_INDEX\": 71, \"UPDATE_EL_STYLE\": 72, \"UPDATE_REL_STYLE\": 73, \"UPDATE_LAYOUT_CONFIG\": 74, \"attribute\": 75, \"STR\": 76, \"STR_KEY\": 77, \"STR_VALUE\": 78, \"ATTRIBUTE\": 79, \"ATTRIBUTE_EMPTY\": 80, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 6: \"direction_tb\", 7: \"direction_bt\", 8: \"direction_rl\", 9: \"direction_lr\", 11: \"C4_CONTEXT\", 12: \"NEWLINE\", 14: \"EOF\", 15: \"C4_CONTAINER\", 16: \"C4_COMPONENT\", 17: \"C4_DYNAMIC\", 18: \"C4_DEPLOYMENT\", 22: \"title\", 23: \"accDescription\", 24: \"acc_title\", 25: \"acc_title_value\", 26: \"acc_descr\", 27: \"acc_descr_value\", 28: \"acc_descr_multiline_value\", 33: \"LBRACE\", 34: \"ENTERPRISE_BOUNDARY\", 36: \"SYSTEM_BOUNDARY\", 37: \"BOUNDARY\", 38: \"CONTAINER_BOUNDARY\", 39: \"NODE\", 40: \"NODE_L\", 41: \"NODE_R\", 42: \"RBRACE\", 44: \"PERSON\", 45: \"PERSON_EXT\", 46: \"SYSTEM\", 47: \"SYSTEM_DB\", 48: \"SYSTEM_QUEUE\", 49: \"SYSTEM_EXT\", 50: \"SYSTEM_EXT_DB\", 51: \"SYSTEM_EXT_QUEUE\", 52: \"CONTAINER\", 53: \"CONTAINER_DB\", 54: \"CONTAINER_QUEUE\", 55: \"CONTAINER_EXT\", 56: \"CONTAINER_EXT_DB\", 57: \"CONTAINER_EXT_QUEUE\", 58: \"COMPONENT\", 59: \"COMPONENT_DB\", 60: \"COMPONENT_QUEUE\", 61: \"COMPONENT_EXT\", 62: \"COMPONENT_EXT_DB\", 63: \"COMPONENT_EXT_QUEUE\", 64: \"REL\", 65: \"BIREL\", 66: \"REL_U\", 67: \"REL_D\", 68: \"REL_L\", 69: \"REL_R\", 70: \"REL_B\", 71: \"REL_INDEX\", 72: \"UPDATE_EL_STYLE\", 73: \"UPDATE_REL_STYLE\", 74: \"UPDATE_LAYOUT_CONFIG\", 76: \"STR\", 77: \"STR_KEY\", 78: \"STR_VALUE\", 79: \"ATTRIBUTE\", 80: \"ATTRIBUTE_EMPTY\" },\n productions_: [0, [3, 1], [3, 1], [5, 1], [5, 1], [5, 1], [5, 1], [4, 1], [10, 4], [10, 4], [10, 4], [10, 4], [10, 4], [13, 1], [13, 1], [13, 2], [19, 1], [19, 2], [19, 3], [21, 1], [21, 1], [21, 2], [21, 2], [21, 1], [29, 3], [30, 3], [30, 3], [30, 4], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [32, 2], [31, 1], [20, 1], [20, 2], [20, 3], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 1], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [43, 2], [35, 1], [35, 2], [75, 1], [75, 2], [75, 1], [75, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setDirection(\"TB\");\n break;\n case 4:\n yy.setDirection(\"BT\");\n break;\n case 5:\n yy.setDirection(\"RL\");\n break;\n case 6:\n yy.setDirection(\"LR\");\n break;\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n yy.setC4Type($$[$0 - 3]);\n break;\n case 19:\n yy.setTitle($$[$0].substring(6));\n this.$ = $$[$0].substring(6);\n break;\n case 20:\n yy.setAccDescription($$[$0].substring(15));\n this.$ = $$[$0].substring(15);\n break;\n case 21:\n this.$ = $$[$0].trim();\n yy.setTitle(this.$);\n break;\n case 22:\n case 23:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 28:\n case 29:\n $$[$0].splice(2, 0, \"ENTERPRISE\");\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 30:\n yy.addPersonOrSystemBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 31:\n $$[$0].splice(2, 0, \"CONTAINER\");\n yy.addContainerBoundary(...$$[$0]);\n this.$ = $$[$0];\n break;\n case 32:\n yy.addDeploymentNode(\"node\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 33:\n yy.addDeploymentNode(\"nodeL\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 34:\n yy.addDeploymentNode(\"nodeR\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 35:\n yy.popBoundaryParseStack();\n break;\n case 39:\n yy.addPersonOrSystem(\"person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 40:\n yy.addPersonOrSystem(\"external_person\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 41:\n yy.addPersonOrSystem(\"system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 42:\n yy.addPersonOrSystem(\"system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 43:\n yy.addPersonOrSystem(\"system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 44:\n yy.addPersonOrSystem(\"external_system\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 45:\n yy.addPersonOrSystem(\"external_system_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 46:\n yy.addPersonOrSystem(\"external_system_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 47:\n yy.addContainer(\"container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 48:\n yy.addContainer(\"container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 49:\n yy.addContainer(\"container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 50:\n yy.addContainer(\"external_container\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 51:\n yy.addContainer(\"external_container_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 52:\n yy.addContainer(\"external_container_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 53:\n yy.addComponent(\"component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 54:\n yy.addComponent(\"component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 55:\n yy.addComponent(\"component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 56:\n yy.addComponent(\"external_component\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 57:\n yy.addComponent(\"external_component_db\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 58:\n yy.addComponent(\"external_component_queue\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 60:\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 61:\n yy.addRel(\"birel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 62:\n yy.addRel(\"rel_u\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 63:\n yy.addRel(\"rel_d\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 64:\n yy.addRel(\"rel_l\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 65:\n yy.addRel(\"rel_r\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 66:\n yy.addRel(\"rel_b\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 67:\n $$[$0].splice(0, 1);\n yy.addRel(\"rel\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 68:\n yy.updateElStyle(\"update_el_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 69:\n yy.updateRelStyle(\"update_rel_style\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 70:\n yy.updateLayoutConfig(\"update_layout_config\", ...$$[$0]);\n this.$ = $$[$0];\n break;\n case 71:\n this.$ = [$$[$0]];\n break;\n case 72:\n $$[$0].unshift($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 73:\n case 75:\n this.$ = $$[$0].trim();\n break;\n case 74:\n let kv = {};\n kv[$$[$0 - 1].trim()] = $$[$0].trim();\n this.$ = kv;\n break;\n case 76:\n this.$ = \"\";\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 7: [1, 6], 8: [1, 7], 9: [1, 8], 10: 4, 11: [1, 9], 15: [1, 10], 16: [1, 11], 17: [1, 12], 18: [1, 13] }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 7] }, { 1: [2, 3] }, { 1: [2, 4] }, { 1: [2, 5] }, { 1: [2, 6] }, { 12: [1, 14] }, { 12: [1, 15] }, { 12: [1, 16] }, { 12: [1, 17] }, { 12: [1, 18] }, { 13: 19, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 70, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 71, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 72, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 13: 73, 19: 20, 20: 21, 21: 22, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 14: [1, 74] }, o($VH, [2, 13], { 43: 23, 29: 49, 30: 61, 32: 62, 20: 75, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VH, [2, 14]), o($VI, [2, 16], { 12: [1, 76] }), o($VH, [2, 36], { 12: [1, 77] }), o($VJ, [2, 19]), o($VJ, [2, 20]), { 25: [1, 78] }, { 27: [1, 79] }, o($VJ, [2, 23]), { 35: 80, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 86, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 87, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 88, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 89, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 90, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 91, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 92, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 93, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 94, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 95, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 96, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 97, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 98, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 99, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 100, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 101, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 102, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 103, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 104, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, o($VO, [2, 59]), { 35: 105, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 106, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 107, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 108, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 109, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 110, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 111, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 112, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 113, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 114, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 115, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 20: 116, 29: 49, 30: 61, 32: 62, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 43: 23, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }, { 12: [1, 118], 33: [1, 117] }, { 35: 119, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 120, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 121, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 122, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 123, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 124, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 35: 125, 75: 81, 76: $VK, 77: $VL, 79: $VM, 80: $VN }, { 14: [1, 126] }, { 14: [1, 127] }, { 14: [1, 128] }, { 14: [1, 129] }, { 1: [2, 8] }, o($VH, [2, 15]), o($VI, [2, 17], { 21: 22, 19: 130, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4 }), o($VH, [2, 37], { 19: 20, 20: 21, 21: 22, 43: 23, 29: 49, 30: 61, 32: 62, 13: 131, 22: $V0, 23: $V1, 24: $V2, 26: $V3, 28: $V4, 34: $V5, 36: $V6, 37: $V7, 38: $V8, 39: $V9, 40: $Va, 41: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi, 51: $Vj, 52: $Vk, 53: $Vl, 54: $Vm, 55: $Vn, 56: $Vo, 57: $Vp, 58: $Vq, 59: $Vr, 60: $Vs, 61: $Vt, 62: $Vu, 63: $Vv, 64: $Vw, 65: $Vx, 66: $Vy, 67: $Vz, 68: $VA, 69: $VB, 70: $VC, 71: $VD, 72: $VE, 73: $VF, 74: $VG }), o($VJ, [2, 21]), o($VJ, [2, 22]), o($VO, [2, 39]), o($VP, [2, 71], { 75: 81, 35: 132, 76: $VK, 77: $VL, 79: $VM, 80: $VN }), o($VQ, [2, 73]), { 78: [1, 133] }, o($VQ, [2, 75]), o($VQ, [2, 76]), o($VO, [2, 40]), o($VO, [2, 41]), o($VO, [2, 42]), o($VO, [2, 43]), o($VO, [2, 44]), o($VO, [2, 45]), o($VO, [2, 46]), o($VO, [2, 47]), o($VO, [2, 48]), o($VO, [2, 49]), o($VO, [2, 50]), o($VO, [2, 51]), o($VO, [2, 52]), o($VO, [2, 53]), o($VO, [2, 54]), o($VO, [2, 55]), o($VO, [2, 56]), o($VO, [2, 57]), o($VO, [2, 58]), o($VO, [2, 60]), o($VO, [2, 61]), o($VO, [2, 62]), o($VO, [2, 63]), o($VO, [2, 64]), o($VO, [2, 65]), o($VO, [2, 66]), o($VO, [2, 67]), o($VO, [2, 68]), o($VO, [2, 69]), o($VO, [2, 70]), { 31: 134, 42: [1, 135] }, { 12: [1, 136] }, { 33: [1, 137] }, o($VR, [2, 28]), o($VR, [2, 29]), o($VR, [2, 30]), o($VR, [2, 31]), o($VR, [2, 32]), o($VR, [2, 33]), o($VR, [2, 34]), { 1: [2, 9] }, { 1: [2, 10] }, { 1: [2, 11] }, { 1: [2, 12] }, o($VI, [2, 18]), o($VH, [2, 38]), o($VP, [2, 72]), o($VQ, [2, 74]), o($VO, [2, 24]), o($VO, [2, 35]), o($VS, [2, 25]), o($VS, [2, 26], { 12: [1, 138] }), o($VS, [2, 27])],\n defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 7], 5: [2, 3], 6: [2, 4], 7: [2, 5], 8: [2, 6], 74: [2, 8], 126: [2, 9], 127: [2, 10], 128: [2, 11], 129: [2, 12] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c2 = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c2 + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 6;\n case 1:\n return 7;\n case 2:\n return 8;\n case 3:\n return 9;\n case 4:\n return 22;\n case 5:\n return 23;\n case 6:\n this.begin(\"acc_title\");\n return 24;\n case 7:\n this.popState();\n return \"acc_title_value\";\n case 8:\n this.begin(\"acc_descr\");\n return 26;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n case 13:\n break;\n case 14:\n c;\n break;\n case 15:\n return 12;\n case 16:\n break;\n case 17:\n return 11;\n case 18:\n return 15;\n case 19:\n return 16;\n case 20:\n return 17;\n case 21:\n return 18;\n case 22:\n this.begin(\"person_ext\");\n return 45;\n case 23:\n this.begin(\"person\");\n return 44;\n case 24:\n this.begin(\"system_ext_queue\");\n return 51;\n case 25:\n this.begin(\"system_ext_db\");\n return 50;\n case 26:\n this.begin(\"system_ext\");\n return 49;\n case 27:\n this.begin(\"system_queue\");\n return 48;\n case 28:\n this.begin(\"system_db\");\n return 47;\n case 29:\n this.begin(\"system\");\n return 46;\n case 30:\n this.begin(\"boundary\");\n return 37;\n case 31:\n this.begin(\"enterprise_boundary\");\n return 34;\n case 32:\n this.begin(\"system_boundary\");\n return 36;\n case 33:\n this.begin(\"container_ext_queue\");\n return 57;\n case 34:\n this.begin(\"container_ext_db\");\n return 56;\n case 35:\n this.begin(\"container_ext\");\n return 55;\n case 36:\n this.begin(\"container_queue\");\n return 54;\n case 37:\n this.begin(\"container_db\");\n return 53;\n case 38:\n this.begin(\"container\");\n return 52;\n case 39:\n this.begin(\"container_boundary\");\n return 38;\n case 40:\n this.begin(\"component_ext_queue\");\n return 63;\n case 41:\n this.begin(\"component_ext_db\");\n return 62;\n case 42:\n this.begin(\"component_ext\");\n return 61;\n case 43:\n this.begin(\"component_queue\");\n return 60;\n case 44:\n this.begin(\"component_db\");\n return 59;\n case 45:\n this.begin(\"component\");\n return 58;\n case 46:\n this.begin(\"node\");\n return 39;\n case 47:\n this.begin(\"node\");\n return 39;\n case 48:\n this.begin(\"node_l\");\n return 40;\n case 49:\n this.begin(\"node_r\");\n return 41;\n case 50:\n this.begin(\"rel\");\n return 64;\n case 51:\n this.begin(\"birel\");\n return 65;\n case 52:\n this.begin(\"rel_u\");\n return 66;\n case 53:\n this.begin(\"rel_u\");\n return 66;\n case 54:\n this.begin(\"rel_d\");\n return 67;\n case 55:\n this.begin(\"rel_d\");\n return 67;\n case 56:\n this.begin(\"rel_l\");\n return 68;\n case 57:\n this.begin(\"rel_l\");\n return 68;\n case 58:\n this.begin(\"rel_r\");\n return 69;\n case 59:\n this.begin(\"rel_r\");\n return 69;\n case 60:\n this.begin(\"rel_b\");\n return 70;\n case 61:\n this.begin(\"rel_index\");\n return 71;\n case 62:\n this.begin(\"update_el_style\");\n return 72;\n case 63:\n this.begin(\"update_rel_style\");\n return 73;\n case 64:\n this.begin(\"update_layout_config\");\n return 74;\n case 65:\n return \"EOF_IN_STRUCT\";\n case 66:\n this.begin(\"attribute\");\n return \"ATTRIBUTE_EMPTY\";\n case 67:\n this.begin(\"attribute\");\n break;\n case 68:\n this.popState();\n this.popState();\n break;\n case 69:\n return 80;\n case 70:\n break;\n case 71:\n return 80;\n case 72:\n this.begin(\"string\");\n break;\n case 73:\n this.popState();\n break;\n case 74:\n return \"STR\";\n case 75:\n this.begin(\"string_kv\");\n break;\n case 76:\n this.begin(\"string_kv_key\");\n return \"STR_KEY\";\n case 77:\n this.popState();\n this.begin(\"string_kv_value\");\n break;\n case 78:\n return \"STR_VALUE\";\n case 79:\n this.popState();\n this.popState();\n break;\n case 80:\n return \"STR\";\n case 81:\n return \"LBRACE\";\n case 82:\n return \"RBRACE\";\n case 83:\n return \"SPACE\";\n case 84:\n return \"EOL\";\n case 85:\n return 14;\n }\n },\n rules: [/^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:title\\s[^#\\n;]+)/, /^(?:accDescription\\s[^#\\n;]+)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:C4Context\\b)/, /^(?:C4Container\\b)/, /^(?:C4Component\\b)/, /^(?:C4Dynamic\\b)/, /^(?:C4Deployment\\b)/, /^(?:Person_Ext\\b)/, /^(?:Person\\b)/, /^(?:SystemQueue_Ext\\b)/, /^(?:SystemDb_Ext\\b)/, /^(?:System_Ext\\b)/, /^(?:SystemQueue\\b)/, /^(?:SystemDb\\b)/, /^(?:System\\b)/, /^(?:Boundary\\b)/, /^(?:Enterprise_Boundary\\b)/, /^(?:System_Boundary\\b)/, /^(?:ContainerQueue_Ext\\b)/, /^(?:ContainerDb_Ext\\b)/, /^(?:Container_Ext\\b)/, /^(?:ContainerQueue\\b)/, /^(?:ContainerDb\\b)/, /^(?:Container\\b)/, /^(?:Container_Boundary\\b)/, /^(?:ComponentQueue_Ext\\b)/, /^(?:ComponentDb_Ext\\b)/, /^(?:Component_Ext\\b)/, /^(?:ComponentQueue\\b)/, /^(?:ComponentDb\\b)/, /^(?:Component\\b)/, /^(?:Deployment_Node\\b)/, /^(?:Node\\b)/, /^(?:Node_L\\b)/, /^(?:Node_R\\b)/, /^(?:Rel\\b)/, /^(?:BiRel\\b)/, /^(?:Rel_Up\\b)/, /^(?:Rel_U\\b)/, /^(?:Rel_Down\\b)/, /^(?:Rel_D\\b)/, /^(?:Rel_Left\\b)/, /^(?:Rel_L\\b)/, /^(?:Rel_Right\\b)/, /^(?:Rel_R\\b)/, /^(?:Rel_Back\\b)/, /^(?:RelIndex\\b)/, /^(?:UpdateElementStyle\\b)/, /^(?:UpdateRelStyle\\b)/, /^(?:UpdateLayoutConfig\\b)/, /^(?:$)/, /^(?:[(][ ]*[,])/, /^(?:[(])/, /^(?:[)])/, /^(?:,,)/, /^(?:,)/, /^(?:[ ]*[\"][\"])/, /^(?:[ ]*[\"])/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[ ]*[\\$])/, /^(?:[^=]*)/, /^(?:[=][ ]*[\"])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:[^,]+)/, /^(?:\\{)/, /^(?:\\})/, /^(?:[\\s]+)/, /^(?:[\\n\\r]+)/, /^(?:$)/],\n conditions: { \"acc_descr_multiline\": { \"rules\": [11, 12], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9], \"inclusive\": false }, \"acc_title\": { \"rules\": [7], \"inclusive\": false }, \"string_kv_value\": { \"rules\": [78, 79], \"inclusive\": false }, \"string_kv_key\": { \"rules\": [77], \"inclusive\": false }, \"string_kv\": { \"rules\": [76], \"inclusive\": false }, \"string\": { \"rules\": [73, 74], \"inclusive\": false }, \"attribute\": { \"rules\": [68, 69, 70, 71, 72, 75, 80], \"inclusive\": false }, \"update_layout_config\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_rel_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"update_el_style\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_b\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_d\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_u\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"rel_bi\": { \"rules\": [], \"inclusive\": false }, \"rel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_r\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node_l\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"node\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"index\": { \"rules\": [], \"inclusive\": false }, \"rel_index\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext_queue\": { \"rules\": [], \"inclusive\": false }, \"component_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"component\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"container\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"birel\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"enterprise_boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"boundary\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_queue\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system_db\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"system\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person_ext\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"person\": { \"rules\": [65, 66, 67, 68], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 81, 82, 83, 84, 85], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet c4ShapeArray = [];\nlet boundaryParseStack = [\"\"];\nlet currentBoundaryParse = \"global\";\nlet parentBoundaryParse = \"\";\nlet boundarys = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n];\nlet rels = [];\nlet title = \"\";\nlet wrapEnabled = false;\nlet c4ShapeInRow$1 = 4;\nlet c4BoundaryInRow$1 = 2;\nvar c4Type;\nconst getC4Type = function() {\n return c4Type;\n};\nconst setC4Type = function(c4TypeParam) {\n let sanitizedText = sanitizeText(c4TypeParam, getConfig());\n c4Type = sanitizedText;\n};\nconst addRel = function(type, from, to, label, techn, descr, sprite, tags, link) {\n if (type === void 0 || type === null || from === void 0 || from === null || to === void 0 || to === null || label === void 0 || label === null) {\n return;\n }\n let rel = {};\n const old = rels.find((rel2) => rel2.from === from && rel2.to === to);\n if (old) {\n rel = old;\n } else {\n rels.push(rel);\n }\n rel.type = type;\n rel.from = from;\n rel.to = to;\n rel.label = { text: label };\n if (techn === void 0 || techn === null) {\n rel.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n rel[key] = { text: value };\n } else {\n rel.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n rel.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n rel[key] = { text: value };\n } else {\n rel.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n rel[key] = value;\n } else {\n rel.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n rel[key] = value;\n } else {\n rel.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n rel[key] = value;\n } else {\n rel.link = link;\n }\n rel.wrap = autoWrap();\n};\nconst addPersonOrSystem = function(typeC4Shape, alias, label, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let personOrSystem = {};\n const old = c4ShapeArray.find((personOrSystem2) => personOrSystem2.alias === alias);\n if (old && alias === old.alias) {\n personOrSystem = old;\n } else {\n personOrSystem.alias = alias;\n c4ShapeArray.push(personOrSystem);\n }\n if (label === void 0 || label === null) {\n personOrSystem.label = { text: \"\" };\n } else {\n personOrSystem.label = { text: label };\n }\n if (descr === void 0 || descr === null) {\n personOrSystem.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n personOrSystem[key] = { text: value };\n } else {\n personOrSystem.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n personOrSystem[key] = value;\n } else {\n personOrSystem.link = link;\n }\n personOrSystem.typeC4Shape = { text: typeC4Shape };\n personOrSystem.parentBoundary = currentBoundaryParse;\n personOrSystem.wrap = autoWrap();\n};\nconst addContainer = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let container = {};\n const old = c4ShapeArray.find((container2) => container2.alias === alias);\n if (old && alias === old.alias) {\n container = old;\n } else {\n container.alias = alias;\n c4ShapeArray.push(container);\n }\n if (label === void 0 || label === null) {\n container.label = { text: \"\" };\n } else {\n container.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n container.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n container[key] = { text: value };\n } else {\n container.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n container.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n container[key] = { text: value };\n } else {\n container.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n container[key] = value;\n } else {\n container.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n container[key] = value;\n } else {\n container.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n container[key] = value;\n } else {\n container.link = link;\n }\n container.wrap = autoWrap();\n container.typeC4Shape = { text: typeC4Shape };\n container.parentBoundary = currentBoundaryParse;\n};\nconst addComponent = function(typeC4Shape, alias, label, techn, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let component = {};\n const old = c4ShapeArray.find((component2) => component2.alias === alias);\n if (old && alias === old.alias) {\n component = old;\n } else {\n component.alias = alias;\n c4ShapeArray.push(component);\n }\n if (label === void 0 || label === null) {\n component.label = { text: \"\" };\n } else {\n component.label = { text: label };\n }\n if (techn === void 0 || techn === null) {\n component.techn = { text: \"\" };\n } else {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n component[key] = { text: value };\n } else {\n component.techn = { text: techn };\n }\n }\n if (descr === void 0 || descr === null) {\n component.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n component[key] = { text: value };\n } else {\n component.descr = { text: descr };\n }\n }\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n component[key] = value;\n } else {\n component.sprite = sprite;\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n component[key] = value;\n } else {\n component.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n component[key] = value;\n } else {\n component.link = link;\n }\n component.wrap = autoWrap();\n component.typeC4Shape = { text: typeC4Shape };\n component.parentBoundary = currentBoundaryParse;\n};\nconst addPersonOrSystemBoundary = function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"system\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst addContainerBoundary = function(alias, label, type, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"container\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst addDeploymentNode = function(nodeType, alias, label, type, descr, sprite, tags, link) {\n if (alias === null || label === null) {\n return;\n }\n let boundary = {};\n const old = boundarys.find((boundary2) => boundary2.alias === alias);\n if (old && alias === old.alias) {\n boundary = old;\n } else {\n boundary.alias = alias;\n boundarys.push(boundary);\n }\n if (label === void 0 || label === null) {\n boundary.label = { text: \"\" };\n } else {\n boundary.label = { text: label };\n }\n if (type === void 0 || type === null) {\n boundary.type = { text: \"node\" };\n } else {\n if (typeof type === \"object\") {\n let [key, value] = Object.entries(type)[0];\n boundary[key] = { text: value };\n } else {\n boundary.type = { text: type };\n }\n }\n if (descr === void 0 || descr === null) {\n boundary.descr = { text: \"\" };\n } else {\n if (typeof descr === \"object\") {\n let [key, value] = Object.entries(descr)[0];\n boundary[key] = { text: value };\n } else {\n boundary.descr = { text: descr };\n }\n }\n if (typeof tags === \"object\") {\n let [key, value] = Object.entries(tags)[0];\n boundary[key] = value;\n } else {\n boundary.tags = tags;\n }\n if (typeof link === \"object\") {\n let [key, value] = Object.entries(link)[0];\n boundary[key] = value;\n } else {\n boundary.link = link;\n }\n boundary.nodeType = nodeType;\n boundary.parentBoundary = currentBoundaryParse;\n boundary.wrap = autoWrap();\n parentBoundaryParse = currentBoundaryParse;\n currentBoundaryParse = alias;\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst popBoundaryParseStack = function() {\n currentBoundaryParse = parentBoundaryParse;\n boundaryParseStack.pop();\n parentBoundaryParse = boundaryParseStack.pop();\n boundaryParseStack.push(parentBoundaryParse);\n};\nconst updateElStyle = function(typeC4Shape, elementName, bgColor, fontColor, borderColor, shadowing, shape, sprite, techn, legendText, legendSprite) {\n let old = c4ShapeArray.find((element) => element.alias === elementName);\n if (old === void 0) {\n old = boundarys.find((element) => element.alias === elementName);\n if (old === void 0) {\n return;\n }\n }\n if (bgColor !== void 0 && bgColor !== null) {\n if (typeof bgColor === \"object\") {\n let [key, value] = Object.entries(bgColor)[0];\n old[key] = value;\n } else {\n old.bgColor = bgColor;\n }\n }\n if (fontColor !== void 0 && fontColor !== null) {\n if (typeof fontColor === \"object\") {\n let [key, value] = Object.entries(fontColor)[0];\n old[key] = value;\n } else {\n old.fontColor = fontColor;\n }\n }\n if (borderColor !== void 0 && borderColor !== null) {\n if (typeof borderColor === \"object\") {\n let [key, value] = Object.entries(borderColor)[0];\n old[key] = value;\n } else {\n old.borderColor = borderColor;\n }\n }\n if (shadowing !== void 0 && shadowing !== null) {\n if (typeof shadowing === \"object\") {\n let [key, value] = Object.entries(shadowing)[0];\n old[key] = value;\n } else {\n old.shadowing = shadowing;\n }\n }\n if (shape !== void 0 && shape !== null) {\n if (typeof shape === \"object\") {\n let [key, value] = Object.entries(shape)[0];\n old[key] = value;\n } else {\n old.shape = shape;\n }\n }\n if (sprite !== void 0 && sprite !== null) {\n if (typeof sprite === \"object\") {\n let [key, value] = Object.entries(sprite)[0];\n old[key] = value;\n } else {\n old.sprite = sprite;\n }\n }\n if (techn !== void 0 && techn !== null) {\n if (typeof techn === \"object\") {\n let [key, value] = Object.entries(techn)[0];\n old[key] = value;\n } else {\n old.techn = techn;\n }\n }\n if (legendText !== void 0 && legendText !== null) {\n if (typeof legendText === \"object\") {\n let [key, value] = Object.entries(legendText)[0];\n old[key] = value;\n } else {\n old.legendText = legendText;\n }\n }\n if (legendSprite !== void 0 && legendSprite !== null) {\n if (typeof legendSprite === \"object\") {\n let [key, value] = Object.entries(legendSprite)[0];\n old[key] = value;\n } else {\n old.legendSprite = legendSprite;\n }\n }\n};\nconst updateRelStyle = function(typeC4Shape, from, to, textColor, lineColor, offsetX, offsetY) {\n const old = rels.find((rel) => rel.from === from && rel.to === to);\n if (old === void 0) {\n return;\n }\n if (textColor !== void 0 && textColor !== null) {\n if (typeof textColor === \"object\") {\n let [key, value] = Object.entries(textColor)[0];\n old[key] = value;\n } else {\n old.textColor = textColor;\n }\n }\n if (lineColor !== void 0 && lineColor !== null) {\n if (typeof lineColor === \"object\") {\n let [key, value] = Object.entries(lineColor)[0];\n old[key] = value;\n } else {\n old.lineColor = lineColor;\n }\n }\n if (offsetX !== void 0 && offsetX !== null) {\n if (typeof offsetX === \"object\") {\n let [key, value] = Object.entries(offsetX)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetX = parseInt(offsetX);\n }\n }\n if (offsetY !== void 0 && offsetY !== null) {\n if (typeof offsetY === \"object\") {\n let [key, value] = Object.entries(offsetY)[0];\n old[key] = parseInt(value);\n } else {\n old.offsetY = parseInt(offsetY);\n }\n }\n};\nconst updateLayoutConfig = function(typeC4Shape, c4ShapeInRowParam, c4BoundaryInRowParam) {\n let c4ShapeInRowValue = c4ShapeInRow$1;\n let c4BoundaryInRowValue = c4BoundaryInRow$1;\n if (typeof c4ShapeInRowParam === \"object\") {\n const value = Object.values(c4ShapeInRowParam)[0];\n c4ShapeInRowValue = parseInt(value);\n } else {\n c4ShapeInRowValue = parseInt(c4ShapeInRowParam);\n }\n if (typeof c4BoundaryInRowParam === \"object\") {\n const value = Object.values(c4BoundaryInRowParam)[0];\n c4BoundaryInRowValue = parseInt(value);\n } else {\n c4BoundaryInRowValue = parseInt(c4BoundaryInRowParam);\n }\n if (c4ShapeInRowValue >= 1) {\n c4ShapeInRow$1 = c4ShapeInRowValue;\n }\n if (c4BoundaryInRowValue >= 1) {\n c4BoundaryInRow$1 = c4BoundaryInRowValue;\n }\n};\nconst getC4ShapeInRow = function() {\n return c4ShapeInRow$1;\n};\nconst getC4BoundaryInRow = function() {\n return c4BoundaryInRow$1;\n};\nconst getCurrentBoundaryParse = function() {\n return currentBoundaryParse;\n};\nconst getParentBoundaryParse = function() {\n return parentBoundaryParse;\n};\nconst getC4ShapeArray = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return c4ShapeArray;\n } else {\n return c4ShapeArray.filter((personOrSystem) => {\n return personOrSystem.parentBoundary === parentBoundary;\n });\n }\n};\nconst getC4Shape = function(alias) {\n return c4ShapeArray.find((personOrSystem) => personOrSystem.alias === alias);\n};\nconst getC4ShapeKeys = function(parentBoundary) {\n return Object.keys(getC4ShapeArray(parentBoundary));\n};\nconst getBoundarys = function(parentBoundary) {\n if (parentBoundary === void 0 || parentBoundary === null) {\n return boundarys;\n } else {\n return boundarys.filter((boundary) => boundary.parentBoundary === parentBoundary);\n }\n};\nconst getRels = function() {\n return rels;\n};\nconst getTitle = function() {\n return title;\n};\nconst setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\nconst autoWrap = function() {\n return wrapEnabled;\n};\nconst clear = function() {\n c4ShapeArray = [];\n boundarys = [\n {\n alias: \"global\",\n label: { text: \"global\" },\n type: { text: \"global\" },\n tags: null,\n link: null,\n parentBoundary: \"\"\n }\n ];\n parentBoundaryParse = \"\";\n currentBoundaryParse = \"global\";\n boundaryParseStack = [\"\"];\n rels = [];\n boundaryParseStack = [\"\"];\n title = \"\";\n wrapEnabled = false;\n c4ShapeInRow$1 = 4;\n c4BoundaryInRow$1 = 2;\n};\nconst LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25\n};\nconst ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\nconst PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\nconst setTitle = function(txt) {\n let sanitizedText = sanitizeText(txt, getConfig());\n title = sanitizedText;\n};\nconst db = {\n addPersonOrSystem,\n addPersonOrSystemBoundary,\n addContainer,\n addContainerBoundary,\n addComponent,\n addDeploymentNode,\n popBoundaryParseStack,\n addRel,\n updateElStyle,\n updateRelStyle,\n updateLayoutConfig,\n autoWrap,\n setWrap,\n getC4ShapeArray,\n getC4Shape,\n getC4ShapeKeys,\n getBoundarys,\n getCurrentBoundaryParse,\n getParentBoundaryParse,\n getRels,\n getTitle,\n getC4Type,\n getC4ShapeInRow,\n getC4BoundaryInRow,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => getConfig().c4,\n clear,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n setTitle,\n setC4Type\n // apply,\n};\nconst drawRect = function(elem, rectData) {\n return drawRect$1(elem, rectData);\n};\nconst drawImage = function(elem, width, height, x, y, link) {\n const imageElem = elem.append(\"image\");\n imageElem.attr(\"width\", width);\n imageElem.attr(\"height\", height);\n imageElem.attr(\"x\", x);\n imageElem.attr(\"y\", y);\n let sanitizedLink = link.startsWith(\"data:image/png;base64\") ? link : sanitizeUrl(link);\n imageElem.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawRels$1 = (elem, rels2, conf2) => {\n const relsElem = elem.append(\"g\");\n let i = 0;\n for (let rel of rels2) {\n let textColor = rel.textColor ? rel.textColor : \"#444444\";\n let strokeColor = rel.lineColor ? rel.lineColor : \"#444444\";\n let offsetX = rel.offsetX ? parseInt(rel.offsetX) : 0;\n let offsetY = rel.offsetY ? parseInt(rel.offsetY) : 0;\n let url = \"\";\n if (i === 0) {\n let line = relsElem.append(\"line\");\n line.attr(\"x1\", rel.startPoint.x);\n line.attr(\"y1\", rel.startPoint.y);\n line.attr(\"x2\", rel.endPoint.x);\n line.attr(\"y2\", rel.endPoint.y);\n line.attr(\"stroke-width\", \"1\");\n line.attr(\"stroke\", strokeColor);\n line.style(\"fill\", \"none\");\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n i = -1;\n } else {\n let line = relsElem.append(\"path\");\n line.attr(\"fill\", \"none\").attr(\"stroke-width\", \"1\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,starty Qcontrolx,controly stopx,stopy \".replaceAll(\"startx\", rel.startPoint.x).replaceAll(\"starty\", rel.startPoint.y).replaceAll(\n \"controlx\",\n rel.startPoint.x + (rel.endPoint.x - rel.startPoint.x) / 2 - (rel.endPoint.x - rel.startPoint.x) / 4\n ).replaceAll(\"controly\", rel.startPoint.y + (rel.endPoint.y - rel.startPoint.y) / 2).replaceAll(\"stopx\", rel.endPoint.x).replaceAll(\"stopy\", rel.endPoint.y)\n );\n if (rel.type !== \"rel_b\") {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (rel.type === \"birel\" || rel.type === \"rel_b\") {\n line.attr(\"marker-start\", \"url(\" + url + \"#arrowend)\");\n }\n }\n let messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n rel.label.text,\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + offsetY,\n rel.label.width,\n rel.label.height,\n { fill: textColor },\n messageConf\n );\n if (rel.techn && rel.techn.text !== \"\") {\n messageConf = conf2.messageFont();\n _drawTextCandidateFunc(conf2)(\n \"[\" + rel.techn.text + \"]\",\n relsElem,\n Math.min(rel.startPoint.x, rel.endPoint.x) + Math.abs(rel.endPoint.x - rel.startPoint.x) / 2 + offsetX,\n Math.min(rel.startPoint.y, rel.endPoint.y) + Math.abs(rel.endPoint.y - rel.startPoint.y) / 2 + conf2.messageFontSize + 5 + offsetY,\n Math.max(rel.label.width, rel.techn.width),\n rel.techn.height,\n { fill: textColor, \"font-style\": \"italic\" },\n messageConf\n );\n }\n }\n};\nconst drawBoundary$1 = function(elem, boundary, conf2) {\n const boundaryElem = elem.append(\"g\");\n let fillColor = boundary.bgColor ? boundary.bgColor : \"none\";\n let strokeColor = boundary.borderColor ? boundary.borderColor : \"#444444\";\n let fontColor = boundary.fontColor ? boundary.fontColor : \"black\";\n let attrsValue = { \"stroke-width\": 1, \"stroke-dasharray\": \"7.0,7.0\" };\n if (boundary.nodeType) {\n attrsValue = { \"stroke-width\": 1 };\n }\n let rectData = {\n x: boundary.x,\n y: boundary.y,\n fill: fillColor,\n stroke: strokeColor,\n width: boundary.width,\n height: boundary.height,\n rx: 2.5,\n ry: 2.5,\n attrs: attrsValue\n };\n drawRect(boundaryElem, rectData);\n let boundaryConf = conf2.boundaryFont();\n boundaryConf.fontWeight = \"bold\";\n boundaryConf.fontSize = boundaryConf.fontSize + 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.label.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.label.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n if (boundary.type && boundary.type.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.type.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.type.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n if (boundary.descr && boundary.descr.text !== \"\") {\n boundaryConf = conf2.boundaryFont();\n boundaryConf.fontSize = boundaryConf.fontSize - 2;\n boundaryConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n boundary.descr.text,\n boundaryElem,\n boundary.x,\n boundary.y + boundary.descr.Y,\n boundary.width,\n boundary.height,\n { fill: \"#444444\" },\n boundaryConf\n );\n }\n};\nconst drawC4Shape = function(elem, c4Shape, conf2) {\n var _a;\n let fillColor = c4Shape.bgColor ? c4Shape.bgColor : conf2[c4Shape.typeC4Shape.text + \"_bg_color\"];\n let strokeColor = c4Shape.borderColor ? c4Shape.borderColor : conf2[c4Shape.typeC4Shape.text + \"_border_color\"];\n let fontColor = c4Shape.fontColor ? c4Shape.fontColor : \"#FFFFFF\";\n let personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=\";\n break;\n case \"external_person\":\n personImg = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=\";\n break;\n }\n const c4ShapeElem = elem.append(\"g\");\n c4ShapeElem.attr(\"class\", \"person-man\");\n const rect = getNoteRect();\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n case \"system\":\n case \"external_system\":\n case \"container\":\n case \"external_container\":\n case \"component\":\n case \"external_component\":\n rect.x = c4Shape.x;\n rect.y = c4Shape.y;\n rect.fill = fillColor;\n rect.width = c4Shape.width;\n rect.height = c4Shape.height;\n rect.stroke = strokeColor;\n rect.rx = 2.5;\n rect.ry = 2.5;\n rect.attrs = { \"stroke-width\": 0.5 };\n drawRect(c4ShapeElem, rect);\n break;\n case \"system_db\":\n case \"external_system_db\":\n case \"container_db\":\n case \"external_container_db\":\n case \"component_db\":\n case \"external_component_db\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2).replaceAll(\"height\", c4Shape.height)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.width / 2)\n );\n break;\n case \"system_queue\":\n case \"external_system_queue\":\n case \"container_queue\":\n case \"external_container_queue\":\n case \"component_queue\":\n case \"external_component_queue\":\n c4ShapeElem.append(\"path\").attr(\"fill\", fillColor).attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half\".replaceAll(\"startx\", c4Shape.x).replaceAll(\"starty\", c4Shape.y).replaceAll(\"width\", c4Shape.width).replaceAll(\"half\", c4Shape.height / 2)\n );\n c4ShapeElem.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke-width\", \"0.5\").attr(\"stroke\", strokeColor).attr(\n \"d\",\n \"Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half\".replaceAll(\"startx\", c4Shape.x + c4Shape.width).replaceAll(\"starty\", c4Shape.y).replaceAll(\"half\", c4Shape.height / 2)\n );\n break;\n }\n let c4ShapeFontConf = getC4ShapeFont(conf2, c4Shape.typeC4Shape.text);\n c4ShapeElem.append(\"text\").attr(\"fill\", fontColor).attr(\"font-family\", c4ShapeFontConf.fontFamily).attr(\"font-size\", c4ShapeFontConf.fontSize - 2).attr(\"font-style\", \"italic\").attr(\"lengthAdjust\", \"spacing\").attr(\"textLength\", c4Shape.typeC4Shape.width).attr(\"x\", c4Shape.x + c4Shape.width / 2 - c4Shape.typeC4Shape.width / 2).attr(\"y\", c4Shape.y + c4Shape.typeC4Shape.Y).text(\"<<\" + c4Shape.typeC4Shape.text + \">>\");\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n drawImage(\n c4ShapeElem,\n 48,\n 48,\n c4Shape.x + c4Shape.width / 2 - 24,\n c4Shape.y + c4Shape.image.Y,\n personImg\n );\n break;\n }\n let textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontWeight = \"bold\";\n textFontConf.fontSize = textFontConf.fontSize + 2;\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.label.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.label.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n textFontConf = conf2[c4Shape.typeC4Shape.text + \"Font\"]();\n textFontConf.fontColor = fontColor;\n if (c4Shape.techn && ((_a = c4Shape.techn) == null ? void 0 : _a.text) !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.techn.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.techn.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n } else if (c4Shape.type && c4Shape.type.text !== \"\") {\n _drawTextCandidateFunc(conf2)(\n c4Shape.type.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.type.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor, \"font-style\": \"italic\" },\n textFontConf\n );\n }\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n textFontConf = conf2.personFont();\n textFontConf.fontColor = fontColor;\n _drawTextCandidateFunc(conf2)(\n c4Shape.descr.text,\n c4ShapeElem,\n c4Shape.x,\n c4Shape.y + c4Shape.descr.Y,\n c4Shape.width,\n c4Shape.height,\n { fill: fontColor },\n textFontConf\n );\n }\n return c4Shape.height;\n};\nconst insertDatabaseIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"database\").attr(\"fill-rule\", \"evenodd\").attr(\"clip-rule\", \"evenodd\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"\n );\n};\nconst insertComputerIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"computer\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"\n );\n};\nconst insertClockIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"clock\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"\n );\n};\nconst insertArrowHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n};\nconst insertArrowEnd = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowend\").attr(\"refX\", 1).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 10 0 L 0 5 L 10 10 z\");\n};\nconst insertArrowFilledHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"filled-head\").attr(\"refX\", 18).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst insertDynamicNumber = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"sequencenumber\").attr(\"refX\", 15).attr(\"refY\", 15).attr(\"markerWidth\", 60).attr(\"markerHeight\", 40).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", 15).attr(\"cy\", 15).attr(\"r\", 6);\n};\nconst insertArrowCrossHead = function(elem) {\n const defs = elem.append(\"defs\");\n const marker = defs.append(\"marker\").attr(\"id\", \"crosshead\").attr(\"markerWidth\", 15).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").attr(\"refX\", 16).attr(\"refY\", 4);\n marker.append(\"path\").attr(\"fill\", \"black\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 9,2 V 6 L16,4 Z\");\n marker.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1px\").attr(\"d\", \"M 0,1 L 6,7 M 6,1 L 0,7\");\n};\nconst getC4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { fontSize, fontFamily, fontWeight } = conf2;\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * fontSize - fontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).style(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").style(\"font-size\", fontSize).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily);\n text.append(\"tspan\").attr(\"dy\", dy).text(lines[i]).attr(\"alignment-baseline\", \"mathematical\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst svgDraw = {\n drawRect,\n drawBoundary: drawBoundary$1,\n drawC4Shape,\n drawRels: drawRels$1,\n drawImage,\n insertArrowHead,\n insertArrowEnd,\n insertArrowFilledHead,\n insertDynamicNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon\n};\nlet globalBoundaryMaxX = 0, globalBoundaryMaxY = 0;\nlet c4ShapeInRow = 4;\nlet c4BoundaryInRow = 2;\nparser.yy = db;\nlet conf = {};\nclass Bounds {\n constructor(diagObj) {\n this.name = \"\";\n this.data = {};\n this.data.startx = void 0;\n this.data.stopx = void 0;\n this.data.starty = void 0;\n this.data.stopy = void 0;\n this.data.widthLimit = void 0;\n this.nextData = {};\n this.nextData.startx = void 0;\n this.nextData.stopx = void 0;\n this.nextData.starty = void 0;\n this.nextData.stopy = void 0;\n this.nextData.cnt = 0;\n setConf(diagObj.db.getConfig());\n }\n setData(startx, stopx, starty, stopy) {\n this.nextData.startx = this.data.startx = startx;\n this.nextData.stopx = this.data.stopx = stopx;\n this.nextData.starty = this.data.starty = starty;\n this.nextData.stopy = this.data.stopy = stopy;\n }\n updateVal(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n }\n insert(c4Shape) {\n this.nextData.cnt = this.nextData.cnt + 1;\n let _startx = this.nextData.startx === this.nextData.stopx ? this.nextData.stopx + c4Shape.margin : this.nextData.stopx + c4Shape.margin * 2;\n let _stopx = _startx + c4Shape.width;\n let _starty = this.nextData.starty + c4Shape.margin * 2;\n let _stopy = _starty + c4Shape.height;\n if (_startx >= this.data.widthLimit || _stopx >= this.data.widthLimit || this.nextData.cnt > c4ShapeInRow) {\n _startx = this.nextData.startx + c4Shape.margin + conf.nextLinePaddingX;\n _starty = this.nextData.stopy + c4Shape.margin * 2;\n this.nextData.stopx = _stopx = _startx + c4Shape.width;\n this.nextData.starty = this.nextData.stopy;\n this.nextData.stopy = _stopy = _starty + c4Shape.height;\n this.nextData.cnt = 1;\n }\n c4Shape.x = _startx;\n c4Shape.y = _starty;\n this.updateVal(this.data, \"startx\", _startx, Math.min);\n this.updateVal(this.data, \"starty\", _starty, Math.min);\n this.updateVal(this.data, \"stopx\", _stopx, Math.max);\n this.updateVal(this.data, \"stopy\", _stopy, Math.max);\n this.updateVal(this.nextData, \"startx\", _startx, Math.min);\n this.updateVal(this.nextData, \"starty\", _starty, Math.min);\n this.updateVal(this.nextData, \"stopx\", _stopx, Math.max);\n this.updateVal(this.nextData, \"stopy\", _stopy, Math.max);\n }\n init(diagObj) {\n this.name = \"\";\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n widthLimit: void 0\n };\n this.nextData = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0,\n cnt: 0\n };\n setConf(diagObj.db.getConfig());\n }\n bumpLastMargin(margin) {\n this.data.stopx += margin;\n this.data.stopy += margin;\n }\n}\nconst setConf = function(cnf) {\n assignWithDepth(conf, cnf);\n if (cnf.fontFamily) {\n conf.personFontFamily = conf.systemFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.personFontSize = conf.systemFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.personFontWeight = conf.systemFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\nconst c4ShapeFont = (cnf, typeC4Shape) => {\n return {\n fontFamily: cnf[typeC4Shape + \"FontFamily\"],\n fontSize: cnf[typeC4Shape + \"FontSize\"],\n fontWeight: cnf[typeC4Shape + \"FontWeight\"]\n };\n};\nconst boundaryFont = (cnf) => {\n return {\n fontFamily: cnf.boundaryFontFamily,\n fontSize: cnf.boundaryFontSize,\n fontWeight: cnf.boundaryFontWeight\n };\n};\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight\n };\n};\nfunction calcC4ShapeTextWH(textType, c4Shape, c4ShapeTextWrap, textConf, textLimitWidth) {\n if (!c4Shape[textType].width) {\n if (c4ShapeTextWrap) {\n c4Shape[textType].text = wrapLabel(c4Shape[textType].text, textLimitWidth, textConf);\n c4Shape[textType].textLines = c4Shape[textType].text.split(common.lineBreakRegex).length;\n c4Shape[textType].width = textLimitWidth;\n c4Shape[textType].height = calculateTextHeight(c4Shape[textType].text, textConf);\n } else {\n let lines = c4Shape[textType].text.split(common.lineBreakRegex);\n c4Shape[textType].textLines = lines.length;\n let lineHeight = 0;\n c4Shape[textType].height = 0;\n c4Shape[textType].width = 0;\n for (const line of lines) {\n c4Shape[textType].width = Math.max(\n calculateTextWidth(line, textConf),\n c4Shape[textType].width\n );\n lineHeight = calculateTextHeight(line, textConf);\n c4Shape[textType].height = c4Shape[textType].height + lineHeight;\n }\n }\n }\n}\nconst drawBoundary = function(diagram2, boundary, bounds) {\n boundary.x = bounds.data.startx;\n boundary.y = bounds.data.starty;\n boundary.width = bounds.data.stopx - bounds.data.startx;\n boundary.height = bounds.data.stopy - bounds.data.starty;\n boundary.label.y = conf.c4ShapeMargin - 35;\n let boundaryTextWrap = boundary.wrap && conf.wrap;\n let boundaryLabelConf = boundaryFont(conf);\n boundaryLabelConf.fontSize = boundaryLabelConf.fontSize + 2;\n boundaryLabelConf.fontWeight = \"bold\";\n let textLimitWidth = calculateTextWidth(boundary.label.text, boundaryLabelConf);\n calcC4ShapeTextWH(\"label\", boundary, boundaryTextWrap, boundaryLabelConf, textLimitWidth);\n svgDraw.drawBoundary(diagram2, boundary, conf);\n};\nconst drawC4ShapeArray = function(currentBounds, diagram2, c4ShapeArray2, c4ShapeKeys) {\n let Y = 0;\n for (const c4ShapeKey of c4ShapeKeys) {\n Y = 0;\n const c4Shape = c4ShapeArray2[c4ShapeKey];\n let c4ShapeTypeConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeTypeConf.fontSize = c4ShapeTypeConf.fontSize - 2;\n c4Shape.typeC4Shape.width = calculateTextWidth(\n \"«\" + c4Shape.typeC4Shape.text + \"»\",\n c4ShapeTypeConf\n );\n c4Shape.typeC4Shape.height = c4ShapeTypeConf.fontSize + 2;\n c4Shape.typeC4Shape.Y = conf.c4ShapePadding;\n Y = c4Shape.typeC4Shape.Y + c4Shape.typeC4Shape.height - 4;\n c4Shape.image = { width: 0, height: 0, Y: 0 };\n switch (c4Shape.typeC4Shape.text) {\n case \"person\":\n case \"external_person\":\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n break;\n }\n if (c4Shape.sprite) {\n c4Shape.image.width = 48;\n c4Shape.image.height = 48;\n c4Shape.image.Y = Y;\n Y = c4Shape.image.Y + c4Shape.image.height;\n }\n let c4ShapeTextWrap = c4Shape.wrap && conf.wrap;\n let textLimitWidth = conf.width - conf.c4ShapePadding * 2;\n let c4ShapeLabelConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n c4ShapeLabelConf.fontSize = c4ShapeLabelConf.fontSize + 2;\n c4ShapeLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\"label\", c4Shape, c4ShapeTextWrap, c4ShapeLabelConf, textLimitWidth);\n c4Shape[\"label\"].Y = Y + 8;\n Y = c4Shape[\"label\"].Y + c4Shape[\"label\"].height;\n if (c4Shape.type && c4Shape.type.text !== \"\") {\n c4Shape.type.text = \"[\" + c4Shape.type.text + \"]\";\n let c4ShapeTypeConf2 = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"type\", c4Shape, c4ShapeTextWrap, c4ShapeTypeConf2, textLimitWidth);\n c4Shape[\"type\"].Y = Y + 5;\n Y = c4Shape[\"type\"].Y + c4Shape[\"type\"].height;\n } else if (c4Shape.techn && c4Shape.techn.text !== \"\") {\n c4Shape.techn.text = \"[\" + c4Shape.techn.text + \"]\";\n let c4ShapeTechnConf = c4ShapeFont(conf, c4Shape.techn.text);\n calcC4ShapeTextWH(\"techn\", c4Shape, c4ShapeTextWrap, c4ShapeTechnConf, textLimitWidth);\n c4Shape[\"techn\"].Y = Y + 5;\n Y = c4Shape[\"techn\"].Y + c4Shape[\"techn\"].height;\n }\n let rectHeight = Y;\n let rectWidth = c4Shape.label.width;\n if (c4Shape.descr && c4Shape.descr.text !== \"\") {\n let c4ShapeDescrConf = c4ShapeFont(conf, c4Shape.typeC4Shape.text);\n calcC4ShapeTextWH(\"descr\", c4Shape, c4ShapeTextWrap, c4ShapeDescrConf, textLimitWidth);\n c4Shape[\"descr\"].Y = Y + 20;\n Y = c4Shape[\"descr\"].Y + c4Shape[\"descr\"].height;\n rectWidth = Math.max(c4Shape.label.width, c4Shape.descr.width);\n rectHeight = Y - c4Shape[\"descr\"].textLines * 5;\n }\n rectWidth = rectWidth + conf.c4ShapePadding;\n c4Shape.width = Math.max(c4Shape.width || conf.width, rectWidth, conf.width);\n c4Shape.height = Math.max(c4Shape.height || conf.height, rectHeight, conf.height);\n c4Shape.margin = c4Shape.margin || conf.c4ShapeMargin;\n currentBounds.insert(c4Shape);\n svgDraw.drawC4Shape(diagram2, c4Shape, conf);\n }\n currentBounds.bumpLastMargin(conf.c4ShapeMargin);\n};\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n}\nlet getIntersectPoint = function(fromNode, endPoint) {\n let x1 = fromNode.x;\n let y1 = fromNode.y;\n let x2 = endPoint.x;\n let y2 = endPoint.y;\n let fromCenterX = x1 + fromNode.width / 2;\n let fromCenterY = y1 + fromNode.height / 2;\n let dx = Math.abs(x1 - x2);\n let dy = Math.abs(y1 - y2);\n let tanDYX = dy / dx;\n let fromDYX = fromNode.height / fromNode.width;\n let returnPoint = null;\n if (y1 == y2 && x1 < x2) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY);\n } else if (y1 == y2 && x1 > x2) {\n returnPoint = new Point(x1, fromCenterY);\n } else if (x1 == x2 && y1 < y2) {\n returnPoint = new Point(fromCenterX, y1 + fromNode.height);\n } else if (x1 == x2 && y1 > y2) {\n returnPoint = new Point(fromCenterX, y1);\n }\n if (x1 > x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX - dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 < y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY + tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(\n fromCenterX + dx / dy * fromNode.height / 2,\n y1 + fromNode.height\n );\n }\n } else if (x1 < x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1 + fromNode.width, fromCenterY - tanDYX * fromNode.width / 2);\n } else {\n returnPoint = new Point(fromCenterX + fromNode.height / 2 * dx / dy, y1);\n }\n } else if (x1 > x2 && y1 > y2) {\n if (fromDYX >= tanDYX) {\n returnPoint = new Point(x1, fromCenterY - fromNode.width / 2 * tanDYX);\n } else {\n returnPoint = new Point(fromCenterX - fromNode.height / 2 * dx / dy, y1);\n }\n }\n return returnPoint;\n};\nlet getIntersectPoints = function(fromNode, endNode) {\n let endIntersectPoint = { x: 0, y: 0 };\n endIntersectPoint.x = endNode.x + endNode.width / 2;\n endIntersectPoint.y = endNode.y + endNode.height / 2;\n let startPoint = getIntersectPoint(fromNode, endIntersectPoint);\n endIntersectPoint.x = fromNode.x + fromNode.width / 2;\n endIntersectPoint.y = fromNode.y + fromNode.height / 2;\n let endPoint = getIntersectPoint(endNode, endIntersectPoint);\n return { startPoint, endPoint };\n};\nconst drawRels = function(diagram2, rels2, getC4ShapeObj, diagObj) {\n let i = 0;\n for (let rel of rels2) {\n i = i + 1;\n let relTextWrap = rel.wrap && conf.wrap;\n let relConf = messageFont(conf);\n let diagramType = diagObj.db.getC4Type();\n if (diagramType === \"C4Dynamic\") {\n rel.label.text = i + \": \" + rel.label.text;\n }\n let textLimitWidth = calculateTextWidth(rel.label.text, relConf);\n calcC4ShapeTextWH(\"label\", rel, relTextWrap, relConf, textLimitWidth);\n if (rel.techn && rel.techn.text !== \"\") {\n textLimitWidth = calculateTextWidth(rel.techn.text, relConf);\n calcC4ShapeTextWH(\"techn\", rel, relTextWrap, relConf, textLimitWidth);\n }\n if (rel.descr && rel.descr.text !== \"\") {\n textLimitWidth = calculateTextWidth(rel.descr.text, relConf);\n calcC4ShapeTextWH(\"descr\", rel, relTextWrap, relConf, textLimitWidth);\n }\n let fromNode = getC4ShapeObj(rel.from);\n let endNode = getC4ShapeObj(rel.to);\n let points = getIntersectPoints(fromNode, endNode);\n rel.startPoint = points.startPoint;\n rel.endPoint = points.endPoint;\n }\n svgDraw.drawRels(diagram2, rels2, conf);\n};\nfunction drawInsideBoundary(diagram2, parentBoundaryAlias, parentBounds, currentBoundaries, diagObj) {\n let currentBounds = new Bounds(diagObj);\n currentBounds.data.widthLimit = parentBounds.data.widthLimit / Math.min(c4BoundaryInRow, currentBoundaries.length);\n for (let [i, currentBoundary] of currentBoundaries.entries()) {\n let Y = 0;\n currentBoundary.image = { width: 0, height: 0, Y: 0 };\n if (currentBoundary.sprite) {\n currentBoundary.image.width = 48;\n currentBoundary.image.height = 48;\n currentBoundary.image.Y = Y;\n Y = currentBoundary.image.Y + currentBoundary.image.height;\n }\n let currentBoundaryTextWrap = currentBoundary.wrap && conf.wrap;\n let currentBoundaryLabelConf = boundaryFont(conf);\n currentBoundaryLabelConf.fontSize = currentBoundaryLabelConf.fontSize + 2;\n currentBoundaryLabelConf.fontWeight = \"bold\";\n calcC4ShapeTextWH(\n \"label\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryLabelConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"label\"].Y = Y + 8;\n Y = currentBoundary[\"label\"].Y + currentBoundary[\"label\"].height;\n if (currentBoundary.type && currentBoundary.type.text !== \"\") {\n currentBoundary.type.text = \"[\" + currentBoundary.type.text + \"]\";\n let currentBoundaryTypeConf = boundaryFont(conf);\n calcC4ShapeTextWH(\n \"type\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryTypeConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"type\"].Y = Y + 5;\n Y = currentBoundary[\"type\"].Y + currentBoundary[\"type\"].height;\n }\n if (currentBoundary.descr && currentBoundary.descr.text !== \"\") {\n let currentBoundaryDescrConf = boundaryFont(conf);\n currentBoundaryDescrConf.fontSize = currentBoundaryDescrConf.fontSize - 2;\n calcC4ShapeTextWH(\n \"descr\",\n currentBoundary,\n currentBoundaryTextWrap,\n currentBoundaryDescrConf,\n currentBounds.data.widthLimit\n );\n currentBoundary[\"descr\"].Y = Y + 20;\n Y = currentBoundary[\"descr\"].Y + currentBoundary[\"descr\"].height;\n }\n if (i == 0 || i % c4BoundaryInRow === 0) {\n let _x = parentBounds.data.startx + conf.diagramMarginX;\n let _y = parentBounds.data.stopy + conf.diagramMarginY + Y;\n currentBounds.setData(_x, _x, _y, _y);\n } else {\n let _x = currentBounds.data.stopx !== currentBounds.data.startx ? currentBounds.data.stopx + conf.diagramMarginX : currentBounds.data.startx;\n let _y = currentBounds.data.starty;\n currentBounds.setData(_x, _x, _y, _y);\n }\n currentBounds.name = currentBoundary.alias;\n let currentPersonOrSystemArray = diagObj.db.getC4ShapeArray(currentBoundary.alias);\n let currentPersonOrSystemKeys = diagObj.db.getC4ShapeKeys(currentBoundary.alias);\n if (currentPersonOrSystemKeys.length > 0) {\n drawC4ShapeArray(\n currentBounds,\n diagram2,\n currentPersonOrSystemArray,\n currentPersonOrSystemKeys\n );\n }\n parentBoundaryAlias = currentBoundary.alias;\n let nextCurrentBoundarys = diagObj.db.getBoundarys(parentBoundaryAlias);\n if (nextCurrentBoundarys.length > 0) {\n drawInsideBoundary(\n diagram2,\n parentBoundaryAlias,\n currentBounds,\n nextCurrentBoundarys,\n diagObj\n );\n }\n if (currentBoundary.alias !== \"global\") {\n drawBoundary(diagram2, currentBoundary, currentBounds);\n }\n parentBounds.data.stopy = Math.max(\n currentBounds.data.stopy + conf.c4ShapeMargin,\n parentBounds.data.stopy\n );\n parentBounds.data.stopx = Math.max(\n currentBounds.data.stopx + conf.c4ShapeMargin,\n parentBounds.data.stopx\n );\n globalBoundaryMaxX = Math.max(globalBoundaryMaxX, parentBounds.data.stopx);\n globalBoundaryMaxY = Math.max(globalBoundaryMaxY, parentBounds.data.stopy);\n }\n}\nconst draw = function(_text, id, _version, diagObj) {\n conf = getConfig().c4;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n let db2 = diagObj.db;\n diagObj.db.setWrap(conf.wrap);\n c4ShapeInRow = db2.getC4ShapeInRow();\n c4BoundaryInRow = db2.getC4BoundaryInRow();\n log.debug(`C:${JSON.stringify(conf, null, 2)}`);\n const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n svgDraw.insertComputerIcon(diagram2);\n svgDraw.insertDatabaseIcon(diagram2);\n svgDraw.insertClockIcon(diagram2);\n let screenBounds = new Bounds(diagObj);\n screenBounds.setData(\n conf.diagramMarginX,\n conf.diagramMarginX,\n conf.diagramMarginY,\n conf.diagramMarginY\n );\n screenBounds.data.widthLimit = screen.availWidth;\n globalBoundaryMaxX = conf.diagramMarginX;\n globalBoundaryMaxY = conf.diagramMarginY;\n const title2 = diagObj.db.getTitle();\n let currentBoundaries = diagObj.db.getBoundarys(\"\");\n drawInsideBoundary(diagram2, \"\", screenBounds, currentBoundaries, diagObj);\n svgDraw.insertArrowHead(diagram2);\n svgDraw.insertArrowEnd(diagram2);\n svgDraw.insertArrowCrossHead(diagram2);\n svgDraw.insertArrowFilledHead(diagram2);\n drawRels(diagram2, diagObj.db.getRels(), diagObj.db.getC4Shape, diagObj);\n screenBounds.data.stopx = globalBoundaryMaxX;\n screenBounds.data.stopy = globalBoundaryMaxY;\n const box = screenBounds.data;\n let boxHeight = box.stopy - box.starty;\n let height = boxHeight + 2 * conf.diagramMarginY;\n let boxWidth = box.stopx - box.startx;\n const width = boxWidth + 2 * conf.diagramMarginX;\n if (title2) {\n diagram2.append(\"text\").text(title2).attr(\"x\", (box.stopx - box.startx) / 2 - 4 * conf.diagramMarginX).attr(\"y\", box.starty + conf.diagramMarginY);\n }\n configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n const extraVertForTitle = title2 ? 60 : 0;\n diagram2.attr(\n \"viewBox\",\n box.startx - conf.diagramMarginX + \" -\" + (conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle)\n );\n log.debug(`models:`, box);\n};\nconst renderer = {\n drawPersonOrSystemArray: drawC4ShapeArray,\n drawBoundary,\n setConf,\n draw\n};\nconst getStyles = (options) => `.person {\n stroke: ${options.personBorder};\n fill: ${options.personBkg};\n }\n`;\nconst styles = getStyles;\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles,\n init: ({ c4, wrap }) => {\n renderer.setConf(c4);\n db.setWrap(wrap);\n }\n};\nexport {\n diagram\n};\n","import { p as parser, d as db, s as styles } from \"./styles-4ba6ed67.js\";\nimport { line, curveBasis, select } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { u as utils, l as log, v as parseGenericTypes, c as getConfig, i as configureSvgSize } from \"./mermaid-934d9bea.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nlet edgeCount = 0;\nconst drawEdge = function(elem, path, relation, conf, diagObj) {\n const getRelationType = function(type) {\n switch (type) {\n case diagObj.db.relationType.AGGREGATION:\n return \"aggregation\";\n case diagObj.db.relationType.EXTENSION:\n return \"extension\";\n case diagObj.db.relationType.COMPOSITION:\n return \"composition\";\n case diagObj.db.relationType.DEPENDENCY:\n return \"dependency\";\n case diagObj.db.relationType.LOLLIPOP:\n return \"lollipop\";\n }\n };\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n const lineData = path.points;\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", \"edge\" + edgeCount).attr(\"class\", \"relation\");\n let url = \"\";\n if (conf.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 if (relation.relation.lineType == 1) {\n svgPath.attr(\"class\", \"relation dashed-line\");\n }\n if (relation.relation.lineType == 10) {\n svgPath.attr(\"class\", \"relation dotted-line\");\n }\n if (relation.relation.type1 !== \"none\") {\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + getRelationType(relation.relation.type1) + \"Start)\"\n );\n }\n if (relation.relation.type2 !== \"none\") {\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + getRelationType(relation.relation.type2) + \"End)\"\n );\n }\n let x, y;\n const l = path.points.length;\n let labelPosition = utils.calcLabelPosition(path.points);\n x = labelPosition.x;\n y = labelPosition.y;\n let p1_card_x, p1_card_y;\n let p2_card_x, p2_card_y;\n if (l % 2 !== 0 && l > 1) {\n let cardinality_1_point = utils.calcCardinalityPosition(\n relation.relation.type1 !== \"none\",\n path.points,\n path.points[0]\n );\n let cardinality_2_point = utils.calcCardinalityPosition(\n relation.relation.type2 !== \"none\",\n path.points,\n path.points[l - 1]\n );\n log.debug(\"cardinality_1_point \" + JSON.stringify(cardinality_1_point));\n log.debug(\"cardinality_2_point \" + JSON.stringify(cardinality_2_point));\n p1_card_x = cardinality_1_point.x;\n p1_card_y = cardinality_1_point.y;\n p2_card_x = cardinality_2_point.x;\n p2_card_y = cardinality_2_point.y;\n }\n if (relation.title !== void 0) {\n const g = elem.append(\"g\").attr(\"class\", \"classLabel\");\n const label = g.append(\"text\").attr(\"class\", \"label\").attr(\"x\", x).attr(\"y\", y).attr(\"fill\", \"red\").attr(\"text-anchor\", \"middle\").text(relation.title);\n window.label = label;\n const bounds = label.node().getBBox();\n g.insert(\"rect\", \":first-child\").attr(\"class\", \"box\").attr(\"x\", bounds.x - conf.padding / 2).attr(\"y\", bounds.y - conf.padding / 2).attr(\"width\", bounds.width + conf.padding).attr(\"height\", bounds.height + conf.padding);\n }\n log.info(\"Rendering relation \" + JSON.stringify(relation));\n if (relation.relationTitle1 !== void 0 && relation.relationTitle1 !== \"none\") {\n const g = elem.append(\"g\").attr(\"class\", \"cardinality\");\n g.append(\"text\").attr(\"class\", \"type1\").attr(\"x\", p1_card_x).attr(\"y\", p1_card_y).attr(\"fill\", \"black\").attr(\"font-size\", \"6\").text(relation.relationTitle1);\n }\n if (relation.relationTitle2 !== void 0 && relation.relationTitle2 !== \"none\") {\n const g = elem.append(\"g\").attr(\"class\", \"cardinality\");\n g.append(\"text\").attr(\"class\", \"type2\").attr(\"x\", p2_card_x).attr(\"y\", p2_card_y).attr(\"fill\", \"black\").attr(\"font-size\", \"6\").text(relation.relationTitle2);\n }\n edgeCount++;\n};\nconst drawClass = function(elem, classDef, conf, diagObj) {\n log.debug(\"Rendering class \", classDef, conf);\n const id = classDef.id;\n const classInfo = {\n id,\n label: classDef.id,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", diagObj.db.lookUpDomId(id)).attr(\"class\", \"classGroup\");\n let title;\n if (classDef.link) {\n title = g.append(\"svg:a\").attr(\"xlink:href\", classDef.link).attr(\"target\", classDef.linkTarget).append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n } else {\n title = g.append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n }\n let isFirst = true;\n classDef.annotations.forEach(function(member) {\n const titleText2 = title.append(\"tspan\").text(\"«\" + member + \"»\");\n if (!isFirst) {\n titleText2.attr(\"dy\", conf.textHeight);\n }\n isFirst = false;\n });\n let classTitleString = getClassTitleString(classDef);\n const classTitle = title.append(\"tspan\").text(classTitleString).attr(\"class\", \"title\");\n if (!isFirst) {\n classTitle.attr(\"dy\", conf.textHeight);\n }\n const titleHeight = title.node().getBBox().height;\n let membersLine;\n let membersBox;\n let methodsLine;\n if (classDef.members.length > 0) {\n membersLine = g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", conf.padding + titleHeight + conf.dividerMargin / 2).attr(\"y2\", conf.padding + titleHeight + conf.dividerMargin / 2);\n const members = g.append(\"text\").attr(\"x\", conf.padding).attr(\"y\", titleHeight + conf.dividerMargin + conf.textHeight).attr(\"fill\", \"white\").attr(\"class\", \"classText\");\n isFirst = true;\n classDef.members.forEach(function(member) {\n addTspan(members, member, isFirst, conf);\n isFirst = false;\n });\n membersBox = members.node().getBBox();\n }\n if (classDef.methods.length > 0) {\n methodsLine = g.append(\"line\").attr(\"x1\", 0).attr(\"y1\", conf.padding + titleHeight + conf.dividerMargin + membersBox.height).attr(\"y2\", conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\n const methods = g.append(\"text\").attr(\"x\", conf.padding).attr(\"y\", titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight).attr(\"fill\", \"white\").attr(\"class\", \"classText\");\n isFirst = true;\n classDef.methods.forEach(function(method) {\n addTspan(methods, method, isFirst, conf);\n isFirst = false;\n });\n }\n const classBox = g.node().getBBox();\n var cssClassStr = \" \";\n if (classDef.cssClasses.length > 0) {\n cssClassStr = cssClassStr + classDef.cssClasses.join(\" \");\n }\n const rect = g.insert(\"rect\", \":first-child\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", classBox.width + 2 * conf.padding).attr(\"height\", classBox.height + conf.padding + 0.5 * conf.dividerMargin).attr(\"class\", cssClassStr);\n const rectWidth = rect.node().getBBox().width;\n title.node().childNodes.forEach(function(x) {\n x.setAttribute(\"x\", (rectWidth - x.getBBox().width) / 2);\n });\n if (classDef.tooltip) {\n title.insert(\"title\").text(classDef.tooltip);\n }\n if (membersLine) {\n membersLine.attr(\"x2\", rectWidth);\n }\n if (methodsLine) {\n methodsLine.attr(\"x2\", rectWidth);\n }\n classInfo.width = rectWidth;\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\n return classInfo;\n};\nconst getClassTitleString = function(classDef) {\n let classTitleString = classDef.id;\n if (classDef.type) {\n classTitleString += \"<\" + parseGenericTypes(classDef.type) + \">\";\n }\n return classTitleString;\n};\nconst drawNote = function(elem, note, conf, diagObj) {\n log.debug(\"Rendering note \", note, conf);\n const id = note.id;\n const noteInfo = {\n id,\n text: note.text,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", id).attr(\"class\", \"classGroup\");\n let text = g.append(\"text\").attr(\"y\", conf.textHeight + conf.padding).attr(\"x\", 0);\n const lines = JSON.parse(`\"${note.text}\"`).split(\"\\n\");\n lines.forEach(function(line2) {\n log.debug(`Adding line: ${line2}`);\n text.append(\"tspan\").text(line2).attr(\"class\", \"title\").attr(\"dy\", conf.textHeight);\n });\n const noteBox = g.node().getBBox();\n const rect = g.insert(\"rect\", \":first-child\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", noteBox.width + 2 * conf.padding).attr(\n \"height\",\n noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin\n );\n const rectWidth = rect.node().getBBox().width;\n text.node().childNodes.forEach(function(x) {\n x.setAttribute(\"x\", (rectWidth - x.getBBox().width) / 2);\n });\n noteInfo.width = rectWidth;\n noteInfo.height = noteBox.height + lines.length * conf.textHeight + conf.padding + 0.5 * conf.dividerMargin;\n return noteInfo;\n};\nconst addTspan = function(textEl, member, isFirst, conf) {\n const { displayText, cssStyle } = member.getDisplayDetails();\n const tSpan = textEl.append(\"tspan\").attr(\"x\", conf.padding).text(displayText);\n if (cssStyle !== \"\") {\n tSpan.attr(\"style\", member.cssStyle);\n }\n if (!isFirst) {\n tSpan.attr(\"dy\", conf.textHeight);\n }\n};\nconst svgDraw = {\n getClassTitleString,\n drawClass,\n drawEdge,\n drawNote\n};\nlet idCache = {};\nconst padding = 20;\nconst getGraphId = function(label) {\n const foundEntry = Object.entries(idCache).find((entry) => entry[1].label === label);\n if (foundEntry) {\n return foundEntry[0];\n }\n};\nconst insertMarkers = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"extensionStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).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\", \"extensionEnd\").attr(\"refX\", 19).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 elem.append(\"defs\").append(\"marker\").attr(\"id\", \"compositionStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).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\", \"compositionEnd\").attr(\"refX\", 19).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 elem.append(\"defs\").append(\"marker\").attr(\"id\", \"aggregationStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).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\", \"aggregationEnd\").attr(\"refX\", 19).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 elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyStart\").attr(\"class\", \"extension\").attr(\"refX\", 0).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\", \"dependencyEnd\").attr(\"refX\", 19).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 draw = function(text, id, _version, diagObj) {\n const conf = getConfig().class;\n idCache = {};\n log.info(\"Rendering diagram \" + text);\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const diagram2 = root.select(`[id='${id}']`);\n insertMarkers(diagram2);\n const g = new graphlib.Graph({\n multigraph: true\n });\n g.setGraph({\n isMultiGraph: true\n });\n g.setDefaultEdgeLabel(function() {\n return {};\n });\n const classes = diagObj.db.getClasses();\n const keys = Object.keys(classes);\n for (const key of keys) {\n const classDef = classes[key];\n const node = svgDraw.drawClass(diagram2, classDef, conf, diagObj);\n idCache[node.id] = node;\n g.setNode(node.id, node);\n log.info(\"Org height: \" + node.height);\n }\n const relations = diagObj.db.getRelations();\n relations.forEach(function(relation) {\n log.info(\n \"tjoho\" + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation)\n );\n g.setEdge(\n getGraphId(relation.id1),\n getGraphId(relation.id2),\n {\n relation\n },\n relation.title || \"DEFAULT\"\n );\n });\n const notes = diagObj.db.getNotes();\n notes.forEach(function(note) {\n log.debug(`Adding note: ${JSON.stringify(note)}`);\n const node = svgDraw.drawNote(diagram2, note, conf, diagObj);\n idCache[node.id] = node;\n g.setNode(node.id, node);\n if (note.class && note.class in classes) {\n g.setEdge(\n note.id,\n getGraphId(note.class),\n {\n relation: {\n id1: note.id,\n id2: note.class,\n relation: {\n type1: \"none\",\n type2: \"none\",\n lineType: 10\n }\n }\n },\n \"DEFAULT\"\n );\n }\n });\n layout(g);\n g.nodes().forEach(function(v) {\n if (v !== void 0 && g.node(v) !== void 0) {\n log.debug(\"Node \" + v + \": \" + JSON.stringify(g.node(v)));\n root.select(\"#\" + (diagObj.db.lookUpDomId(v) || v)).attr(\n \"transform\",\n \"translate(\" + (g.node(v).x - g.node(v).width / 2) + \",\" + (g.node(v).y - g.node(v).height / 2) + \" )\"\n );\n }\n });\n g.edges().forEach(function(e) {\n if (e !== void 0 && g.edge(e) !== void 0) {\n log.debug(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(g.edge(e)));\n svgDraw.drawEdge(diagram2, g.edge(e), g.edge(e).relation, conf, diagObj);\n }\n });\n const svgBounds = diagram2.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n diagram2.attr(\"viewBox\", vBox);\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import { p as parser, d as db, s as styles } from \"./styles-4ba6ed67.js\";\nimport { select, curveLinear } from \"d3\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { l as log, c as getConfig, u as utils, o as setupGraphViewbox, n as interpolateToCurve, k as getStylesFromArray, e as common } from \"./mermaid-934d9bea.js\";\nimport { r as render } from \"./index-67a42d7d.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-80f1ebb6.js\";\nimport \"./createText-aebacdfe.js\";\nimport \"mdast-util-from-markdown\";\nconst sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\nlet conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10,\n curve: void 0\n};\nconst addNamespaces = function(namespaces, g, _id, diagObj) {\n const keys = Object.keys(namespaces);\n log.info(\"keys:\", keys);\n log.info(namespaces);\n keys.forEach(function(id) {\n var _a, _b;\n const vertex = namespaces[id];\n const shape = \"rect\";\n const node = {\n shape,\n id: vertex.id,\n domId: vertex.domId,\n labelText: sanitizeText(vertex.id),\n labelStyle: \"\",\n style: \"fill: none; stroke: black\",\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n addClasses(vertex.classes, g, _id, diagObj, vertex.id);\n log.info(\"setNode\", node);\n });\n};\nconst addClasses = function(classes, g, _id, diagObj, parent) {\n const keys = Object.keys(classes);\n log.info(\"keys:\", keys);\n log.info(classes);\n keys.filter((id) => classes[id].parent == parent).forEach(function(id) {\n var _a, _b;\n const vertex = classes[id];\n const cssClassStr = vertex.cssClasses.join(\" \");\n const styles2 = { labelStyle: \"\", style: \"\" };\n const vertexText = vertex.label ?? vertex.id;\n const radius = 0;\n const shape = \"class_box\";\n const node = {\n labelStyle: styles2.labelStyle,\n shape,\n labelText: sanitizeText(vertexText),\n classData: vertex,\n rx: radius,\n ry: radius,\n class: cssClassStr,\n style: styles2.style,\n id: vertex.id,\n domId: vertex.domId,\n tooltip: diagObj.db.getTooltip(vertex.id, parent) || \"\",\n haveCallback: vertex.haveCallback,\n link: vertex.link,\n width: vertex.type === \"group\" ? 500 : void 0,\n type: vertex.type,\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n if (parent) {\n g.setParent(vertex.id, parent);\n }\n log.info(\"setNode\", node);\n });\n};\nconst addNotes = function(notes, g, startEdgeId, classes) {\n log.info(notes);\n notes.forEach(function(note, i) {\n var _a, _b;\n const vertex = note;\n const cssNoteStr = \"\";\n const styles2 = { labelStyle: \"\", style: \"\" };\n const vertexText = vertex.text;\n const radius = 0;\n const shape = \"note\";\n const node = {\n labelStyle: styles2.labelStyle,\n shape,\n labelText: sanitizeText(vertexText),\n noteData: vertex,\n rx: radius,\n ry: radius,\n class: cssNoteStr,\n style: styles2.style,\n id: vertex.id,\n domId: vertex.id,\n tooltip: \"\",\n type: \"note\",\n // TODO V10: Flowchart ? Keeping flowchart for backwards compatibility. Remove in next major release\n padding: ((_a = getConfig().flowchart) == null ? void 0 : _a.padding) ?? ((_b = getConfig().class) == null ? void 0 : _b.padding)\n };\n g.setNode(vertex.id, node);\n log.info(\"setNode\", node);\n if (!vertex.class || !(vertex.class in classes)) {\n return;\n }\n const edgeId = startEdgeId + i;\n const edgeData = {\n id: `edgeNote${edgeId}`,\n //Set relationship style and line type\n classes: \"relation\",\n pattern: \"dotted\",\n // Set link type for rendering\n arrowhead: \"none\",\n //Set edge extra labels\n startLabelRight: \"\",\n endLabelLeft: \"\",\n //Set relation arrow types\n arrowTypeStart: \"none\",\n arrowTypeEnd: \"none\",\n style: \"fill:none\",\n labelStyle: \"\",\n curve: interpolateToCurve(conf.curve, curveLinear)\n };\n g.setEdge(vertex.id, vertex.class, edgeData, edgeId);\n });\n};\nconst addRelations = function(relations, g) {\n const conf2 = getConfig().flowchart;\n let cnt = 0;\n relations.forEach(function(edge) {\n var _a;\n cnt++;\n const edgeData = {\n //Set relationship style and line type\n classes: \"relation\",\n pattern: edge.relation.lineType == 1 ? \"dashed\" : \"solid\",\n id: \"id\" + cnt,\n // Set link type for rendering\n arrowhead: edge.type === \"arrow_open\" ? \"none\" : \"normal\",\n //Set edge extra labels\n startLabelRight: edge.relationTitle1 === \"none\" ? \"\" : edge.relationTitle1,\n endLabelLeft: edge.relationTitle2 === \"none\" ? \"\" : edge.relationTitle2,\n //Set relation arrow types\n arrowTypeStart: getArrowMarker(edge.relation.type1),\n arrowTypeEnd: getArrowMarker(edge.relation.type2),\n style: \"fill:none\",\n labelStyle: \"\",\n curve: interpolateToCurve(conf2 == null ? void 0 : conf2.curve, curveLinear)\n };\n log.info(edgeData, edge);\n if (edge.style !== void 0) {\n const styles2 = getStylesFromArray(edge.style);\n edgeData.style = styles2.style;\n edgeData.labelStyle = styles2.labelStyle;\n }\n edge.text = edge.title;\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if (((_a = getConfig().flowchart) == null ? void 0 : _a.htmlLabels) ?? getConfig().htmlLabels) {\n edgeData.labelType = \"html\";\n edgeData.label = '' + edge.text + \"\";\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n });\n};\nconst setConf = function(cnf) {\n conf = {\n ...conf,\n ...cnf\n };\n};\nconst draw = async function(text, id, _version, diagObj) {\n log.info(\"Drawing class - \", id);\n const conf2 = getConfig().flowchart ?? getConfig().class;\n const securityLevel = getConfig().securityLevel;\n log.info(\"config:\", conf2);\n const nodeSpacing = (conf2 == null ? void 0 : conf2.nodeSpacing) ?? 50;\n const rankSpacing = (conf2 == null ? void 0 : conf2.rankSpacing) ?? 50;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: diagObj.db.getDirection(),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const namespaces = diagObj.db.getNamespaces();\n const classes = diagObj.db.getClasses();\n const relations = diagObj.db.getRelations();\n const notes = diagObj.db.getNotes();\n log.info(relations);\n addNamespaces(namespaces, g, id, diagObj);\n addClasses(classes, g, id, diagObj);\n addRelations(relations, g);\n addNotes(notes, g, relations.length + 1, classes);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await render(\n element,\n g,\n [\"aggregation\", \"extension\", \"composition\", \"dependency\", \"lollipop\"],\n \"classDiagram\",\n id\n );\n utils.insertTitle(svg, \"classTitleText\", (conf2 == null ? void 0 : conf2.titleTopMargin) ?? 5, diagObj.db.getDiagramTitle());\n setupGraphViewbox(g, svg, conf2 == null ? void 0 : conf2.diagramPadding, conf2 == null ? void 0 : conf2.useMaxWidth);\n if (!(conf2 == null ? void 0 : conf2.htmlLabels)) {\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n};\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = \"aggregation\";\n break;\n case 1:\n marker = \"extension\";\n break;\n case 2:\n marker = \"composition\";\n break;\n case 3:\n marker = \"dependency\";\n break;\n case 4:\n marker = \"lollipop\";\n break;\n default:\n marker = \"none\";\n }\n return marker;\n}\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.class) {\n cnf.class = {};\n }\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import { l as log, J as decodeEntities } from \"./mermaid-934d9bea.js\";\nimport { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { dedent } from \"ts-dedent\";\nfunction preprocessMarkdown(markdown) {\n const withoutMultipleNewlines = markdown.replace(/\\n{2,}/g, \"\\n\");\n const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n return withoutExtraSpaces;\n}\nfunction markdownToLines(markdown) {\n const preprocessedMarkdown = preprocessMarkdown(markdown);\n const { children } = fromMarkdown(preprocessedMarkdown);\n const lines = [[]];\n let currentLine = 0;\n function processNode(node, parentType = \"normal\") {\n if (node.type === \"text\") {\n const textLines = node.value.split(\"\\n\");\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(\" \").forEach((word) => {\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === \"strong\" || node.type === \"emphasis\") {\n node.children.forEach((contentNode) => {\n processNode(contentNode, node.type);\n });\n }\n }\n children.forEach((treeNode) => {\n if (treeNode.type === \"paragraph\") {\n treeNode.children.forEach((contentNode) => {\n processNode(contentNode);\n });\n }\n });\n return lines;\n}\nfunction markdownToHTML(markdown) {\n const { children } = fromMarkdown(markdown);\n function output(node) {\n if (node.type === \"text\") {\n return node.value.replace(/\\n/g, \"
\");\n } else if (node.type === \"strong\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"emphasis\") {\n return `${node.children.map(output).join(\"\")}`;\n } else if (node.type === \"paragraph\") {\n return `

${node.children.map(output).join(\"\")}

`;\n }\n return `Unsupported markdown: ${node.type}`;\n }\n return children.map(output).join(\"\");\n}\nfunction splitTextToChars(text) {\n if (Intl.Segmenter) {\n return [...new Intl.Segmenter().segment(text)].map((s) => s.segment);\n }\n return [...text];\n}\nfunction splitWordToFitWidth(checkFit, word) {\n const characters = splitTextToChars(word.content);\n return splitWordToFitWidthRecursion(checkFit, [], characters, word.type);\n}\nfunction splitWordToFitWidthRecursion(checkFit, usedChars, remainingChars, type) {\n if (remainingChars.length === 0) {\n return [\n { content: usedChars.join(\"\"), type },\n { content: \"\", type }\n ];\n }\n const [nextChar, ...rest] = remainingChars;\n const newWord = [...usedChars, nextChar];\n if (checkFit([{ content: newWord.join(\"\"), type }])) {\n return splitWordToFitWidthRecursion(checkFit, newWord, rest, type);\n }\n if (usedChars.length === 0 && nextChar) {\n usedChars.push(nextChar);\n remainingChars.shift();\n }\n return [\n { content: usedChars.join(\"\"), type },\n { content: remainingChars.join(\"\"), type }\n ];\n}\nfunction splitLineToFitWidth(line, checkFit) {\n if (line.some(({ content }) => content.includes(\"\\n\"))) {\n throw new Error(\"splitLineToFitWidth does not support newlines in the line\");\n }\n return splitLineToFitWidthRecursion(line, checkFit);\n}\nfunction splitLineToFitWidthRecursion(words, checkFit, lines = [], newLine = []) {\n if (words.length === 0) {\n if (newLine.length > 0) {\n lines.push(newLine);\n }\n return lines.length > 0 ? lines : [];\n }\n let joiner = \"\";\n if (words[0].content === \" \") {\n joiner = \" \";\n words.shift();\n }\n const nextWord = words.shift() ?? { content: \" \", type: \"normal\" };\n const lineWithNextWord = [...newLine];\n if (joiner !== \"\") {\n lineWithNextWord.push({ content: joiner, type: \"normal\" });\n }\n lineWithNextWord.push(nextWord);\n if (checkFit(lineWithNextWord)) {\n return splitLineToFitWidthRecursion(words, checkFit, lines, lineWithNextWord);\n }\n if (newLine.length > 0) {\n lines.push(newLine);\n words.unshift(nextWord);\n } else if (nextWord.content) {\n const [line, rest] = splitWordToFitWidth(checkFit, nextWord);\n lines.push([line]);\n if (rest.content) {\n words.unshift(rest);\n }\n }\n return splitLineToFitWidthRecursion(words, checkFit, lines);\n}\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\nfunction addHtmlSpan(element, node, width, classes, addBackground = false) {\n const fo = element.append(\"foreignObject\");\n const div = fo.append(\"xhtml:div\");\n const label = node.label;\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n `\n \" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"table-cell\");\n div.style(\"white-space\", \"nowrap\");\n div.style(\"max-width\", width + \"px\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n if (addBackground) {\n div.attr(\"class\", \"labelBkg\");\n }\n let bbox = div.node().getBoundingClientRect();\n if (bbox.width === width) {\n div.style(\"display\", \"table\");\n div.style(\"white-space\", \"break-spaces\");\n div.style(\"width\", width + \"px\");\n bbox = div.node().getBoundingClientRect();\n }\n fo.style(\"width\", bbox.width);\n fo.style(\"height\", bbox.height);\n return fo.node();\n}\nfunction createTspan(textElement, lineIndex, lineHeight) {\n return textElement.append(\"tspan\").attr(\"class\", \"text-outer-tspan\").attr(\"x\", 0).attr(\"y\", lineIndex * lineHeight - 0.1 + \"em\").attr(\"dy\", lineHeight + \"em\");\n}\nfunction computeWidthOfText(parentNode, lineHeight, line) {\n const testElement = parentNode.append(\"text\");\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, line);\n const textLength = testSpan.node().getComputedTextLength();\n testElement.remove();\n return textLength;\n}\nfunction computeDimensionOfText(parentNode, lineHeight, text) {\n var _a;\n const testElement = parentNode.append(\"text\");\n const testSpan = createTspan(testElement, 1, lineHeight);\n updateTextContentAndStyles(testSpan, [{ content: text, type: \"normal\" }]);\n const textDimension = (_a = testSpan.node()) == null ? void 0 : _a.getBoundingClientRect();\n if (textDimension) {\n testElement.remove();\n }\n return textDimension;\n}\nfunction createFormattedText(width, g, structuredText, addBackground = false) {\n const lineHeight = 1.1;\n const labelGroup = g.append(\"g\");\n const bkg = labelGroup.insert(\"rect\").attr(\"class\", \"background\");\n const textElement = labelGroup.append(\"text\").attr(\"y\", \"-10.1\");\n let lineIndex = 0;\n for (const line of structuredText) {\n const checkWidth = (line2) => computeWidthOfText(labelGroup, lineHeight, line2) <= width;\n const linesUnderWidth = checkWidth(line) ? [line] : splitLineToFitWidth(line, checkWidth);\n for (const preparedLine of linesUnderWidth) {\n const tspan = createTspan(textElement, lineIndex, lineHeight);\n updateTextContentAndStyles(tspan, preparedLine);\n lineIndex++;\n }\n }\n if (addBackground) {\n const bbox = textElement.node().getBBox();\n const padding = 2;\n bkg.attr(\"x\", -padding).attr(\"y\", -padding).attr(\"width\", bbox.width + 2 * padding).attr(\"height\", bbox.height + 2 * padding);\n return labelGroup.node();\n } else {\n return textElement.node();\n }\n}\nfunction updateTextContentAndStyles(tspan, wrappedLine) {\n tspan.text(\"\");\n wrappedLine.forEach((word, index) => {\n const innerTspan = tspan.append(\"tspan\").attr(\"font-style\", word.type === \"emphasis\" ? \"italic\" : \"normal\").attr(\"class\", \"text-inner-tspan\").attr(\"font-weight\", word.type === \"strong\" ? \"bold\" : \"normal\");\n if (index === 0) {\n innerTspan.text(word.content);\n } else {\n innerTspan.text(\" \" + word.content);\n }\n });\n}\nconst createText = (el, text = \"\", {\n style = \"\",\n isTitle = false,\n classes = \"\",\n useHtmlLabels = true,\n isNode = true,\n width = 200,\n addSvgBackground = false\n} = {}) => {\n log.info(\"createText\", text, style, isTitle, classes, useHtmlLabels, isNode, addSvgBackground);\n if (useHtmlLabels) {\n const htmlText = markdownToHTML(text);\n const node = {\n isNode,\n label: decodeEntities(htmlText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n const vertexNode = addHtmlSpan(el, node, width, classes, addSvgBackground);\n return vertexNode;\n } else {\n const structuredText = markdownToLines(text);\n const svgLabel = createFormattedText(width, el, structuredText, addSvgBackground);\n return svgLabel;\n }\n};\nexport {\n createText as a,\n computeDimensionOfText as c\n};\n","import { l as log, m as evaluate, c as getConfig, J as decodeEntities, d as sanitizeText, u as utils } from \"./mermaid-934d9bea.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { a as createText } from \"./createText-aebacdfe.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.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\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 img.style.width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\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 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 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 = bbox.width + node.padding;\n const totalHeight = bbox.height + node.padding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).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(\"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 question,\n rect,\n labelRect,\n rectWithTitle,\n choice,\n circle,\n doublecircle,\n stadium,\n hexagon,\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 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 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 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};\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 log.info(\"abc82\", edge, edge.labelType);\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.info(\"Moving label abc78 \", edge.id, edge.label, edgeLabels[edge.id]);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\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.info(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc78\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", \"translate(\" + x + \", \" + y + \")\");\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.warn(`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.warn(`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.warn(`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, boundryNode) => {\n log.warn(\"abc88 cutPathAtIntersect\", _points, boundryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n log.info(\"abc88 checking point\", point2, boundryNode);\n if (!outsideNode(boundryNode, point2) && !isInside) {\n const inter = intersection(boundryNode, lastPointOutside, point2);\n log.warn(\"abc88 inside\", point2, lastPointOutside, inter);\n log.warn(\"abc88 intersection\", inter);\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 } else {\n log.warn(\"abc88 no intersect\", inter, points);\n }\n isInside = true;\n } else {\n log.warn(\"abc88 outside\", point2, lastPointOutside);\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n log.warn(\"abc88 returning points\", points);\n return points;\n};\nconst insertEdge = function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n log.info(\"abc88 InsertEdge: \", edge);\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n log.info(\n \"Last point\",\n points[points.length - 1],\n head,\n head.intersect(points[points.length - 1])\n );\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.info(\"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.info(\"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 log.info(\"arrowTypeStart\", edge.arrowTypeStart);\n log.info(\"arrowTypeEnd\", edge.arrowTypeEnd);\n switch (edge.arrowTypeStart) {\n case \"arrow_cross\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-crossStart)\"\n );\n break;\n case \"arrow_point\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-pointStart)\"\n );\n break;\n case \"arrow_barb\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-barbStart)\"\n );\n break;\n case \"arrow_circle\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-circleStart)\"\n );\n break;\n case \"aggregation\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-aggregationStart)\"\n );\n break;\n case \"extension\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-extensionStart)\"\n );\n break;\n case \"composition\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-compositionStart)\"\n );\n break;\n case \"dependency\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-dependencyStart)\"\n );\n break;\n case \"lollipop\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-lollipopStart)\"\n );\n break;\n }\n switch (edge.arrowTypeEnd) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-crossEnd)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-pointEnd)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-barbEnd)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-circleEnd)\");\n break;\n case \"aggregation\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-aggregationEnd)\"\n );\n break;\n case \"extension\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-extensionEnd)\"\n );\n break;\n case \"composition\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-compositionEnd)\"\n );\n break;\n case \"dependency\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-dependencyEnd)\"\n );\n break;\n case \"lollipop\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-lollipopEnd)\"\n );\n break;\n }\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 insertEdge as g,\n positionEdgeLabel as h,\n intersectRect$1 as i,\n getLineFunctionsWithOffset as j,\n labelHelper as l,\n positionNode as p,\n setNodeElem as s,\n updateNodeBounds as u\n};\n","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;","import { unsafeStringify } from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","import { c as getConfig, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, q as setDiagramTitle, r as getDiagramTitle, l as log, t as clear$1, u as utils, i as configureSvgSize, v as parseGenericTypes } from \"./mermaid-934d9bea.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, line, curveBasis } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport { v5 } from \"uuid\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 8, 10, 20, 22, 24, 26, 27, 28], $V1 = [1, 10], $V2 = [1, 11], $V3 = [1, 12], $V4 = [1, 13], $V5 = [1, 14], $V6 = [1, 15], $V7 = [1, 21], $V8 = [1, 22], $V9 = [1, 23], $Va = [1, 24], $Vb = [1, 25], $Vc = [6, 8, 10, 13, 15, 18, 19, 20, 22, 24, 26, 27, 28, 41, 42, 43, 44, 45], $Vd = [1, 34], $Ve = [27, 28, 46, 47], $Vf = [41, 42, 43, 44, 45], $Vg = [17, 34], $Vh = [1, 54], $Vi = [1, 53], $Vj = [17, 34, 36, 38];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"ER_DIAGRAM\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NEWLINE\": 10, \"entityName\": 11, \"relSpec\": 12, \":\": 13, \"role\": 14, \"BLOCK_START\": 15, \"attributes\": 16, \"BLOCK_STOP\": 17, \"SQS\": 18, \"SQE\": 19, \"title\": 20, \"title_value\": 21, \"acc_title\": 22, \"acc_title_value\": 23, \"acc_descr\": 24, \"acc_descr_value\": 25, \"acc_descr_multiline_value\": 26, \"ALPHANUM\": 27, \"ENTITY_NAME\": 28, \"attribute\": 29, \"attributeType\": 30, \"attributeName\": 31, \"attributeKeyTypeList\": 32, \"attributeComment\": 33, \"ATTRIBUTE_WORD\": 34, \"attributeKeyType\": 35, \"COMMA\": 36, \"ATTRIBUTE_KEY\": 37, \"COMMENT\": 38, \"cardinality\": 39, \"relType\": 40, \"ZERO_OR_ONE\": 41, \"ZERO_OR_MORE\": 42, \"ONE_OR_MORE\": 43, \"ONLY_ONE\": 44, \"MD_PARENT\": 45, \"NON_IDENTIFYING\": 46, \"IDENTIFYING\": 47, \"WORD\": 48, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"ER_DIAGRAM\", 6: \"EOF\", 8: \"SPACE\", 10: \"NEWLINE\", 13: \":\", 15: \"BLOCK_START\", 17: \"BLOCK_STOP\", 18: \"SQS\", 19: \"SQE\", 20: \"title\", 21: \"title_value\", 22: \"acc_title\", 23: \"acc_title_value\", 24: \"acc_descr\", 25: \"acc_descr_value\", 26: \"acc_descr_multiline_value\", 27: \"ALPHANUM\", 28: \"ENTITY_NAME\", 34: \"ATTRIBUTE_WORD\", 36: \"COMMA\", 37: \"ATTRIBUTE_KEY\", 38: \"COMMENT\", 41: \"ZERO_OR_ONE\", 42: \"ZERO_OR_MORE\", 43: \"ONE_OR_MORE\", 44: \"ONLY_ONE\", 45: \"MD_PARENT\", 46: \"NON_IDENTIFYING\", 47: \"IDENTIFYING\", 48: \"WORD\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 5], [9, 4], [9, 3], [9, 1], [9, 7], [9, 6], [9, 4], [9, 2], [9, 2], [9, 2], [9, 1], [11, 1], [11, 1], [16, 1], [16, 2], [29, 2], [29, 3], [29, 3], [29, 4], [30, 1], [31, 1], [32, 1], [32, 3], [35, 1], [33, 1], [12, 3], [39, 1], [39, 1], [39, 1], [39, 1], [39, 1], [40, 1], [40, 1], [14, 1], [14, 1], [14, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n break;\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.addEntity($$[$0 - 4]);\n yy.addEntity($$[$0 - 2]);\n yy.addRelationship($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 3]);\n break;\n case 9:\n yy.addEntity($$[$0 - 3]);\n yy.addAttributes($$[$0 - 3], $$[$0 - 1]);\n break;\n case 10:\n yy.addEntity($$[$0 - 2]);\n break;\n case 11:\n yy.addEntity($$[$0]);\n break;\n case 12:\n yy.addEntity($$[$0 - 6], $$[$0 - 4]);\n yy.addAttributes($$[$0 - 6], $$[$0 - 1]);\n break;\n case 13:\n yy.addEntity($$[$0 - 5], $$[$0 - 3]);\n break;\n case 14:\n yy.addEntity($$[$0 - 3], $$[$0 - 1]);\n break;\n case 15:\n case 16:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 17:\n case 18:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 19:\n case 43:\n this.$ = $$[$0];\n break;\n case 20:\n case 41:\n case 42:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 21:\n case 29:\n this.$ = [$$[$0]];\n break;\n case 22:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 23:\n this.$ = { attributeType: $$[$0 - 1], attributeName: $$[$0] };\n break;\n case 24:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeKeyTypeList: $$[$0] };\n break;\n case 25:\n this.$ = { attributeType: $$[$0 - 2], attributeName: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 26:\n this.$ = { attributeType: $$[$0 - 3], attributeName: $$[$0 - 2], attributeKeyTypeList: $$[$0 - 1], attributeComment: $$[$0] };\n break;\n case 27:\n case 28:\n case 31:\n this.$ = $$[$0];\n break;\n case 30:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 32:\n this.$ = $$[$0].replace(/\"/g, \"\");\n break;\n case 33:\n this.$ = { cardA: $$[$0], relType: $$[$0 - 1], cardB: $$[$0 - 2] };\n break;\n case 34:\n this.$ = yy.Cardinality.ZERO_OR_ONE;\n break;\n case 35:\n this.$ = yy.Cardinality.ZERO_OR_MORE;\n break;\n case 36:\n this.$ = yy.Cardinality.ONE_OR_MORE;\n break;\n case 37:\n this.$ = yy.Cardinality.ONLY_ONE;\n break;\n case 38:\n this.$ = yy.Cardinality.MD_PARENT;\n break;\n case 39:\n this.$ = yy.Identification.NON_IDENTIFYING;\n break;\n case 40:\n this.$ = yy.Identification.IDENTIFYING;\n break;\n }\n },\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: 9, 20: $V1, 22: $V2, 24: $V3, 26: $V4, 27: $V5, 28: $V6 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 16, 11: 9, 20: $V1, 22: $V2, 24: $V3, 26: $V4, 27: $V5, 28: $V6 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 11], { 12: 17, 39: 20, 15: [1, 18], 18: [1, 19], 41: $V7, 42: $V8, 43: $V9, 44: $Va, 45: $Vb }), { 21: [1, 26] }, { 23: [1, 27] }, { 25: [1, 28] }, o($V0, [2, 18]), o($Vc, [2, 19]), o($Vc, [2, 20]), o($V0, [2, 4]), { 11: 29, 27: $V5, 28: $V6 }, { 16: 30, 17: [1, 31], 29: 32, 30: 33, 34: $Vd }, { 11: 35, 27: $V5, 28: $V6 }, { 40: 36, 46: [1, 37], 47: [1, 38] }, o($Ve, [2, 34]), o($Ve, [2, 35]), o($Ve, [2, 36]), o($Ve, [2, 37]), o($Ve, [2, 38]), o($V0, [2, 15]), o($V0, [2, 16]), o($V0, [2, 17]), { 13: [1, 39] }, { 17: [1, 40] }, o($V0, [2, 10]), { 16: 41, 17: [2, 21], 29: 32, 30: 33, 34: $Vd }, { 31: 42, 34: [1, 43] }, { 34: [2, 27] }, { 19: [1, 44] }, { 39: 45, 41: $V7, 42: $V8, 43: $V9, 44: $Va, 45: $Vb }, o($Vf, [2, 39]), o($Vf, [2, 40]), { 14: 46, 27: [1, 49], 28: [1, 48], 48: [1, 47] }, o($V0, [2, 9]), { 17: [2, 22] }, o($Vg, [2, 23], { 32: 50, 33: 51, 35: 52, 37: $Vh, 38: $Vi }), o([17, 34, 37, 38], [2, 28]), o($V0, [2, 14], { 15: [1, 55] }), o([27, 28], [2, 33]), o($V0, [2, 8]), o($V0, [2, 41]), o($V0, [2, 42]), o($V0, [2, 43]), o($Vg, [2, 24], { 33: 56, 36: [1, 57], 38: $Vi }), o($Vg, [2, 25]), o($Vj, [2, 29]), o($Vg, [2, 32]), o($Vj, [2, 31]), { 16: 58, 17: [1, 59], 29: 32, 30: 33, 34: $Vd }, o($Vg, [2, 26]), { 35: 60, 37: $Vh }, { 17: [1, 61] }, o($V0, [2, 13]), o($Vj, [2, 30]), o($V0, [2, 12])],\n defaultActions: { 34: [2, 27], 41: [2, 22] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 22;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 24;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n return 10;\n case 8:\n break;\n case 9:\n return 8;\n case 10:\n return 28;\n case 11:\n return 48;\n case 12:\n return 4;\n case 13:\n this.begin(\"block\");\n return 15;\n case 14:\n return 36;\n case 15:\n break;\n case 16:\n return 37;\n case 17:\n return 34;\n case 18:\n return 34;\n case 19:\n return 38;\n case 20:\n break;\n case 21:\n this.popState();\n return 17;\n case 22:\n return yy_.yytext[0];\n case 23:\n return 18;\n case 24:\n return 19;\n case 25:\n return 41;\n case 26:\n return 43;\n case 27:\n return 43;\n case 28:\n return 43;\n case 29:\n return 41;\n case 30:\n return 41;\n case 31:\n return 42;\n case 32:\n return 42;\n case 33:\n return 42;\n case 34:\n return 42;\n case 35:\n return 42;\n case 36:\n return 43;\n case 37:\n return 42;\n case 38:\n return 43;\n case 39:\n return 44;\n case 40:\n return 44;\n case 41:\n return 44;\n case 42:\n return 44;\n case 43:\n return 41;\n case 44:\n return 42;\n case 45:\n return 43;\n case 46:\n return 45;\n case 47:\n return 46;\n case 48:\n return 47;\n case 49:\n return 47;\n case 50:\n return 46;\n case 51:\n return 46;\n case 52:\n return 46;\n case 53:\n return 27;\n case 54:\n return yy_.yytext[0];\n case 55:\n return 6;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:[\\s]+)/i, /^(?:\"[^\"%\\r\\n\\v\\b\\\\]+\")/i, /^(?:\"[^\"]*\")/i, /^(?:erDiagram\\b)/i, /^(?:\\{)/i, /^(?:,)/i, /^(?:\\s+)/i, /^(?:\\b((?:PK)|(?:FK)|(?:UK))\\b)/i, /^(?:(.*?)[~](.*?)*[~])/i, /^(?:[\\*A-Za-z_][A-Za-z0-9\\-_\\[\\]\\(\\)]*)/i, /^(?:\"[^\"]*\")/i, /^(?:[\\n]+)/i, /^(?:\\})/i, /^(?:.)/i, /^(?:\\[)/i, /^(?:\\])/i, /^(?:one or zero\\b)/i, /^(?:one or more\\b)/i, /^(?:one or many\\b)/i, /^(?:1\\+)/i, /^(?:\\|o\\b)/i, /^(?:zero or one\\b)/i, /^(?:zero or more\\b)/i, /^(?:zero or many\\b)/i, /^(?:0\\+)/i, /^(?:\\}o\\b)/i, /^(?:many\\(0\\))/i, /^(?:many\\(1\\))/i, /^(?:many\\b)/i, /^(?:\\}\\|)/i, /^(?:one\\b)/i, /^(?:only one\\b)/i, /^(?:1\\b)/i, /^(?:\\|\\|)/i, /^(?:o\\|)/i, /^(?:o\\{)/i, /^(?:\\|\\{)/i, /^(?:\\s*u\\b)/i, /^(?:\\.\\.)/i, /^(?:--)/i, /^(?:to\\b)/i, /^(?:optionally to\\b)/i, /^(?:\\.-)/i, /^(?:-\\.)/i, /^(?:[A-Za-z_][A-Za-z0-9\\-_]*)/i, /^(?:.)/i, /^(?:$)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [5, 6], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3], \"inclusive\": false }, \"acc_title\": { \"rules\": [1], \"inclusive\": false }, \"block\": { \"rules\": [14, 15, 16, 17, 18, 19, 20, 21, 22], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst erParser = parser;\nlet entities = {};\nlet relationships = [];\nconst Cardinality = {\n ZERO_OR_ONE: \"ZERO_OR_ONE\",\n ZERO_OR_MORE: \"ZERO_OR_MORE\",\n ONE_OR_MORE: \"ONE_OR_MORE\",\n ONLY_ONE: \"ONLY_ONE\",\n MD_PARENT: \"MD_PARENT\"\n};\nconst Identification = {\n NON_IDENTIFYING: \"NON_IDENTIFYING\",\n IDENTIFYING: \"IDENTIFYING\"\n};\nconst addEntity = function(name, alias = void 0) {\n if (entities[name] === void 0) {\n entities[name] = { attributes: [], alias };\n log.info(\"Added new entity :\", name);\n } else if (entities[name] && !entities[name].alias && alias) {\n entities[name].alias = alias;\n log.info(`Add alias '${alias}' to entity '${name}'`);\n }\n return entities[name];\n};\nconst getEntities = () => entities;\nconst addAttributes = function(entityName, attribs) {\n let entity = addEntity(entityName);\n let i;\n for (i = attribs.length - 1; i >= 0; i--) {\n entity.attributes.push(attribs[i]);\n log.debug(\"Added attribute \", attribs[i].attributeName);\n }\n};\nconst addRelationship = function(entA, rolA, entB, rSpec) {\n let rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n relationships.push(rel);\n log.debug(\"Added new relationship :\", rel);\n};\nconst getRelationships = () => relationships;\nconst clear = function() {\n entities = {};\n relationships = [];\n clear$1();\n};\nconst erDb = {\n Cardinality,\n Identification,\n getConfig: () => getConfig().er,\n addEntity,\n addAttributes,\n getEntities,\n addRelationship,\n getRelationships,\n clear,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n setDiagramTitle,\n getDiagramTitle\n};\nconst ERMarkers = {\n ONLY_ONE_START: \"ONLY_ONE_START\",\n ONLY_ONE_END: \"ONLY_ONE_END\",\n ZERO_OR_ONE_START: \"ZERO_OR_ONE_START\",\n ZERO_OR_ONE_END: \"ZERO_OR_ONE_END\",\n ONE_OR_MORE_START: \"ONE_OR_MORE_START\",\n ONE_OR_MORE_END: \"ONE_OR_MORE_END\",\n ZERO_OR_MORE_START: \"ZERO_OR_MORE_START\",\n ZERO_OR_MORE_END: \"ZERO_OR_MORE_END\",\n MD_PARENT_END: \"MD_PARENT_END\",\n MD_PARENT_START: \"MD_PARENT_START\"\n};\nconst insertMarkers = function(elem, conf2) {\n let marker;\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.MD_PARENT_START).attr(\"refX\", 0).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\", ERMarkers.MD_PARENT_END).attr(\"refX\", 19).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 elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18 M15,0 L15,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONLY_ONE_END).attr(\"refX\", 18).attr(\"refY\", 9).attr(\"markerWidth\", 18).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,0 L3,18 M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_START).attr(\"refX\", 0).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 21).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M9,0 L9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_ONE_END).attr(\"refX\", 30).attr(\"refY\", 9).attr(\"markerWidth\", 30).attr(\"markerHeight\", 18).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 9).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,0 L21,18\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27\");\n elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ONE_OR_MORE_END).attr(\"refX\", 27).attr(\"refY\", 18).attr(\"markerWidth\", 45).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\").append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_START).attr(\"refX\", 18).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 48).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M0,18 Q18,0 36,18 Q18,36 0,18\");\n marker = elem.append(\"defs\").append(\"marker\").attr(\"id\", ERMarkers.ZERO_OR_MORE_END).attr(\"refX\", 39).attr(\"refY\", 18).attr(\"markerWidth\", 57).attr(\"markerHeight\", 36).attr(\"orient\", \"auto\");\n marker.append(\"circle\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"white\").attr(\"cx\", 9).attr(\"cy\", 18).attr(\"r\", 6);\n marker.append(\"path\").attr(\"stroke\", conf2.stroke).attr(\"fill\", \"none\").attr(\"d\", \"M21,18 Q39,0 57,18 Q39,36 21,18\");\n return;\n};\nconst erMarkers = {\n ERMarkers,\n insertMarkers\n};\nconst BAD_ID_CHARS_REGEXP = /[^\\dA-Za-z](\\W)*/g;\nlet conf = {};\nlet entityNameIds = /* @__PURE__ */ new Map();\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst drawAttributes = (groupNode, entityTextNode, attributes) => {\n const heightPadding = conf.entityPadding / 3;\n const widthPadding = conf.entityPadding / 3;\n const attrFontSize = conf.fontSize * 0.85;\n const labelBBox = entityTextNode.node().getBBox();\n const attributeNodes = [];\n let hasKeyType = false;\n let hasComment = false;\n let maxTypeWidth = 0;\n let maxNameWidth = 0;\n let maxKeyWidth = 0;\n let maxCommentWidth = 0;\n let cumulativeHeight = labelBBox.height + heightPadding * 2;\n let attrNum = 1;\n attributes.forEach((item) => {\n if (item.attributeKeyTypeList !== void 0 && item.attributeKeyTypeList.length > 0) {\n hasKeyType = true;\n }\n if (item.attributeComment !== void 0) {\n hasComment = true;\n }\n });\n attributes.forEach((item) => {\n const attrPrefix = `${entityTextNode.node().id}-attr-${attrNum}`;\n let nodeHeight = 0;\n const attributeType = parseGenericTypes(item.attributeType);\n const typeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-type`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(attributeType);\n const nameNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-name`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeName);\n const attributeNode = {};\n attributeNode.tn = typeNode;\n attributeNode.nn = nameNode;\n const typeBBox = typeNode.node().getBBox();\n const nameBBox = nameNode.node().getBBox();\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width);\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width);\n nodeHeight = Math.max(typeBBox.height, nameBBox.height);\n if (hasKeyType) {\n const keyTypeNodeText = item.attributeKeyTypeList !== void 0 ? item.attributeKeyTypeList.join(\",\") : \"\";\n const keyTypeNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-key`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(keyTypeNodeText);\n attributeNode.kn = keyTypeNode;\n const keyTypeBBox = keyTypeNode.node().getBBox();\n maxKeyWidth = Math.max(maxKeyWidth, keyTypeBBox.width);\n nodeHeight = Math.max(nodeHeight, keyTypeBBox.height);\n }\n if (hasComment) {\n const commentNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", `${attrPrefix}-comment`).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"left\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", attrFontSize + \"px\").text(item.attributeComment || \"\");\n attributeNode.cn = commentNode;\n const commentNodeBBox = commentNode.node().getBBox();\n maxCommentWidth = Math.max(maxCommentWidth, commentNodeBBox.width);\n nodeHeight = Math.max(nodeHeight, commentNodeBBox.height);\n }\n attributeNode.height = nodeHeight;\n attributeNodes.push(attributeNode);\n cumulativeHeight += nodeHeight + heightPadding * 2;\n attrNum += 1;\n });\n let widthPaddingFactor = 4;\n if (hasKeyType) {\n widthPaddingFactor += 2;\n }\n if (hasComment) {\n widthPaddingFactor += 2;\n }\n const maxWidth = maxTypeWidth + maxNameWidth + maxKeyWidth + maxCommentWidth;\n const bBox = {\n width: Math.max(\n conf.minEntityWidth,\n Math.max(\n labelBBox.width + conf.entityPadding * 2,\n maxWidth + widthPadding * widthPaddingFactor\n )\n ),\n height: attributes.length > 0 ? cumulativeHeight : Math.max(conf.minEntityHeight, labelBBox.height + conf.entityPadding * 2)\n };\n if (attributes.length > 0) {\n const spareColumnWidth = Math.max(\n 0,\n (bBox.width - maxWidth - widthPadding * widthPaddingFactor) / (widthPaddingFactor / 2)\n );\n entityTextNode.attr(\n \"transform\",\n \"translate(\" + bBox.width / 2 + \",\" + (heightPadding + labelBBox.height / 2) + \")\"\n );\n let heightOffset = labelBBox.height + heightPadding * 2;\n let attribStyle = \"attributeBoxOdd\";\n attributeNodes.forEach((attributeNode) => {\n const alignY = heightOffset + heightPadding + attributeNode.height / 2;\n attributeNode.tn.attr(\"transform\", \"translate(\" + widthPadding + \",\" + alignY + \")\");\n const typeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.tn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", 0).attr(\"y\", heightOffset).attr(\"width\", maxTypeWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n const nameXOffset = parseFloat(typeRect.attr(\"x\")) + parseFloat(typeRect.attr(\"width\"));\n attributeNode.nn.attr(\n \"transform\",\n \"translate(\" + (nameXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const nameRect = groupNode.insert(\"rect\", \"#\" + attributeNode.nn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", nameXOffset).attr(\"y\", heightOffset).attr(\"width\", maxNameWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n let keyTypeAndCommentXOffset = parseFloat(nameRect.attr(\"x\")) + parseFloat(nameRect.attr(\"width\"));\n if (hasKeyType) {\n attributeNode.kn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n const keyTypeRect = groupNode.insert(\"rect\", \"#\" + attributeNode.kn.node().id).classed(`er ${attribStyle}`, true).attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxKeyWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n keyTypeAndCommentXOffset = parseFloat(keyTypeRect.attr(\"x\")) + parseFloat(keyTypeRect.attr(\"width\"));\n }\n if (hasComment) {\n attributeNode.cn.attr(\n \"transform\",\n \"translate(\" + (keyTypeAndCommentXOffset + widthPadding) + \",\" + alignY + \")\"\n );\n groupNode.insert(\"rect\", \"#\" + attributeNode.cn.node().id).classed(`er ${attribStyle}`, \"true\").attr(\"x\", keyTypeAndCommentXOffset).attr(\"y\", heightOffset).attr(\"width\", maxCommentWidth + widthPadding * 2 + spareColumnWidth).attr(\"height\", attributeNode.height + heightPadding * 2);\n }\n heightOffset += attributeNode.height + heightPadding * 2;\n attribStyle = attribStyle === \"attributeBoxOdd\" ? \"attributeBoxEven\" : \"attributeBoxOdd\";\n });\n } else {\n bBox.height = Math.max(conf.minEntityHeight, cumulativeHeight);\n entityTextNode.attr(\"transform\", \"translate(\" + bBox.width / 2 + \",\" + bBox.height / 2 + \")\");\n }\n return bBox;\n};\nconst drawEntities = function(svgNode, entities2, graph) {\n const keys = Object.keys(entities2);\n let firstOne;\n keys.forEach(function(entityName) {\n const entityId = generateId(entityName, \"entity\");\n entityNameIds.set(entityName, entityId);\n const groupNode = svgNode.append(\"g\").attr(\"id\", entityId);\n firstOne = firstOne === void 0 ? entityId : firstOne;\n const textId = \"text-\" + entityId;\n const textNode = groupNode.append(\"text\").classed(\"er entityLabel\", true).attr(\"id\", textId).attr(\"x\", 0).attr(\"y\", 0).style(\"dominant-baseline\", \"middle\").style(\"text-anchor\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(entities2[entityName].alias ?? entityName);\n const { width: entityWidth, height: entityHeight } = drawAttributes(\n groupNode,\n textNode,\n entities2[entityName].attributes\n );\n const rectNode = groupNode.insert(\"rect\", \"#\" + textId).classed(\"er entityBox\", true).attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", entityWidth).attr(\"height\", entityHeight);\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(entityId, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id: entityId\n });\n });\n return firstOne;\n};\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n svgNode.select(\"#\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y - graph.node(v).height / 2) + \" )\"\n );\n }\n });\n};\nconst getEdgeName = function(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, \"\");\n};\nconst addRelationships = function(relationships2, g) {\n relationships2.forEach(function(r) {\n g.setEdge(\n entityNameIds.get(r.entityA),\n entityNameIds.get(r.entityB),\n { relationship: r },\n getEdgeName(r)\n );\n });\n return relationships2;\n};\nlet relCnt = 0;\nconst drawRelationshipFromLayout = function(svg, rel, g, insert, diagObj) {\n relCnt++;\n const edge = g.edge(\n entityNameIds.get(rel.entityA),\n entityNameIds.get(rel.entityB),\n getEdgeName(rel)\n );\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = svg.insert(\"path\", \"#\" + insert).classed(\"er relationshipLine\", true).attr(\"d\", lineFunction(edge.points)).style(\"stroke\", conf.stroke).style(\"fill\", \"none\");\n if (rel.relSpec.relType === diagObj.db.Identification.NON_IDENTIFYING) {\n svgPath.attr(\"stroke-dasharray\", \"8,8\");\n }\n let url = \"\";\n if (conf.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 switch (rel.relSpec.cardA) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_END + \")\");\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_END + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_END + \")\");\n break;\n }\n switch (rel.relSpec.cardB) {\n case diagObj.db.Cardinality.ZERO_OR_ONE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_ONE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ZERO_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ZERO_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONE_OR_MORE:\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONE_OR_MORE_START + \")\"\n );\n break;\n case diagObj.db.Cardinality.ONLY_ONE:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.ONLY_ONE_START + \")\");\n break;\n case diagObj.db.Cardinality.MD_PARENT:\n svgPath.attr(\"marker-start\", \"url(\" + url + \"#\" + erMarkers.ERMarkers.MD_PARENT_START + \")\");\n break;\n }\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n const labelId = \"rel\" + relCnt;\n const labelNode = svg.append(\"text\").classed(\"er relationshipLabel\", true).attr(\"id\", labelId).attr(\"x\", labelPoint.x).attr(\"y\", labelPoint.y).style(\"text-anchor\", \"middle\").style(\"dominant-baseline\", \"middle\").style(\"font-family\", getConfig().fontFamily).style(\"font-size\", conf.fontSize + \"px\").text(rel.roleA);\n const labelBBox = labelNode.node().getBBox();\n svg.insert(\"rect\", \"#\" + labelId).classed(\"er relationshipLabelBox\", true).attr(\"x\", labelPoint.x - labelBBox.width / 2).attr(\"y\", labelPoint.y - labelBBox.height / 2).attr(\"width\", labelBBox.width).attr(\"height\", labelBBox.height);\n};\nconst draw = function(text, id, _version, diagObj) {\n conf = getConfig().er;\n log.info(\"Drawing ER diagram\");\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id='${id}']`);\n erMarkers.insertMarkers(svg, conf);\n let g;\n g = new graphlib.Graph({\n multigraph: true,\n directed: true,\n compound: false\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n const firstEntity = drawEntities(svg, diagObj.db.getEntities(), g);\n const relationships2 = addRelationships(diagObj.db.getRelationships(), g);\n layout(g);\n adjustEntities(svg, g);\n relationships2.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity, diagObj);\n });\n const padding = conf.diagramPadding;\n utils.insertTitle(svg, \"entityTitleText\", conf.titleTopMargin, diagObj.db.getDiagramTitle());\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n svg.attr(\"viewBox\", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n};\nconst MERMAID_ERDIAGRAM_UUID = \"28e9f9db-3c8d-5aa5-9faf-44286ae5937c\";\nfunction generateId(str = \"\", prefix = \"\") {\n const simplifiedStr = str.replace(BAD_ID_CHARS_REGEXP, \"\");\n return `${strWithHyphen(prefix)}${strWithHyphen(simplifiedStr)}${v5(\n str,\n MERMAID_ERDIAGRAM_UUID\n )}`;\n}\nfunction strWithHyphen(str = \"\") {\n return str.length > 0 ? `${str}-` : \"\";\n}\nconst erRenderer = {\n setConf,\n draw\n};\nconst getStyles = (options) => `\n .entityBox {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxOdd {\n fill: ${options.attributeBackgroundColorOdd};\n stroke: ${options.nodeBorder};\n }\n\n .attributeBoxEven {\n fill: ${options.attributeBackgroundColorEven};\n stroke: ${options.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${options.tertiaryColor};\n opacity: 0.7;\n background-color: ${options.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ${options.lineColor};\n }\n\n .entityTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n } \n #MD_PARENT_START {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n #MD_PARENT_END {\n fill: #f5f5f5 !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n }\n \n`;\nconst erStyles = getStyles;\nconst diagram = {\n parser: erParser,\n db: erDb,\n renderer: erRenderer,\n styles: erStyles\n};\nexport {\n diagram\n};\n","import { select } from \"d3\";\nimport { I as defaultConfig, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, r as getDiagramTitle, c as getConfig, l as log, u as utils, t as clear$1, e as common } from \"./mermaid-934d9bea.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 4], $V1 = [1, 3], $V2 = [1, 5], $V3 = [1, 8, 9, 10, 11, 27, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], $V4 = [2, 2], $V5 = [1, 13], $V6 = [1, 14], $V7 = [1, 15], $V8 = [1, 16], $V9 = [1, 23], $Va = [1, 25], $Vb = [1, 26], $Vc = [1, 27], $Vd = [1, 49], $Ve = [1, 48], $Vf = [1, 29], $Vg = [1, 30], $Vh = [1, 31], $Vi = [1, 32], $Vj = [1, 33], $Vk = [1, 44], $Vl = [1, 46], $Vm = [1, 42], $Vn = [1, 47], $Vo = [1, 43], $Vp = [1, 50], $Vq = [1, 45], $Vr = [1, 51], $Vs = [1, 52], $Vt = [1, 34], $Vu = [1, 35], $Vv = [1, 36], $Vw = [1, 37], $Vx = [1, 57], $Vy = [1, 8, 9, 10, 11, 27, 32, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], $Vz = [1, 61], $VA = [1, 60], $VB = [1, 62], $VC = [8, 9, 11, 73, 75], $VD = [1, 88], $VE = [1, 93], $VF = [1, 92], $VG = [1, 89], $VH = [1, 85], $VI = [1, 91], $VJ = [1, 87], $VK = [1, 94], $VL = [1, 90], $VM = [1, 95], $VN = [1, 86], $VO = [8, 9, 10, 11, 73, 75], $VP = [8, 9, 10, 11, 44, 73, 75], $VQ = [8, 9, 10, 11, 29, 42, 44, 46, 48, 50, 52, 54, 56, 58, 61, 63, 65, 66, 68, 73, 75, 86, 99, 102, 103, 106, 108, 111, 112, 113], $VR = [8, 9, 11, 42, 58, 73, 75, 86, 99, 102, 103, 106, 108, 111, 112, 113], $VS = [42, 58, 86, 99, 102, 103, 106, 108, 111, 112, 113], $VT = [1, 121], $VU = [1, 120], $VV = [1, 128], $VW = [1, 142], $VX = [1, 143], $VY = [1, 144], $VZ = [1, 145], $V_ = [1, 130], $V$ = [1, 132], $V01 = [1, 136], $V11 = [1, 137], $V21 = [1, 138], $V31 = [1, 139], $V41 = [1, 140], $V51 = [1, 141], $V61 = [1, 146], $V71 = [1, 147], $V81 = [1, 126], $V91 = [1, 127], $Va1 = [1, 134], $Vb1 = [1, 129], $Vc1 = [1, 133], $Vd1 = [1, 131], $Ve1 = [8, 9, 10, 11, 27, 32, 34, 36, 38, 42, 58, 81, 82, 83, 84, 85, 86, 99, 102, 103, 106, 108, 111, 112, 113, 118, 119, 120, 121], $Vf1 = [1, 149], $Vg1 = [8, 9, 11], $Vh1 = [8, 9, 10, 11, 14, 42, 58, 86, 102, 103, 106, 108, 111, 112, 113], $Vi1 = [1, 169], $Vj1 = [1, 165], $Vk1 = [1, 166], $Vl1 = [1, 170], $Vm1 = [1, 167], $Vn1 = [1, 168], $Vo1 = [75, 113, 116], $Vp1 = [8, 9, 10, 11, 12, 14, 27, 29, 32, 42, 58, 73, 81, 82, 83, 84, 85, 86, 87, 102, 106, 108, 111, 112, 113], $Vq1 = [10, 103], $Vr1 = [31, 47, 49, 51, 53, 55, 60, 62, 64, 65, 67, 69, 113, 114, 115], $Vs1 = [1, 235], $Vt1 = [1, 233], $Vu1 = [1, 237], $Vv1 = [1, 231], $Vw1 = [1, 232], $Vx1 = [1, 234], $Vy1 = [1, 236], $Vz1 = [1, 238], $VA1 = [1, 255], $VB1 = [8, 9, 11, 103], $VC1 = [8, 9, 10, 11, 58, 81, 102, 103, 106, 107, 108, 109];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"graphConfig\": 4, \"document\": 5, \"line\": 6, \"statement\": 7, \"SEMI\": 8, \"NEWLINE\": 9, \"SPACE\": 10, \"EOF\": 11, \"GRAPH\": 12, \"NODIR\": 13, \"DIR\": 14, \"FirstStmtSeperator\": 15, \"ending\": 16, \"endToken\": 17, \"spaceList\": 18, \"spaceListNewline\": 19, \"verticeStatement\": 20, \"separator\": 21, \"styleStatement\": 22, \"linkStyleStatement\": 23, \"classDefStatement\": 24, \"classStatement\": 25, \"clickStatement\": 26, \"subgraph\": 27, \"textNoTags\": 28, \"SQS\": 29, \"text\": 30, \"SQE\": 31, \"end\": 32, \"direction\": 33, \"acc_title\": 34, \"acc_title_value\": 35, \"acc_descr\": 36, \"acc_descr_value\": 37, \"acc_descr_multiline_value\": 38, \"link\": 39, \"node\": 40, \"styledVertex\": 41, \"AMP\": 42, \"vertex\": 43, \"STYLE_SEPARATOR\": 44, \"idString\": 45, \"DOUBLECIRCLESTART\": 46, \"DOUBLECIRCLEEND\": 47, \"PS\": 48, \"PE\": 49, \"(-\": 50, \"-)\": 51, \"STADIUMSTART\": 52, \"STADIUMEND\": 53, \"SUBROUTINESTART\": 54, \"SUBROUTINEEND\": 55, \"VERTEX_WITH_PROPS_START\": 56, \"NODE_STRING[field]\": 57, \"COLON\": 58, \"NODE_STRING[value]\": 59, \"PIPE\": 60, \"CYLINDERSTART\": 61, \"CYLINDEREND\": 62, \"DIAMOND_START\": 63, \"DIAMOND_STOP\": 64, \"TAGEND\": 65, \"TRAPSTART\": 66, \"TRAPEND\": 67, \"INVTRAPSTART\": 68, \"INVTRAPEND\": 69, \"linkStatement\": 70, \"arrowText\": 71, \"TESTSTR\": 72, \"START_LINK\": 73, \"edgeText\": 74, \"LINK\": 75, \"edgeTextToken\": 76, \"STR\": 77, \"MD_STR\": 78, \"textToken\": 79, \"keywords\": 80, \"STYLE\": 81, \"LINKSTYLE\": 82, \"CLASSDEF\": 83, \"CLASS\": 84, \"CLICK\": 85, \"DOWN\": 86, \"UP\": 87, \"textNoTagsToken\": 88, \"stylesOpt\": 89, \"idString[vertex]\": 90, \"idString[class]\": 91, \"CALLBACKNAME\": 92, \"CALLBACKARGS\": 93, \"HREF\": 94, \"LINK_TARGET\": 95, \"STR[link]\": 96, \"STR[tooltip]\": 97, \"alphaNum\": 98, \"DEFAULT\": 99, \"numList\": 100, \"INTERPOLATE\": 101, \"NUM\": 102, \"COMMA\": 103, \"style\": 104, \"styleComponent\": 105, \"NODE_STRING\": 106, \"UNIT\": 107, \"BRKT\": 108, \"PCT\": 109, \"idStringToken\": 110, \"MINUS\": 111, \"MULT\": 112, \"UNICODE_TEXT\": 113, \"TEXT\": 114, \"TAGSTART\": 115, \"EDGE_TEXT\": 116, \"alphaNumToken\": 117, \"direction_tb\": 118, \"direction_bt\": 119, \"direction_rl\": 120, \"direction_lr\": 121, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 8: \"SEMI\", 9: \"NEWLINE\", 10: \"SPACE\", 11: \"EOF\", 12: \"GRAPH\", 13: \"NODIR\", 14: \"DIR\", 27: \"subgraph\", 29: \"SQS\", 31: \"SQE\", 32: \"end\", 34: \"acc_title\", 35: \"acc_title_value\", 36: \"acc_descr\", 37: \"acc_descr_value\", 38: \"acc_descr_multiline_value\", 42: \"AMP\", 44: \"STYLE_SEPARATOR\", 46: \"DOUBLECIRCLESTART\", 47: \"DOUBLECIRCLEEND\", 48: \"PS\", 49: \"PE\", 50: \"(-\", 51: \"-)\", 52: \"STADIUMSTART\", 53: \"STADIUMEND\", 54: \"SUBROUTINESTART\", 55: \"SUBROUTINEEND\", 56: \"VERTEX_WITH_PROPS_START\", 57: \"NODE_STRING[field]\", 58: \"COLON\", 59: \"NODE_STRING[value]\", 60: \"PIPE\", 61: \"CYLINDERSTART\", 62: \"CYLINDEREND\", 63: \"DIAMOND_START\", 64: \"DIAMOND_STOP\", 65: \"TAGEND\", 66: \"TRAPSTART\", 67: \"TRAPEND\", 68: \"INVTRAPSTART\", 69: \"INVTRAPEND\", 72: \"TESTSTR\", 73: \"START_LINK\", 75: \"LINK\", 77: \"STR\", 78: \"MD_STR\", 81: \"STYLE\", 82: \"LINKSTYLE\", 83: \"CLASSDEF\", 84: \"CLASS\", 85: \"CLICK\", 86: \"DOWN\", 87: \"UP\", 90: \"idString[vertex]\", 91: \"idString[class]\", 92: \"CALLBACKNAME\", 93: \"CALLBACKARGS\", 94: \"HREF\", 95: \"LINK_TARGET\", 96: \"STR[link]\", 97: \"STR[tooltip]\", 99: \"DEFAULT\", 101: \"INTERPOLATE\", 102: \"NUM\", 103: \"COMMA\", 106: \"NODE_STRING\", 107: \"UNIT\", 108: \"BRKT\", 109: \"PCT\", 111: \"MINUS\", 112: \"MULT\", 113: \"UNICODE_TEXT\", 114: \"TEXT\", 115: \"TAGSTART\", 116: \"EDGE_TEXT\", 118: \"direction_tb\", 119: \"direction_bt\", 120: \"direction_rl\", 121: \"direction_lr\" },\n productions_: [0, [3, 2], [5, 0], [5, 2], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [4, 2], [4, 2], [4, 2], [4, 3], [16, 2], [16, 1], [17, 1], [17, 1], [17, 1], [15, 1], [15, 1], [15, 2], [19, 2], [19, 2], [19, 1], [19, 1], [18, 2], [18, 1], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [7, 9], [7, 6], [7, 4], [7, 1], [7, 2], [7, 2], [7, 1], [21, 1], [21, 1], [21, 1], [20, 3], [20, 4], [20, 2], [20, 1], [40, 1], [40, 5], [41, 1], [41, 3], [43, 4], [43, 4], [43, 6], [43, 4], [43, 4], [43, 4], [43, 8], [43, 4], [43, 4], [43, 4], [43, 6], [43, 4], [43, 4], [43, 4], [43, 4], [43, 4], [43, 1], [39, 2], [39, 3], [39, 3], [39, 1], [39, 3], [74, 1], [74, 2], [74, 1], [74, 1], [70, 1], [71, 3], [30, 1], [30, 2], [30, 1], [30, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [80, 1], [28, 1], [28, 2], [28, 1], [28, 1], [24, 5], [25, 5], [26, 2], [26, 4], [26, 3], [26, 5], [26, 3], [26, 5], [26, 5], [26, 7], [26, 2], [26, 4], [26, 2], [26, 4], [26, 4], [26, 6], [22, 5], [23, 5], [23, 5], [23, 9], [23, 9], [23, 7], [23, 7], [100, 1], [100, 3], [89, 1], [89, 3], [104, 1], [104, 2], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [105, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [110, 1], [79, 1], [79, 1], [79, 1], [79, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [88, 1], [76, 1], [76, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [117, 1], [45, 1], [45, 2], [98, 1], [98, 2], [33, 1], [33, 1], [33, 1], [33, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 2:\n this.$ = [];\n break;\n case 3:\n if (!Array.isArray($$[$0]) || $$[$0].length > 0) {\n $$[$0 - 1].push($$[$0]);\n }\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 176:\n this.$ = $$[$0];\n break;\n case 11:\n yy.setDirection(\"TB\");\n this.$ = \"TB\";\n break;\n case 12:\n yy.setDirection($$[$0 - 1]);\n this.$ = $$[$0 - 1];\n break;\n case 27:\n this.$ = $$[$0 - 1].nodes;\n break;\n case 28:\n case 29:\n case 30:\n case 31:\n case 32:\n this.$ = [];\n break;\n case 33:\n this.$ = yy.addSubGraph($$[$0 - 6], $$[$0 - 1], $$[$0 - 4]);\n break;\n case 34:\n this.$ = yy.addSubGraph($$[$0 - 3], $$[$0 - 1], $$[$0 - 3]);\n break;\n case 35:\n this.$ = yy.addSubGraph(void 0, $$[$0 - 1], void 0);\n break;\n case 37:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 38:\n case 39:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 43:\n yy.addLink($$[$0 - 2].stmt, $$[$0], $$[$0 - 1]);\n this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0 - 2].nodes) };\n break;\n case 44:\n yy.addLink($$[$0 - 3].stmt, $$[$0 - 1], $$[$0 - 2]);\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1].concat($$[$0 - 3].nodes) };\n break;\n case 45:\n this.$ = { stmt: $$[$0 - 1], nodes: $$[$0 - 1] };\n break;\n case 46:\n this.$ = { stmt: $$[$0], nodes: $$[$0] };\n break;\n case 47:\n this.$ = [$$[$0]];\n break;\n case 48:\n this.$ = $$[$0 - 4].concat($$[$0]);\n break;\n case 49:\n this.$ = $$[$0];\n break;\n case 50:\n this.$ = $$[$0 - 2];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 51:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"square\");\n break;\n case 52:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"doublecircle\");\n break;\n case 53:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"circle\");\n break;\n case 54:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"ellipse\");\n break;\n case 55:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"stadium\");\n break;\n case 56:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"subroutine\");\n break;\n case 57:\n this.$ = $$[$0 - 7];\n yy.addVertex($$[$0 - 7], $$[$0 - 1], \"rect\", void 0, void 0, void 0, Object.fromEntries([[$$[$0 - 5], $$[$0 - 3]]]));\n break;\n case 58:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"cylinder\");\n break;\n case 59:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"round\");\n break;\n case 60:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"diamond\");\n break;\n case 61:\n this.$ = $$[$0 - 5];\n yy.addVertex($$[$0 - 5], $$[$0 - 2], \"hexagon\");\n break;\n case 62:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"odd\");\n break;\n case 63:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"trapezoid\");\n break;\n case 64:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"inv_trapezoid\");\n break;\n case 65:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_right\");\n break;\n case 66:\n this.$ = $$[$0 - 3];\n yy.addVertex($$[$0 - 3], $$[$0 - 1], \"lean_left\");\n break;\n case 67:\n this.$ = $$[$0];\n yy.addVertex($$[$0]);\n break;\n case 68:\n $$[$0 - 1].text = $$[$0];\n this.$ = $$[$0 - 1];\n break;\n case 69:\n case 70:\n $$[$0 - 2].text = $$[$0 - 1];\n this.$ = $$[$0 - 2];\n break;\n case 71:\n this.$ = $$[$0];\n break;\n case 72:\n var inf = yy.destructLink($$[$0], $$[$0 - 2]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length, \"text\": $$[$0 - 1] };\n break;\n case 73:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 74:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 75:\n this.$ = { text: $$[$0], type: \"string\" };\n break;\n case 76:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 77:\n var inf = yy.destructLink($$[$0]);\n this.$ = { \"type\": inf.type, \"stroke\": inf.stroke, \"length\": inf.length };\n break;\n case 78:\n this.$ = $$[$0 - 1];\n break;\n case 79:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 80:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 81:\n this.$ = { text: $$[$0], type: \"string\" };\n break;\n case 82:\n case 97:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 94:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 95:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 96:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 98:\n this.$ = $$[$0 - 4];\n yy.addClass($$[$0 - 2], $$[$0]);\n break;\n case 99:\n this.$ = $$[$0 - 4];\n yy.setClass($$[$0 - 2], $$[$0]);\n break;\n case 100:\n case 108:\n this.$ = $$[$0 - 1];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 101:\n case 109:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 102:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 103:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 4], $$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 4], $$[$0]);\n break;\n case 104:\n this.$ = $$[$0 - 2];\n yy.setLink($$[$0 - 2], $$[$0]);\n break;\n case 105:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 4], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 4], $$[$0]);\n break;\n case 106:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 107:\n this.$ = $$[$0 - 6];\n yy.setLink($$[$0 - 6], $$[$0 - 4], $$[$0]);\n yy.setTooltip($$[$0 - 6], $$[$0 - 2]);\n break;\n case 110:\n this.$ = $$[$0 - 1];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 111:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 112:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n break;\n case 113:\n this.$ = $$[$0 - 5];\n yy.setLink($$[$0 - 5], $$[$0 - 4], $$[$0]);\n yy.setTooltip($$[$0 - 5], $$[$0 - 2]);\n break;\n case 114:\n this.$ = $$[$0 - 4];\n yy.addVertex($$[$0 - 2], void 0, void 0, $$[$0]);\n break;\n case 115:\n this.$ = $$[$0 - 4];\n yy.updateLink([$$[$0 - 2]], $$[$0]);\n break;\n case 116:\n this.$ = $$[$0 - 4];\n yy.updateLink($$[$0 - 2], $$[$0]);\n break;\n case 117:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate([$$[$0 - 6]], $$[$0 - 2]);\n yy.updateLink([$$[$0 - 6]], $$[$0]);\n break;\n case 118:\n this.$ = $$[$0 - 8];\n yy.updateLinkInterpolate($$[$0 - 6], $$[$0 - 2]);\n yy.updateLink($$[$0 - 6], $$[$0]);\n break;\n case 119:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate([$$[$0 - 4]], $$[$0]);\n break;\n case 120:\n this.$ = $$[$0 - 6];\n yy.updateLinkInterpolate($$[$0 - 4], $$[$0]);\n break;\n case 121:\n case 123:\n this.$ = [$$[$0]];\n break;\n case 122:\n case 124:\n $$[$0 - 2].push($$[$0]);\n this.$ = $$[$0 - 2];\n break;\n case 126:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 174:\n this.$ = $$[$0];\n break;\n case 175:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 177:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n case 178:\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 179:\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 180:\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 181:\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 9: $V0, 10: $V1, 12: $V2 }, { 1: [3] }, o($V3, $V4, { 5: 6 }), { 4: 7, 9: $V0, 10: $V1, 12: $V2 }, { 4: 8, 9: $V0, 10: $V1, 12: $V2 }, { 13: [1, 9], 14: [1, 10] }, { 1: [2, 1], 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, o($V3, [2, 9]), o($V3, [2, 10]), o($V3, [2, 11]), { 8: [1, 54], 9: [1, 55], 10: $Vx, 15: 53, 18: 56 }, o($Vy, [2, 3]), o($Vy, [2, 4]), o($Vy, [2, 5]), o($Vy, [2, 6]), o($Vy, [2, 7]), o($Vy, [2, 8]), { 8: $Vz, 9: $VA, 11: $VB, 21: 58, 39: 59, 70: 63, 73: [1, 64], 75: [1, 65] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 66 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 67 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 68 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 69 }, { 8: $Vz, 9: $VA, 11: $VB, 21: 70 }, { 8: $Vz, 9: $VA, 10: [1, 71], 11: $VB, 21: 72 }, o($Vy, [2, 36]), { 35: [1, 73] }, { 37: [1, 74] }, o($Vy, [2, 39]), o($VC, [2, 46], { 18: 75, 10: $Vx }), { 10: [1, 76] }, { 10: [1, 77] }, { 10: [1, 78] }, { 10: [1, 79] }, { 14: $VD, 42: $VE, 58: $VF, 77: [1, 83], 86: $VG, 92: [1, 80], 94: [1, 81], 98: 82, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN, 117: 84 }, o($Vy, [2, 178]), o($Vy, [2, 179]), o($Vy, [2, 180]), o($Vy, [2, 181]), o($VO, [2, 47]), o($VO, [2, 49], { 44: [1, 96] }), o($VP, [2, 67], { 110: 109, 29: [1, 97], 42: $Vd, 46: [1, 98], 48: [1, 99], 50: [1, 100], 52: [1, 101], 54: [1, 102], 56: [1, 103], 58: $Ve, 61: [1, 104], 63: [1, 105], 65: [1, 106], 66: [1, 107], 68: [1, 108], 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 111: $Vq, 112: $Vr, 113: $Vs }), o($VQ, [2, 174]), o($VQ, [2, 135]), o($VQ, [2, 136]), o($VQ, [2, 137]), o($VQ, [2, 138]), o($VQ, [2, 139]), o($VQ, [2, 140]), o($VQ, [2, 141]), o($VQ, [2, 142]), o($VQ, [2, 143]), o($VQ, [2, 144]), o($VQ, [2, 145]), o($V3, [2, 12]), o($V3, [2, 18]), o($V3, [2, 19]), { 9: [1, 110] }, o($VR, [2, 26], { 18: 111, 10: $Vx }), o($Vy, [2, 27]), { 40: 112, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, o($Vy, [2, 40]), o($Vy, [2, 41]), o($Vy, [2, 42]), o($VS, [2, 71], { 71: 113, 60: [1, 115], 72: [1, 114] }), { 74: 116, 76: 117, 77: [1, 118], 78: [1, 119], 113: $VT, 116: $VU }, o([42, 58, 60, 72, 86, 99, 102, 103, 106, 108, 111, 112, 113], [2, 77]), o($Vy, [2, 28]), o($Vy, [2, 29]), o($Vy, [2, 30]), o($Vy, [2, 31]), o($Vy, [2, 32]), { 10: $VV, 12: $VW, 14: $VX, 27: $VY, 28: 122, 32: $VZ, 42: $V_, 58: $V$, 73: $V01, 77: [1, 124], 78: [1, 125], 80: 135, 81: $V11, 82: $V21, 83: $V31, 84: $V41, 85: $V51, 86: $V61, 87: $V71, 88: 123, 102: $V81, 106: $V91, 108: $Va1, 111: $Vb1, 112: $Vc1, 113: $Vd1 }, o($Ve1, $V4, { 5: 148 }), o($Vy, [2, 37]), o($Vy, [2, 38]), o($VC, [2, 45], { 42: $Vf1 }), { 42: $Vd, 45: 150, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 99: [1, 151], 100: 152, 102: [1, 153] }, { 42: $Vd, 45: 154, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 42: $Vd, 45: 155, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, o($Vg1, [2, 100], { 10: [1, 156], 93: [1, 157] }), { 77: [1, 158] }, o($Vg1, [2, 108], { 117: 160, 10: [1, 159], 14: $VD, 42: $VE, 58: $VF, 86: $VG, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN }), o($Vg1, [2, 110], { 10: [1, 161] }), o($Vh1, [2, 176]), o($Vh1, [2, 163]), o($Vh1, [2, 164]), o($Vh1, [2, 165]), o($Vh1, [2, 166]), o($Vh1, [2, 167]), o($Vh1, [2, 168]), o($Vh1, [2, 169]), o($Vh1, [2, 170]), o($Vh1, [2, 171]), o($Vh1, [2, 172]), o($Vh1, [2, 173]), { 42: $Vd, 45: 162, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 30: 163, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 171, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 173, 48: [1, 172], 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 174, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 175, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 176, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 106: [1, 177] }, { 30: 178, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 179, 63: [1, 180], 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 181, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 182, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 183, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VQ, [2, 175]), o($V3, [2, 20]), o($VR, [2, 25]), o($VC, [2, 43], { 18: 184, 10: $Vx }), o($VS, [2, 68], { 10: [1, 185] }), { 10: [1, 186] }, { 30: 187, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 75: [1, 188], 76: 189, 113: $VT, 116: $VU }, o($Vo1, [2, 73]), o($Vo1, [2, 75]), o($Vo1, [2, 76]), o($Vo1, [2, 161]), o($Vo1, [2, 162]), { 8: $Vz, 9: $VA, 10: $VV, 11: $VB, 12: $VW, 14: $VX, 21: 191, 27: $VY, 29: [1, 190], 32: $VZ, 42: $V_, 58: $V$, 73: $V01, 80: 135, 81: $V11, 82: $V21, 83: $V31, 84: $V41, 85: $V51, 86: $V61, 87: $V71, 88: 192, 102: $V81, 106: $V91, 108: $Va1, 111: $Vb1, 112: $Vc1, 113: $Vd1 }, o($Vp1, [2, 94]), o($Vp1, [2, 96]), o($Vp1, [2, 97]), o($Vp1, [2, 150]), o($Vp1, [2, 151]), o($Vp1, [2, 152]), o($Vp1, [2, 153]), o($Vp1, [2, 154]), o($Vp1, [2, 155]), o($Vp1, [2, 156]), o($Vp1, [2, 157]), o($Vp1, [2, 158]), o($Vp1, [2, 159]), o($Vp1, [2, 160]), o($Vp1, [2, 83]), o($Vp1, [2, 84]), o($Vp1, [2, 85]), o($Vp1, [2, 86]), o($Vp1, [2, 87]), o($Vp1, [2, 88]), o($Vp1, [2, 89]), o($Vp1, [2, 90]), o($Vp1, [2, 91]), o($Vp1, [2, 92]), o($Vp1, [2, 93]), { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 193], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, { 10: $Vx, 18: 194 }, { 10: [1, 195], 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 109, 111: $Vq, 112: $Vr, 113: $Vs }, { 10: [1, 196] }, { 10: [1, 197], 103: [1, 198] }, o($Vq1, [2, 121]), { 10: [1, 199], 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 109, 111: $Vq, 112: $Vr, 113: $Vs }, { 10: [1, 200], 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 109, 111: $Vq, 112: $Vr, 113: $Vs }, { 77: [1, 201] }, o($Vg1, [2, 102], { 10: [1, 202] }), o($Vg1, [2, 104], { 10: [1, 203] }), { 77: [1, 204] }, o($Vh1, [2, 177]), { 77: [1, 205], 95: [1, 206] }, o($VO, [2, 50], { 110: 109, 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 111: $Vq, 112: $Vr, 113: $Vs }), { 31: [1, 207], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($Vr1, [2, 79]), o($Vr1, [2, 81]), o($Vr1, [2, 82]), o($Vr1, [2, 146]), o($Vr1, [2, 147]), o($Vr1, [2, 148]), o($Vr1, [2, 149]), { 47: [1, 209], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 210, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 49: [1, 211], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 51: [1, 212], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 53: [1, 213], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 55: [1, 214], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 58: [1, 215] }, { 62: [1, 216], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 64: [1, 217], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 30: 218, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 31: [1, 219], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 65: $Vi1, 67: [1, 220], 69: [1, 221], 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 65: $Vi1, 67: [1, 223], 69: [1, 222], 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VC, [2, 44], { 42: $Vf1 }), o($VS, [2, 70]), o($VS, [2, 69]), { 60: [1, 224], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VS, [2, 72]), o($Vo1, [2, 74]), { 30: 225, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($Ve1, $V4, { 5: 226 }), o($Vp1, [2, 95]), o($Vy, [2, 35]), { 41: 227, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 228, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 239, 101: [1, 240], 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 241, 101: [1, 242], 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 102: [1, 243] }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 244, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 42: $Vd, 45: 245, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs }, o($Vg1, [2, 101]), { 77: [1, 246] }, { 77: [1, 247], 95: [1, 248] }, o($Vg1, [2, 109]), o($Vg1, [2, 111], { 10: [1, 249] }), o($Vg1, [2, 112]), o($VP, [2, 51]), o($Vr1, [2, 80]), o($VP, [2, 52]), { 49: [1, 250], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VP, [2, 59]), o($VP, [2, 54]), o($VP, [2, 55]), o($VP, [2, 56]), { 106: [1, 251] }, o($VP, [2, 58]), o($VP, [2, 60]), { 64: [1, 252], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VP, [2, 62]), o($VP, [2, 63]), o($VP, [2, 65]), o($VP, [2, 64]), o($VP, [2, 66]), o([10, 42, 58, 86, 99, 102, 103, 106, 108, 111, 112, 113], [2, 78]), { 31: [1, 253], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 254], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, o($VO, [2, 48]), o($Vg1, [2, 114], { 103: $VA1 }), o($VB1, [2, 123], { 105: 256, 10: $Vs1, 58: $Vt1, 81: $Vu1, 102: $Vv1, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }), o($VC1, [2, 125]), o($VC1, [2, 127]), o($VC1, [2, 128]), o($VC1, [2, 129]), o($VC1, [2, 130]), o($VC1, [2, 131]), o($VC1, [2, 132]), o($VC1, [2, 133]), o($VC1, [2, 134]), o($Vg1, [2, 115], { 103: $VA1 }), { 10: [1, 257] }, o($Vg1, [2, 116], { 103: $VA1 }), { 10: [1, 258] }, o($Vq1, [2, 122]), o($Vg1, [2, 98], { 103: $VA1 }), o($Vg1, [2, 99], { 110: 109, 42: $Vd, 58: $Ve, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 111: $Vq, 112: $Vr, 113: $Vs }), o($Vg1, [2, 103]), o($Vg1, [2, 105], { 10: [1, 259] }), o($Vg1, [2, 106]), { 95: [1, 260] }, { 49: [1, 261] }, { 60: [1, 262] }, { 64: [1, 263] }, { 8: $Vz, 9: $VA, 11: $VB, 21: 264 }, o($Vy, [2, 34]), { 10: $Vs1, 58: $Vt1, 81: $Vu1, 102: $Vv1, 104: 265, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, o($VC1, [2, 126]), { 14: $VD, 42: $VE, 58: $VF, 86: $VG, 98: 266, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN, 117: 84 }, { 14: $VD, 42: $VE, 58: $VF, 86: $VG, 98: 267, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN, 117: 84 }, { 95: [1, 268] }, o($Vg1, [2, 113]), o($VP, [2, 53]), { 30: 269, 65: $Vi1, 77: $Vj1, 78: $Vk1, 79: 164, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, o($VP, [2, 61]), o($Ve1, $V4, { 5: 270 }), o($VB1, [2, 124], { 105: 256, 10: $Vs1, 58: $Vt1, 81: $Vu1, 102: $Vv1, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }), o($Vg1, [2, 119], { 117: 160, 10: [1, 271], 14: $VD, 42: $VE, 58: $VF, 86: $VG, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN }), o($Vg1, [2, 120], { 117: 160, 10: [1, 272], 14: $VD, 42: $VE, 58: $VF, 86: $VG, 102: $VH, 103: $VI, 106: $VJ, 108: $VK, 111: $VL, 112: $VM, 113: $VN }), o($Vg1, [2, 107]), { 31: [1, 273], 65: $Vi1, 79: 208, 113: $Vl1, 114: $Vm1, 115: $Vn1 }, { 6: 11, 7: 12, 8: $V5, 9: $V6, 10: $V7, 11: $V8, 20: 17, 22: 18, 23: 19, 24: 20, 25: 21, 26: 22, 27: $V9, 32: [1, 274], 33: 24, 34: $Va, 36: $Vb, 38: $Vc, 40: 28, 41: 38, 42: $Vd, 43: 39, 45: 40, 58: $Ve, 81: $Vf, 82: $Vg, 83: $Vh, 84: $Vi, 85: $Vj, 86: $Vk, 99: $Vl, 102: $Vm, 103: $Vn, 106: $Vo, 108: $Vp, 110: 41, 111: $Vq, 112: $Vr, 113: $Vs, 118: $Vt, 119: $Vu, 120: $Vv, 121: $Vw }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 275, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, { 10: $Vs1, 58: $Vt1, 81: $Vu1, 89: 276, 102: $Vv1, 104: 229, 105: 230, 106: $Vw1, 107: $Vx1, 108: $Vy1, 109: $Vz1 }, o($VP, [2, 57]), o($Vy, [2, 33]), o($Vg1, [2, 117], { 103: $VA1 }), o($Vg1, [2, 118], { 103: $VA1 })],\n defaultActions: {},\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex2() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex2();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex2() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 34;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 36;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n this.begin(\"callbackname\");\n break;\n case 8:\n this.popState();\n break;\n case 9:\n this.popState();\n this.begin(\"callbackargs\");\n break;\n case 10:\n return 92;\n case 11:\n this.popState();\n break;\n case 12:\n return 93;\n case 13:\n return \"MD_STR\";\n case 14:\n this.popState();\n break;\n case 15:\n this.begin(\"md_string\");\n break;\n case 16:\n return \"STR\";\n case 17:\n this.popState();\n break;\n case 18:\n this.pushState(\"string\");\n break;\n case 19:\n return 81;\n case 20:\n return 99;\n case 21:\n return 82;\n case 22:\n return 101;\n case 23:\n return 83;\n case 24:\n return 84;\n case 25:\n return 94;\n case 26:\n this.begin(\"click\");\n break;\n case 27:\n this.popState();\n break;\n case 28:\n return 85;\n case 29:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 12;\n case 30:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 12;\n case 31:\n if (yy.lex.firstGraph()) {\n this.begin(\"dir\");\n }\n return 12;\n case 32:\n return 27;\n case 33:\n return 32;\n case 34:\n return 95;\n case 35:\n return 95;\n case 36:\n return 95;\n case 37:\n return 95;\n case 38:\n this.popState();\n return 13;\n case 39:\n this.popState();\n return 14;\n case 40:\n this.popState();\n return 14;\n case 41:\n this.popState();\n return 14;\n case 42:\n this.popState();\n return 14;\n case 43:\n this.popState();\n return 14;\n case 44:\n this.popState();\n return 14;\n case 45:\n this.popState();\n return 14;\n case 46:\n this.popState();\n return 14;\n case 47:\n this.popState();\n return 14;\n case 48:\n this.popState();\n return 14;\n case 49:\n return 118;\n case 50:\n return 119;\n case 51:\n return 120;\n case 52:\n return 121;\n case 53:\n return 102;\n case 54:\n return 108;\n case 55:\n return 44;\n case 56:\n return 58;\n case 57:\n return 42;\n case 58:\n return 8;\n case 59:\n return 103;\n case 60:\n return 112;\n case 61:\n this.popState();\n return 75;\n case 62:\n this.pushState(\"edgeText\");\n return 73;\n case 63:\n return 116;\n case 64:\n this.popState();\n return 75;\n case 65:\n this.pushState(\"thickEdgeText\");\n return 73;\n case 66:\n return 116;\n case 67:\n this.popState();\n return 75;\n case 68:\n this.pushState(\"dottedEdgeText\");\n return 73;\n case 69:\n return 116;\n case 70:\n return 75;\n case 71:\n this.popState();\n return 51;\n case 72:\n return \"TEXT\";\n case 73:\n this.pushState(\"ellipseText\");\n return 50;\n case 74:\n this.popState();\n return 53;\n case 75:\n this.pushState(\"text\");\n return 52;\n case 76:\n this.popState();\n return 55;\n case 77:\n this.pushState(\"text\");\n return 54;\n case 78:\n return 56;\n case 79:\n this.pushState(\"text\");\n return 65;\n case 80:\n this.popState();\n return 62;\n case 81:\n this.pushState(\"text\");\n return 61;\n case 82:\n this.popState();\n return 47;\n case 83:\n this.pushState(\"text\");\n return 46;\n case 84:\n this.popState();\n return 67;\n case 85:\n this.popState();\n return 69;\n case 86:\n return 114;\n case 87:\n this.pushState(\"trapText\");\n return 66;\n case 88:\n this.pushState(\"trapText\");\n return 68;\n case 89:\n return 115;\n case 90:\n return 65;\n case 91:\n return 87;\n case 92:\n return \"SEP\";\n case 93:\n return 86;\n case 94:\n return 112;\n case 95:\n return 108;\n case 96:\n return 42;\n case 97:\n return 106;\n case 98:\n return 111;\n case 99:\n return 113;\n case 100:\n this.popState();\n return 60;\n case 101:\n this.pushState(\"text\");\n return 60;\n case 102:\n this.popState();\n return 49;\n case 103:\n this.pushState(\"text\");\n return 48;\n case 104:\n this.popState();\n return 31;\n case 105:\n this.pushState(\"text\");\n return 29;\n case 106:\n this.popState();\n return 64;\n case 107:\n this.pushState(\"text\");\n return 63;\n case 108:\n return \"TEXT\";\n case 109:\n return \"QUOTE\";\n case 110:\n return 9;\n case 111:\n return 10;\n case 112:\n return 11;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:[^`\"]+)/, /^(?:[`][\"])/, /^(?:[\"][`])/, /^(?:[^\"]+)/, /^(?:[\"])/, /^(?:[\"])/, /^(?:style\\b)/, /^(?:default\\b)/, /^(?:linkStyle\\b)/, /^(?:interpolate\\b)/, /^(?:classDef\\b)/, /^(?:class\\b)/, /^(?:href[\\s])/, /^(?:click[\\s]+)/, /^(?:[\\s\\n])/, /^(?:[^\\s\\n]*)/, /^(?:flowchart-elk\\b)/, /^(?:graph\\b)/, /^(?:flowchart\\b)/, /^(?:subgraph\\b)/, /^(?:end\\b\\s*)/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:(\\r?\\n)*\\s*\\n)/, /^(?:\\s*LR\\b)/, /^(?:\\s*RL\\b)/, /^(?:\\s*TB\\b)/, /^(?:\\s*BT\\b)/, /^(?:\\s*TD\\b)/, /^(?:\\s*BR\\b)/, /^(?:\\s*<)/, /^(?:\\s*>)/, /^(?:\\s*\\^)/, /^(?:\\s*v\\b)/, /^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:[0-9]+)/, /^(?:#)/, /^(?::::)/, /^(?::)/, /^(?:&)/, /^(?:;)/, /^(?:,)/, /^(?:\\*)/, /^(?:\\s*[xo<]?--+[-xo>]\\s*)/, /^(?:\\s*[xo<]?--\\s*)/, /^(?:[^-]|-(?!-)+)/, /^(?:\\s*[xo<]?==+[=xo>]\\s*)/, /^(?:\\s*[xo<]?==\\s*)/, /^(?:[^=]|=(?!))/, /^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/, /^(?:\\s*[xo<]?-\\.\\s*)/, /^(?:[^\\.]|\\.(?!))/, /^(?:\\s*~~[\\~]+\\s*)/, /^(?:[-/\\)][\\)])/, /^(?:[^\\(\\)\\[\\]\\{\\}]|!\\)+)/, /^(?:\\(-)/, /^(?:\\]\\))/, /^(?:\\(\\[)/, /^(?:\\]\\])/, /^(?:\\[\\[)/, /^(?:\\[\\|)/, /^(?:>)/, /^(?:\\)\\])/, /^(?:\\[\\()/, /^(?:\\)\\)\\))/, /^(?:\\(\\(\\()/, /^(?:[\\\\(?=\\])][\\]])/, /^(?:\\/(?=\\])\\])/, /^(?:\\/(?!\\])|\\\\(?!\\])|[^\\\\\\[\\]\\(\\)\\{\\}\\/]+)/, /^(?:\\[\\/)/, /^(?:\\[\\\\)/, /^(?:<)/, /^(?:>)/, /^(?:\\^)/, /^(?:\\\\\\|)/, /^(?:v\\b)/, /^(?:\\*)/, /^(?:#)/, /^(?:&)/, /^(?:([A-Za-z0-9!\"\\#$%&'*+\\.`?\\\\_\\/]|-(?=[^\\>\\-\\.])|(?!))+)/, /^(?:-)/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\|)/, /^(?:\\|)/, /^(?:\\))/, /^(?:\\()/, /^(?:\\])/, /^(?:\\[)/, /^(?:(\\}))/, /^(?:\\{)/, /^(?:[^\\[\\]\\(\\)\\{\\}\\|\\\"]+)/, /^(?:\")/, /^(?:(\\r?\\n)+)/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"callbackargs\": { \"rules\": [11, 12, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"callbackname\": { \"rules\": [8, 9, 10, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"href\": { \"rules\": [15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"click\": { \"rules\": [15, 18, 27, 28, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"dottedEdgeText\": { \"rules\": [15, 18, 67, 69, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"thickEdgeText\": { \"rules\": [15, 18, 64, 66, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"edgeText\": { \"rules\": [15, 18, 61, 63, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"trapText\": { \"rules\": [15, 18, 70, 73, 75, 77, 81, 83, 84, 85, 86, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"ellipseText\": { \"rules\": [15, 18, 70, 71, 72, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"text\": { \"rules\": [15, 18, 70, 73, 74, 75, 76, 77, 80, 81, 82, 83, 87, 88, 100, 101, 102, 103, 104, 105, 106, 107, 108], \"inclusive\": false }, \"vertex\": { \"rules\": [15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"dir\": { \"rules\": [15, 18, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [5, 6, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"acc_title\": { \"rules\": [1, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"md_string\": { \"rules\": [13, 14, 15, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"string\": { \"rules\": [15, 16, 17, 18, 70, 73, 75, 77, 81, 83, 87, 88, 101, 103, 105, 107], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 67, 68, 70, 73, 75, 77, 78, 79, 81, 83, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 101, 103, 105, 107, 109, 110, 111, 112], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst MERMAID_DOM_ID_PREFIX = \"flowchart-\";\nlet vertexCounter = 0;\nlet config = getConfig();\nlet vertices = {};\nlet edges = [];\nlet classes = {};\nlet subGraphs = [];\nlet subGraphLookup = {};\nlet tooltips = {};\nlet subCount = 0;\nlet firstGraphFlag = true;\nlet direction;\nlet version;\nlet funs = [];\nconst sanitizeText = (txt) => common.sanitizeText(txt, config);\nconst lookUpDomId = function(id) {\n const veritceKeys = Object.keys(vertices);\n for (const veritceKey of veritceKeys) {\n if (vertices[veritceKey].id === id) {\n return vertices[veritceKey].domId;\n }\n }\n return id;\n};\nconst addVertex = function(_id, textObj, type, style, classes2, dir, props = {}) {\n let txt;\n let id = _id;\n if (id === void 0) {\n return;\n }\n if (id.trim().length === 0) {\n return;\n }\n if (vertices[id] === void 0) {\n vertices[id] = {\n id,\n labelType: \"text\",\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + vertexCounter,\n styles: [],\n classes: []\n };\n }\n vertexCounter++;\n if (textObj !== void 0) {\n config = getConfig();\n txt = sanitizeText(textObj.text.trim());\n vertices[id].labelType = textObj.type;\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n vertices[id].text = txt;\n } else {\n if (vertices[id].text === void 0) {\n vertices[id].text = _id;\n }\n }\n if (type !== void 0) {\n vertices[id].type = type;\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n vertices[id].styles.push(s);\n });\n }\n if (classes2 !== void 0 && classes2 !== null) {\n classes2.forEach(function(s) {\n vertices[id].classes.push(s);\n });\n }\n if (dir !== void 0) {\n vertices[id].dir = dir;\n }\n if (vertices[id].props === void 0) {\n vertices[id].props = props;\n } else if (props !== void 0) {\n Object.assign(vertices[id].props, props);\n }\n};\nconst addSingleLink = function(_start, _end, type) {\n let start = _start;\n let end = _end;\n const edge = { start, end, type: void 0, text: \"\", labelType: \"text\" };\n log.info(\"abc78 Got edge...\", edge);\n const linkTextObj = type.text;\n if (linkTextObj !== void 0) {\n edge.text = sanitizeText(linkTextObj.text.trim());\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n edge.labelType = linkTextObj.type;\n }\n if (type !== void 0) {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length;\n }\n if ((edge == null ? void 0 : edge.length) > 10) {\n edge.length = 10;\n }\n if (edges.length < 280) {\n log.info(\"abc78 pushing edge...\");\n edges.push(edge);\n } else {\n throw new Error(\"Too many edges\");\n }\n};\nconst addLink = function(_start, _end, type) {\n log.info(\"addLink (abc78)\", _start, _end, type);\n let i, j;\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type);\n }\n }\n};\nconst updateLinkInterpolate = function(positions, interp) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\nconst updateLink = function(positions, style) {\n positions.forEach(function(pos) {\n if (pos === \"default\") {\n edges.defaultStyle = style;\n } else {\n if (utils.isSubstringInArray(\"fill\", style) === -1) {\n style.push(\"fill:none\");\n }\n edges[pos].style = style;\n }\n });\n};\nconst addClass = function(ids, style) {\n ids.split(\",\").forEach(function(id) {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n if (style !== void 0 && style !== null) {\n style.forEach(function(s) {\n if (s.match(\"color\")) {\n const newStyle = s.replace(\"fill\", \"bgFill\").replace(\"color\", \"fill\");\n classes[id].textStyles.push(newStyle);\n }\n classes[id].styles.push(s);\n });\n }\n });\n};\nconst setDirection = function(dir) {\n direction = dir;\n if (direction.match(/.*/)) {\n direction = \"LR\";\n }\n if (direction.match(/.*v/)) {\n direction = \"TB\";\n }\n if (direction === \"TD\") {\n direction = \"TB\";\n }\n};\nconst setClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (vertices[id] !== void 0) {\n vertices[id].classes.push(className);\n }\n if (subGraphLookup[id] !== void 0) {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n tooltips[version === \"gen-1\" ? lookUpDomId(id) : id] = sanitizeText(tooltip);\n }\n });\n};\nconst setClickFun = function(id, functionName, functionArgs) {\n let domId = lookUpDomId(id);\n if (getConfig().securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(id);\n }\n if (vertices[id] !== void 0) {\n vertices[id].haveCallback = true;\n funs.push(function() {\n const elem = document.querySelector(`[id=\"${domId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst setLink = function(ids, linkStr, target) {\n ids.split(\",\").forEach(function(id) {\n if (vertices[id] !== void 0) {\n vertices[id].link = utils.formatUrl(linkStr, config);\n vertices[id].linkTarget = target;\n }\n });\n setClass(ids, \"clickable\");\n};\nconst getTooltip = function(id) {\n if (tooltips.hasOwnProperty(id)) {\n return tooltips[id];\n }\n return void 0;\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, \"clickable\");\n};\nconst bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nconst getDirection = function() {\n return direction.trim();\n};\nconst getVertices = function() {\n return vertices;\n};\nconst getEdges = function() {\n return edges;\n};\nconst getClasses = function() {\n return classes;\n};\nconst setupToolTips = function(element) {\n let tooltipElem = select(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = select(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = select(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.top - 14 + document.body.scrollTop + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n};\nfuns.push(setupToolTips);\nconst clear = function(ver = \"gen-1\") {\n vertices = {};\n classes = {};\n edges = [];\n funs = [setupToolTips];\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = {};\n firstGraphFlag = true;\n version = ver;\n clear$1();\n};\nconst setGen = (ver) => {\n version = ver || \"gen-2\";\n};\nconst defaultStyle = function() {\n return \"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;\";\n};\nconst addSubGraph = function(_id, list, _title) {\n let id = _id.text.trim();\n let title = _title.text;\n if (_id === _title && _title.text.match(/\\s/)) {\n id = void 0;\n }\n function uniq(a) {\n const prims = { boolean: {}, number: {}, string: {} };\n const objs = [];\n let dir2;\n const nodeList2 = a.filter(function(item) {\n const type = typeof item;\n if (item.stmt && item.stmt === \"dir\") {\n dir2 = item.value;\n return false;\n }\n if (item.trim() === \"\") {\n return false;\n }\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true;\n } else {\n return objs.includes(item) ? false : objs.push(item);\n }\n });\n return { nodeList: nodeList2, dir: dir2 };\n }\n let nodeList = [];\n const { nodeList: nl, dir } = uniq(nodeList.concat.apply(nodeList, list));\n nodeList = nl;\n if (version === \"gen-1\") {\n for (let i = 0; i < nodeList.length; i++) {\n nodeList[i] = lookUpDomId(nodeList[i]);\n }\n }\n id = id || \"subGraph\" + subCount;\n title = title || \"\";\n title = sanitizeText(title);\n subCount = subCount + 1;\n const subGraph = {\n id,\n nodes: nodeList,\n title: title.trim(),\n classes: [],\n dir,\n labelType: _title.type\n };\n log.info(\"Adding\", subGraph.id, subGraph.nodes, subGraph.dir);\n subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\nconst getPosForId = function(id) {\n for (const [i, subGraph] of subGraphs.entries()) {\n if (subGraph.id === id) {\n return i;\n }\n }\n return -1;\n};\nlet secCount = -1;\nconst posCrossRef = [];\nconst indexNodes2 = function(id, pos) {\n const nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n if (secCount > 2e3) {\n return;\n }\n posCrossRef[secCount] = pos;\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n let count = 0;\n let posCount = 1;\n while (count < nodes.length) {\n const childPos = getPosForId(nodes[count]);\n if (childPos >= 0) {\n const res = indexNodes2(id, childPos);\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n count = count + 1;\n }\n return {\n result: false,\n count: posCount\n };\n};\nconst getDepthFirstPos = function(pos) {\n return posCrossRef[pos];\n};\nconst indexNodes = function() {\n secCount = -1;\n if (subGraphs.length > 0) {\n indexNodes2(\"none\", subGraphs.length - 1);\n }\n};\nconst getSubGraphs = function() {\n return subGraphs;\n};\nconst firstGraph = () => {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n return false;\n};\nconst destructStartLink = (_str) => {\n let str = _str.trim();\n let type = \"arrow_open\";\n switch (str[0]) {\n case \"<\":\n type = \"arrow_point\";\n str = str.slice(1);\n break;\n case \"x\":\n type = \"arrow_cross\";\n str = str.slice(1);\n break;\n case \"o\":\n type = \"arrow_circle\";\n str = str.slice(1);\n break;\n }\n let stroke = \"normal\";\n if (str.includes(\"=\")) {\n stroke = \"thick\";\n }\n if (str.includes(\".\")) {\n stroke = \"dotted\";\n }\n return { type, stroke };\n};\nconst countChar = (char, str) => {\n const length = str.length;\n let count = 0;\n for (let i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n return count;\n};\nconst destructEndLink = (_str) => {\n const str = _str.trim();\n let line = str.slice(0, -1);\n let type = \"arrow_open\";\n switch (str.slice(-1)) {\n case \"x\":\n type = \"arrow_cross\";\n if (str[0] === \"x\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \">\":\n type = \"arrow_point\";\n if (str[0] === \"<\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n case \"o\":\n type = \"arrow_circle\";\n if (str[0] === \"o\") {\n type = \"double_\" + type;\n line = line.slice(1);\n }\n break;\n }\n let stroke = \"normal\";\n let length = line.length - 1;\n if (line[0] === \"=\") {\n stroke = \"thick\";\n }\n if (line[0] === \"~\") {\n stroke = \"invisible\";\n }\n let dots = countChar(\".\", line);\n if (dots) {\n stroke = \"dotted\";\n length = dots;\n }\n return { type, stroke, length };\n};\nconst destructLink = (_str, _startStr) => {\n const info = destructEndLink(_str);\n let startInfo;\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n if (startInfo.stroke !== info.stroke) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n if (startInfo.type === \"arrow_open\") {\n startInfo.type = info.type;\n } else {\n if (startInfo.type !== info.type) {\n return { type: \"INVALID\", stroke: \"INVALID\" };\n }\n startInfo.type = \"double_\" + startInfo.type;\n }\n if (startInfo.type === \"double_arrow\") {\n startInfo.type = \"double_arrow_point\";\n }\n startInfo.length = info.length;\n return startInfo;\n }\n return info;\n};\nconst exists = (allSgs, _id) => {\n let res = false;\n allSgs.forEach((sg) => {\n const pos = sg.nodes.indexOf(_id);\n if (pos >= 0) {\n res = true;\n }\n });\n return res;\n};\nconst makeUniq = (sg, allSubgraphs) => {\n const res = [];\n sg.nodes.forEach((_id, pos) => {\n if (!exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return { nodes: res };\n};\nconst lex = {\n firstGraph\n};\nconst flowDb = {\n defaultConfig: () => defaultConfig.flowchart,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n addVertex,\n lookUpDomId,\n addLink,\n updateLinkInterpolate,\n updateLink,\n addClass,\n setDirection,\n setClass,\n setTooltip,\n getTooltip,\n setClickEvent,\n setLink,\n bindFunctions,\n getDirection,\n getVertices,\n getEdges,\n getClasses,\n clear,\n setGen,\n defaultStyle,\n addSubGraph,\n getDepthFirstPos,\n indexNodes,\n getSubGraphs,\n destructLink,\n lex,\n exists,\n makeUniq,\n setDiagramTitle,\n getDiagramTitle\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addClass,\n addLink,\n addSingleLink,\n addSubGraph,\n addVertex,\n bindFunctions,\n clear,\n default: flowDb,\n defaultStyle,\n destructLink,\n firstGraph,\n getClasses,\n getDepthFirstPos,\n getDirection,\n getEdges,\n getSubGraphs,\n getTooltip,\n getVertices,\n indexNodes,\n lex,\n lookUpDomId,\n setClass,\n setClickEvent,\n setDirection,\n setGen,\n setLink,\n updateLink,\n updateLinkInterpolate\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n db as d,\n flowDb as f,\n parser$1 as p\n};\n","import { p as parser, f as flowDb } from \"./flowDb-170db09d.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select, curveLinear, selectAll } from \"d3\";\nimport { k as getStylesFromArray, m as evaluate, c as getConfig, e as common, l as log, n as interpolateToCurve, o as setupGraphViewbox } from \"./mermaid-934d9bea.js\";\nimport { render } from \"dagre-d3-es\";\nimport { applyStyle } from \"dagre-d3-es/src/dagre-js/util.js\";\nimport { addHtmlLabel } from \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport { intersectPolygon } from \"dagre-d3-es/src/dagre-js/intersect/intersect-polygon.js\";\nimport { intersectRect } from \"dagre-d3-es/src/dagre-js/intersect/intersect-rect.js\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-b966c4ae.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"./index-67a42d7d.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-80f1ebb6.js\";\nimport \"./createText-aebacdfe.js\";\nimport \"mdast-util-from-markdown\";\nfunction question(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\n const s = (w + h) * 0.9;\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 const shapeSvg = insertPolygonShape(parent, s, s, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction hexagon(parent, bbox, node) {\n const f = 4;\n const h = bbox.height;\n const m = h / f;\n const w = bbox.width + 2 * m;\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 shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction rect_left_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\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 shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction lean_right(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\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 shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction lean_left(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\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 shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\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 shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction inv_trapezoid(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\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 shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction rect_right_inv_arrow(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\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 shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction stadium(parent, bbox, node) {\n const h = bbox.height;\n const w = bbox.width + h / 4;\n const shapeSvg = parent.insert(\"rect\", \":first-child\").attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n}\nfunction subroutine(parent, bbox, node) {\n const w = bbox.width;\n const h = bbox.height;\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 shapeSvg = insertPolygonShape(parent, w, h, points);\n node.intersect = function(point) {\n return intersectPolygon(node, points, point);\n };\n return shapeSvg;\n}\nfunction cylinder(parent, bbox, node) {\n const w = bbox.width;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry;\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 shapeSvg = parent.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n node.intersect = function(point) {\n const pos = intersectRect(node, point);\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 (point.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\nfunction addToRender(render2) {\n render2.shapes().question = question;\n render2.shapes().hexagon = hexagon;\n render2.shapes().stadium = stadium;\n render2.shapes().subroutine = subroutine;\n render2.shapes().cylinder = cylinder;\n render2.shapes().rect_left_inv_arrow = rect_left_inv_arrow;\n render2.shapes().lean_right = lean_right;\n render2.shapes().lean_left = lean_left;\n render2.shapes().trapezoid = trapezoid;\n render2.shapes().inv_trapezoid = inv_trapezoid;\n render2.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\nfunction addToRenderV2(addShape) {\n addShape({ question });\n addShape({ hexagon });\n addShape({ stadium });\n addShape({ subroutine });\n addShape({ cylinder });\n addShape({ rect_left_inv_arrow });\n addShape({ lean_right });\n addShape({ lean_left });\n addShape({ trapezoid });\n addShape({ inv_trapezoid });\n addShape({ rect_right_inv_arrow });\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(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\nconst flowChartShapes = {\n addToRender,\n addToRenderV2\n};\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst addVertices = function(vert, g, svgId, root, _doc, diagObj) {\n const svg = !root ? select(`[id=\"${svgId}\"]`) : root.select(`[id=\"${svgId}\"]`);\n const doc = !_doc ? document : _doc;\n const keys = Object.keys(vert);\n keys.forEach(function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n const styles = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const node = {\n label: vertexText.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n const rows = vertexText.split(common.lineBreakRegex);\n for (const row of rows) {\n const tspan = doc.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\", \"1\");\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n let radious = 0;\n let _shape = \"\";\n switch (vertex.type) {\n case \"round\":\n radious = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n break;\n case \"hexagon\":\n _shape = \"hexagon\";\n break;\n case \"odd\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n _shape = \"lean_right\";\n break;\n case \"lean_left\":\n _shape = \"lean_left\";\n break;\n case \"trapezoid\":\n _shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n _shape = \"inv_trapezoid\";\n break;\n case \"odd_right\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n _shape = \"circle\";\n break;\n case \"ellipse\":\n _shape = \"ellipse\";\n break;\n case \"stadium\":\n _shape = \"stadium\";\n break;\n case \"subroutine\":\n _shape = \"subroutine\";\n break;\n case \"cylinder\":\n _shape = \"cylinder\";\n break;\n case \"group\":\n _shape = \"rect\";\n break;\n default:\n _shape = \"rect\";\n }\n log.warn(\"Adding node\", vertex.id, vertex.domId);\n g.setNode(diagObj.db.lookUpDomId(vertex.id), {\n labelType: \"svg\",\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: diagObj.db.lookUpDomId(vertex.id)\n });\n });\n};\nconst addEdges = function(edges, g, diagObj) {\n let cnt = 0;\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n cnt++;\n const linkId = \"L-\" + edge.start + \"-\" + edge.end;\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = {};\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n let style = \"\";\n let labelStyle = \"\";\n if (edge.style !== void 0) {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\n labelStyle = defaultLabelStyle;\n }\n break;\n case \"dotted\":\n style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n style = \" stroke-width: 3.5px;fill:none\";\n break;\n }\n }\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n edgeData.labelType = \"html\";\n edgeData.label = `${edge.text.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )}`;\n } else {\n edgeData.labelType = \"text\";\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n }\n }\n edgeData.id = linkId;\n edgeData.class = linkNameStart + \" \" + linkNameEnd;\n edgeData.minlen = edge.length || 1;\n g.setEdge(diagObj.db.lookUpDomId(edge.start), diagObj.db.lookUpDomId(edge.end), edgeData, cnt);\n });\n};\nconst getClasses = function(text, diagObj) {\n log.info(\"Extracting classes\");\n return diagObj.db.getClasses();\n};\nconst draw = function(text, id, _version, diagObj) {\n log.info(\"Drawing flowchart\");\n const { securityLevel, flowchart: conf2 } = getConfig();\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n diagObj.db.addVertex(subG.id, subG.title, \"group\", void 0, subG.classes);\n }\n const vert = diagObj.db.getVertices();\n log.warn(\"Get vertices\", vert);\n const edges = diagObj.db.getEdges();\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n selectAll(\"cluster\").append(\"text\");\n for (let j = 0; j < subG.nodes.length; j++) {\n log.warn(\n \"Setting subgraph\",\n subG.nodes[j],\n diagObj.db.lookUpDomId(subG.nodes[j]),\n diagObj.db.lookUpDomId(subG.id)\n );\n g.setParent(diagObj.db.lookUpDomId(subG.nodes[j]), diagObj.db.lookUpDomId(subG.id));\n }\n }\n addVertices(vert, g, id, root, doc, diagObj);\n addEdges(edges, g, diagObj);\n const render$1 = new render();\n flowChartShapes.addToRender(render$1);\n render$1.arrows().none = function normal(parent, id2, edge, type) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n const path = marker.append(\"path\").attr(\"d\", \"M 0 0 L 0 0 L 0 0 z\");\n applyStyle(path, edge[type + \"Style\"]);\n };\n render$1.arrows().normal = function normal(parent, id2) {\n const marker = parent.append(\"marker\").attr(\"id\", id2).attr(\"viewBox\", \"0 0 10 10\").attr(\"refX\", 9).attr(\"refY\", 5).attr(\"markerUnits\", \"strokeWidth\").attr(\"markerWidth\", 8).attr(\"markerHeight\", 6).attr(\"orient\", \"auto\");\n marker.append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\").attr(\"class\", \"arrowheadPath\").style(\"stroke-width\", 1).style(\"stroke-dasharray\", \"1,0\");\n };\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n render$1(element, g);\n element.selectAll(\"g.node\").attr(\"title\", function() {\n return diagObj.db.getTooltip(this.id);\n });\n diagObj.db.indexNodes(\"subGraph\" + i);\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n if (subG.title !== \"undefined\") {\n const clusterRects = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"] rect'\n );\n const clusterEl = doc.querySelectorAll(\n \"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(subG.id) + '\"]'\n );\n const xPos = clusterRects[0].x.baseVal.value;\n const yPos = clusterRects[0].y.baseVal.value;\n const _width = clusterRects[0].width.baseVal.value;\n const cluster = select(clusterEl[0]);\n const te = cluster.select(\".label\");\n te.attr(\"transform\", `translate(${xPos + _width / 2}, ${yPos + 14})`);\n te.attr(\"id\", id + \"Text\");\n for (let j = 0; j < subG.classes.length; j++) {\n clusterEl[0].classList.add(subG.classes[j]);\n }\n }\n }\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n setupGraphViewbox(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n if (vertex.link) {\n const node = root.select(\"#\" + id + ' [id=\"' + diagObj.db.lookUpDomId(key) + '\"]');\n if (node) {\n const link = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"a\");\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"class\", vertex.classes.join(\" \"));\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"href\", vertex.link);\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"rel\", \"noopener\");\n if (securityLevel === \"sandbox\") {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n } else if (vertex.linkTarget) {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n }\n const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n const label = node.select(\".label\");\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\nconst flowRenderer = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n flowRenderer.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-1\");\n }\n};\nexport {\n diagram\n};\n","import { p as parser, f as flowDb } from \"./flowDb-170db09d.js\";\nimport { f as flowRendererV2, a as flowStyles } from \"./styles-b966c4ae.js\";\nimport { p as setConfig } from \"./mermaid-934d9bea.js\";\nimport \"d3\";\nimport \"dagre-d3-es/src/graphlib/index.js\";\nimport \"./index-67a42d7d.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-80f1ebb6.js\";\nimport \"./createText-aebacdfe.js\";\nimport \"mdast-util-from-markdown\";\nimport \"ts-dedent\";\nimport \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport \"khroma\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst diagram = {\n parser,\n db: flowDb,\n renderer: flowRendererV2,\n styles: flowStyles,\n init: (cnf) => {\n if (!cnf.flowchart) {\n cnf.flowchart = {};\n }\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n setConfig({ flowchart: { arrowMarkerAbsolute: cnf.arrowMarkerAbsolute } });\n flowRendererV2.setConf(cnf.flowchart);\n flowDb.clear();\n flowDb.setGen(\"gen-2\");\n }\n};\nexport {\n diagram\n};\n","import { d as db, p as parser } from \"./flowDb-170db09d.js\";\nimport { select, curveLinear, line } from \"d3\";\nimport { a as insertMarkers, e as insertNode, l as labelHelper, f as insertEdgeLabel, j as getLineFunctionsWithOffset } from \"./edges-80f1ebb6.js\";\nimport { l as log, E as getConfig, o as setupGraphViewbox, k as getStylesFromArray, n as interpolateToCurve, e as common } from \"./mermaid-934d9bea.js\";\nimport ELK from \"elkjs/lib/elk.bundled.js\";\nimport \"./createText-aebacdfe.js\";\nimport \"mdast-util-from-markdown\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst findCommonAncestor = (id1, id2, treeData) => {\n const { parentById } = treeData;\n const visited = /* @__PURE__ */ new Set();\n let currentId = id1;\n while (currentId) {\n visited.add(currentId);\n if (currentId === id2) {\n return currentId;\n }\n currentId = parentById[currentId];\n }\n currentId = id2;\n while (currentId) {\n if (visited.has(currentId)) {\n return currentId;\n }\n currentId = parentById[currentId];\n }\n return \"root\";\n};\nconst elk = new ELK();\nlet portPos = {};\nconst conf = {};\nlet nodeDb = {};\nconst addVertices = async function(vert, svgId, root, doc, diagObj, parentLookupDb, graph) {\n const svg = root.select(`[id=\"${svgId}\"]`);\n const nodes = svg.insert(\"g\").attr(\"class\", \"nodes\");\n const keys = Object.keys(vert);\n await Promise.all(\n keys.map(async function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n const styles2 = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n const labelData = { width: 0, height: 0 };\n const ports = [\n {\n id: vertex.id + \"-west\",\n layoutOptions: {\n \"port.side\": \"WEST\"\n }\n },\n {\n id: vertex.id + \"-east\",\n layoutOptions: {\n \"port.side\": \"EAST\"\n }\n },\n {\n id: vertex.id + \"-south\",\n layoutOptions: {\n \"port.side\": \"SOUTH\"\n }\n },\n {\n id: vertex.id + \"-north\",\n layoutOptions: {\n \"port.side\": \"NORTH\"\n }\n }\n ];\n let radious = 0;\n let _shape = \"\";\n let layoutOptions = {};\n switch (vertex.type) {\n case \"round\":\n radious = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n layoutOptions = {\n portConstraints: \"FIXED_SIDE\"\n };\n break;\n case \"hexagon\":\n _shape = \"hexagon\";\n break;\n case \"odd\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n _shape = \"lean_right\";\n break;\n case \"lean_left\":\n _shape = \"lean_left\";\n break;\n case \"trapezoid\":\n _shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n _shape = \"inv_trapezoid\";\n break;\n case \"odd_right\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n _shape = \"circle\";\n break;\n case \"ellipse\":\n _shape = \"ellipse\";\n break;\n case \"stadium\":\n _shape = \"stadium\";\n break;\n case \"subroutine\":\n _shape = \"subroutine\";\n break;\n case \"cylinder\":\n _shape = \"cylinder\";\n break;\n case \"group\":\n _shape = \"rect\";\n break;\n case \"doublecircle\":\n _shape = \"doublecircle\";\n break;\n default:\n _shape = \"rect\";\n }\n const node = {\n labelStyle: styles2.labelStyle,\n shape: _shape,\n labelText: vertexText,\n labelType: vertex.labelType,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles2.style,\n id: vertex.id,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: diagObj.db.getTooltip(vertex.id) || \"\",\n domId: diagObj.db.lookUpDomId(vertex.id),\n haveCallback: vertex.haveCallback,\n width: vertex.type === \"group\" ? 500 : void 0,\n dir: vertex.dir,\n type: vertex.type,\n props: vertex.props,\n padding: getConfig().flowchart.padding\n };\n let boundingBox;\n let nodeEl;\n if (node.type !== \"group\") {\n nodeEl = await insertNode(nodes, node, vertex.dir);\n boundingBox = nodeEl.node().getBBox();\n } else {\n doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n const { shapeSvg, bbox } = await labelHelper(nodes, node, void 0, true);\n labelData.width = bbox.width;\n labelData.wrappingWidth = getConfig().flowchart.wrappingWidth;\n labelData.height = bbox.height;\n labelData.labelNode = shapeSvg.node();\n node.labelData = labelData;\n }\n const data = {\n id: vertex.id,\n ports: vertex.type === \"diamond\" ? ports : [],\n // labelStyle: styles.labelStyle,\n // shape: _shape,\n layoutOptions,\n labelText: vertexText,\n labelData,\n // labels: [{ text: vertexText }],\n // rx: radius,\n // ry: radius,\n // class: classStr,\n // style: styles.style,\n // link: vertex.link,\n // linkTarget: vertex.linkTarget,\n // tooltip: diagObj.db.getTooltip(vertex.id) || '',\n domId: diagObj.db.lookUpDomId(vertex.id),\n // haveCallback: vertex.haveCallback,\n width: boundingBox == null ? void 0 : boundingBox.width,\n height: boundingBox == null ? void 0 : boundingBox.height,\n // dir: vertex.dir,\n type: vertex.type,\n // props: vertex.props,\n // padding: getConfig().flowchart.padding,\n // boundingBox,\n el: nodeEl,\n parent: parentLookupDb.parentById[vertex.id]\n };\n nodeDb[node.id] = data;\n })\n );\n return graph;\n};\nconst getNextPosition = (position, edgeDirection, graphDirection) => {\n const portPos2 = {\n TB: {\n in: {\n north: \"north\"\n },\n out: {\n south: \"west\",\n west: \"east\",\n east: \"south\"\n }\n },\n LR: {\n in: {\n west: \"west\"\n },\n out: {\n east: \"south\",\n south: \"north\",\n north: \"east\"\n }\n },\n RL: {\n in: {\n east: \"east\"\n },\n out: {\n west: \"north\",\n north: \"south\",\n south: \"west\"\n }\n },\n BT: {\n in: {\n south: \"south\"\n },\n out: {\n north: \"east\",\n east: \"west\",\n west: \"north\"\n }\n }\n };\n portPos2.TD = portPos2.TB;\n log.info(\"abc88\", graphDirection, edgeDirection, position);\n return portPos2[graphDirection][edgeDirection][position];\n};\nconst getNextPort = (node, edgeDirection, graphDirection) => {\n log.info(\"getNextPort abc88\", { node, edgeDirection, graphDirection });\n if (!portPos[node]) {\n switch (graphDirection) {\n case \"TB\":\n case \"TD\":\n portPos[node] = {\n inPosition: \"north\",\n outPosition: \"south\"\n };\n break;\n case \"BT\":\n portPos[node] = {\n inPosition: \"south\",\n outPosition: \"north\"\n };\n break;\n case \"RL\":\n portPos[node] = {\n inPosition: \"east\",\n outPosition: \"west\"\n };\n break;\n case \"LR\":\n portPos[node] = {\n inPosition: \"west\",\n outPosition: \"east\"\n };\n break;\n }\n }\n const result = edgeDirection === \"in\" ? portPos[node].inPosition : portPos[node].outPosition;\n if (edgeDirection === \"in\") {\n portPos[node].inPosition = getNextPosition(\n portPos[node].inPosition,\n edgeDirection,\n graphDirection\n );\n } else {\n portPos[node].outPosition = getNextPosition(\n portPos[node].outPosition,\n edgeDirection,\n graphDirection\n );\n }\n return result;\n};\nconst getEdgeStartEndPoint = (edge, dir) => {\n let source = edge.start;\n let target = edge.end;\n const sourceId = source;\n const targetId = target;\n const startNode = nodeDb[source];\n const endNode = nodeDb[target];\n if (!startNode || !endNode) {\n return { source, target };\n }\n if (startNode.type === \"diamond\") {\n source = `${source}-${getNextPort(source, \"out\", dir)}`;\n }\n if (endNode.type === \"diamond\") {\n target = `${target}-${getNextPort(target, \"in\", dir)}`;\n }\n return { source, target, sourceId, targetId };\n};\nconst addEdges = function(edges, diagObj, graph, svg) {\n log.info(\"abc78 edges = \", edges);\n const labelsEl = svg.insert(\"g\").attr(\"class\", \"edgeLabels\");\n let linkIdCnt = {};\n let dir = diagObj.db.getDirection();\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n const linkIdBase = \"L-\" + edge.start + \"-\" + edge.end;\n if (linkIdCnt[linkIdBase] === void 0) {\n linkIdCnt[linkIdBase] = 0;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n } else {\n linkIdCnt[linkIdBase]++;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n }\n let linkId = linkIdBase + \"-\" + linkIdCnt[linkIdBase];\n log.info(\"abc78 new link id to be used is\", linkIdBase, linkId, linkIdCnt[linkIdBase]);\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = { style: \"\", labelStyle: \"\" };\n edgeData.minlen = edge.length || 1;\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n edgeData.arrowTypeStart = \"arrow_open\";\n edgeData.arrowTypeEnd = \"arrow_open\";\n switch (edge.type) {\n case \"double_arrow_cross\":\n edgeData.arrowTypeStart = \"arrow_cross\";\n case \"arrow_cross\":\n edgeData.arrowTypeEnd = \"arrow_cross\";\n break;\n case \"double_arrow_point\":\n edgeData.arrowTypeStart = \"arrow_point\";\n case \"arrow_point\":\n edgeData.arrowTypeEnd = \"arrow_point\";\n break;\n case \"double_arrow_circle\":\n edgeData.arrowTypeStart = \"arrow_circle\";\n case \"arrow_circle\":\n edgeData.arrowTypeEnd = \"arrow_circle\";\n break;\n }\n let style = \"\";\n let labelStyle = \"\";\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none;\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"solid\";\n break;\n case \"dotted\":\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"dotted\";\n edgeData.style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n edgeData.thickness = \"thick\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 3.5px;fill:none;\";\n break;\n }\n if (edge.style !== void 0) {\n const styles2 = getStylesFromArray(edge.style);\n style = styles2.style;\n labelStyle = styles2.labelStyle;\n }\n edgeData.style = edgeData.style += style;\n edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n }\n edgeData.labelType = edge.labelType;\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none;\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n edgeData.id = linkId;\n edgeData.classes = \"flowchart-link \" + linkNameStart + \" \" + linkNameEnd;\n const labelEl = insertEdgeLabel(labelsEl, edgeData);\n const { source, target, sourceId, targetId } = getEdgeStartEndPoint(edge, dir);\n log.debug(\"abc78 source and target\", source, target);\n graph.edges.push({\n id: \"e\" + edge.start + edge.end,\n sources: [source],\n targets: [target],\n sourceId,\n targetId,\n labelEl,\n labels: [\n {\n width: edgeData.width,\n height: edgeData.height,\n orgWidth: edgeData.width,\n orgHeight: edgeData.height,\n text: edgeData.label,\n layoutOptions: {\n \"edgeLabels.inline\": \"true\",\n \"edgeLabels.placement\": \"CENTER\"\n }\n }\n ],\n edgeData\n });\n });\n return graph;\n};\nconst addMarkersToEdge = function(svgPath, edgeData, diagramType, arrowMarkerAbsolute, id) {\n let url = \"\";\n if (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 switch (edgeData.arrowTypeStart) {\n case \"arrow_cross\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-crossStart)\"\n );\n break;\n case \"arrow_point\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-pointStart)\"\n );\n break;\n case \"arrow_barb\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-barbStart)\"\n );\n break;\n case \"arrow_circle\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-circleStart)\"\n );\n break;\n case \"aggregation\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-aggregationStart)\"\n );\n break;\n case \"extension\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-extensionStart)\"\n );\n break;\n case \"composition\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-compositionStart)\"\n );\n break;\n case \"dependency\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-dependencyStart)\"\n );\n break;\n case \"lollipop\":\n svgPath.attr(\n \"marker-start\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-lollipopStart)\"\n );\n break;\n }\n switch (edgeData.arrowTypeEnd) {\n case \"arrow_cross\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-crossEnd)\");\n break;\n case \"arrow_point\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-pointEnd)\");\n break;\n case \"arrow_barb\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-barbEnd)\");\n break;\n case \"arrow_circle\":\n svgPath.attr(\"marker-end\", \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-circleEnd)\");\n break;\n case \"aggregation\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-aggregationEnd)\"\n );\n break;\n case \"extension\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-extensionEnd)\"\n );\n break;\n case \"composition\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-compositionEnd)\"\n );\n break;\n case \"dependency\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-dependencyEnd)\"\n );\n break;\n case \"lollipop\":\n svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + id + \"_\" + diagramType + \"-lollipopEnd)\"\n );\n break;\n }\n};\nconst getClasses = function(text, diagObj) {\n log.info(\"Extracting classes\");\n return diagObj.db.getClasses();\n};\nconst addSubGraphs = function(db2) {\n const parentLookupDb = { parentById: {}, childrenById: {} };\n const subgraphs = db2.getSubGraphs();\n log.info(\"Subgraphs - \", subgraphs);\n subgraphs.forEach(function(subgraph) {\n subgraph.nodes.forEach(function(node) {\n parentLookupDb.parentById[node] = subgraph.id;\n if (parentLookupDb.childrenById[subgraph.id] === void 0) {\n parentLookupDb.childrenById[subgraph.id] = [];\n }\n parentLookupDb.childrenById[subgraph.id].push(node);\n });\n });\n subgraphs.forEach(function(subgraph) {\n ({ id: subgraph.id });\n if (parentLookupDb.parentById[subgraph.id] !== void 0) {\n parentLookupDb.parentById[subgraph.id];\n }\n });\n return parentLookupDb;\n};\nconst calcOffset = function(src, dest, parentLookupDb) {\n const ancestor = findCommonAncestor(src, dest, parentLookupDb);\n if (ancestor === void 0 || ancestor === \"root\") {\n return { x: 0, y: 0 };\n }\n const ancestorOffset = nodeDb[ancestor].offset;\n return { x: ancestorOffset.posX, y: ancestorOffset.posY };\n};\nconst insertEdge = function(edgesEl, edge, edgeData, diagObj, parentLookupDb, id) {\n const offset = calcOffset(edge.sourceId, edge.targetId, parentLookupDb);\n const src = edge.sections[0].startPoint;\n const dest = edge.sections[0].endPoint;\n const segments = edge.sections[0].bendPoints ? edge.sections[0].bendPoints : [];\n const segPoints = segments.map((segment) => [segment.x + offset.x, segment.y + offset.y]);\n const points = [\n [src.x + offset.x, src.y + offset.y],\n ...segPoints,\n [dest.x + offset.x, dest.y + offset.y]\n ];\n const { x, y } = getLineFunctionsWithOffset(edge.edgeData);\n const curve = line().x(x).y(y).curve(curveLinear);\n const edgePath = edgesEl.insert(\"path\").attr(\"d\", curve(points)).attr(\"class\", \"path \" + edgeData.classes).attr(\"fill\", \"none\");\n const edgeG = edgesEl.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const edgeWithLabel = select(edgeG.node().appendChild(edge.labelEl));\n const box = edgeWithLabel.node().firstChild.getBoundingClientRect();\n edgeWithLabel.attr(\"width\", box.width);\n edgeWithLabel.attr(\"height\", box.height);\n edgeG.attr(\n \"transform\",\n `translate(${edge.labels[0].x + offset.x}, ${edge.labels[0].y + offset.y})`\n );\n addMarkersToEdge(edgePath, edgeData, diagObj.type, diagObj.arrowMarkerAbsolute, id);\n};\nconst insertChildren = (nodeArray, parentLookupDb) => {\n nodeArray.forEach((node) => {\n if (!node.children) {\n node.children = [];\n }\n const childIds = parentLookupDb.childrenById[node.id];\n if (childIds) {\n childIds.forEach((childId) => {\n node.children.push(nodeDb[childId]);\n });\n }\n insertChildren(node.children, parentLookupDb);\n });\n};\nconst draw = async function(text, id, _version, diagObj) {\n var _a;\n diagObj.db.clear();\n nodeDb = {};\n portPos = {};\n diagObj.db.setGen(\"gen-2\");\n diagObj.parser.parse(text);\n const renderEl = select(\"body\").append(\"div\").attr(\"style\", \"height:400px\").attr(\"id\", \"cy\");\n let graph = {\n id: \"root\",\n layoutOptions: {\n \"elk.hierarchyHandling\": \"INCLUDE_CHILDREN\",\n \"org.eclipse.elk.padding\": \"[top=100, left=100, bottom=110, right=110]\",\n \"elk.layered.spacing.edgeNodeBetweenLayers\": \"30\",\n // 'elk.layered.mergeEdges': 'true',\n \"elk.direction\": \"DOWN\"\n // 'elk.ports.sameLayerEdges': true,\n // 'nodePlacement.strategy': 'SIMPLE',\n },\n children: [],\n edges: []\n };\n log.info(\"Drawing flowchart using v3 renderer\", elk);\n let dir = diagObj.db.getDirection();\n switch (dir) {\n case \"BT\":\n graph.layoutOptions[\"elk.direction\"] = \"UP\";\n break;\n case \"TB\":\n graph.layoutOptions[\"elk.direction\"] = \"DOWN\";\n break;\n case \"LR\":\n graph.layoutOptions[\"elk.direction\"] = \"RIGHT\";\n break;\n case \"RL\":\n graph.layoutOptions[\"elk.direction\"] = \"LEFT\";\n break;\n }\n const { securityLevel, flowchart: conf2 } = getConfig();\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const svg = root.select(`[id=\"${id}\"]`);\n const markers = [\"point\", \"circle\", \"cross\"];\n insertMarkers(svg, markers, diagObj.type, id);\n const vert = diagObj.db.getVertices();\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n log.info(\"Subgraphs - \", subGraphs);\n for (let i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n diagObj.db.addVertex(\n subG.id,\n { text: subG.title, type: subG.labelType },\n \"group\",\n void 0,\n subG.classes,\n subG.dir\n );\n }\n const subGraphsEl = svg.insert(\"g\").attr(\"class\", \"subgraphs\");\n const parentLookupDb = addSubGraphs(diagObj.db);\n graph = await addVertices(vert, id, root, doc, diagObj, parentLookupDb, graph);\n const edgesEl = svg.insert(\"g\").attr(\"class\", \"edges edgePath\");\n const edges = diagObj.db.getEdges();\n graph = addEdges(edges, diagObj, graph, svg);\n const nodes = Object.keys(nodeDb);\n nodes.forEach((nodeId) => {\n const node = nodeDb[nodeId];\n if (!node.parent) {\n graph.children.push(node);\n }\n if (parentLookupDb.childrenById[nodeId] !== void 0) {\n node.labels = [\n {\n text: node.labelText,\n layoutOptions: {\n \"nodeLabels.placement\": \"[H_CENTER, V_TOP, INSIDE]\"\n },\n width: node.labelData.width,\n height: node.labelData.height\n // width: 100,\n // height: 100,\n }\n ];\n delete node.x;\n delete node.y;\n delete node.width;\n delete node.height;\n }\n });\n insertChildren(graph.children, parentLookupDb);\n log.info(\"after layout\", JSON.stringify(graph, null, 2));\n const g = await elk.layout(graph);\n drawNodes(0, 0, g.children, svg, subGraphsEl, diagObj, 0);\n log.info(\"after layout\", g);\n (_a = g.edges) == null ? void 0 : _a.map((edge) => {\n insertEdge(edgesEl, edge, edge.edgeData, diagObj, parentLookupDb, id);\n });\n setupGraphViewbox({}, svg, conf2.diagramPadding, conf2.useMaxWidth);\n renderEl.remove();\n};\nconst drawNodes = (relX, relY, nodeArray, svg, subgraphsEl, diagObj, depth) => {\n nodeArray.forEach(function(node) {\n if (node) {\n nodeDb[node.id].offset = {\n posX: node.x + relX,\n posY: node.y + relY,\n x: relX,\n y: relY,\n depth,\n width: node.width,\n height: node.height\n };\n if (node.type === \"group\") {\n const subgraphEl = subgraphsEl.insert(\"g\").attr(\"class\", \"subgraph\");\n subgraphEl.insert(\"rect\").attr(\"class\", \"subgraph subgraph-lvl-\" + depth % 5 + \" node\").attr(\"x\", node.x + relX).attr(\"y\", node.y + relY).attr(\"width\", node.width).attr(\"height\", node.height);\n const label = subgraphEl.insert(\"g\").attr(\"class\", \"label\");\n const labelCentering = getConfig().flowchart.htmlLabels ? node.labelData.width / 2 : 0;\n label.attr(\n \"transform\",\n `translate(${node.labels[0].x + relX + node.x + labelCentering}, ${node.labels[0].y + relY + node.y + 3})`\n );\n label.node().appendChild(node.labelData.labelNode);\n log.info(\"Id (UGH)= \", node.type, node.labels);\n } else {\n log.info(\"Id (UGH)= \", node.id);\n node.el.attr(\n \"transform\",\n `translate(${node.x + relX + node.width / 2}, ${node.y + relY + node.height / 2})`\n );\n }\n }\n });\n nodeArray.forEach(function(node) {\n if (node && node.type === \"group\") {\n drawNodes(relX + node.x, relY + node.y, node.children, svg, subgraphsEl, diagObj, depth + 1);\n }\n });\n};\nconst renderer = {\n getClasses,\n draw\n};\nconst genSections = (options) => {\n let sections = \"\";\n for (let i = 0; i < 5; i++) {\n sections += `\n .subgraph-lvl-${i} {\n fill: ${options[`surface${i}`]};\n stroke: ${options[`surfacePeer${i}`]};\n }\n `;\n }\n return sections;\n};\nconst getStyles = (options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span {\n color: ${options.titleColor};\n }\n\n .label text,span {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.85;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n .subgraph {\n stroke-width:2;\n rx:3;\n }\n // .subgraph-lvl-1 {\n // fill:#ccc;\n // // stroke:black;\n // }\n\n .flowchart-label text {\n text-anchor: middle;\n }\n\n ${genSections(options)}\n`;\nconst styles = getStyles;\nconst diagram = {\n db,\n renderer,\n parser,\n styles\n};\nexport {\n diagram\n};\n","import { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport dayjs from \"dayjs\";\nimport dayjsIsoWeek from \"dayjs/plugin/isoWeek.js\";\nimport dayjsCustomParseFormat from \"dayjs/plugin/customParseFormat.js\";\nimport dayjsAdvancedFormat from \"dayjs/plugin/advancedFormat.js\";\nimport { c as getConfig, s as setAccTitle, g as getAccTitle, q as setDiagramTitle, r as getDiagramTitle, b as setAccDescription, a as getAccDescription, t as clear$1, u as utils, l as log, i as configureSvgSize, e as common } from \"./mermaid-934d9bea.js\";\nimport { select, scaleTime, min, max, scaleLinear, interpolateHcl, axisBottom, timeFormat, timeMonth, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, axisTop, timeMonday, timeTuesday, timeWednesday, timeThursday, timeFriday, timeSaturday, timeSunday } from \"d3\";\nimport \"ts-dedent\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 8, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 33, 35, 37], $V1 = [1, 25], $V2 = [1, 26], $V3 = [1, 27], $V4 = [1, 28], $V5 = [1, 29], $V6 = [1, 30], $V7 = [1, 31], $V8 = [1, 9], $V9 = [1, 10], $Va = [1, 11], $Vb = [1, 12], $Vc = [1, 13], $Vd = [1, 14], $Ve = [1, 15], $Vf = [1, 16], $Vg = [1, 18], $Vh = [1, 19], $Vi = [1, 20], $Vj = [1, 21], $Vk = [1, 22], $Vl = [1, 24], $Vm = [1, 32];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"gantt\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NL\": 10, \"weekday\": 11, \"weekday_monday\": 12, \"weekday_tuesday\": 13, \"weekday_wednesday\": 14, \"weekday_thursday\": 15, \"weekday_friday\": 16, \"weekday_saturday\": 17, \"weekday_sunday\": 18, \"dateFormat\": 19, \"inclusiveEndDates\": 20, \"topAxis\": 21, \"axisFormat\": 22, \"tickInterval\": 23, \"excludes\": 24, \"includes\": 25, \"todayMarker\": 26, \"title\": 27, \"acc_title\": 28, \"acc_title_value\": 29, \"acc_descr\": 30, \"acc_descr_value\": 31, \"acc_descr_multiline_value\": 32, \"section\": 33, \"clickStatement\": 34, \"taskTxt\": 35, \"taskData\": 36, \"click\": 37, \"callbackname\": 38, \"callbackargs\": 39, \"href\": 40, \"clickStatementDebug\": 41, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"gantt\", 6: \"EOF\", 8: \"SPACE\", 10: \"NL\", 12: \"weekday_monday\", 13: \"weekday_tuesday\", 14: \"weekday_wednesday\", 15: \"weekday_thursday\", 16: \"weekday_friday\", 17: \"weekday_saturday\", 18: \"weekday_sunday\", 19: \"dateFormat\", 20: \"inclusiveEndDates\", 21: \"topAxis\", 22: \"axisFormat\", 23: \"tickInterval\", 24: \"excludes\", 25: \"includes\", 26: \"todayMarker\", 27: \"title\", 28: \"acc_title\", 29: \"acc_title_value\", 30: \"acc_descr\", 31: \"acc_descr_value\", 32: \"acc_descr_multiline_value\", 33: \"section\", 35: \"taskTxt\", 36: \"taskData\", 37: \"click\", 38: \"callbackname\", 39: \"callbackargs\", 40: \"href\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [11, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 2], [34, 2], [34, 3], [34, 3], [34, 4], [34, 3], [34, 4], [34, 2], [41, 2], [41, 3], [41, 3], [41, 4], [41, 3], [41, 4], [41, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.setWeekday(\"monday\");\n break;\n case 9:\n yy.setWeekday(\"tuesday\");\n break;\n case 10:\n yy.setWeekday(\"wednesday\");\n break;\n case 11:\n yy.setWeekday(\"thursday\");\n break;\n case 12:\n yy.setWeekday(\"friday\");\n break;\n case 13:\n yy.setWeekday(\"saturday\");\n break;\n case 14:\n yy.setWeekday(\"sunday\");\n break;\n case 15:\n yy.setDateFormat($$[$0].substr(11));\n this.$ = $$[$0].substr(11);\n break;\n case 16:\n yy.enableInclusiveEndDates();\n this.$ = $$[$0].substr(18);\n break;\n case 17:\n yy.TopAxis();\n this.$ = $$[$0].substr(8);\n break;\n case 18:\n yy.setAxisFormat($$[$0].substr(11));\n this.$ = $$[$0].substr(11);\n break;\n case 19:\n yy.setTickInterval($$[$0].substr(13));\n this.$ = $$[$0].substr(13);\n break;\n case 20:\n yy.setExcludes($$[$0].substr(9));\n this.$ = $$[$0].substr(9);\n break;\n case 21:\n yy.setIncludes($$[$0].substr(9));\n this.$ = $$[$0].substr(9);\n break;\n case 22:\n yy.setTodayMarker($$[$0].substr(12));\n this.$ = $$[$0].substr(12);\n break;\n case 24:\n yy.setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 25:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 26:\n case 27:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 28:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 30:\n yy.addTask($$[$0 - 1], $$[$0]);\n this.$ = \"task\";\n break;\n case 31:\n this.$ = $$[$0 - 1];\n yy.setClickEvent($$[$0 - 1], $$[$0], null);\n break;\n case 32:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 33:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], null);\n yy.setLink($$[$0 - 2], $$[$0]);\n break;\n case 34:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]);\n yy.setLink($$[$0 - 3], $$[$0]);\n break;\n case 35:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 2], $$[$0], null);\n yy.setLink($$[$0 - 2], $$[$0 - 1]);\n break;\n case 36:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 1], $$[$0]);\n yy.setLink($$[$0 - 3], $$[$0 - 2]);\n break;\n case 37:\n this.$ = $$[$0 - 1];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 38:\n case 44:\n this.$ = $$[$0 - 1] + \" \" + $$[$0];\n break;\n case 39:\n case 40:\n case 42:\n this.$ = $$[$0 - 2] + \" \" + $$[$0 - 1] + \" \" + $$[$0];\n break;\n case 41:\n case 43:\n this.$ = $$[$0 - 3] + \" \" + $$[$0 - 2] + \" \" + $$[$0 - 1] + \" \" + $$[$0];\n break;\n }\n },\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: 17, 12: $V1, 13: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd, 25: $Ve, 26: $Vf, 27: $Vg, 28: $Vh, 30: $Vi, 32: $Vj, 33: $Vk, 34: 23, 35: $Vl, 37: $Vm }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 33, 11: 17, 12: $V1, 13: $V2, 14: $V3, 15: $V4, 16: $V5, 17: $V6, 18: $V7, 19: $V8, 20: $V9, 21: $Va, 22: $Vb, 23: $Vc, 24: $Vd, 25: $Ve, 26: $Vf, 27: $Vg, 28: $Vh, 30: $Vi, 32: $Vj, 33: $Vk, 34: 23, 35: $Vl, 37: $Vm }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 15]), o($V0, [2, 16]), o($V0, [2, 17]), o($V0, [2, 18]), o($V0, [2, 19]), o($V0, [2, 20]), o($V0, [2, 21]), o($V0, [2, 22]), o($V0, [2, 23]), o($V0, [2, 24]), { 29: [1, 34] }, { 31: [1, 35] }, o($V0, [2, 27]), o($V0, [2, 28]), o($V0, [2, 29]), { 36: [1, 36] }, o($V0, [2, 8]), o($V0, [2, 9]), o($V0, [2, 10]), o($V0, [2, 11]), o($V0, [2, 12]), o($V0, [2, 13]), o($V0, [2, 14]), { 38: [1, 37], 40: [1, 38] }, o($V0, [2, 4]), o($V0, [2, 25]), o($V0, [2, 26]), o($V0, [2, 30]), o($V0, [2, 31], { 39: [1, 39], 40: [1, 40] }), o($V0, [2, 37], { 38: [1, 41] }), o($V0, [2, 32], { 40: [1, 42] }), o($V0, [2, 33]), o($V0, [2, 35], { 39: [1, 43] }), o($V0, [2, 34]), o($V0, [2, 36])],\n defaultActions: {},\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"open_directive\");\n return \"open_directive\";\n case 1:\n this.begin(\"acc_title\");\n return 28;\n case 2:\n this.popState();\n return \"acc_title_value\";\n case 3:\n this.begin(\"acc_descr\");\n return 30;\n case 4:\n this.popState();\n return \"acc_descr_value\";\n case 5:\n this.begin(\"acc_descr_multiline\");\n break;\n case 6:\n this.popState();\n break;\n case 7:\n return \"acc_descr_multiline_value\";\n case 8:\n break;\n case 9:\n break;\n case 10:\n break;\n case 11:\n return 10;\n case 12:\n break;\n case 13:\n break;\n case 14:\n break;\n case 15:\n this.begin(\"href\");\n break;\n case 16:\n this.popState();\n break;\n case 17:\n return 40;\n case 18:\n this.begin(\"callbackname\");\n break;\n case 19:\n this.popState();\n break;\n case 20:\n this.popState();\n this.begin(\"callbackargs\");\n break;\n case 21:\n return 38;\n case 22:\n this.popState();\n break;\n case 23:\n return 39;\n case 24:\n this.begin(\"click\");\n break;\n case 25:\n this.popState();\n break;\n case 26:\n return 37;\n case 27:\n return 4;\n case 28:\n return 19;\n case 29:\n return 20;\n case 30:\n return 21;\n case 31:\n return 22;\n case 32:\n return 23;\n case 33:\n return 25;\n case 34:\n return 24;\n case 35:\n return 26;\n case 36:\n return 12;\n case 37:\n return 13;\n case 38:\n return 14;\n case 39:\n return 15;\n case 40:\n return 16;\n case 41:\n return 17;\n case 42:\n return 18;\n case 43:\n return \"date\";\n case 44:\n return 27;\n case 45:\n return \"accDescription\";\n case 46:\n return 33;\n case 47:\n return 35;\n case 48:\n return 36;\n case 49:\n return \":\";\n case 50:\n return 6;\n case 51:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%%\\{)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:%%(?!\\{)*[^\\n]*)/i, /^(?:[^\\}]%%*[^\\n]*)/i, /^(?:%%*[^\\n]*[\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:href[\\s]+[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:call[\\s]+)/i, /^(?:\\([\\s]*\\))/i, /^(?:\\()/i, /^(?:[^(]*)/i, /^(?:\\))/i, /^(?:[^)]*)/i, /^(?:click[\\s]+)/i, /^(?:[\\s\\n])/i, /^(?:[^\\s\\n]*)/i, /^(?:gantt\\b)/i, /^(?:dateFormat\\s[^#\\n;]+)/i, /^(?:inclusiveEndDates\\b)/i, /^(?:topAxis\\b)/i, /^(?:axisFormat\\s[^#\\n;]+)/i, /^(?:tickInterval\\s[^#\\n;]+)/i, /^(?:includes\\s[^#\\n;]+)/i, /^(?:excludes\\s[^#\\n;]+)/i, /^(?:todayMarker\\s[^\\n;]+)/i, /^(?:weekday\\s+monday\\b)/i, /^(?:weekday\\s+tuesday\\b)/i, /^(?:weekday\\s+wednesday\\b)/i, /^(?:weekday\\s+thursday\\b)/i, /^(?:weekday\\s+friday\\b)/i, /^(?:weekday\\s+saturday\\b)/i, /^(?:weekday\\s+sunday\\b)/i, /^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accDescription\\s[^#\\n;]+)/i, /^(?:section\\s[^#:\\n;]+)/i, /^(?:[^#:\\n;]+)/i, /^(?::[^#\\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [6, 7], \"inclusive\": false }, \"acc_descr\": { \"rules\": [4], \"inclusive\": false }, \"acc_title\": { \"rules\": [2], \"inclusive\": false }, \"callbackargs\": { \"rules\": [22, 23], \"inclusive\": false }, \"callbackname\": { \"rules\": [19, 20, 21], \"inclusive\": false }, \"href\": { \"rules\": [16, 17], \"inclusive\": false }, \"click\": { \"rules\": [25, 26], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 18, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst ganttParser = parser;\ndayjs.extend(dayjsIsoWeek);\ndayjs.extend(dayjsCustomParseFormat);\ndayjs.extend(dayjsAdvancedFormat);\nlet dateFormat = \"\";\nlet axisFormat = \"\";\nlet tickInterval = void 0;\nlet todayMarker = \"\";\nlet includes = [];\nlet excludes = [];\nlet links = {};\nlet sections = [];\nlet tasks = [];\nlet currentSection = \"\";\nlet displayMode = \"\";\nconst tags = [\"active\", \"done\", \"crit\", \"milestone\"];\nlet funs = [];\nlet inclusiveEndDates = false;\nlet topAxis = false;\nlet weekday = \"sunday\";\nlet lastOrder = 0;\nconst clear = function() {\n sections = [];\n tasks = [];\n currentSection = \"\";\n funs = [];\n taskCnt = 0;\n lastTask = void 0;\n lastTaskID = void 0;\n rawTasks = [];\n dateFormat = \"\";\n axisFormat = \"\";\n displayMode = \"\";\n tickInterval = void 0;\n todayMarker = \"\";\n includes = [];\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n links = {};\n clear$1();\n weekday = \"sunday\";\n};\nconst setAxisFormat = function(txt) {\n axisFormat = txt;\n};\nconst getAxisFormat = function() {\n return axisFormat;\n};\nconst setTickInterval = function(txt) {\n tickInterval = txt;\n};\nconst getTickInterval = function() {\n return tickInterval;\n};\nconst setTodayMarker = function(txt) {\n todayMarker = txt;\n};\nconst getTodayMarker = function() {\n return todayMarker;\n};\nconst setDateFormat = function(txt) {\n dateFormat = txt;\n};\nconst enableInclusiveEndDates = function() {\n inclusiveEndDates = true;\n};\nconst endDatesAreInclusive = function() {\n return inclusiveEndDates;\n};\nconst enableTopAxis = function() {\n topAxis = true;\n};\nconst topAxisEnabled = function() {\n return topAxis;\n};\nconst setDisplayMode = function(txt) {\n displayMode = txt;\n};\nconst getDisplayMode = function() {\n return displayMode;\n};\nconst getDateFormat = function() {\n return dateFormat;\n};\nconst setIncludes = function(txt) {\n includes = txt.toLowerCase().split(/[\\s,]+/);\n};\nconst getIncludes = function() {\n return includes;\n};\nconst setExcludes = function(txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\nconst getExcludes = function() {\n return excludes;\n};\nconst getLinks = function() {\n return links;\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n tasks = rawTasks;\n return tasks;\n};\nconst isInvalidDate = function(date, dateFormat2, excludes2, includes2) {\n if (includes2.includes(date.format(dateFormat2.trim()))) {\n return false;\n }\n if (date.isoWeekday() >= 6 && excludes2.includes(\"weekends\")) {\n return true;\n }\n if (excludes2.includes(date.format(\"dddd\").toLowerCase())) {\n return true;\n }\n return excludes2.includes(date.format(dateFormat2.trim()));\n};\nconst setWeekday = function(txt) {\n weekday = txt;\n};\nconst getWeekday = function() {\n return weekday;\n};\nconst checkTaskDates = function(task, dateFormat2, excludes2, includes2) {\n if (!excludes2.length || task.manualEndTime) {\n return;\n }\n let startTime;\n if (task.startTime instanceof Date) {\n startTime = dayjs(task.startTime);\n } else {\n startTime = dayjs(task.startTime, dateFormat2, true);\n }\n startTime = startTime.add(1, \"d\");\n let originalEndTime;\n if (task.endTime instanceof Date) {\n originalEndTime = dayjs(task.endTime);\n } else {\n originalEndTime = dayjs(task.endTime, dateFormat2, true);\n }\n const [fixedEndTime, renderEndTime] = fixTaskDates(\n startTime,\n originalEndTime,\n dateFormat2,\n excludes2,\n includes2\n );\n task.endTime = fixedEndTime.toDate();\n task.renderEndTime = renderEndTime;\n};\nconst fixTaskDates = function(startTime, endTime, dateFormat2, excludes2, includes2) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat2, excludes2, includes2);\n if (invalid) {\n endTime = endTime.add(1, \"d\");\n }\n startTime = startTime.add(1, \"d\");\n }\n return [endTime, renderEndTime];\n};\nconst getStartDate = function(prevTime, dateFormat2, str) {\n str = str.trim();\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n if (afterStatement !== null) {\n let latestEndingTask = null;\n afterStatement[1].split(\" \").forEach(function(id) {\n let task = findTaskById(id);\n if (task !== void 0) {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n if (!latestEndingTask) {\n const dt = /* @__PURE__ */ new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n let mDate = dayjs(str, dateFormat2.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n log.debug(\"Invalid date:\" + str);\n log.debug(\"With date format:\" + dateFormat2.trim());\n const d = new Date(str);\n if (d === void 0 || isNaN(d.getTime()) || // WebKit browsers can mis-parse invalid dates to be ridiculously\n // huge numbers, e.g. new Date('202304') gets parsed as January 1, 202304.\n // This can cause virtually infinite loops while rendering, so for the\n // purposes of Gantt charts we'll just treat any date beyond 10,000 AD/BC as\n // invalid.\n d.getFullYear() < -1e4 || d.getFullYear() > 1e4) {\n throw new Error(\"Invalid date:\" + str);\n }\n return d;\n }\n};\nconst parseDuration = function(str) {\n const statement = /^(\\d+(?:\\.\\d+)?)([Mdhmswy]|ms)$/.exec(str.trim());\n if (statement !== null) {\n return [Number.parseFloat(statement[1]), statement[2]];\n }\n return [NaN, \"ms\"];\n};\nconst getEndDate = function(prevTime, dateFormat2, str, inclusive = false) {\n str = str.trim();\n let mDate = dayjs(str, dateFormat2.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate = mDate.add(1, \"d\");\n }\n return mDate.toDate();\n }\n let endTime = dayjs(prevTime);\n const [durationValue, durationUnit] = parseDuration(str);\n if (!Number.isNaN(durationValue)) {\n const newEndTime = endTime.add(durationValue, durationUnit);\n if (newEndTime.isValid()) {\n endTime = newEndTime;\n }\n }\n return endTime.toDate();\n};\nlet taskCnt = 0;\nconst parseId = function(idStr) {\n if (idStr === void 0) {\n taskCnt = taskCnt + 1;\n return \"task\" + taskCnt;\n }\n return idStr;\n};\nconst compileData = function(prevTask, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === \":\") {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n const data = ds.split(\",\");\n const task = {};\n getTaskTags(data, task, tags);\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n let endTimeData = \"\";\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(void 0, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(void 0, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n }\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = dayjs(endTimeData, \"YYYY-MM-DD\", true).isValid();\n checkTaskDates(task, dateFormat, excludes, includes);\n }\n return task;\n};\nconst parseData = function(prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === \":\") {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n const data = ds.split(\",\");\n const task = {};\n getTaskTags(data, task, tags);\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: \"prevTaskEnd\",\n id: prevTaskId\n };\n task.endTime = {\n data: data[0]\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: \"getStartDate\",\n startData: data[0]\n };\n task.endTime = {\n data: data[1]\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: \"getStartDate\",\n startData: data[1]\n };\n task.endTime = {\n data: data[2]\n };\n break;\n }\n return task;\n};\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nconst addTask = function(descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data },\n task: descr,\n classes: []\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n lastOrder++;\n const pos = rawTasks.push(rawTask);\n lastTaskID = rawTask.id;\n taskDb[rawTask.id] = pos - 1;\n};\nconst findTaskById = function(id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\nconst addTaskOrg = function(descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\nconst compileTasks = function() {\n const compileTask = function(pos) {\n const task = rawTasks[pos];\n let startTime = \"\";\n switch (rawTasks[pos].raw.startTime.type) {\n case \"prevTaskEnd\": {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case \"getStartDate\":\n startTime = getStartDate(void 0, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = dayjs(\n rawTasks[pos].raw.endTime.data,\n \"YYYY-MM-DD\",\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes, includes);\n }\n }\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst setLink = function(ids, _linkStr) {\n let linkStr = _linkStr;\n if (getConfig().securityLevel !== \"loose\") {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(\",\").forEach(function(id) {\n let rawTask = findTaskById(id);\n if (rawTask !== void 0) {\n pushFun(id, () => {\n window.open(linkStr, \"_self\");\n });\n links[id] = linkStr;\n }\n });\n setClass(ids, \"clickable\");\n};\nconst setClass = function(ids, className) {\n ids.split(\",\").forEach(function(id) {\n let rawTask = findTaskById(id);\n if (rawTask !== void 0) {\n rawTask.classes.push(className);\n }\n });\n};\nconst setClickFun = function(id, functionName, functionArgs) {\n if (getConfig().securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(id);\n }\n let rawTask = findTaskById(id);\n if (rawTask !== void 0) {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\nconst pushFun = function(id, callbackFunction) {\n funs.push(\n function() {\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener(\"click\", function() {\n callbackFunction();\n });\n }\n },\n function() {\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener(\"click\", function() {\n callbackFunction();\n });\n }\n }\n );\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, \"clickable\");\n};\nconst bindFunctions = function(element) {\n funs.forEach(function(fun) {\n fun(element);\n });\n};\nconst ganttDb = {\n getConfig: () => getConfig().gantt,\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n enableTopAxis,\n topAxisEnabled,\n setAxisFormat,\n getAxisFormat,\n setTickInterval,\n getTickInterval,\n setTodayMarker,\n getTodayMarker,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n setDisplayMode,\n getDisplayMode,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setIncludes,\n getIncludes,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n getLinks,\n bindFunctions,\n parseDuration,\n isInvalidDate,\n setWeekday,\n getWeekday\n};\nfunction getTaskTags(data, task, tags2) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags2.forEach(function(t) {\n const pattern = \"^\\\\s*\" + t + \"\\\\s*$\";\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\nconst setConf = function() {\n log.debug(\"Something is calling, setConf, remove the call\");\n};\nconst mapWeekdayToTimeFunction = {\n monday: timeMonday,\n tuesday: timeTuesday,\n wednesday: timeWednesday,\n thursday: timeThursday,\n friday: timeFriday,\n saturday: timeSaturday,\n sunday: timeSunday\n};\nconst getMaxIntersections = (tasks2, orderOffset) => {\n let timeline = [...tasks2].map(() => -Infinity);\n let sorted = [...tasks2].sort((a, b) => a.startTime - b.startTime || a.order - b.order);\n let maxIntersections = 0;\n for (const element of sorted) {\n for (let j = 0; j < timeline.length; j++) {\n if (element.startTime >= timeline[j]) {\n timeline[j] = element.endTime;\n element.order = j + orderOffset;\n if (j > maxIntersections) {\n maxIntersections = j;\n }\n break;\n }\n }\n }\n return maxIntersections;\n};\nlet w;\nconst draw = function(text, id, version, diagObj) {\n const conf = getConfig().gantt;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const elem = doc.getElementById(id);\n w = elem.parentElement.offsetWidth;\n if (w === void 0) {\n w = 1200;\n }\n if (conf.useWidth !== void 0) {\n w = conf.useWidth;\n }\n const taskArray = diagObj.db.getTasks();\n let categories = [];\n for (const element of taskArray) {\n categories.push(element.type);\n }\n categories = checkUnique(categories);\n const categoryHeights = {};\n let h = 2 * conf.topPadding;\n if (diagObj.db.getDisplayMode() === \"compact\" || conf.displayMode === \"compact\") {\n const categoryElements = {};\n for (const element of taskArray) {\n if (categoryElements[element.section] === void 0) {\n categoryElements[element.section] = [element];\n } else {\n categoryElements[element.section].push(element);\n }\n }\n let intersections = 0;\n for (const category of Object.keys(categoryElements)) {\n const categoryHeight = getMaxIntersections(categoryElements[category], intersections) + 1;\n intersections += categoryHeight;\n h += categoryHeight * (conf.barHeight + conf.barGap);\n categoryHeights[category] = categoryHeight;\n }\n } else {\n h += taskArray.length * (conf.barHeight + conf.barGap);\n for (const category of categories) {\n categoryHeights[category] = taskArray.filter((task) => task.type === category).length;\n }\n }\n elem.setAttribute(\"viewBox\", \"0 0 \" + w + \" \" + h);\n const svg = root.select(`[id=\"${id}\"]`);\n const timeScale = scaleTime().domain([\n min(taskArray, function(d) {\n return d.startTime;\n }),\n max(taskArray, function(d) {\n return d.endTime;\n })\n ]).rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n taskArray.sort(taskCompare);\n makeGant(taskArray, w, h);\n configureSvgSize(svg, h, w, conf.useMaxWidth);\n svg.append(\"text\").text(diagObj.db.getDiagramTitle()).attr(\"x\", w / 2).attr(\"y\", conf.titleTopMargin).attr(\"class\", \"titleText\");\n function makeGant(tasks2, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n const colorScale = scaleLinear().domain([0, categories.length]).range([\"#00B9FA\", \"#F95002\"]).interpolate(interpolateHcl);\n drawExcludeDays(\n gap,\n topPadding,\n leftPadding,\n pageWidth,\n pageHeight,\n tasks2,\n diagObj.db.getExcludes(),\n diagObj.db.getIncludes()\n );\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks2, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth);\n vertLabels(gap, topPadding);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w2) {\n const uniqueTaskOrderIds = [...new Set(theArray.map((item) => item.order))];\n const uniqueTasks = uniqueTaskOrderIds.map((id2) => theArray.find((item) => item.order === id2));\n svg.append(\"g\").selectAll(\"rect\").data(uniqueTasks).enter().append(\"rect\").attr(\"x\", 0).attr(\"y\", function(d, i) {\n i = d.order;\n return i * theGap + theTopPad - 2;\n }).attr(\"width\", function() {\n return w2 - conf.rightPadding / 2;\n }).attr(\"height\", theGap).attr(\"class\", function(d) {\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n return \"section section\" + i % conf.numberSectionStyles;\n }\n }\n return \"section section0\";\n });\n const rectangles = svg.append(\"g\").selectAll(\"rect\").data(theArray).enter();\n const links2 = diagObj.db.getLinks();\n rectangles.append(\"rect\").attr(\"id\", function(d) {\n return d.id;\n }).attr(\"rx\", 3).attr(\"ry\", 3).attr(\"x\", function(d) {\n if (d.milestone) {\n return timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n return timeScale(d.startTime) + theSidePad;\n }).attr(\"y\", function(d, i) {\n i = d.order;\n return i * theGap + theTopPad;\n }).attr(\"width\", function(d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n }).attr(\"height\", theBarHeight).attr(\"transform-origin\", function(d, i) {\n i = d.order;\n return (timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))).toString() + \"px \" + (i * theGap + theTopPad + 0.5 * theBarHeight).toString() + \"px\";\n }).attr(\"class\", function(d) {\n const res = \"task\";\n let classStr = \"\";\n if (d.classes.length > 0) {\n classStr = d.classes.join(\" \");\n }\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n let taskClass = \"\";\n if (d.active) {\n if (d.crit) {\n taskClass += \" activeCrit\";\n } else {\n taskClass = \" active\";\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = \" doneCrit\";\n } else {\n taskClass = \" done\";\n }\n } else {\n if (d.crit) {\n taskClass += \" crit\";\n }\n }\n if (taskClass.length === 0) {\n taskClass = \" task\";\n }\n if (d.milestone) {\n taskClass = \" milestone \" + taskClass;\n }\n taskClass += secNum;\n taskClass += \" \" + classStr;\n return res + taskClass;\n });\n rectangles.append(\"text\").attr(\"id\", function(d) {\n return d.id + \"-text\";\n }).text(function(d) {\n return d.task;\n }).attr(\"font-size\", conf.fontSize).attr(\"x\", function(d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w2) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n }).attr(\"y\", function(d, i) {\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n }).attr(\"text-height\", theBarHeight).attr(\"class\", function(d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n let classStr = \"\";\n if (d.classes.length > 0) {\n classStr = d.classes.join(\" \");\n }\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n let taskType = \"\";\n if (d.active) {\n if (d.crit) {\n taskType = \"activeCritText\" + secNum;\n } else {\n taskType = \"activeText\" + secNum;\n }\n }\n if (d.done) {\n if (d.crit) {\n taskType = taskType + \" doneCritText\" + secNum;\n } else {\n taskType = taskType + \" doneText\" + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + \" critText\" + secNum;\n }\n }\n if (d.milestone) {\n taskType += \" milestoneText\";\n }\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w2) {\n return classStr + \" taskTextOutsideLeft taskTextOutside\" + secNum + \" \" + taskType;\n } else {\n return classStr + \" taskTextOutsideRight taskTextOutside\" + secNum + \" \" + taskType + \" width-\" + textWidth;\n }\n } else {\n return classStr + \" taskText taskText\" + secNum + \" \" + taskType + \" width-\" + textWidth;\n }\n });\n const securityLevel2 = getConfig().securityLevel;\n if (securityLevel2 === \"sandbox\") {\n let sandboxElement2;\n sandboxElement2 = select(\"#i\" + id);\n const doc2 = sandboxElement2.nodes()[0].contentDocument;\n rectangles.filter(function(d) {\n return links2[d.id] !== void 0;\n }).each(function(o) {\n var taskRect = doc2.querySelector(\"#\" + o.id);\n var taskText = doc2.querySelector(\"#\" + o.id + \"-text\");\n const oldParent = taskRect.parentNode;\n var Link = doc2.createElement(\"a\");\n Link.setAttribute(\"xlink:href\", links2[o.id]);\n Link.setAttribute(\"target\", \"_top\");\n oldParent.appendChild(Link);\n Link.appendChild(taskRect);\n Link.appendChild(taskText);\n });\n }\n }\n function drawExcludeDays(theGap, theTopPad, theSidePad, w2, h2, tasks2, excludes2, includes2) {\n if (excludes2.length === 0 && includes2.length === 0) {\n return;\n }\n let minTime;\n let maxTime;\n for (const { startTime, endTime } of tasks2) {\n if (minTime === void 0 || startTime < minTime) {\n minTime = startTime;\n }\n if (maxTime === void 0 || endTime > maxTime) {\n maxTime = endTime;\n }\n }\n if (!minTime || !maxTime) {\n return;\n }\n if (dayjs(maxTime).diff(dayjs(minTime), \"year\") > 5) {\n log.warn(\n \"The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.\"\n );\n return;\n }\n const dateFormat2 = diagObj.db.getDateFormat();\n const excludeRanges = [];\n let range = null;\n let d = dayjs(minTime);\n while (d.valueOf() <= maxTime) {\n if (diagObj.db.isInvalidDate(d, dateFormat2, excludes2, includes2)) {\n if (!range) {\n range = {\n start: d,\n end: d\n };\n } else {\n range.end = d;\n }\n } else {\n if (range) {\n excludeRanges.push(range);\n range = null;\n }\n }\n d = d.add(1, \"d\");\n }\n const rectangles = svg.append(\"g\").selectAll(\"rect\").data(excludeRanges).enter();\n rectangles.append(\"rect\").attr(\"id\", function(d2) {\n return \"exclude-\" + d2.start.format(\"YYYY-MM-DD\");\n }).attr(\"x\", function(d2) {\n return timeScale(d2.start) + theSidePad;\n }).attr(\"y\", conf.gridLineStartPadding).attr(\"width\", function(d2) {\n const renderEnd = d2.end.add(1, \"day\");\n return timeScale(renderEnd) - timeScale(d2.start);\n }).attr(\"height\", h2 - theTopPad - conf.gridLineStartPadding).attr(\"transform-origin\", function(d2, i) {\n return (timeScale(d2.start) + theSidePad + 0.5 * (timeScale(d2.end) - timeScale(d2.start))).toString() + \"px \" + (i * theGap + 0.5 * h2).toString() + \"px\";\n }).attr(\"class\", \"exclude-range\");\n }\n function makeGrid(theSidePad, theTopPad, w2, h2) {\n let bottomXAxis = axisBottom(timeScale).tickSize(-h2 + theTopPad + conf.gridLineStartPadding).tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || \"%Y-%m-%d\"));\n const reTickInterval = /^([1-9]\\d*)(millisecond|second|minute|hour|day|week|month)$/;\n const resultTickInterval = reTickInterval.exec(\n diagObj.db.getTickInterval() || conf.tickInterval\n );\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n const weekday2 = diagObj.db.getWeekday() || conf.weekday;\n switch (interval) {\n case \"millisecond\":\n bottomXAxis.ticks(timeMillisecond.every(every));\n break;\n case \"second\":\n bottomXAxis.ticks(timeSecond.every(every));\n break;\n case \"minute\":\n bottomXAxis.ticks(timeMinute.every(every));\n break;\n case \"hour\":\n bottomXAxis.ticks(timeHour.every(every));\n break;\n case \"day\":\n bottomXAxis.ticks(timeDay.every(every));\n break;\n case \"week\":\n bottomXAxis.ticks(mapWeekdayToTimeFunction[weekday2].every(every));\n break;\n case \"month\":\n bottomXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n svg.append(\"g\").attr(\"class\", \"grid\").attr(\"transform\", \"translate(\" + theSidePad + \", \" + (h2 - 50) + \")\").call(bottomXAxis).selectAll(\"text\").style(\"text-anchor\", \"middle\").attr(\"fill\", \"#000\").attr(\"stroke\", \"none\").attr(\"font-size\", 10).attr(\"dy\", \"1em\");\n if (diagObj.db.topAxisEnabled() || conf.topAxis) {\n let topXAxis = axisTop(timeScale).tickSize(-h2 + theTopPad + conf.gridLineStartPadding).tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || \"%Y-%m-%d\"));\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n const weekday2 = diagObj.db.getWeekday() || conf.weekday;\n switch (interval) {\n case \"millisecond\":\n topXAxis.ticks(timeMillisecond.every(every));\n break;\n case \"second\":\n topXAxis.ticks(timeSecond.every(every));\n break;\n case \"minute\":\n topXAxis.ticks(timeMinute.every(every));\n break;\n case \"hour\":\n topXAxis.ticks(timeHour.every(every));\n break;\n case \"day\":\n topXAxis.ticks(timeDay.every(every));\n break;\n case \"week\":\n topXAxis.ticks(mapWeekdayToTimeFunction[weekday2].every(every));\n break;\n case \"month\":\n topXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n svg.append(\"g\").attr(\"class\", \"grid\").attr(\"transform\", \"translate(\" + theSidePad + \", \" + theTopPad + \")\").call(topXAxis).selectAll(\"text\").style(\"text-anchor\", \"middle\").attr(\"fill\", \"#000\").attr(\"stroke\", \"none\").attr(\"font-size\", 10);\n }\n }\n function vertLabels(theGap, theTopPad) {\n let prevGap = 0;\n const numOccurances = Object.keys(categoryHeights).map((d) => [d, categoryHeights[d]]);\n svg.append(\"g\").selectAll(\"text\").data(numOccurances).enter().append(function(d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"dy\", dy + \"em\");\n for (const [j, row] of rows.entries()) {\n const tspan = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttribute(\"alignment-baseline\", \"central\");\n tspan.setAttribute(\"x\", \"10\");\n if (j > 0) {\n tspan.setAttribute(\"dy\", \"1em\");\n }\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }).attr(\"x\", 10).attr(\"y\", function(d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return d[1] * theGap / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return d[1] * theGap / 2 + theTopPad;\n }\n }).attr(\"font-size\", conf.sectionFontSize).attr(\"class\", function(d) {\n for (const [i, category] of categories.entries()) {\n if (d[0] === category) {\n return \"sectionTitle sectionTitle\" + i % conf.numberSectionStyles;\n }\n }\n return \"sectionTitle\";\n });\n }\n function drawToday(theSidePad, theTopPad, w2, h2) {\n const todayMarker2 = diagObj.db.getTodayMarker();\n if (todayMarker2 === \"off\") {\n return;\n }\n const todayG = svg.append(\"g\").attr(\"class\", \"today\");\n const today = /* @__PURE__ */ new Date();\n const todayLine = todayG.append(\"line\");\n todayLine.attr(\"x1\", timeScale(today) + theSidePad).attr(\"x2\", timeScale(today) + theSidePad).attr(\"y1\", conf.titleTopMargin).attr(\"y2\", h2 - conf.titleTopMargin).attr(\"class\", \"today\");\n if (todayMarker2 !== \"\") {\n todayLine.attr(\"style\", todayMarker2.replace(/,/g, \";\"));\n }\n }\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) {\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n};\nconst ganttRenderer = {\n setConf,\n draw\n};\nconst getStyles = (options) => `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${options.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${options.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${options.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`;\nconst ganttStyles = getStyles;\nconst diagram = {\n parser: ganttParser,\n db: ganttDb,\n renderer: ganttRenderer,\n styles: ganttStyles\n};\nexport {\n diagram\n};\n","import { c as getConfig, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, r as getDiagramTitle, l as log, e as common, t as clear$2, x as random, u as utils, y as setupGraphViewbox } from \"./mermaid-934d9bea.js\";\nimport { select } from \"d3\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 6], $V2 = [1, 4], $V3 = [1, 5], $V4 = [2, 5], $V5 = [1, 12], $V6 = [5, 7, 13, 19, 21, 23, 24, 26, 28, 31, 36, 39, 46], $V7 = [7, 13, 19, 21, 23, 24, 26, 28, 31, 36, 39], $V8 = [7, 12, 13, 19, 21, 23, 24, 26, 28, 31, 36, 39], $V9 = [7, 13, 46], $Va = [1, 42], $Vb = [1, 41], $Vc = [7, 13, 29, 32, 34, 37, 46], $Vd = [1, 55], $Ve = [1, 56], $Vf = [1, 57], $Vg = [7, 13, 32, 34, 41, 46];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"GG\": 5, \"document\": 6, \"EOF\": 7, \":\": 8, \"DIR\": 9, \"options\": 10, \"body\": 11, \"OPT\": 12, \"NL\": 13, \"line\": 14, \"statement\": 15, \"commitStatement\": 16, \"mergeStatement\": 17, \"cherryPickStatement\": 18, \"acc_title\": 19, \"acc_title_value\": 20, \"acc_descr\": 21, \"acc_descr_value\": 22, \"acc_descr_multiline_value\": 23, \"section\": 24, \"branchStatement\": 25, \"CHECKOUT\": 26, \"ref\": 27, \"BRANCH\": 28, \"ORDER\": 29, \"NUM\": 30, \"CHERRY_PICK\": 31, \"COMMIT_ID\": 32, \"STR\": 33, \"COMMIT_TAG\": 34, \"EMPTYSTR\": 35, \"MERGE\": 36, \"COMMIT_TYPE\": 37, \"commitType\": 38, \"COMMIT\": 39, \"commit_arg\": 40, \"COMMIT_MSG\": 41, \"NORMAL\": 42, \"REVERSE\": 43, \"HIGHLIGHT\": 44, \"ID\": 45, \";\": 46, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"GG\", 7: \"EOF\", 8: \":\", 9: \"DIR\", 12: \"OPT\", 13: \"NL\", 19: \"acc_title\", 20: \"acc_title_value\", 21: \"acc_descr\", 22: \"acc_descr_value\", 23: \"acc_descr_multiline_value\", 24: \"section\", 26: \"CHECKOUT\", 28: \"BRANCH\", 29: \"ORDER\", 30: \"NUM\", 31: \"CHERRY_PICK\", 32: \"COMMIT_ID\", 33: \"STR\", 34: \"COMMIT_TAG\", 35: \"EMPTYSTR\", 36: \"MERGE\", 37: \"COMMIT_TYPE\", 39: \"COMMIT\", 41: \"COMMIT_MSG\", 42: \"NORMAL\", 43: \"REVERSE\", 44: \"HIGHLIGHT\", 45: \"ID\", 46: \";\" },\n productions_: [0, [3, 2], [3, 3], [3, 4], [3, 5], [6, 0], [6, 2], [10, 2], [10, 1], [11, 0], [11, 2], [14, 2], [14, 1], [15, 1], [15, 1], [15, 1], [15, 2], [15, 2], [15, 1], [15, 1], [15, 1], [15, 2], [25, 2], [25, 4], [18, 3], [18, 5], [18, 5], [18, 5], [18, 5], [17, 2], [17, 4], [17, 4], [17, 4], [17, 6], [17, 6], [17, 6], [17, 6], [17, 6], [17, 6], [17, 8], [17, 8], [17, 8], [17, 8], [17, 8], [17, 8], [16, 2], [16, 3], [16, 3], [16, 5], [16, 5], [16, 3], [16, 5], [16, 5], [16, 5], [16, 5], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 3], [16, 5], [16, 5], [16, 5], [16, 5], [16, 5], [16, 5], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 7], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [16, 9], [40, 0], [40, 1], [38, 1], [38, 1], [38, 1], [27, 1], [27, 1], [4, 1], [4, 1], [4, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 2:\n return $$[$0];\n case 3:\n return $$[$0 - 1];\n case 4:\n yy.setDirection($$[$0 - 3]);\n return $$[$0 - 1];\n case 6:\n yy.setOptions($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 7:\n $$[$0 - 1] += $$[$0];\n this.$ = $$[$0 - 1];\n break;\n case 9:\n this.$ = [];\n break;\n case 10:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 11:\n this.$ = $$[$0 - 1];\n break;\n case 16:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 17:\n case 18:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 19:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 21:\n yy.checkout($$[$0]);\n break;\n case 22:\n yy.branch($$[$0]);\n break;\n case 23:\n yy.branch($$[$0 - 2], $$[$0]);\n break;\n case 24:\n yy.cherryPick($$[$0], \"\", void 0);\n break;\n case 25:\n yy.cherryPick($$[$0 - 2], \"\", $$[$0]);\n break;\n case 26:\n case 28:\n yy.cherryPick($$[$0 - 2], \"\", \"\");\n break;\n case 27:\n yy.cherryPick($$[$0], \"\", $$[$0 - 2]);\n break;\n case 29:\n yy.merge($$[$0], \"\", \"\", \"\");\n break;\n case 30:\n yy.merge($$[$0 - 2], $$[$0], \"\", \"\");\n break;\n case 31:\n yy.merge($$[$0 - 2], \"\", $$[$0], \"\");\n break;\n case 32:\n yy.merge($$[$0 - 2], \"\", \"\", $$[$0]);\n break;\n case 33:\n yy.merge($$[$0 - 4], $$[$0], \"\", $$[$0 - 2]);\n break;\n case 34:\n yy.merge($$[$0 - 4], \"\", $$[$0], $$[$0 - 2]);\n break;\n case 35:\n yy.merge($$[$0 - 4], \"\", $$[$0 - 2], $$[$0]);\n break;\n case 36:\n yy.merge($$[$0 - 4], $$[$0 - 2], $$[$0], \"\");\n break;\n case 37:\n yy.merge($$[$0 - 4], $$[$0 - 2], \"\", $$[$0]);\n break;\n case 38:\n yy.merge($$[$0 - 4], $$[$0], $$[$0 - 2], \"\");\n break;\n case 39:\n yy.merge($$[$0 - 6], $$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 40:\n yy.merge($$[$0 - 6], $$[$0], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 41:\n yy.merge($$[$0 - 6], $$[$0 - 4], $$[$0], $$[$0 - 2]);\n break;\n case 42:\n yy.merge($$[$0 - 6], $$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 43:\n yy.merge($$[$0 - 6], $$[$0], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 44:\n yy.merge($$[$0 - 6], $$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 45:\n yy.commit($$[$0]);\n break;\n case 46:\n yy.commit(\"\", \"\", yy.commitType.NORMAL, $$[$0]);\n break;\n case 47:\n yy.commit(\"\", \"\", $$[$0], \"\");\n break;\n case 48:\n yy.commit(\"\", \"\", $$[$0], $$[$0 - 2]);\n break;\n case 49:\n yy.commit(\"\", \"\", $$[$0 - 2], $$[$0]);\n break;\n case 50:\n yy.commit(\"\", $$[$0], yy.commitType.NORMAL, \"\");\n break;\n case 51:\n yy.commit(\"\", $$[$0 - 2], yy.commitType.NORMAL, $$[$0]);\n break;\n case 52:\n yy.commit(\"\", $$[$0], yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 53:\n yy.commit(\"\", $$[$0 - 2], $$[$0], \"\");\n break;\n case 54:\n yy.commit(\"\", $$[$0], $$[$0 - 2], \"\");\n break;\n case 55:\n yy.commit(\"\", $$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 56:\n yy.commit(\"\", $$[$0 - 4], $$[$0], $$[$0 - 2]);\n break;\n case 57:\n yy.commit(\"\", $$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 58:\n yy.commit(\"\", $$[$0], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 59:\n yy.commit(\"\", $$[$0], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 60:\n yy.commit(\"\", $$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 61:\n yy.commit($$[$0], \"\", yy.commitType.NORMAL, \"\");\n break;\n case 62:\n yy.commit($$[$0], \"\", yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 63:\n yy.commit($$[$0 - 2], \"\", yy.commitType.NORMAL, $$[$0]);\n break;\n case 64:\n yy.commit($$[$0 - 2], \"\", $$[$0], \"\");\n break;\n case 65:\n yy.commit($$[$0], \"\", $$[$0 - 2], \"\");\n break;\n case 66:\n yy.commit($$[$0], $$[$0 - 2], yy.commitType.NORMAL, \"\");\n break;\n case 67:\n yy.commit($$[$0 - 2], $$[$0], yy.commitType.NORMAL, \"\");\n break;\n case 68:\n yy.commit($$[$0 - 4], \"\", $$[$0 - 2], $$[$0]);\n break;\n case 69:\n yy.commit($$[$0 - 4], \"\", $$[$0], $$[$0 - 2]);\n break;\n case 70:\n yy.commit($$[$0 - 2], \"\", $$[$0 - 4], $$[$0]);\n break;\n case 71:\n yy.commit($$[$0], \"\", $$[$0 - 4], $$[$0 - 2]);\n break;\n case 72:\n yy.commit($$[$0], \"\", $$[$0 - 2], $$[$0 - 4]);\n break;\n case 73:\n yy.commit($$[$0 - 2], \"\", $$[$0], $$[$0 - 4]);\n break;\n case 74:\n yy.commit($$[$0 - 4], $$[$0], $$[$0 - 2], \"\");\n break;\n case 75:\n yy.commit($$[$0 - 4], $$[$0 - 2], $$[$0], \"\");\n break;\n case 76:\n yy.commit($$[$0 - 2], $$[$0], $$[$0 - 4], \"\");\n break;\n case 77:\n yy.commit($$[$0], $$[$0 - 2], $$[$0 - 4], \"\");\n break;\n case 78:\n yy.commit($$[$0], $$[$0 - 4], $$[$0 - 2], \"\");\n break;\n case 79:\n yy.commit($$[$0 - 2], $$[$0 - 4], $$[$0], \"\");\n break;\n case 80:\n yy.commit($$[$0 - 4], $$[$0], yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 81:\n yy.commit($$[$0 - 4], $$[$0 - 2], yy.commitType.NORMAL, $$[$0]);\n break;\n case 82:\n yy.commit($$[$0 - 2], $$[$0], yy.commitType.NORMAL, $$[$0 - 4]);\n break;\n case 83:\n yy.commit($$[$0], $$[$0 - 2], yy.commitType.NORMAL, $$[$0 - 4]);\n break;\n case 84:\n yy.commit($$[$0], $$[$0 - 4], yy.commitType.NORMAL, $$[$0 - 2]);\n break;\n case 85:\n yy.commit($$[$0 - 2], $$[$0 - 4], yy.commitType.NORMAL, $$[$0]);\n break;\n case 86:\n yy.commit($$[$0 - 6], $$[$0 - 4], $$[$0 - 2], $$[$0]);\n break;\n case 87:\n yy.commit($$[$0 - 6], $$[$0 - 4], $$[$0], $$[$0 - 2]);\n break;\n case 88:\n yy.commit($$[$0 - 6], $$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 89:\n yy.commit($$[$0 - 6], $$[$0], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 90:\n yy.commit($$[$0 - 6], $$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 91:\n yy.commit($$[$0 - 6], $$[$0], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 92:\n yy.commit($$[$0 - 4], $$[$0 - 6], $$[$0 - 2], $$[$0]);\n break;\n case 93:\n yy.commit($$[$0 - 4], $$[$0 - 6], $$[$0], $$[$0 - 2]);\n break;\n case 94:\n yy.commit($$[$0 - 2], $$[$0 - 6], $$[$0 - 4], $$[$0]);\n break;\n case 95:\n yy.commit($$[$0], $$[$0 - 6], $$[$0 - 4], $$[$0 - 2]);\n break;\n case 96:\n yy.commit($$[$0 - 2], $$[$0 - 6], $$[$0], $$[$0 - 4]);\n break;\n case 97:\n yy.commit($$[$0], $$[$0 - 6], $$[$0 - 2], $$[$0 - 4]);\n break;\n case 98:\n yy.commit($$[$0], $$[$0 - 4], $$[$0 - 2], $$[$0 - 6]);\n break;\n case 99:\n yy.commit($$[$0 - 2], $$[$0 - 4], $$[$0], $$[$0 - 6]);\n break;\n case 100:\n yy.commit($$[$0], $$[$0 - 2], $$[$0 - 4], $$[$0 - 6]);\n break;\n case 101:\n yy.commit($$[$0 - 2], $$[$0], $$[$0 - 4], $$[$0 - 6]);\n break;\n case 102:\n yy.commit($$[$0 - 4], $$[$0 - 2], $$[$0], $$[$0 - 6]);\n break;\n case 103:\n yy.commit($$[$0 - 4], $$[$0], $$[$0 - 2], $$[$0 - 6]);\n break;\n case 104:\n yy.commit($$[$0 - 2], $$[$0 - 4], $$[$0 - 6], $$[$0]);\n break;\n case 105:\n yy.commit($$[$0], $$[$0 - 4], $$[$0 - 6], $$[$0 - 2]);\n break;\n case 106:\n yy.commit($$[$0 - 2], $$[$0], $$[$0 - 6], $$[$0 - 4]);\n break;\n case 107:\n yy.commit($$[$0], $$[$0 - 2], $$[$0 - 6], $$[$0 - 4]);\n break;\n case 108:\n yy.commit($$[$0 - 4], $$[$0 - 2], $$[$0 - 6], $$[$0]);\n break;\n case 109:\n yy.commit($$[$0 - 4], $$[$0], $$[$0 - 6], $$[$0 - 2]);\n break;\n case 110:\n this.$ = \"\";\n break;\n case 111:\n this.$ = $$[$0];\n break;\n case 112:\n this.$ = yy.commitType.NORMAL;\n break;\n case 113:\n this.$ = yy.commitType.REVERSE;\n break;\n case 114:\n this.$ = yy.commitType.HIGHLIGHT;\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: $V0, 7: $V1, 13: $V2, 46: $V3 }, { 1: [3] }, { 3: 7, 4: 2, 5: $V0, 7: $V1, 13: $V2, 46: $V3 }, { 6: 8, 7: $V4, 8: [1, 9], 9: [1, 10], 10: 11, 13: $V5 }, o($V6, [2, 117]), o($V6, [2, 118]), o($V6, [2, 119]), { 1: [2, 1] }, { 7: [1, 13] }, { 6: 14, 7: $V4, 10: 11, 13: $V5 }, { 8: [1, 15] }, o($V7, [2, 9], { 11: 16, 12: [1, 17] }), o($V8, [2, 8]), { 1: [2, 2] }, { 7: [1, 18] }, { 6: 19, 7: $V4, 10: 11, 13: $V5 }, { 7: [2, 6], 13: [1, 22], 14: 20, 15: 21, 16: 23, 17: 24, 18: 25, 19: [1, 26], 21: [1, 27], 23: [1, 28], 24: [1, 29], 25: 30, 26: [1, 31], 28: [1, 35], 31: [1, 34], 36: [1, 33], 39: [1, 32] }, o($V8, [2, 7]), { 1: [2, 3] }, { 7: [1, 36] }, o($V7, [2, 10]), { 4: 37, 7: $V1, 13: $V2, 46: $V3 }, o($V7, [2, 12]), o($V9, [2, 13]), o($V9, [2, 14]), o($V9, [2, 15]), { 20: [1, 38] }, { 22: [1, 39] }, o($V9, [2, 18]), o($V9, [2, 19]), o($V9, [2, 20]), { 27: 40, 33: $Va, 45: $Vb }, o($V9, [2, 110], { 40: 43, 32: [1, 46], 33: [1, 48], 34: [1, 44], 37: [1, 45], 41: [1, 47] }), { 27: 49, 33: $Va, 45: $Vb }, { 32: [1, 50], 34: [1, 51] }, { 27: 52, 33: $Va, 45: $Vb }, { 1: [2, 4] }, o($V7, [2, 11]), o($V9, [2, 16]), o($V9, [2, 17]), o($V9, [2, 21]), o($Vc, [2, 115]), o($Vc, [2, 116]), o($V9, [2, 45]), { 33: [1, 53] }, { 38: 54, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 58] }, { 33: [1, 59] }, o($V9, [2, 111]), o($V9, [2, 29], { 32: [1, 60], 34: [1, 62], 37: [1, 61] }), { 33: [1, 63] }, { 33: [1, 64], 35: [1, 65] }, o($V9, [2, 22], { 29: [1, 66] }), o($V9, [2, 46], { 32: [1, 68], 37: [1, 67], 41: [1, 69] }), o($V9, [2, 47], { 32: [1, 71], 34: [1, 70], 41: [1, 72] }), o($Vg, [2, 112]), o($Vg, [2, 113]), o($Vg, [2, 114]), o($V9, [2, 50], { 34: [1, 73], 37: [1, 74], 41: [1, 75] }), o($V9, [2, 61], { 32: [1, 78], 34: [1, 76], 37: [1, 77] }), { 33: [1, 79] }, { 38: 80, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 81] }, o($V9, [2, 24], { 34: [1, 82] }), { 32: [1, 83] }, { 32: [1, 84] }, { 30: [1, 85] }, { 38: 86, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 87] }, { 33: [1, 88] }, { 33: [1, 89] }, { 33: [1, 90] }, { 33: [1, 91] }, { 33: [1, 92] }, { 38: 93, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 94] }, { 33: [1, 95] }, { 38: 96, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 97] }, o($V9, [2, 30], { 34: [1, 99], 37: [1, 98] }), o($V9, [2, 31], { 32: [1, 101], 34: [1, 100] }), o($V9, [2, 32], { 32: [1, 102], 37: [1, 103] }), { 33: [1, 104], 35: [1, 105] }, { 33: [1, 106] }, { 33: [1, 107] }, o($V9, [2, 23]), o($V9, [2, 48], { 32: [1, 108], 41: [1, 109] }), o($V9, [2, 52], { 37: [1, 110], 41: [1, 111] }), o($V9, [2, 62], { 32: [1, 113], 37: [1, 112] }), o($V9, [2, 49], { 32: [1, 114], 41: [1, 115] }), o($V9, [2, 54], { 34: [1, 116], 41: [1, 117] }), o($V9, [2, 65], { 32: [1, 119], 34: [1, 118] }), o($V9, [2, 51], { 37: [1, 120], 41: [1, 121] }), o($V9, [2, 53], { 34: [1, 122], 41: [1, 123] }), o($V9, [2, 66], { 34: [1, 125], 37: [1, 124] }), o($V9, [2, 63], { 32: [1, 127], 37: [1, 126] }), o($V9, [2, 64], { 32: [1, 129], 34: [1, 128] }), o($V9, [2, 67], { 34: [1, 131], 37: [1, 130] }), { 38: 132, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 133] }, { 33: [1, 134] }, { 33: [1, 135] }, { 33: [1, 136] }, { 38: 137, 42: $Vd, 43: $Ve, 44: $Vf }, o($V9, [2, 25]), o($V9, [2, 26]), o($V9, [2, 27]), o($V9, [2, 28]), { 33: [1, 138] }, { 33: [1, 139] }, { 38: 140, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 141] }, { 38: 142, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 143] }, { 33: [1, 144] }, { 33: [1, 145] }, { 33: [1, 146] }, { 33: [1, 147] }, { 33: [1, 148] }, { 33: [1, 149] }, { 38: 150, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 151] }, { 33: [1, 152] }, { 33: [1, 153] }, { 38: 154, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 155] }, { 38: 156, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 157] }, { 33: [1, 158] }, { 33: [1, 159] }, { 38: 160, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 161] }, o($V9, [2, 36], { 34: [1, 162] }), o($V9, [2, 37], { 37: [1, 163] }), o($V9, [2, 35], { 32: [1, 164] }), o($V9, [2, 38], { 34: [1, 165] }), o($V9, [2, 33], { 37: [1, 166] }), o($V9, [2, 34], { 32: [1, 167] }), o($V9, [2, 59], { 41: [1, 168] }), o($V9, [2, 72], { 32: [1, 169] }), o($V9, [2, 60], { 41: [1, 170] }), o($V9, [2, 83], { 37: [1, 171] }), o($V9, [2, 73], { 32: [1, 172] }), o($V9, [2, 82], { 37: [1, 173] }), o($V9, [2, 58], { 41: [1, 174] }), o($V9, [2, 71], { 32: [1, 175] }), o($V9, [2, 57], { 41: [1, 176] }), o($V9, [2, 77], { 34: [1, 177] }), o($V9, [2, 70], { 32: [1, 178] }), o($V9, [2, 76], { 34: [1, 179] }), o($V9, [2, 56], { 41: [1, 180] }), o($V9, [2, 84], { 37: [1, 181] }), o($V9, [2, 55], { 41: [1, 182] }), o($V9, [2, 78], { 34: [1, 183] }), o($V9, [2, 79], { 34: [1, 184] }), o($V9, [2, 85], { 37: [1, 185] }), o($V9, [2, 69], { 32: [1, 186] }), o($V9, [2, 80], { 37: [1, 187] }), o($V9, [2, 68], { 32: [1, 188] }), o($V9, [2, 74], { 34: [1, 189] }), o($V9, [2, 75], { 34: [1, 190] }), o($V9, [2, 81], { 37: [1, 191] }), { 33: [1, 192] }, { 38: 193, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 194] }, { 33: [1, 195] }, { 38: 196, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 197] }, { 33: [1, 198] }, { 33: [1, 199] }, { 33: [1, 200] }, { 38: 201, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 202] }, { 38: 203, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 204] }, { 33: [1, 205] }, { 33: [1, 206] }, { 33: [1, 207] }, { 33: [1, 208] }, { 33: [1, 209] }, { 33: [1, 210] }, { 38: 211, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 212] }, { 33: [1, 213] }, { 33: [1, 214] }, { 38: 215, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 216] }, { 38: 217, 42: $Vd, 43: $Ve, 44: $Vf }, { 33: [1, 218] }, { 33: [1, 219] }, { 33: [1, 220] }, { 38: 221, 42: $Vd, 43: $Ve, 44: $Vf }, o($V9, [2, 39]), o($V9, [2, 41]), o($V9, [2, 40]), o($V9, [2, 42]), o($V9, [2, 44]), o($V9, [2, 43]), o($V9, [2, 100]), o($V9, [2, 101]), o($V9, [2, 98]), o($V9, [2, 99]), o($V9, [2, 103]), o($V9, [2, 102]), o($V9, [2, 107]), o($V9, [2, 106]), o($V9, [2, 105]), o($V9, [2, 104]), o($V9, [2, 109]), o($V9, [2, 108]), o($V9, [2, 97]), o($V9, [2, 96]), o($V9, [2, 95]), o($V9, [2, 94]), o($V9, [2, 92]), o($V9, [2, 93]), o($V9, [2, 91]), o($V9, [2, 90]), o($V9, [2, 89]), o($V9, [2, 88]), o($V9, [2, 86]), o($V9, [2, 87])],\n defaultActions: { 7: [2, 1], 13: [2, 2], 18: [2, 3], 36: [2, 4] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.begin(\"acc_title\");\n return 19;\n case 1:\n this.popState();\n return \"acc_title_value\";\n case 2:\n this.begin(\"acc_descr\");\n return 21;\n case 3:\n this.popState();\n return \"acc_descr_value\";\n case 4:\n this.begin(\"acc_descr_multiline\");\n break;\n case 5:\n this.popState();\n break;\n case 6:\n return \"acc_descr_multiline_value\";\n case 7:\n return 13;\n case 8:\n break;\n case 9:\n break;\n case 10:\n return 5;\n case 11:\n return 39;\n case 12:\n return 32;\n case 13:\n return 37;\n case 14:\n return 41;\n case 15:\n return 42;\n case 16:\n return 43;\n case 17:\n return 44;\n case 18:\n return 34;\n case 19:\n return 28;\n case 20:\n return 29;\n case 21:\n return 36;\n case 22:\n return 31;\n case 23:\n return 26;\n case 24:\n return 9;\n case 25:\n return 9;\n case 26:\n return 8;\n case 27:\n return \"CARET\";\n case 28:\n this.begin(\"options\");\n break;\n case 29:\n this.popState();\n break;\n case 30:\n return 12;\n case 31:\n return 35;\n case 32:\n this.begin(\"string\");\n break;\n case 33:\n this.popState();\n break;\n case 34:\n return 33;\n case 35:\n return 30;\n case 36:\n return 45;\n case 37:\n return 7;\n }\n },\n rules: [/^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:(\\r?\\n)+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:gitGraph\\b)/i, /^(?:commit(?=\\s|$))/i, /^(?:id:)/i, /^(?:type:)/i, /^(?:msg:)/i, /^(?:NORMAL\\b)/i, /^(?:REVERSE\\b)/i, /^(?:HIGHLIGHT\\b)/i, /^(?:tag:)/i, /^(?:branch(?=\\s|$))/i, /^(?:order:)/i, /^(?:merge(?=\\s|$))/i, /^(?:cherry-pick(?=\\s|$))/i, /^(?:checkout(?=\\s|$))/i, /^(?:LR\\b)/i, /^(?:TB\\b)/i, /^(?::)/i, /^(?:\\^)/i, /^(?:options\\r?\\n)/i, /^(?:[ \\r\\n\\t]+end\\b)/i, /^(?:[\\s\\S]+(?=[ \\r\\n\\t]+end))/i, /^(?:[\"][\"])/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[0-9]+(?=\\s|$))/i, /^(?:\\w([-\\./\\w]*[-\\w])?)/i, /^(?:$)/i, /^(?:\\s+)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [5, 6], \"inclusive\": false }, \"acc_descr\": { \"rules\": [3], \"inclusive\": false }, \"acc_title\": { \"rules\": [1], \"inclusive\": false }, \"options\": { \"rules\": [29, 30], \"inclusive\": false }, \"string\": { \"rules\": [33, 34], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 2, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 35, 36, 37, 38], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst gitGraphParser = parser;\nlet mainBranchName = getConfig().gitGraph.mainBranchName;\nlet mainBranchOrder = getConfig().gitGraph.mainBranchOrder;\nlet commits = {};\nlet head = null;\nlet branchesConfig = {};\nbranchesConfig[mainBranchName] = { name: mainBranchName, order: mainBranchOrder };\nlet branches = {};\nbranches[mainBranchName] = head;\nlet curBranch = mainBranchName;\nlet direction = \"LR\";\nlet seq = 0;\nfunction getId() {\n return random({ length: 7 });\n}\nfunction uniqBy(list, fn) {\n const recordMap = /* @__PURE__ */ Object.create(null);\n return list.reduce((out, item) => {\n const key = fn(item);\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n return out;\n }, []);\n}\nconst setDirection = function(dir2) {\n direction = dir2;\n};\nlet options = {};\nconst setOptions = function(rawOptString) {\n log.debug(\"options str\", rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || \"{}\";\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n log.error(\"error while parsing gitGraph options\", e.message);\n }\n};\nconst getOptions = function() {\n return options;\n};\nconst commit = function(msg, id, type, tag) {\n log.debug(\"Entering commit:\", msg, id, type, tag);\n id = common.sanitizeText(id, getConfig());\n msg = common.sanitizeText(msg, getConfig());\n tag = common.sanitizeText(tag, getConfig());\n const commit2 = {\n id: id ? id : seq + \"-\" + getId(),\n message: msg,\n seq: seq++,\n type: type ? type : commitType$1.NORMAL,\n tag: tag ? tag : \"\",\n parents: head == null ? [] : [head.id],\n branch: curBranch\n };\n head = commit2;\n commits[commit2.id] = commit2;\n branches[curBranch] = commit2.id;\n log.debug(\"in pushCommit \" + commit2.id);\n};\nconst branch = function(name, order) {\n name = common.sanitizeText(name, getConfig());\n if (branches[name] === void 0) {\n branches[name] = head != null ? head.id : null;\n branchesConfig[name] = { name, order: order ? parseInt(order, 10) : null };\n checkout(name);\n log.debug(\"in createBranch\");\n } else {\n let error = new Error(\n 'Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using \"checkout ' + name + '\")'\n );\n error.hash = {\n text: \"branch \" + name,\n token: \"branch \" + name,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"checkout ' + name + '\"']\n };\n throw error;\n }\n};\nconst merge = function(otherBranch, custom_id, override_type, custom_tag) {\n otherBranch = common.sanitizeText(otherBranch, getConfig());\n custom_id = common.sanitizeText(custom_id, getConfig());\n const currentCommit = commits[branches[curBranch]];\n const otherCommit = commits[branches[otherBranch]];\n if (curBranch === otherBranch) {\n let error = new Error('Incorrect usage of \"merge\". Cannot merge a branch to itself');\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"branch abc\"]\n };\n throw error;\n } else if (currentCommit === void 0 || !currentCommit) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Current branch (' + curBranch + \")has no commits\"\n );\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"commit\"]\n };\n throw error;\n } else if (branches[otherBranch] === void 0) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") does not exist\"\n );\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"branch \" + otherBranch]\n };\n throw error;\n } else if (otherCommit === void 0 || !otherCommit) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Branch to be merged (' + otherBranch + \") has no commits\"\n );\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"commit\"']\n };\n throw error;\n } else if (currentCommit === otherCommit) {\n let error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: \"merge \" + otherBranch,\n token: \"merge \" + otherBranch,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"branch abc\"]\n };\n throw error;\n } else if (custom_id && commits[custom_id] !== void 0) {\n let error = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' + custom_id + \" already exists, use different custom Id\"\n );\n error.hash = {\n text: \"merge \" + otherBranch + custom_id + override_type + custom_tag,\n token: \"merge \" + otherBranch + custom_id + override_type + custom_tag,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\n \"merge \" + otherBranch + \" \" + custom_id + \"_UNIQUE \" + override_type + \" \" + custom_tag\n ]\n };\n throw error;\n }\n const commit2 = {\n id: custom_id ? custom_id : seq + \"-\" + getId(),\n message: \"merged branch \" + otherBranch + \" into \" + curBranch,\n seq: seq++,\n parents: [head == null ? null : head.id, branches[otherBranch]],\n branch: curBranch,\n type: commitType$1.MERGE,\n customType: override_type,\n customId: custom_id ? true : false,\n tag: custom_tag ? custom_tag : \"\"\n };\n head = commit2;\n commits[commit2.id] = commit2;\n branches[curBranch] = commit2.id;\n log.debug(branches);\n log.debug(\"in mergeBranch\");\n};\nconst cherryPick = function(sourceId, targetId, tag) {\n log.debug(\"Entering cherryPick:\", sourceId, targetId, tag);\n sourceId = common.sanitizeText(sourceId, getConfig());\n targetId = common.sanitizeText(targetId, getConfig());\n tag = common.sanitizeText(tag, getConfig());\n if (!sourceId || commits[sourceId] === void 0) {\n let error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit id should exist and provided'\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n let sourceCommit = commits[sourceId];\n let sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType$1.MERGE) {\n let error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit should not be a merge commit'\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n if (!targetId || commits[targetId] === void 0) {\n if (sourceCommitBranch === curBranch) {\n let error = new Error(\n 'Incorrect usage of \"cherryPick\". Source commit is already on current branch'\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommit = commits[branches[curBranch]];\n if (currentCommit === void 0 || !currentCommit) {\n let error = new Error(\n 'Incorrect usage of \"cherry-pick\". Current branch (' + curBranch + \")has no commits\"\n );\n error.hash = {\n text: \"cherryPick \" + sourceId + \" \" + targetId,\n token: \"cherryPick \" + sourceId + \" \" + targetId,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const commit2 = {\n id: seq + \"-\" + getId(),\n message: \"cherry-picked \" + sourceCommit + \" into \" + curBranch,\n seq: seq++,\n parents: [head == null ? null : head.id, sourceCommit.id],\n branch: curBranch,\n type: commitType$1.CHERRY_PICK,\n tag: tag ?? \"cherry-pick:\" + sourceCommit.id\n };\n head = commit2;\n commits[commit2.id] = commit2;\n branches[curBranch] = commit2.id;\n log.debug(branches);\n log.debug(\"in cherryPick\");\n }\n};\nconst checkout = function(branch2) {\n branch2 = common.sanitizeText(branch2, getConfig());\n if (branches[branch2] === void 0) {\n let error = new Error(\n 'Trying to checkout branch which is not yet created. (Help try using \"branch ' + branch2 + '\")'\n );\n error.hash = {\n text: \"checkout \" + branch2,\n token: \"checkout \" + branch2,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"branch ' + branch2 + '\"']\n };\n throw error;\n } else {\n curBranch = branch2;\n const id = branches[curBranch];\n head = commits[id];\n }\n};\nfunction upsert(arr, key, newVal) {\n const index = arr.indexOf(key);\n if (index === -1) {\n arr.push(newVal);\n } else {\n arr.splice(index, 1, newVal);\n }\n}\nfunction prettyPrintCommitHistory(commitArr) {\n const commit2 = commitArr.reduce((out, commit3) => {\n if (out.seq > commit3.seq) {\n return out;\n }\n return commit3;\n }, commitArr[0]);\n let line = \"\";\n commitArr.forEach(function(c) {\n if (c === commit2) {\n line += \"\t*\";\n } else {\n line += \"\t|\";\n }\n });\n const label = [line, commit2.id, commit2.seq];\n for (let branch2 in branches) {\n if (branches[branch2] === commit2.id) {\n label.push(branch2);\n }\n }\n log.debug(label.join(\" \"));\n if (commit2.parents && commit2.parents.length == 2) {\n const newCommit = commits[commit2.parents[0]];\n upsert(commitArr, commit2, newCommit);\n commitArr.push(commits[commit2.parents[1]]);\n } else if (commit2.parents.length == 0) {\n return;\n } else {\n const nextCommit = commits[commit2.parents];\n upsert(commitArr, commit2, nextCommit);\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\nconst prettyPrint = function() {\n log.debug(commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\nconst clear$1 = function() {\n commits = {};\n head = null;\n let mainBranch = getConfig().gitGraph.mainBranchName;\n let mainBranchOrder2 = getConfig().gitGraph.mainBranchOrder;\n branches = {};\n branches[mainBranch] = null;\n branchesConfig = {};\n branchesConfig[mainBranch] = { name: mainBranch, order: mainBranchOrder2 };\n curBranch = mainBranch;\n seq = 0;\n clear$2();\n};\nconst getBranchesAsObjArray = function() {\n const branchesArray = Object.values(branchesConfig).map((branchConfig, i) => {\n if (branchConfig.order !== null) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`, 10)\n };\n }).sort((a, b) => a.order - b.order).map(({ name }) => ({ name }));\n return branchesArray;\n};\nconst getBranches = function() {\n return branches;\n};\nconst getCommits = function() {\n return commits;\n};\nconst getCommitsArray = function() {\n const commitArr = Object.keys(commits).map(function(key) {\n return commits[key];\n });\n commitArr.forEach(function(o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n};\nconst getCurrentBranch = function() {\n return curBranch;\n};\nconst getDirection = function() {\n return direction;\n};\nconst getHead = function() {\n return head;\n};\nconst commitType$1 = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\nconst gitGraphDb = {\n getConfig: () => getConfig().gitGraph,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear: clear$1,\n getBranchesAsObjArray,\n getBranches,\n getCommits,\n getCommitsArray,\n getCurrentBranch,\n getDirection,\n getHead,\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n setDiagramTitle,\n getDiagramTitle,\n commitType: commitType$1\n};\nlet allCommitsDict = {};\nconst commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\nconst THEME_COLOR_LIMIT = 8;\nlet branchPos = {};\nlet commitPos = {};\nlet lanes = [];\nlet maxPos = 0;\nlet dir = \"LR\";\nconst clear = () => {\n branchPos = {};\n commitPos = {};\n allCommitsDict = {};\n maxPos = 0;\n lanes = [];\n dir = \"LR\";\n};\nconst drawText = (txt) => {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n let rows = [];\n if (typeof txt === \"string\") {\n rows = txt.split(/\\\\n|\\n|/gi);\n } else if (Array.isArray(txt)) {\n rows = txt;\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 tspan.setAttribute(\"class\", \"row\");\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n};\nconst drawCommits = (svg, commits2, modifyGraph) => {\n const gitGraphConfig = getConfig().gitGraph;\n const gBullets = svg.append(\"g\").attr(\"class\", \"commit-bullets\");\n const gLabels = svg.append(\"g\").attr(\"class\", \"commit-labels\");\n let pos = 0;\n if (dir === \"TB\") {\n pos = 30;\n }\n const keys = Object.keys(commits2);\n const sortedKeys = keys.sort((a, b) => {\n return commits2[a].seq - commits2[b].seq;\n });\n sortedKeys.forEach((key) => {\n const commit2 = commits2[key];\n const y = dir === \"TB\" ? pos + 10 : branchPos[commit2.branch].pos;\n const x = dir === \"TB\" ? branchPos[commit2.branch].pos : pos + 10;\n if (modifyGraph) {\n let typeClass;\n let commitSymbolType = commit2.customType !== void 0 && commit2.customType !== \"\" ? commit2.customType : commit2.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n typeClass = \"commit-normal\";\n break;\n case commitType.REVERSE:\n typeClass = \"commit-reverse\";\n break;\n case commitType.HIGHLIGHT:\n typeClass = \"commit-highlight\";\n break;\n case commitType.MERGE:\n typeClass = \"commit-merge\";\n break;\n case commitType.CHERRY_PICK:\n typeClass = \"commit-cherry-pick\";\n break;\n default:\n typeClass = \"commit-normal\";\n }\n if (commitSymbolType === commitType.HIGHLIGHT) {\n const circle = gBullets.append(\"rect\");\n circle.attr(\"x\", x - 10);\n circle.attr(\"y\", y - 10);\n circle.attr(\"height\", 20);\n circle.attr(\"width\", 20);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit-highlight${branchPos[commit2.branch].index % THEME_COLOR_LIMIT} ${typeClass}-outer`\n );\n gBullets.append(\"rect\").attr(\"x\", x - 6).attr(\"y\", y - 6).attr(\"height\", 12).attr(\"width\", 12).attr(\n \"class\",\n `commit ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets.append(\"circle\").attr(\"cx\", x).attr(\"cy\", y).attr(\"r\", 10).attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", x - 3).attr(\"cy\", y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", x + 3).attr(\"cy\", y + 2).attr(\"r\", 2.75).attr(\"fill\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", x + 3).attr(\"y1\", y + 1).attr(\"x2\", x).attr(\"y2\", y - 5).attr(\"stroke\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", x - 3).attr(\"y1\", y + 1).attr(\"x2\", x).attr(\"y2\", y - 5).attr(\"stroke\", \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n } else {\n const circle = gBullets.append(\"circle\");\n circle.attr(\"cx\", x);\n circle.attr(\"cy\", y);\n circle.attr(\"r\", commit2.type === commitType.MERGE ? 9 : 10);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT}`\n );\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append(\"circle\");\n circle2.attr(\"cx\", x);\n circle2.attr(\"cy\", y);\n circle2.attr(\"r\", 6);\n circle2.attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append(\"path\");\n cross.attr(\"d\", `M ${x - 5},${y - 5}L${x + 5},${y + 5}M${x - 5},${y + 5}L${x + 5},${y - 5}`).attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${branchPos[commit2.branch].index % THEME_COLOR_LIMIT}`\n );\n }\n }\n }\n if (dir === \"TB\") {\n commitPos[commit2.id] = { x, y: pos + 10 };\n } else {\n commitPos[commit2.id] = { x: pos + 10, y };\n }\n if (modifyGraph) {\n const px = 4;\n const py = 2;\n if (commit2.type !== commitType.CHERRY_PICK && (commit2.customId && commit2.type === commitType.MERGE || commit2.type !== commitType.MERGE) && gitGraphConfig.showCommitLabel) {\n const wrapper = gLabels.append(\"g\");\n const labelBkg = wrapper.insert(\"rect\").attr(\"class\", \"commit-label-bkg\");\n const text = wrapper.append(\"text\").attr(\"x\", pos).attr(\"y\", y + 25).attr(\"class\", \"commit-label\").text(commit2.id);\n let bbox = text.node().getBBox();\n labelBkg.attr(\"x\", pos + 10 - bbox.width / 2 - py).attr(\"y\", y + 13.5).attr(\"width\", bbox.width + 2 * py).attr(\"height\", bbox.height + 2 * py);\n if (dir === \"TB\") {\n labelBkg.attr(\"x\", x - (bbox.width + 4 * px + 5)).attr(\"y\", y - 12);\n text.attr(\"x\", x - (bbox.width + 4 * px)).attr(\"y\", y + bbox.height - 12);\n }\n if (dir !== \"TB\") {\n text.attr(\"x\", pos + 10 - bbox.width / 2);\n }\n if (gitGraphConfig.rotateCommitLabel) {\n if (dir === \"TB\") {\n text.attr(\"transform\", \"rotate(-45, \" + x + \", \" + y + \")\");\n labelBkg.attr(\"transform\", \"rotate(-45, \" + x + \", \" + y + \")\");\n } else {\n let r_x = -7.5 - (bbox.width + 10) / 25 * 9.5;\n let r_y = 10 + bbox.width / 25 * 8.5;\n wrapper.attr(\n \"transform\",\n \"translate(\" + r_x + \", \" + r_y + \") rotate(-45, \" + pos + \", \" + y + \")\"\n );\n }\n }\n }\n if (commit2.tag) {\n const rect = gLabels.insert(\"polygon\");\n const hole = gLabels.append(\"circle\");\n const tag = gLabels.append(\"text\").attr(\"y\", y - 16).attr(\"class\", \"tag-label\").text(commit2.tag);\n let tagBbox = tag.node().getBBox();\n tag.attr(\"x\", pos + 10 - tagBbox.width / 2);\n const h2 = tagBbox.height / 2;\n const ly = y - 19.2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${pos - tagBbox.width / 2 - px / 2},${ly + py}\n ${pos - tagBbox.width / 2 - px / 2},${ly - py}\n ${pos + 10 - tagBbox.width / 2 - px},${ly - h2 - py}\n ${pos + 10 + tagBbox.width / 2 + px},${ly - h2 - py}\n ${pos + 10 + tagBbox.width / 2 + px},${ly + h2 + py}\n ${pos + 10 - tagBbox.width / 2 - px},${ly + h2 + py}`\n );\n hole.attr(\"cx\", pos - tagBbox.width / 2 + px / 2).attr(\"cy\", ly).attr(\"r\", 1.5).attr(\"class\", \"tag-hole\");\n if (dir === \"TB\") {\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${x},${pos + py}\n ${x},${pos - py}\n ${x + 10},${pos - h2 - py}\n ${x + 10 + tagBbox.width + px},${pos - h2 - py}\n ${x + 10 + tagBbox.width + px},${pos + h2 + py}\n ${x + 10},${pos + h2 + py}`\n ).attr(\"transform\", \"translate(12,12) rotate(45, \" + x + \",\" + pos + \")\");\n hole.attr(\"cx\", x + px / 2).attr(\"cy\", pos).attr(\"transform\", \"translate(12,12) rotate(45, \" + x + \",\" + pos + \")\");\n tag.attr(\"x\", x + 5).attr(\"y\", pos + 3).attr(\"transform\", \"translate(14,14) rotate(45, \" + x + \",\" + pos + \")\");\n }\n }\n }\n pos += 50;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n};\nconst hasOverlappingCommits = (commit1, commit2, allCommits) => {\n const keys = Object.keys(allCommits);\n const overlappingComits = keys.filter((key) => {\n return allCommits[key].branch === commit2.branch && allCommits[key].seq > commit1.seq && allCommits[key].seq < commit2.seq;\n });\n return overlappingComits.length > 0;\n};\nconst findLane = (y1, y2, depth = 0) => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n let ok = lanes.every((lane) => Math.abs(lane - candidate) >= 10);\n if (ok) {\n lanes.push(candidate);\n return candidate;\n }\n const diff = Math.abs(y1 - y2);\n return findLane(y1, y2 - diff / 5, depth + 1);\n};\nconst drawArrow = (svg, commit1, commit2, allCommits) => {\n const p1 = commitPos[commit1.id];\n const p2 = commitPos[commit2.id];\n const overlappingCommits = hasOverlappingCommits(commit1, commit2, allCommits);\n let arc = \"\";\n let arc2 = \"\";\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos[commit2.branch].index;\n let lineDef;\n if (overlappingCommits) {\n arc = \"A 10 10, 0, 0, 0,\";\n arc2 = \"A 10 10, 0, 0, 1,\";\n radius = 10;\n offset = 10;\n colorClassNum = branchPos[commit2.branch].index;\n const lineY = p1.y < p2.y ? findLane(p1.y, p2.y) : findLane(p2.y, p1.y);\n const lineX = p1.x < p2.x ? findLane(p1.x, p2.x) : findLane(p2.x, p1.x);\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX - radius} ${p1.y} ${arc2} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc} ${lineX + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${lineX + radius} ${p1.y} ${arc} ${lineX} ${p1.y + offset} L ${lineX} ${p2.y - radius} ${arc2} ${lineX - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY - radius} ${arc} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc2} ${p2.x} ${lineY + offset} L ${p2.x} ${p2.y}`;\n } else {\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${lineY + radius} ${arc2} ${p1.x + offset} ${lineY} L ${p2.x - radius} ${lineY} ${arc} ${p2.x} ${lineY - offset} L ${p2.x} ${p2.y}`;\n }\n }\n } else {\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n colorClassNum = branchPos[commit2.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc2} ${p2.x} ${p1.y + offset} L ${p2.x} ${p2.y}`;\n }\n if (p1.x > p2.x) {\n arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc2} ${p1.x - offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n if (p1.x === p2.x) {\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x + radius} ${p1.y} ${arc} ${p1.x + offset} ${p2.y + radius} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n arc = \"A 20 20, 0, 0, 0,\";\n radius = 20;\n offset = 20;\n colorClassNum = branchPos[commit2.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n if (p1.y > p2.y) {\n arc = \"A 20 20, 0, 0, 0,\";\n radius = 20;\n offset = 20;\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x - radius} ${p1.y} ${arc} ${p2.x} ${p1.y - offset} L ${p2.x} ${p2.y}`;\n }\n if (p1.y === p2.y) {\n colorClassNum = branchPos[commit1.branch].index;\n lineDef = `M ${p1.x} ${p1.y} L ${p1.x} ${p2.y - radius} ${arc} ${p1.x + offset} ${p2.y} L ${p2.x} ${p2.y}`;\n }\n }\n }\n svg.append(\"path\").attr(\"d\", lineDef).attr(\"class\", \"arrow arrow\" + colorClassNum % THEME_COLOR_LIMIT);\n};\nconst drawArrows = (svg, commits2) => {\n const gArrows = svg.append(\"g\").attr(\"class\", \"commit-arrows\");\n Object.keys(commits2).forEach((key) => {\n const commit2 = commits2[key];\n if (commit2.parents && commit2.parents.length > 0) {\n commit2.parents.forEach((parent) => {\n drawArrow(gArrows, commits2[parent], commit2, commits2);\n });\n }\n });\n};\nconst drawBranches = (svg, branches2) => {\n const gitGraphConfig = getConfig().gitGraph;\n const g = svg.append(\"g\");\n branches2.forEach((branch2, index) => {\n const adjustIndexForTheme = index % THEME_COLOR_LIMIT;\n const pos = branchPos[branch2.name].pos;\n const line = g.append(\"line\");\n line.attr(\"x1\", 0);\n line.attr(\"y1\", pos);\n line.attr(\"x2\", maxPos);\n line.attr(\"y2\", pos);\n line.attr(\"class\", \"branch branch\" + adjustIndexForTheme);\n if (dir === \"TB\") {\n line.attr(\"y1\", 30);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", maxPos);\n line.attr(\"x2\", pos);\n }\n lanes.push(pos);\n let name = branch2.name;\n const labelElement = drawText(name);\n const bkg = g.insert(\"rect\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\" + adjustIndexForTheme);\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n bkg.attr(\"class\", \"branchLabelBkg label\" + adjustIndexForTheme).attr(\"rx\", 4).attr(\"ry\", 4).attr(\"x\", -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)).attr(\"y\", -bbox.height / 2 + 8).attr(\"width\", bbox.width + 18).attr(\"height\", bbox.height + 4);\n label.attr(\n \"transform\",\n \"translate(\" + (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)) + \", \" + (pos - bbox.height / 2 - 1) + \")\"\n );\n if (dir === \"TB\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", 0);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", 0)\");\n }\n if (dir !== \"TB\") {\n bkg.attr(\"transform\", \"translate(-19, \" + (pos - bbox.height / 2) + \")\");\n }\n });\n};\nconst draw = function(txt, id, ver, diagObj) {\n clear();\n const conf = getConfig();\n const gitGraphConfig = conf.gitGraph;\n log.debug(\"in gitgraph renderer\", txt + \"\\n\", \"id:\", id, ver);\n allCommitsDict = diagObj.db.getCommits();\n const branches2 = diagObj.db.getBranchesAsObjArray();\n dir = diagObj.db.getDirection();\n const diagram2 = select(`[id=\"${id}\"]`);\n let pos = 0;\n branches2.forEach((branch2, index) => {\n const labelElement = drawText(branch2.name);\n const g = diagram2.append(\"g\");\n const branchLabel = g.insert(\"g\").attr(\"class\", \"branchLabel\");\n const label = branchLabel.insert(\"g\").attr(\"class\", \"label branch-label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n branchPos[branch2.name] = { pos, index };\n pos += 50 + (gitGraphConfig.rotateCommitLabel ? 40 : 0) + (dir === \"TB\" ? bbox.width / 2 : 0);\n label.remove();\n branchLabel.remove();\n g.remove();\n });\n drawCommits(diagram2, allCommitsDict, false);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram2, branches2);\n }\n drawArrows(diagram2, allCommitsDict);\n drawCommits(diagram2, allCommitsDict, true);\n utils.insertTitle(\n diagram2,\n \"gitTitleText\",\n gitGraphConfig.titleTopMargin,\n diagObj.db.getDiagramTitle()\n );\n setupGraphViewbox(\n void 0,\n diagram2,\n gitGraphConfig.diagramPadding,\n gitGraphConfig.useMaxWidth ?? conf.useMaxWidth\n );\n};\nconst gitGraphRenderer = {\n draw\n};\nconst getStyles = (options2) => `\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0, 1, 2, 3, 4, 5, 6, 7].map(\n (i) => `\n .branch-label${i} { fill: ${options2[\"gitBranchLabel\" + i]}; }\n .commit${i} { stroke: ${options2[\"git\" + i]}; fill: ${options2[\"git\" + i]}; }\n .commit-highlight${i} { stroke: ${options2[\"gitInv\" + i]}; fill: ${options2[\"gitInv\" + i]}; }\n .label${i} { fill: ${options2[\"git\" + i]}; }\n .arrow${i} { stroke: ${options2[\"git\" + i]}; }\n `\n).join(\"\\n\")}\n\n .branch {\n stroke-width: 1;\n stroke: ${options2.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${options2.commitLabelFontSize}; fill: ${options2.commitLabelColor};}\n .commit-label-bkg { font-size: ${options2.commitLabelFontSize}; fill: ${options2.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${options2.tagLabelFontSize}; fill: ${options2.tagLabelColor};}\n .tag-label-bkg { fill: ${options2.tagLabelBackground}; stroke: ${options2.tagLabelBorder}; }\n .tag-hole { fill: ${options2.textColor}; }\n\n .commit-merge {\n stroke: ${options2.primaryColor};\n fill: ${options2.primaryColor};\n }\n .commit-reverse {\n stroke: ${options2.primaryColor};\n fill: ${options2.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${options2.primaryColor};\n fill: ${options2.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options2.textColor};\n }\n`;\nconst gitGraphStyles = getStyles;\nconst diagram = {\n parser: gitGraphParser,\n db: gitGraphDb,\n renderer: gitGraphRenderer,\n styles: gitGraphStyles\n};\nexport {\n diagram\n};\n","import { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlibJson from \"dagre-d3-es/src/graphlib/json.js\";\nimport { c as createLabel, i as intersectRect, a as insertMarkers, b as clear$2, d as clear$3, u as updateNodeBounds, s as setNodeElem, e as insertNode, f as insertEdgeLabel, p as positionNode, g as insertEdge, h as positionEdgeLabel } from \"./edges-80f1ebb6.js\";\nimport { l as log, m as evaluate, c as getConfig } from \"./mermaid-934d9bea.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { a as createText } from \"./createText-aebacdfe.js\";\nimport { select } from \"d3\";\nlet clusterDb = {};\nlet descendants = {};\nlet parents = {};\nconst clear$1 = () => {\n descendants = {};\n parents = {};\n clusterDb = {};\n};\nconst isDescendant = (id, ancenstorId) => {\n log.trace(\"In isDecendant\", ancenstorId, \" \", id, \" = \", descendants[ancenstorId].includes(id));\n if (descendants[ancenstorId].includes(id)) {\n return true;\n }\n return false;\n};\nconst edgeInCluster = (edge, clusterId) => {\n log.info(\"Decendants of \", clusterId, \" is \", descendants[clusterId]);\n log.info(\"Edge is \", edge);\n if (edge.v === clusterId) {\n return false;\n }\n if (edge.w === clusterId) {\n return false;\n }\n if (!descendants[clusterId]) {\n log.debug(\"Tilt, \", clusterId, \",not in decendants\");\n return false;\n }\n return descendants[clusterId].includes(edge.v) || isDescendant(edge.v, clusterId) || isDescendant(edge.w, clusterId) || descendants[clusterId].includes(edge.w);\n};\nconst copy = (clusterId, graph, newGraph, rootId) => {\n log.warn(\n \"Copying children of \",\n clusterId,\n \"root\",\n rootId,\n \"data\",\n graph.node(clusterId),\n rootId\n );\n const nodes = graph.children(clusterId) || [];\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n log.warn(\"Copying (nodes) clusterId\", clusterId, \"nodes\", nodes);\n nodes.forEach((node) => {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n const data = graph.node(node);\n log.info(\"cp \", node, \" to \", rootId, \" with parent \", clusterId);\n newGraph.setNode(node, data);\n if (rootId !== graph.parent(node)) {\n log.warn(\"Setting parent\", node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n if (clusterId !== rootId && node !== clusterId) {\n log.debug(\"Setting parent\", node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n log.info(\"In copy \", clusterId, \"root\", rootId, \"data\", graph.node(clusterId), rootId);\n log.debug(\n \"Not Setting parent for node=\",\n node,\n \"cluster!==rootId\",\n clusterId !== rootId,\n \"node!==clusterId\",\n node !== clusterId\n );\n }\n const edges = graph.edges(node);\n log.debug(\"Copying Edges\", edges);\n edges.forEach((edge) => {\n log.info(\"Edge\", edge);\n const data2 = graph.edge(edge.v, edge.w, edge.name);\n log.info(\"Edge data\", data2, rootId);\n try {\n if (edgeInCluster(edge, rootId)) {\n log.info(\"Copying as \", edge.v, edge.w, data2, edge.name);\n newGraph.setEdge(edge.v, edge.w, data2, edge.name);\n log.info(\"newGraph edges \", newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n log.info(\n \"Skipping copy of edge \",\n edge.v,\n \"-->\",\n edge.w,\n \" rootId: \",\n rootId,\n \" clusterId:\",\n clusterId\n );\n }\n } catch (e) {\n log.error(e);\n }\n });\n }\n log.debug(\"Removing node\", node);\n graph.removeNode(node);\n });\n};\nconst extractDescendants = (id, graph) => {\n const children = graph.children(id);\n let res = [...children];\n for (const child of children) {\n parents[child] = id;\n res = [...res, ...extractDescendants(child, graph)];\n }\n return res;\n};\nconst findNonClusterChild = (id, graph) => {\n log.trace(\"Searching\", id);\n const children = graph.children(id);\n log.trace(\"Searching children of id \", id, children);\n if (children.length < 1) {\n log.trace(\"This is a valid node\", id);\n return id;\n }\n for (const child of children) {\n const _id = findNonClusterChild(child, graph);\n if (_id) {\n log.trace(\"Found replacement for\", id, \" => \", _id);\n return _id;\n }\n }\n};\nconst getAnchorId = (id) => {\n if (!clusterDb[id]) {\n return id;\n }\n if (!clusterDb[id].externalConnections) {\n return id;\n }\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n return id;\n};\nconst adjustClustersAndEdges = (graph, depth) => {\n if (!graph || depth > 10) {\n log.debug(\"Opting out, no graph \");\n return;\n } else {\n log.debug(\"Opting in, graph \");\n }\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n if (children.length > 0) {\n log.warn(\n \"Cluster identified\",\n id,\n \" Replacement id in edges: \",\n findNonClusterChild(id, graph)\n );\n descendants[id] = extractDescendants(id, graph);\n clusterDb[id] = { id: findNonClusterChild(id, graph), clusterData: graph.node(id) };\n }\n });\n graph.nodes().forEach(function(id) {\n const children = graph.children(id);\n const edges = graph.edges();\n if (children.length > 0) {\n log.debug(\"Cluster identified\", id, descendants);\n edges.forEach((edge) => {\n if (edge.v !== id && edge.w !== id) {\n const d1 = isDescendant(edge.v, id);\n const d2 = isDescendant(edge.w, id);\n if (d1 ^ d2) {\n log.warn(\"Edge: \", edge, \" leaves cluster \", id);\n log.warn(\"Decendants of XXX \", id, \": \", descendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n log.debug(\"Not a cluster \", id, descendants);\n }\n });\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n log.warn(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n let v = e.v;\n let w = e.w;\n log.warn(\n \"Fix XXX\",\n clusterDb,\n \"ids:\",\n e.v,\n e.w,\n \"Translating: \",\n clusterDb[e.v],\n \" --- \",\n clusterDb[e.w]\n );\n if (clusterDb[e.v] && clusterDb[e.w] && clusterDb[e.v] === clusterDb[e.w]) {\n log.warn(\"Fixing and trixing link to self - removing XXX\", e.v, e.w, e.name);\n log.warn(\"Fixing and trixing - removing XXX\", e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n const specialId = e.w + \"---\" + e.v;\n graph.setNode(specialId, {\n domId: specialId,\n id: specialId,\n labelStyle: \"\",\n labelText: edge.label,\n padding: 0,\n shape: \"labelRect\",\n style: \"\"\n });\n const edge1 = structuredClone(edge);\n const edge2 = structuredClone(edge);\n edge1.label = \"\";\n edge1.arrowTypeEnd = \"none\";\n edge2.label = \"\";\n edge1.fromCluster = e.v;\n edge2.toCluster = e.v;\n graph.setEdge(v, specialId, edge1, e.name + \"-cyclic-special\");\n graph.setEdge(specialId, w, edge2, e.name + \"-cyclic-special\");\n } else if (clusterDb[e.v] || clusterDb[e.w]) {\n log.warn(\"Fixing and trixing - removing XXX\", e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) {\n edge.fromCluster = e.v;\n }\n if (w !== e.w) {\n edge.toCluster = e.w;\n }\n log.warn(\"Fix Replacing with XXX\", v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n log.warn(\"Adjusted Graph\", graphlibJson.write(graph));\n extractor(graph, 0);\n log.trace(clusterDb);\n};\nconst extractor = (graph, depth) => {\n log.warn(\"extractor - \", depth, graphlibJson.write(graph), graph.children(\"D\"));\n if (depth > 10) {\n log.error(\"Bailing out\");\n return;\n }\n let nodes = graph.nodes();\n let hasChildren = false;\n for (const node of nodes) {\n const children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n if (!hasChildren) {\n log.debug(\"Done, no node has children\", graph.nodes());\n return;\n }\n log.debug(\"Nodes = \", nodes, depth);\n for (const node of nodes) {\n log.debug(\n \"Extracting node\",\n node,\n clusterDb,\n clusterDb[node] && !clusterDb[node].externalConnections,\n !graph.parent(node),\n graph.node(node),\n graph.children(\"D\"),\n \" Depth \",\n depth\n );\n if (!clusterDb[node]) {\n log.debug(\"Not a cluster\", node, depth);\n } else if (!clusterDb[node].externalConnections && // !graph.parent(node) &&\n graph.children(node) && graph.children(node).length > 0) {\n log.warn(\n \"Cluster without external connections, without a parent and with children\",\n node,\n depth\n );\n const graphSettings = graph.graph();\n let dir = graphSettings.rankdir === \"TB\" ? \"LR\" : \"TB\";\n if (clusterDb[node] && clusterDb[node].clusterData && clusterDb[node].clusterData.dir) {\n dir = clusterDb[node].clusterData.dir;\n log.warn(\"Fixing dir\", clusterDb[node].clusterData.dir, dir);\n }\n const clusterGraph = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n log.warn(\"Old graph before copy\", graphlibJson.write(graph));\n copy(node, graph, clusterGraph, node);\n graph.setNode(node, {\n clusterNode: true,\n id: node,\n clusterData: clusterDb[node].clusterData,\n labelText: clusterDb[node].labelText,\n graph: clusterGraph\n });\n log.warn(\"New graph after copy node: (\", node, \")\", graphlibJson.write(clusterGraph));\n log.debug(\"Old graph after copy\", graphlibJson.write(graph));\n } else {\n log.warn(\n \"Cluster ** \",\n node,\n \" **not meeting the criteria !externalConnections:\",\n !clusterDb[node].externalConnections,\n \" no parent: \",\n !graph.parent(node),\n \" children \",\n graph.children(node) && graph.children(node).length > 0,\n graph.children(\"D\"),\n depth\n );\n log.debug(clusterDb);\n }\n }\n nodes = graph.nodes();\n log.warn(\"New list of nodes\", nodes);\n for (const node of nodes) {\n const data = graph.node(node);\n log.warn(\" Now next level\", node, data);\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\nconst sorter = (graph, nodes) => {\n if (nodes.length === 0) {\n return [];\n }\n let result = Object.assign(nodes);\n nodes.forEach((node) => {\n const children = graph.children(node);\n const sorted = sorter(graph, children);\n result = [...result, ...sorted];\n });\n return result;\n};\nconst sortNodesByHierarchy = (graph) => sorter(graph, graph.children());\nconst rect = (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster\" + (node.class ? \" \" + node.class : \"\")).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const useHtmlLabels = evaluate(getConfig().flowchart.htmlLabels);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const text = node.labelType === \"markdown\" ? createText(label, node.labelText, { style: node.labelStyle, useHtmlLabels }) : label.node().appendChild(createLabel(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\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 const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = node.width <= bbox.width + padding ? bbox.width + padding : node.width;\n if (node.width <= bbox.width + padding) {\n node.diff = (bbox.width - node.width) / 2 - node.padding / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n log.trace(\"Data \", node, JSON.stringify(node));\n rect2.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - width / 2).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width).attr(\"height\", node.height + padding);\n if (useHtmlLabels) {\n label.attr(\n \"transform\",\n // This puts the labal on top of the box instead of inside it\n \"translate(\" + (node.x - bbox.width / 2) + \", \" + (node.y - node.height / 2) + \")\"\n );\n } else {\n label.attr(\n \"transform\",\n // This puts the labal on top of the box instead of inside it\n \"translate(\" + node.x + \", \" + (node.y - node.height / 2) + \")\"\n );\n }\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst noteGroup = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst roundedWithTitle = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n const innerRect = shapeSvg.append(\"rect\");\n const text = label.node().appendChild(createLabel(node.labelText, node.labelStyle, void 0, true));\n let bbox = text.getBBox();\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 bbox = text.getBBox();\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (bbox.width + node.padding * 0 - node.width) / 2;\n } else {\n node.diff = -node.padding / 2;\n }\n rect2.attr(\"class\", \"outer\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", width + padding).attr(\"height\", node.height + padding);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", node.x - width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding + bbox.height - 1).attr(\"width\", width + padding).attr(\"height\", node.height + padding - bbox.height - 3);\n label.attr(\n \"transform\",\n \"translate(\" + (node.x - bbox.width / 2) + \", \" + (node.y - node.height / 2 - node.padding / 3 + (evaluate(getConfig().flowchart.htmlLabels) ? 5 : 3)) + \")\"\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst divider = (parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.classes).attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"class\", \"divider\").attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding);\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.diff = -node.padding / 2;\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n return shapeSvg;\n};\nconst shapes = { rect, roundedWithTitle, noteGroup, divider };\nlet clusterElems = {};\nconst insertCluster = (elem, node) => {\n log.trace(\"Inserting cluster\");\n const shape = node.shape || \"rect\";\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nconst clear = () => {\n clusterElems = {};\n};\nconst recursiveRender = async (_elem, graph, diagramtype, id, parentCluster) => {\n log.info(\"Graph in recursive render: XXX\", graphlibJson.write(graph), parentCluster);\n const dir = graph.graph().rankdir;\n log.trace(\"Dir in recursive render - dir:\", dir);\n const elem = _elem.insert(\"g\").attr(\"class\", \"root\");\n if (!graph.nodes()) {\n log.info(\"No nodes found for\", graph);\n } else {\n log.info(\"Recursive render XXX\", graph.nodes());\n }\n if (graph.edges().length > 0) {\n log.trace(\"Recursive edges\", graph.edge(graph.edges()[0]));\n }\n const clusters = elem.insert(\"g\").attr(\"class\", \"clusters\");\n const edgePaths = elem.insert(\"g\").attr(\"class\", \"edgePaths\");\n const edgeLabels = elem.insert(\"g\").attr(\"class\", \"edgeLabels\");\n const nodes = elem.insert(\"g\").attr(\"class\", \"nodes\");\n await Promise.all(\n graph.nodes().map(async function(v) {\n const node = graph.node(v);\n if (parentCluster !== void 0) {\n const data = JSON.parse(JSON.stringify(parentCluster.clusterData));\n log.info(\"Setting data for cluster XXX (\", v, \") \", data, parentCluster);\n graph.setNode(parentCluster.id, data);\n if (!graph.parent(v)) {\n log.trace(\"Setting parent\", v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n log.info(\"(Insert) Node XXX\" + v + \": \" + JSON.stringify(graph.node(v)));\n if (node && node.clusterNode) {\n log.info(\"Cluster identified\", v, node.width, graph.node(v));\n const o = await recursiveRender(nodes, node.graph, diagramtype, id, graph.node(v));\n const newEl = o.elem;\n updateNodeBounds(node, newEl);\n node.diff = o.diff || 0;\n log.info(\"Node bounds (abc123)\", v, node, node.width, node.x, node.y);\n setNodeElem(newEl, node);\n log.warn(\"Recursive render complete \", newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n log.info(\"Cluster - the non recursive path XXX\", v, node.id, node, graph);\n log.info(findNonClusterChild(node.id, graph));\n clusterDb[node.id] = { id: findNonClusterChild(node.id, graph), node };\n } else {\n log.info(\"Node - the non recursive path\", v, node.id, node);\n await insertNode(nodes, graph.node(v), dir);\n }\n }\n })\n );\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e.v, e.w, e.name);\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \", e, \" \", JSON.stringify(graph.edge(e)));\n log.info(\"Fix\", clusterDb, \"ids:\", e.v, e.w, \"Translateing: \", clusterDb[e.v], clusterDb[e.w]);\n insertEdgeLabel(edgeLabels, edge);\n });\n graph.edges().forEach(function(e) {\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(e));\n });\n log.info(\"#############################################\");\n log.info(\"### Layout ###\");\n log.info(\"#############################################\");\n log.info(graph);\n layout(graph);\n log.info(\"Graph after layout:\", graphlibJson.write(graph));\n let diff = 0;\n sortNodesByHierarchy(graph).forEach(function(v) {\n const node = graph.node(v);\n log.info(\"Position \" + v + \": \" + JSON.stringify(graph.node(v)));\n log.info(\n \"Position \" + v + \": (\" + node.x,\n \",\" + node.y,\n \") width: \",\n node.width,\n \" height: \",\n node.height\n );\n if (node && node.clusterNode) {\n positionNode(node);\n } else {\n if (graph.children(v).length > 0) {\n insertCluster(clusters, node);\n clusterDb[node.id].node = node;\n } else {\n positionNode(node);\n }\n }\n });\n graph.edges().forEach(function(e) {\n const edge = graph.edge(e);\n log.info(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(edge), edge);\n const paths = insertEdge(edgePaths, e, edge, clusterDb, diagramtype, graph, id);\n positionEdgeLabel(edge, paths);\n });\n graph.nodes().forEach(function(v) {\n const n = graph.node(v);\n log.info(v, n.type, n.diff);\n if (n.type === \"group\") {\n diff = n.diff;\n }\n });\n return { elem, diff };\n};\nconst render = async (elem, graph, markers, diagramtype, id) => {\n insertMarkers(elem, markers, diagramtype, id);\n clear$2();\n clear$3();\n clear();\n clear$1();\n log.warn(\"Graph at first:\", JSON.stringify(graphlibJson.write(graph)));\n adjustClustersAndEdges(graph);\n log.warn(\"Graph after:\", JSON.stringify(graphlibJson.write(graph)));\n await recursiveRender(elem, graph, diagramtype, id);\n};\nexport {\n render as r\n};\n","import { l as log, z as selectSvgElement, i as configureSvgSize } from \"./mermaid-934d9bea.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"d3\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 9, 10];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"info\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"statement\": 8, \"NL\": 9, \"showInfo\": 10, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"info\", 6: \"EOF\", 9: \"NL\", 10: \"showInfo\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 1], [7, 1], [8, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n $$.length - 1;\n switch (yystate) {\n case 1:\n return yy;\n case 4:\n break;\n case 6:\n yy.setInfo(true);\n break;\n }\n },\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: 6, 9: [1, 7], 10: [1, 8] }, { 1: [2, 1] }, o($V0, [2, 3]), o($V0, [2, 4]), o($V0, [2, 5]), o($V0, [2, 6])],\n defaultActions: { 4: [2, 1] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 4;\n case 1:\n return 9;\n case 2:\n return \"space\";\n case 3:\n return 10;\n case 4:\n return 6;\n case 5:\n return \"TXT\";\n }\n },\n rules: [/^(?:info\\b)/i, /^(?:[\\s\\n\\r]+)/i, /^(?:[\\s]+)/i, /^(?:showInfo\\b)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst DEFAULT_INFO_DB = {\n info: false\n};\nlet info = DEFAULT_INFO_DB.info;\nconst setInfo = (toggle) => {\n info = toggle;\n};\nconst getInfo = () => info;\nconst clear = () => {\n info = DEFAULT_INFO_DB.info;\n};\nconst db = {\n clear,\n setInfo,\n getInfo\n};\nconst draw = (text, id, version) => {\n log.debug(\"rendering info diagram\\n\" + text);\n const svg = selectSvgElement(id);\n configureSvgSize(svg, 100, 400, true);\n const group = svg.append(\"g\");\n group.append(\"text\").attr(\"x\", 100).attr(\"y\", 40).attr(\"class\", \"version\").attr(\"font-size\", 32).style(\"text-anchor\", \"middle\").text(`v${version}`);\n};\nconst renderer = { draw };\nconst diagram = {\n parser: parser$1,\n db,\n renderer\n};\nexport {\n diagram\n};\n","import { c as getConfig, q as setDiagramTitle, r as getDiagramTitle, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, t as clear$1, i as configureSvgSize } from \"./mermaid-934d9bea.js\";\nimport { arc, select } from \"d3\";\nimport { d as drawRect$1, f as drawText$1, a as drawBackgroundRect$1, g as getNoteRect } from \"./svgDrawCommon-ad5ef572.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 18], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 14];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"journey\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NEWLINE\": 10, \"title\": 11, \"acc_title\": 12, \"acc_title_value\": 13, \"acc_descr\": 14, \"acc_descr_value\": 15, \"acc_descr_multiline_value\": 16, \"section\": 17, \"taskName\": 18, \"taskData\": 19, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"journey\", 6: \"EOF\", 8: \"SPACE\", 10: \"NEWLINE\", 11: \"title\", 12: \"acc_title\", 13: \"acc_title_value\", 14: \"acc_descr\", 15: \"acc_descr_value\", 16: \"acc_descr_multiline_value\", 17: \"section\", 18: \"taskName\", 19: \"taskData\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 9:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 10:\n case 11:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 12:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 13:\n yy.addTask($$[$0 - 1], $$[$0]);\n this.$ = \"task\";\n break;\n }\n },\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: $V6 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 15, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: $V6 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 8]), { 13: [1, 16] }, { 15: [1, 17] }, o($V0, [2, 11]), o($V0, [2, 12]), { 19: [1, 18] }, o($V0, [2, 4]), o($V0, [2, 9]), o($V0, [2, 10]), o($V0, [2, 13])],\n defaultActions: {},\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 10;\n case 3:\n break;\n case 4:\n break;\n case 5:\n return 4;\n case 6:\n return 11;\n case 7:\n this.begin(\"acc_title\");\n return 12;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.begin(\"acc_descr\");\n return 14;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.begin(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n return 17;\n case 15:\n return 18;\n case 16:\n return 19;\n case 17:\n return \":\";\n case 18:\n return 6;\n case 19:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:journey\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:section\\s[^#:\\n;]+)/i, /^(?:[^#:\\n;]+)/i, /^(?::[^#\\n;]+)/i, /^(?::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet currentSection = \"\";\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\nconst clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = \"\";\n rawTasks.length = 0;\n clear$1();\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n tasks.push(...rawTasks);\n return tasks;\n};\nconst updateActors = function() {\n const tempActors = [];\n tasks.forEach((task) => {\n if (task.people) {\n tempActors.push(...task.people);\n }\n });\n const unique = new Set(tempActors);\n return [...unique].sort();\n};\nconst addTask = function(descr, taskData) {\n const pieces = taskData.substr(1).split(\":\");\n let score = 0;\n let peeps = [];\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(\",\");\n }\n const peopleList = peeps.map((s) => s.trim());\n const rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score\n };\n rawTasks.push(rawTask);\n};\nconst addTaskOrg = function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst getActors = function() {\n return updateActors();\n};\nconst db = {\n getConfig: () => getConfig().journey,\n clear,\n setDiagramTitle,\n getDiagramTitle,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n getActors\n};\nconst getStyles = (options) => `.label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ${options.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${options.textColor}\n }\n\n .legend {\n fill: ${options.textColor};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${options.textColor}\n }\n\n .face {\n ${options.faceColor ? `fill: ${options.faceColor}` : \"fill: #FFF8DC\"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${options.fillType0 ? `fill: ${options.fillType0}` : \"\"};\n }\n .task-type-1, .section-type-1 {\n ${options.fillType0 ? `fill: ${options.fillType1}` : \"\"};\n }\n .task-type-2, .section-type-2 {\n ${options.fillType0 ? `fill: ${options.fillType2}` : \"\"};\n }\n .task-type-3, .section-type-3 {\n ${options.fillType0 ? `fill: ${options.fillType3}` : \"\"};\n }\n .task-type-4, .section-type-4 {\n ${options.fillType0 ? `fill: ${options.fillType4}` : \"\"};\n }\n .task-type-5, .section-type-5 {\n ${options.fillType0 ? `fill: ${options.fillType5}` : \"\"};\n }\n .task-type-6, .section-type-6 {\n ${options.fillType0 ? `fill: ${options.fillType6}` : \"\"};\n }\n .task-type-7, .section-type-7 {\n ${options.fillType0 ? `fill: ${options.fillType7}` : \"\"};\n }\n\n .actor-0 {\n ${options.actor0 ? `fill: ${options.actor0}` : \"\"};\n }\n .actor-1 {\n ${options.actor1 ? `fill: ${options.actor1}` : \"\"};\n }\n .actor-2 {\n ${options.actor2 ? `fill: ${options.actor2}` : \"\"};\n }\n .actor-3 {\n ${options.actor3 ? `fill: ${options.actor3}` : \"\"};\n }\n .actor-4 {\n ${options.actor4 ? `fill: ${options.actor4}` : \"\"};\n }\n .actor-5 {\n ${options.actor5 ? `fill: ${options.actor5}` : \"\"};\n }\n`;\nconst styles = getStyles;\nconst drawRect = function(elem, rectData) {\n return drawRect$1(elem, rectData);\n};\nconst drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element.append(\"circle\").attr(\"cx\", faceData.cx).attr(\"cy\", faceData.cy).attr(\"class\", \"face\").attr(\"r\", radius).attr(\"stroke-width\", 2).attr(\"overflow\", \"visible\");\n const face = element.append(\"g\");\n face.append(\"circle\").attr(\"cx\", faceData.cx - radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n face.append(\"circle\").attr(\"cx\", faceData.cx + radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n function smile(face2) {\n const arc$1 = arc().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 2) + \")\");\n }\n function sad(face2) {\n const arc$1 = arc().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 7) + \")\");\n }\n function ambivalent(face2) {\n face2.append(\"line\").attr(\"class\", \"mouth\").attr(\"stroke\", 2).attr(\"x1\", faceData.cx - 5).attr(\"y1\", faceData.cy + 7).attr(\"x2\", faceData.cx + 5).attr(\"y2\", faceData.cy + 7).attr(\"class\", \"mouth\").attr(\"stroke-width\", \"1px\").attr(\"stroke\", \"#666\");\n }\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n return circleElement;\n};\nconst drawCircle = function(element, circleData) {\n const circleElement = element.append(\"circle\");\n circleElement.attr(\"cx\", circleData.cx);\n circleElement.attr(\"cy\", circleData.cy);\n circleElement.attr(\"class\", \"actor-\" + circleData.pos);\n circleElement.attr(\"fill\", circleData.fill);\n circleElement.attr(\"stroke\", circleData.stroke);\n circleElement.attr(\"r\", circleData.r);\n if (circleElement.class !== void 0) {\n circleElement.attr(\"class\", circleElement.class);\n }\n if (circleData.title !== void 0) {\n circleElement.append(\"title\").text(circleData.title);\n }\n return circleElement;\n};\nconst drawText = function(elem, textData) {\n return drawText$1(elem, textData);\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\n }\n const polygon = elem.append(\"polygon\");\n polygon.attr(\"points\", genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr(\"class\", \"labelBox\");\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\nconst drawSection = function(elem, section, conf2) {\n const g = elem.append(\"g\");\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf2.width * section.taskCount + // width of the tasks\n conf2.diagramMarginX * (section.taskCount - 1);\n rect.height = conf2.height;\n rect.class = \"journey-section section-type-\" + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n _drawTextCandidateFunc(conf2)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"journey-section section-type-\" + section.num },\n conf2,\n section.colour\n );\n};\nlet taskCount = -1;\nconst drawTask = function(elem, task, conf2) {\n const center = task.x + conf2.width / 2;\n const g = elem.append(\"g\");\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append(\"line\").attr(\"id\", \"task\" + taskCount).attr(\"x1\", center).attr(\"y1\", task.y).attr(\"x2\", center).attr(\"y2\", maxHeight).attr(\"class\", \"task-line\").attr(\"stroke-width\", \"1px\").attr(\"stroke-dasharray\", \"4 2\").attr(\"stroke\", \"#666\");\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf2.width;\n rect.height = conf2.height;\n rect.class = \"task task-type-\" + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n let xPos = task.x + 14;\n task.people.forEach((person) => {\n const colour = task.actors[person].color;\n const circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: \"#000\",\n title: person,\n pos: task.actors[person].position\n };\n drawCircle(g, circle);\n xPos += 10;\n });\n _drawTextCandidateFunc(conf2)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"task\" },\n conf2,\n task.colour\n );\n};\nconst drawBackgroundRect = function(elem, bounds2) {\n drawBackgroundRect$1(elem, bounds2);\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"font-color\", colour).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2, colour) {\n const { taskFontSize, taskFontFamily } = conf2;\n const lines = content.split(//gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).attr(\"fill\", colour).style(\"text-anchor\", \"middle\").style(\"font-size\", taskFontSize).style(\"font-family\", taskFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const body = g.append(\"switch\");\n const f = body.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"position\", \"fixed\");\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").attr(\"class\", \"label\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst initGraphics = function(graphics) {\n graphics.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 5).attr(\"refY\", 2).attr(\"markerWidth\", 6).attr(\"markerHeight\", 4).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0,0 V 4 L6,2 Z\");\n};\nconst svgDraw = {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n initGraphics\n};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n keys.forEach(function(key) {\n conf[key] = cnf[key];\n });\n};\nconst actors = {};\nfunction drawActorLegend(diagram2) {\n const conf2 = getConfig().journey;\n let yPos = 60;\n Object.keys(actors).forEach((person) => {\n const colour = actors[person].color;\n const circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: \"#000\",\n pos: actors[person].position\n };\n svgDraw.drawCircle(diagram2, circleData);\n const labelData = {\n x: 40,\n y: yPos + 7,\n fill: \"#666\",\n text: person,\n textMargin: conf2.boxTextMargin | 5\n };\n svgDraw.drawText(diagram2, labelData);\n yPos += 20;\n });\n}\nconst conf = getConfig().journey;\nconst LEFT_MARGIN = conf.leftMargin;\nconst draw = function(text, id, version, diagObj) {\n const conf2 = getConfig().journey;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n bounds.init();\n const diagram2 = root.select(\"#\" + id);\n svgDraw.initGraphics(diagram2);\n const tasks2 = diagObj.db.getTasks();\n const title = diagObj.db.getDiagramTitle();\n const actorNames = diagObj.db.getActors();\n for (const member in actors) {\n delete actors[member];\n }\n let actorPos = 0;\n actorNames.forEach((actorName) => {\n actors[actorName] = {\n color: conf2.actorColours[actorPos % conf2.actorColours.length],\n position: actorPos\n };\n actorPos++;\n });\n drawActorLegend(diagram2);\n bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);\n drawTasks(diagram2, tasks2, 0);\n const box = bounds.getBounds();\n if (title) {\n diagram2.append(\"text\").text(title).attr(\"x\", LEFT_MARGIN).attr(\"font-size\", \"4ex\").attr(\"font-weight\", \"bold\").attr(\"y\", 25);\n }\n const height = box.stopy - box.starty + 2 * conf2.diagramMarginY;\n const width = LEFT_MARGIN + box.stopx + 2 * conf2.diagramMarginX;\n configureSvgSize(diagram2, height, width, conf2.useMaxWidth);\n diagram2.append(\"line\").attr(\"x1\", LEFT_MARGIN).attr(\"y1\", conf2.height * 4).attr(\"x2\", width - LEFT_MARGIN - 4).attr(\"y2\", conf2.height * 4).attr(\"stroke-width\", 4).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\");\n const extraVertForTitle = title ? 70 : 0;\n diagram2.attr(\"viewBox\", `${box.startx} -25 ${width} ${height + extraVertForTitle}`);\n diagram2.attr(\"preserveAspectRatio\", \"xMinYMin meet\");\n diagram2.attr(\"height\", height + extraVertForTitle + 25);\n};\nconst bounds = {\n data: {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n },\n verticalPos: 0,\n sequenceItems: [],\n init: function() {\n this.sequenceItems = [];\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n };\n this.verticalPos = 0;\n },\n updateVal: function(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const conf2 = getConfig().journey;\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n const n = _self.sequenceItems.length - cnt + 1;\n _self.updateVal(item, \"starty\", starty - n * conf2.boxMargin, Math.min);\n _self.updateVal(item, \"stopy\", stopy + n * conf2.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"startx\", startx - n * conf2.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopx\", stopx + n * conf2.boxMargin, Math.max);\n if (!(type === \"activation\")) {\n _self.updateVal(item, \"startx\", startx - n * conf2.boxMargin, Math.min);\n _self.updateVal(item, \"stopx\", stopx + n * conf2.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"starty\", starty - n * conf2.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopy\", stopy + n * conf2.boxMargin, Math.max);\n }\n };\n }\n this.sequenceItems.forEach(updateFn());\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = Math.min(startx, stopx);\n const _stopx = Math.max(startx, stopx);\n const _starty = Math.min(starty, stopy);\n const _stopy = Math.max(starty, stopy);\n this.updateVal(bounds.data, \"startx\", _startx, Math.min);\n this.updateVal(bounds.data, \"starty\", _starty, Math.min);\n this.updateVal(bounds.data, \"stopx\", _stopx, Math.max);\n this.updateVal(bounds.data, \"stopy\", _stopy, Math.max);\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return this.data;\n }\n};\nconst fills = conf.sectionFills;\nconst textColours = conf.sectionColours;\nconst drawTasks = function(diagram2, tasks2, verticalPos) {\n const conf2 = getConfig().journey;\n let lastSection = \"\";\n const sectionVHeight = conf2.height * 2 + conf2.diagramMarginY;\n const taskPos = verticalPos + sectionVHeight;\n let sectionNumber = 0;\n let fill = \"#CCC\";\n let colour = \"black\";\n let num = 0;\n for (const [i, task] of tasks2.entries()) {\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n let taskInSectionCount = 0;\n const currentSection2 = task.section;\n for (let taskIndex = i; taskIndex < tasks2.length; taskIndex++) {\n if (tasks2[taskIndex].section == currentSection2) {\n taskInSectionCount = taskInSectionCount + 1;\n } else {\n break;\n }\n }\n const section = {\n x: i * conf2.taskMargin + i * conf2.width + LEFT_MARGIN,\n y: 50,\n text: task.section,\n fill,\n num,\n colour,\n taskCount: taskInSectionCount\n };\n svgDraw.drawSection(diagram2, section, conf2);\n lastSection = task.section;\n sectionNumber++;\n }\n const taskActors = task.people.reduce((acc, actorName) => {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n return acc;\n }, {});\n task.x = i * conf2.taskMargin + i * conf2.width + LEFT_MARGIN;\n task.y = taskPos;\n task.width = conf2.diagramMarginX;\n task.height = conf2.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors;\n svgDraw.drawTask(diagram2, task, conf2);\n bounds.insert(task.x, task.y, task.x + task.width + conf2.taskMargin, 300 + 5 * 30);\n }\n};\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles,\n init: (cnf) => {\n renderer.setConf(cnf.journey);\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import { dedent } from \"ts-dedent\";\nimport dayjs from \"dayjs\";\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport { select, curveBasis, curveBasisClosed, curveBasisOpen, curveBumpX, curveBumpY, curveBundle, curveCardinalClosed, curveCardinalOpen, curveCardinal, curveCatmullRomClosed, curveCatmullRomOpen, curveCatmullRom, curveLinear, curveLinearClosed, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore } from \"d3\";\nimport DOMPurify from \"dompurify\";\nimport { adjust, invert, darken, lighten, isDark, rgba } from \"khroma\";\nimport memoize from \"lodash-es/memoize.js\";\nimport merge$1 from \"lodash-es/merge.js\";\nimport { serialize, compile, stringify } from \"stylis\";\nimport isEmpty from \"lodash-es/isEmpty.js\";\nconst LEVELS = {\n trace: 0,\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n};\nconst log$1 = {\n trace: (..._args) => {\n },\n debug: (..._args) => {\n },\n info: (..._args) => {\n },\n warn: (..._args) => {\n },\n error: (..._args) => {\n },\n fatal: (..._args) => {\n }\n};\nconst setLogLevel$1 = function(level = \"fatal\") {\n let numericLevel = LEVELS.fatal;\n if (typeof level === \"string\") {\n level = level.toLowerCase();\n if (level in LEVELS) {\n numericLevel = LEVELS[level];\n }\n } else if (typeof level === \"number\") {\n numericLevel = level;\n }\n log$1.trace = () => {\n };\n log$1.debug = () => {\n };\n log$1.info = () => {\n };\n log$1.warn = () => {\n };\n log$1.error = () => {\n };\n log$1.fatal = () => {\n };\n if (numericLevel <= LEVELS.fatal) {\n log$1.fatal = console.error ? console.error.bind(console, format(\"FATAL\"), \"color: orange\") : console.log.bind(console, \"\\x1B[35m\", format(\"FATAL\"));\n }\n if (numericLevel <= LEVELS.error) {\n log$1.error = console.error ? console.error.bind(console, format(\"ERROR\"), \"color: orange\") : console.log.bind(console, \"\\x1B[31m\", format(\"ERROR\"));\n }\n if (numericLevel <= LEVELS.warn) {\n log$1.warn = console.warn ? console.warn.bind(console, format(\"WARN\"), \"color: orange\") : console.log.bind(console, `\\x1B[33m`, format(\"WARN\"));\n }\n if (numericLevel <= LEVELS.info) {\n log$1.info = console.info ? console.info.bind(console, format(\"INFO\"), \"color: lightblue\") : console.log.bind(console, \"\\x1B[34m\", format(\"INFO\"));\n }\n if (numericLevel <= LEVELS.debug) {\n log$1.debug = console.debug ? console.debug.bind(console, format(\"DEBUG\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"DEBUG\"));\n }\n if (numericLevel <= LEVELS.trace) {\n log$1.trace = console.debug ? console.debug.bind(console, format(\"TRACE\"), \"color: lightgreen\") : console.log.bind(console, \"\\x1B[32m\", format(\"TRACE\"));\n }\n};\nconst format = (level) => {\n const time = dayjs().format(\"ss.SSS\");\n return `%c${time} : ${level} : `;\n};\nconst lineBreakRegex = //gi;\nconst getRows = (s) => {\n if (!s) {\n return [\"\"];\n }\n const str2 = breakToPlaceholder(s).replace(/\\\\n/g, \"#br#\");\n return str2.split(\"#br#\");\n};\nconst removeScript = (txt) => {\n return DOMPurify.sanitize(txt);\n};\nconst sanitizeMore = (text, config2) => {\n var _a;\n if (((_a = config2.flowchart) == null ? void 0 : _a.htmlLabels) !== false) {\n const level = config2.securityLevel;\n if (level === \"antiscript\" || level === \"strict\") {\n text = removeScript(text);\n } else if (level !== \"loose\") {\n text = breakToPlaceholder(text);\n text = text.replace(//g, \">\");\n text = text.replace(/=/g, \"=\");\n text = placeholderToBreak(text);\n }\n }\n return text;\n};\nconst sanitizeText$2 = (text, config2) => {\n if (!text) {\n return text;\n }\n if (config2.dompurifyConfig) {\n text = DOMPurify.sanitize(sanitizeMore(text, config2), config2.dompurifyConfig).toString();\n } else {\n text = DOMPurify.sanitize(sanitizeMore(text, config2), {\n FORBID_TAGS: [\"style\"]\n }).toString();\n }\n return text;\n};\nconst sanitizeTextOrArray = (a, config2) => {\n if (typeof a === \"string\") {\n return sanitizeText$2(a, config2);\n }\n return a.flat().map((x) => sanitizeText$2(x, config2));\n};\nconst hasBreaks = (text) => {\n return lineBreakRegex.test(text);\n};\nconst splitBreaks = (text) => {\n return text.split(lineBreakRegex);\n};\nconst placeholderToBreak = (s) => {\n return s.replace(/#br#/g, \"
\");\n};\nconst breakToPlaceholder = (s) => {\n return s.replace(lineBreakRegex, \"#br#\");\n};\nconst getUrl = (useAbsolute) => {\n let url = \"\";\n if (useAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replaceAll(/\\(/g, \"\\\\(\");\n url = url.replaceAll(/\\)/g, \"\\\\)\");\n }\n return url;\n};\nconst evaluate = (val) => val === false || [\"false\", \"null\", \"0\"].includes(String(val).trim().toLowerCase()) ? false : true;\nconst getMax = function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.max(...newValues);\n};\nconst getMin = function(...values) {\n const newValues = values.filter((value) => {\n return !isNaN(value);\n });\n return Math.min(...newValues);\n};\nconst parseGenericTypes = function(input) {\n const inputSets = input.split(/(,)/);\n const output = [];\n for (let i = 0; i < inputSets.length; i++) {\n let thisSet = inputSets[i];\n if (thisSet === \",\" && i > 0 && i + 1 < inputSets.length) {\n const previousSet = inputSets[i - 1];\n const nextSet = inputSets[i + 1];\n if (shouldCombineSets(previousSet, nextSet)) {\n thisSet = previousSet + \",\" + nextSet;\n i++;\n output.pop();\n }\n }\n output.push(processSet(thisSet));\n }\n return output.join(\"\");\n};\nconst countOccurrence = (string, substring) => {\n return Math.max(0, string.split(substring).length - 1);\n};\nconst shouldCombineSets = (previousSet, nextSet) => {\n const prevCount = countOccurrence(previousSet, \"~\");\n const nextCount = countOccurrence(nextSet, \"~\");\n return prevCount === 1 && nextCount === 1;\n};\nconst processSet = (input) => {\n const tildeCount = countOccurrence(input, \"~\");\n let hasStartingTilde = false;\n if (tildeCount <= 1) {\n return input;\n }\n if (tildeCount % 2 !== 0 && input.startsWith(\"~\")) {\n input = input.substring(1);\n hasStartingTilde = true;\n }\n const chars = [...input];\n let first = chars.indexOf(\"~\");\n let last = chars.lastIndexOf(\"~\");\n while (first !== -1 && last !== -1 && first !== last) {\n chars[first] = \"<\";\n chars[last] = \">\";\n first = chars.indexOf(\"~\");\n last = chars.lastIndexOf(\"~\");\n }\n if (hasStartingTilde) {\n chars.unshift(\"~\");\n }\n return chars.join(\"\");\n};\nconst common$1 = {\n getRows,\n sanitizeText: sanitizeText$2,\n sanitizeTextOrArray,\n hasBreaks,\n splitBreaks,\n lineBreakRegex,\n removeScript,\n getUrl,\n evaluate,\n getMax,\n getMin\n};\nconst mkBorder = (col, darkMode) => darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });\nconst oldAttributeBackgroundColorOdd = \"#ffffff\";\nconst oldAttributeBackgroundColorEven = \"#f2f2f2\";\nlet Theme$4 = class Theme {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#fff4dd\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? \"#eee\" : \"#333\");\n this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 });\n this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 });\n this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode);\n this.noteBkgColor = this.noteBkgColor || \"#fff5ad\";\n this.noteTextColor = this.noteTextColor || \"#333\";\n this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor);\n this.lineColor = this.lineColor || invert(this.background);\n this.arrowheadColor = this.arrowheadColor || invert(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n this.border2 = this.border2 || this.tertiaryBorderColor;\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || \"grey\";\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor);\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || \"white\";\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.excludeBkgColor = this.excludeBkgColor || \"#eeeeee\";\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23);\n this.gridColor = this.gridColor || \"lightgrey\";\n this.doneTaskBkgColor = this.doneTaskBkgColor || \"lightgrey\";\n this.doneTaskBorderColor = this.doneTaskBorderColor || \"grey\";\n this.critBorderColor = this.critBorderColor || \"#ff8888\";\n this.critBkgColor = this.critBkgColor || \"red\";\n this.todayLineColor = this.todayLineColor || \"red\";\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || \"#003163\";\n this.personBorder = this.personBorder || this.primaryBorderColor;\n this.personBkg = this.personBkg || this.mainBkg;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.specialStateColor = this.lineColor;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210, l: 150 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n if (this.darkMode) {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 75);\n }\n } else {\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 25);\n }\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n const multiplier = this.darkMode ? -4 : -1;\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (5 + i * 3) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 180, s: -15, l: multiplier * (8 + i * 3) });\n }\n this.classText = this.classText || this.textColor;\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 });\n this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 });\n this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 });\n this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: 60, l: -20 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#FFF4DD,#FFD8B1,#FFA07A,#ECEFF1,#D6DBDF,#C3E0A8,#FFB6A4,#FFD74D,#738FA7,#FFFFF0\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor = this.branchLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor;\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor;\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$4 = (userOverrides) => {\n const theme2 = new Theme$4();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$3 = class Theme2 {\n constructor() {\n this.background = \"#333\";\n this.primaryColor = \"#1f2020\";\n this.secondaryColor = lighten(this.primaryColor, 16);\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = invert(this.background);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.mainBkg = \"#1f2020\";\n this.secondBkg = \"calculated\";\n this.mainContrastColor = \"lightgrey\";\n this.darkTextColor = lighten(invert(\"#323D47\"), 10);\n this.lineColor = \"calculated\";\n this.border1 = \"#81B1DB\";\n this.border2 = rgba(255, 255, 255, 0.25);\n this.arrowheadColor = \"calculated\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"#181818\";\n this.textColor = \"#ccc\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"#F9FFFE\";\n this.edgeLabelBackground = \"calculated\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"calculated\";\n this.actorLineColor = \"calculated\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"calculated\";\n this.activationBkgColor = \"calculated\";\n this.sequenceNumberColor = \"black\";\n this.sectionBkgColor = darken(\"#EAE8D9\", 30);\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"#EAE8D9\";\n this.excludeBkgColor = darken(this.sectionBkgColor, 10);\n this.taskBorderColor = rgba(255, 255, 255, 70);\n this.taskBkgColor = \"calculated\";\n this.taskTextColor = \"calculated\";\n this.taskTextLightColor = \"calculated\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = rgba(255, 255, 255, 50);\n this.activeTaskBkgColor = \"#81B1DB\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#E83737\";\n this.critBkgColor = \"#E83737\";\n this.taskTextDarkColor = \"calculated\";\n this.todayLineColor = \"#DB5757\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"calculated\";\n this.errorBkgColor = \"#a44141\";\n this.errorTextColor = \"#ddd\";\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.secondBkg = lighten(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = lighten(this.labelBackground, 25);\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = lighten(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#555\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#f4f4f4\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n this.cScale1 = this.cScale1 || \"#0b0000\";\n this.cScale2 = this.cScale2 || \"#4d1037\";\n this.cScale3 = this.cScale3 || \"#3f5258\";\n this.cScale4 = this.cScale4 || \"#4f2f1b\";\n this.cScale5 = this.cScale5 || \"#6e0a0a\";\n this.cScale6 = this.cScale6 || \"#3b0048\";\n this.cScale7 = this.cScale7 || \"#995a01\";\n this.cScale8 = this.cScale8 || \"#154706\";\n this.cScale9 = this.cScale9 || \"#161722\";\n this.cScale10 = this.cScale10 || \"#00296f\";\n this.cScale11 = this.cScale11 || \"#01629c\";\n this.cScale12 = this.cScale12 || \"#010029\";\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-10 + i * 4) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(-7 + i * 4) });\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#3498db,#2ecc71,#e74c3c,#f1c40f,#bdc3c7,#ffffff,#34495e,#9b59b6,#1abc9c,#e67e22\"\n };\n this.classText = this.primaryTextColor;\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor);\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = lighten(this.secondaryColor, 20);\n this.git1 = lighten(this.pie2 || this.secondaryColor, 20);\n this.git2 = lighten(this.pie3 || this.tertiaryColor, 20);\n this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20);\n this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20);\n this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10);\n this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: 60 }), 10);\n this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: 120 }), 20);\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || lighten(this.background, 12);\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || lighten(this.background, 2);\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$3 = (userOverrides) => {\n const theme2 = new Theme$3();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$2 = class Theme3 {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#ECECFF\";\n this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n this.secondaryColor = \"#ffffde\";\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.background = \"white\";\n this.mainBkg = \"#ECECFF\";\n this.secondBkg = \"#ffffde\";\n this.lineColor = \"#333333\";\n this.border1 = \"#9370DB\";\n this.border2 = \"#aaaa33\";\n this.arrowheadColor = \"#333333\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.labelBackground = \"#e8e8e8\";\n this.textColor = \"#333\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"calculated\";\n this.edgeLabelBackground = \"calculated\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"black\";\n this.actorLineColor = \"grey\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"calculated\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"calculated\";\n this.taskTextLightColor = \"calculated\";\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = \"calculated\";\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = \"calculated\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"calculated\";\n this.critBorderColor = \"calculated\";\n this.critBkgColor = \"calculated\";\n this.todayLineColor = \"calculated\";\n this.sectionBkgColor = rgba(102, 102, 255, 0.49);\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"#fff400\";\n this.taskBorderColor = \"#534fbc\";\n this.taskBkgColor = \"#8a90dd\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"black\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"#534fbc\";\n this.activeTaskBkgColor = \"#bfc7ff\";\n this.gridColor = \"lightgrey\";\n this.doneTaskBkgColor = \"lightgrey\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#ff8888\";\n this.critBkgColor = \"red\";\n this.todayLineColor = \"red\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n this.updateColors();\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust(this[\"cScale\" + i], { h: 180 });\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 30, l: -(7 + i * 5) });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n if (this.labelTextColor !== \"calculated\") {\n this.cScaleLabel0 = this.cScaleLabel0 || invert(this.labelTextColor);\n this.cScaleLabel3 = this.cScaleLabel3 || invert(this.labelTextColor);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.labelTextColor;\n }\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.nodeBorder;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 });\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: 60, l: -20 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: 60, l: -40 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#ECECFF,#8493A6,#FFC3A0,#DCDDE1,#B8E994,#D1A36F,#C3CDE6,#FFB6C1,#496078,#F8F3E3\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.labelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$2 = (userOverrides) => {\n const theme2 = new Theme$2();\n theme2.calculate(userOverrides);\n return theme2;\n};\nlet Theme$1 = class Theme4 {\n constructor() {\n this.background = \"#f4f4f4\";\n this.primaryColor = \"#cde498\";\n this.secondaryColor = \"#cdffb2\";\n this.background = \"white\";\n this.mainBkg = \"#cde498\";\n this.secondBkg = \"#cdffb2\";\n this.lineColor = \"green\";\n this.border1 = \"#13540c\";\n this.border2 = \"#6eaa49\";\n this.arrowheadColor = \"green\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.tertiaryColor = lighten(\"#cde498\", 10);\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.primaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"#333\";\n this.edgeLabelBackground = \"#e8e8e8\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"black\";\n this.actorLineColor = \"grey\";\n this.signalColor = \"#333\";\n this.signalTextColor = \"#333\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"#326932\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"#fff5ad\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"#6eaa49\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"#6eaa49\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"#487e3a\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"black\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"lightgrey\";\n this.doneTaskBkgColor = \"lightgrey\";\n this.doneTaskBorderColor = \"grey\";\n this.critBorderColor = \"#ff8888\";\n this.critBkgColor = \"red\";\n this.todayLineColor = \"red\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.actorBorder = darken(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n this.cScale0 = this.cScale0 || this.primaryColor;\n this.cScale1 = this.cScale1 || this.secondaryColor;\n this.cScale2 = this.cScale2 || this.tertiaryColor;\n this.cScale3 = this.cScale3 || adjust(this.primaryColor, { h: 30 });\n this.cScale4 = this.cScale4 || adjust(this.primaryColor, { h: 60 });\n this.cScale5 = this.cScale5 || adjust(this.primaryColor, { h: 90 });\n this.cScale6 = this.cScale6 || adjust(this.primaryColor, { h: 120 });\n this.cScale7 = this.cScale7 || adjust(this.primaryColor, { h: 150 });\n this.cScale8 = this.cScale8 || adjust(this.primaryColor, { h: 210 });\n this.cScale9 = this.cScale9 || adjust(this.primaryColor, { h: 270 });\n this.cScale10 = this.cScale10 || adjust(this.primaryColor, { h: 300 });\n this.cScale11 = this.cScale11 || adjust(this.primaryColor, { h: 330 });\n this[\"cScalePeer1\"] = this[\"cScalePeer1\"] || darken(this.secondaryColor, 45);\n this[\"cScalePeer2\"] = this[\"cScalePeer2\"] || darken(this.tertiaryColor, 40);\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScale\" + i] = darken(this[\"cScale\" + i], 10);\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 25);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || adjust(this[\"cScale\" + i], { h: 180 });\n }\n this.scaleLabelColor = this.scaleLabelColor !== \"calculated\" && this.scaleLabelColor ? this.scaleLabelColor : this.labelTextColor;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { h: 30, s: -30, l: -(8 + i * 5) });\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f0f0f0\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.compositeBorder = this.compositeBorder || this.nodeBorder;\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = this.lineColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.transitionColor = this.transitionColor || this.lineColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n this.pie1 = this.pie1 || this.primaryColor;\n this.pie2 = this.pie2 || this.secondaryColor;\n this.pie3 = this.pie3 || this.tertiaryColor;\n this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 });\n this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 });\n this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: 40, l: -40 });\n this.pie7 = this.pie7 || adjust(this.primaryColor, { h: 60, l: -10 });\n this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 });\n this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 });\n this.pie10 = this.pie10 || adjust(this.primaryColor, { h: 60, l: -50 });\n this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 });\n this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 });\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#CDE498,#FF6B6B,#A0D2DB,#D7BDE2,#F0F0F0,#FFC3A0,#7FD8BE,#FF9A8B,#FAF3E0,#FFF176\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = this.git0 || this.primaryColor;\n this.git1 = this.git1 || this.secondaryColor;\n this.git2 = this.git2 || this.tertiaryColor;\n this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.git6 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.git7 || adjust(this.primaryColor, { h: 120 });\n if (this.darkMode) {\n this.git0 = lighten(this.git0, 25);\n this.git1 = lighten(this.git1, 25);\n this.git2 = lighten(this.git2, 25);\n this.git3 = lighten(this.git3, 25);\n this.git4 = lighten(this.git4, 25);\n this.git5 = lighten(this.git5, 25);\n this.git6 = lighten(this.git6, 25);\n this.git7 = lighten(this.git7, 25);\n } else {\n this.git0 = darken(this.git0, 25);\n this.git1 = darken(this.git1, 25);\n this.git2 = darken(this.git2, 25);\n this.git3 = darken(this.git3, 25);\n this.git4 = darken(this.git4, 25);\n this.git5 = darken(this.git5, 25);\n this.git6 = darken(this.git6, 25);\n this.git7 = darken(this.git7, 25);\n }\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor);\n this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor;\n this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor;\n this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor);\n this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor;\n this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor;\n this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor;\n this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n};\nconst getThemeVariables$1 = (userOverrides) => {\n const theme2 = new Theme$1();\n theme2.calculate(userOverrides);\n return theme2;\n};\nclass Theme5 {\n constructor() {\n this.primaryColor = \"#eee\";\n this.contrast = \"#707070\";\n this.secondaryColor = lighten(this.contrast, 55);\n this.background = \"#ffffff\";\n this.tertiaryColor = adjust(this.primaryColor, { h: -160 });\n this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = invert(this.primaryColor);\n this.secondaryTextColor = invert(this.secondaryColor);\n this.tertiaryTextColor = invert(this.tertiaryColor);\n this.lineColor = invert(this.background);\n this.textColor = invert(this.background);\n this.mainBkg = \"#eee\";\n this.secondBkg = \"calculated\";\n this.lineColor = \"#666\";\n this.border1 = \"#999\";\n this.border2 = \"calculated\";\n this.note = \"#ffa\";\n this.text = \"#333\";\n this.critical = \"#d42\";\n this.done = \"#bbb\";\n this.arrowheadColor = \"#333333\";\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = \"16px\";\n this.THEME_COLOR_LIMIT = 12;\n this.nodeBkg = \"calculated\";\n this.nodeBorder = \"calculated\";\n this.clusterBkg = \"calculated\";\n this.clusterBorder = \"calculated\";\n this.defaultLinkColor = \"calculated\";\n this.titleColor = \"calculated\";\n this.edgeLabelBackground = \"white\";\n this.actorBorder = \"calculated\";\n this.actorBkg = \"calculated\";\n this.actorTextColor = \"calculated\";\n this.actorLineColor = \"calculated\";\n this.signalColor = \"calculated\";\n this.signalTextColor = \"calculated\";\n this.labelBoxBkgColor = \"calculated\";\n this.labelBoxBorderColor = \"calculated\";\n this.labelTextColor = \"calculated\";\n this.loopTextColor = \"calculated\";\n this.noteBorderColor = \"calculated\";\n this.noteBkgColor = \"calculated\";\n this.noteTextColor = \"calculated\";\n this.activationBorderColor = \"#666\";\n this.activationBkgColor = \"#f4f4f4\";\n this.sequenceNumberColor = \"white\";\n this.sectionBkgColor = \"calculated\";\n this.altSectionBkgColor = \"white\";\n this.sectionBkgColor2 = \"calculated\";\n this.excludeBkgColor = \"#eeeeee\";\n this.taskBorderColor = \"calculated\";\n this.taskBkgColor = \"calculated\";\n this.taskTextLightColor = \"white\";\n this.taskTextColor = \"calculated\";\n this.taskTextDarkColor = \"calculated\";\n this.taskTextOutsideColor = \"calculated\";\n this.taskTextClickableColor = \"#003163\";\n this.activeTaskBorderColor = \"calculated\";\n this.activeTaskBkgColor = \"calculated\";\n this.gridColor = \"calculated\";\n this.doneTaskBkgColor = \"calculated\";\n this.doneTaskBorderColor = \"calculated\";\n this.critBkgColor = \"calculated\";\n this.critBorderColor = \"calculated\";\n this.todayLineColor = \"calculated\";\n this.personBorder = this.primaryBorderColor;\n this.personBkg = this.mainBkg;\n this.labelColor = \"black\";\n this.errorBkgColor = \"#552222\";\n this.errorTextColor = \"#552222\";\n }\n updateColors() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.secondBkg = lighten(this.contrast, 55);\n this.border2 = this.contrast;\n this.actorBorder = lighten(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = \"#999\";\n this.noteBkgColor = \"#666\";\n this.noteTextColor = \"#fff\";\n this.cScale0 = this.cScale0 || \"#555\";\n this.cScale1 = this.cScale1 || \"#F4F4F4\";\n this.cScale2 = this.cScale2 || \"#555\";\n this.cScale3 = this.cScale3 || \"#BBB\";\n this.cScale4 = this.cScale4 || \"#777\";\n this.cScale5 = this.cScale5 || \"#999\";\n this.cScale6 = this.cScale6 || \"#DDD\";\n this.cScale7 = this.cScale7 || \"#FFF\";\n this.cScale8 = this.cScale8 || \"#DDD\";\n this.cScale9 = this.cScale9 || \"#BBB\";\n this.cScale10 = this.cScale10 || \"#999\";\n this.cScale11 = this.cScale11 || \"#777\";\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleInv\" + i] = this[\"cScaleInv\" + i] || invert(this[\"cScale\" + i]);\n }\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n if (this.darkMode) {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || lighten(this[\"cScale\" + i], 10);\n } else {\n this[\"cScalePeer\" + i] = this[\"cScalePeer\" + i] || darken(this[\"cScale\" + i], 10);\n }\n }\n this.scaleLabelColor = this.scaleLabelColor || (this.darkMode ? \"black\" : this.labelTextColor);\n this[\"cScaleLabel0\"] = this[\"cScaleLabel0\"] || this.cScale1;\n this[\"cScaleLabel2\"] = this[\"cScaleLabel2\"] || this.cScale1;\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"cScaleLabel\" + i] = this[\"cScaleLabel\" + i] || this.scaleLabelColor;\n }\n for (let i = 0; i < 5; i++) {\n this[\"surface\" + i] = this[\"surface\" + i] || adjust(this.mainBkg, { l: -(5 + i * 5) });\n this[\"surfacePeer\" + i] = this[\"surfacePeer\" + i] || adjust(this.mainBkg, { l: -(8 + i * 5) });\n }\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n this.sectionBkgColor = lighten(this.contrast, 30);\n this.sectionBkgColor2 = lighten(this.contrast, 30);\n this.taskBorderColor = darken(this.contrast, 10);\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = lighten(this.border1, 30);\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = darken(this.critBkgColor, 10);\n this.todayLineColor = this.critBkgColor;\n this.transitionColor = this.transitionColor || \"#000\";\n this.transitionLabelColor = this.transitionLabelColor || this.textColor;\n this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor;\n this.stateBkg = this.stateBkg || this.mainBkg;\n this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg;\n this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor;\n this.altBackground = this.altBackground || \"#f4f4f4\";\n this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg;\n this.stateBorder = this.stateBorder || \"#000\";\n this.innerEndBackground = this.primaryBorderColor;\n this.specialStateColor = \"#222\";\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n this.classText = this.primaryTextColor;\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = adjust(this.primaryColor, { h: 64 });\n this.fillType3 = adjust(this.secondaryColor, { h: 64 });\n this.fillType4 = adjust(this.primaryColor, { h: -64 });\n this.fillType5 = adjust(this.secondaryColor, { h: -64 });\n this.fillType6 = adjust(this.primaryColor, { h: 128 });\n this.fillType7 = adjust(this.secondaryColor, { h: 128 });\n for (let i = 0; i < this.THEME_COLOR_LIMIT; i++) {\n this[\"pie\" + i] = this[\"cScale\" + i];\n }\n this.pie12 = this.pie0;\n this.pieTitleTextSize = this.pieTitleTextSize || \"25px\";\n this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor;\n this.pieSectionTextSize = this.pieSectionTextSize || \"17px\";\n this.pieSectionTextColor = this.pieSectionTextColor || this.textColor;\n this.pieLegendTextSize = this.pieLegendTextSize || \"17px\";\n this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor;\n this.pieStrokeColor = this.pieStrokeColor || \"black\";\n this.pieStrokeWidth = this.pieStrokeWidth || \"2px\";\n this.pieOuterStrokeWidth = this.pieOuterStrokeWidth || \"2px\";\n this.pieOuterStrokeColor = this.pieOuterStrokeColor || \"black\";\n this.pieOpacity = this.pieOpacity || \"0.7\";\n this.quadrant1Fill = this.quadrant1Fill || this.primaryColor;\n this.quadrant2Fill = this.quadrant2Fill || adjust(this.primaryColor, { r: 5, g: 5, b: 5 });\n this.quadrant3Fill = this.quadrant3Fill || adjust(this.primaryColor, { r: 10, g: 10, b: 10 });\n this.quadrant4Fill = this.quadrant4Fill || adjust(this.primaryColor, { r: 15, g: 15, b: 15 });\n this.quadrant1TextFill = this.quadrant1TextFill || this.primaryTextColor;\n this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });\n this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });\n this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });\n this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);\n this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;\n this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;\n this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;\n this.quadrantInternalBorderStrokeFill = this.quadrantInternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantExternalBorderStrokeFill = this.quadrantExternalBorderStrokeFill || this.primaryBorderColor;\n this.quadrantTitleFill = this.quadrantTitleFill || this.primaryTextColor;\n this.xyChart = {\n backgroundColor: ((_a = this.xyChart) == null ? void 0 : _a.backgroundColor) || this.background,\n titleColor: ((_b = this.xyChart) == null ? void 0 : _b.titleColor) || this.primaryTextColor,\n xAxisTitleColor: ((_c = this.xyChart) == null ? void 0 : _c.xAxisTitleColor) || this.primaryTextColor,\n xAxisLabelColor: ((_d = this.xyChart) == null ? void 0 : _d.xAxisLabelColor) || this.primaryTextColor,\n xAxisTickColor: ((_e = this.xyChart) == null ? void 0 : _e.xAxisTickColor) || this.primaryTextColor,\n xAxisLineColor: ((_f = this.xyChart) == null ? void 0 : _f.xAxisLineColor) || this.primaryTextColor,\n yAxisTitleColor: ((_g = this.xyChart) == null ? void 0 : _g.yAxisTitleColor) || this.primaryTextColor,\n yAxisLabelColor: ((_h = this.xyChart) == null ? void 0 : _h.yAxisLabelColor) || this.primaryTextColor,\n yAxisTickColor: ((_i = this.xyChart) == null ? void 0 : _i.yAxisTickColor) || this.primaryTextColor,\n yAxisLineColor: ((_j = this.xyChart) == null ? void 0 : _j.yAxisLineColor) || this.primaryTextColor,\n plotColorPalette: ((_k = this.xyChart) == null ? void 0 : _k.plotColorPalette) || \"#EEE,#6BB8E4,#8ACB88,#C7ACD6,#E8DCC2,#FFB2A8,#FFF380,#7E8D91,#FFD8B1,#FAF3E0\"\n };\n this.requirementBackground = this.requirementBackground || this.primaryColor;\n this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor;\n this.requirementBorderSize = this.requirementBorderSize || \"1\";\n this.requirementTextColor = this.requirementTextColor || this.primaryTextColor;\n this.relationColor = this.relationColor || this.lineColor;\n this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground;\n this.relationLabelColor = this.relationLabelColor || this.actorTextColor;\n this.git0 = darken(this.pie1, 25) || this.primaryColor;\n this.git1 = this.pie2 || this.secondaryColor;\n this.git2 = this.pie3 || this.tertiaryColor;\n this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 });\n this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 });\n this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 });\n this.git6 = this.pie7 || adjust(this.primaryColor, { h: 60 });\n this.git7 = this.pie8 || adjust(this.primaryColor, { h: 120 });\n this.gitInv0 = this.gitInv0 || invert(this.git0);\n this.gitInv1 = this.gitInv1 || invert(this.git1);\n this.gitInv2 = this.gitInv2 || invert(this.git2);\n this.gitInv3 = this.gitInv3 || invert(this.git3);\n this.gitInv4 = this.gitInv4 || invert(this.git4);\n this.gitInv5 = this.gitInv5 || invert(this.git5);\n this.gitInv6 = this.gitInv6 || invert(this.git6);\n this.gitInv7 = this.gitInv7 || invert(this.git7);\n this.branchLabelColor = this.branchLabelColor || this.labelTextColor;\n this.gitBranchLabel0 = this.branchLabelColor;\n this.gitBranchLabel1 = \"white\";\n this.gitBranchLabel2 = this.branchLabelColor;\n this.gitBranchLabel3 = \"white\";\n this.gitBranchLabel4 = this.branchLabelColor;\n this.gitBranchLabel5 = this.branchLabelColor;\n this.gitBranchLabel6 = this.branchLabelColor;\n this.gitBranchLabel7 = this.branchLabelColor;\n this.tagLabelColor = this.tagLabelColor || this.primaryTextColor;\n this.tagLabelBackground = this.tagLabelBackground || this.primaryColor;\n this.tagLabelBorder = this.tagBorder || this.primaryBorderColor;\n this.tagLabelFontSize = this.tagLabelFontSize || \"10px\";\n this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor;\n this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor;\n this.commitLabelFontSize = this.commitLabelFontSize || \"10px\";\n this.attributeBackgroundColorOdd = this.attributeBackgroundColorOdd || oldAttributeBackgroundColorOdd;\n this.attributeBackgroundColorEven = this.attributeBackgroundColorEven || oldAttributeBackgroundColorEven;\n }\n calculate(overrides) {\n if (typeof overrides !== \"object\") {\n this.updateColors();\n return;\n }\n const keys = Object.keys(overrides);\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n this.updateColors();\n keys.forEach((k) => {\n this[k] = overrides[k];\n });\n }\n}\nconst getThemeVariables = (userOverrides) => {\n const theme2 = new Theme5();\n theme2.calculate(userOverrides);\n return theme2;\n};\nconst theme = {\n base: {\n getThemeVariables: getThemeVariables$4\n },\n dark: {\n getThemeVariables: getThemeVariables$3\n },\n default: {\n getThemeVariables: getThemeVariables$2\n },\n forest: {\n getThemeVariables: getThemeVariables$1\n },\n neutral: {\n getThemeVariables\n }\n};\nconst defaultConfigJson = {\n \"flowchart\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 8,\n \"htmlLabels\": true,\n \"nodeSpacing\": 50,\n \"rankSpacing\": 50,\n \"curve\": \"basis\",\n \"padding\": 15,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"wrappingWidth\": 200\n },\n \"sequence\": {\n \"useMaxWidth\": true,\n \"hideUnusedParticipants\": false,\n \"activationWidth\": 10,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"actorMargin\": 50,\n \"width\": 150,\n \"height\": 65,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"mirrorActors\": true,\n \"forceMenus\": false,\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"showSequenceNumbers\": false,\n \"actorFontSize\": 14,\n \"actorFontFamily\": '\"Open Sans\", sans-serif',\n \"actorFontWeight\": 400,\n \"noteFontSize\": 14,\n \"noteFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n \"noteFontWeight\": 400,\n \"noteAlign\": \"center\",\n \"messageFontSize\": 16,\n \"messageFontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif',\n \"messageFontWeight\": 400,\n \"wrap\": false,\n \"wrapPadding\": 10,\n \"labelBoxWidth\": 50,\n \"labelBoxHeight\": 20\n },\n \"gantt\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"barHeight\": 20,\n \"barGap\": 4,\n \"topPadding\": 50,\n \"rightPadding\": 75,\n \"leftPadding\": 75,\n \"gridLineStartPadding\": 35,\n \"fontSize\": 11,\n \"sectionFontSize\": 11,\n \"numberSectionStyles\": 4,\n \"axisFormat\": \"%Y-%m-%d\",\n \"topAxis\": false,\n \"displayMode\": \"\",\n \"weekday\": \"sunday\"\n },\n \"journey\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": '\"Open Sans\", sans-serif',\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ]\n },\n \"class\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"arrowMarkerAbsolute\": false,\n \"dividerMargin\": 10,\n \"padding\": 5,\n \"textHeight\": 10,\n \"defaultRenderer\": \"dagre-wrapper\",\n \"htmlLabels\": false\n },\n \"state\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"dividerMargin\": 10,\n \"sizeUnit\": 5,\n \"padding\": 8,\n \"textHeight\": 10,\n \"titleShift\": -15,\n \"noteMargin\": 10,\n \"forkWidth\": 70,\n \"forkHeight\": 7,\n \"miniPadding\": 2,\n \"fontSizeFactor\": 5.02,\n \"fontSize\": 24,\n \"labelHeight\": 16,\n \"edgeLengthFactor\": \"20\",\n \"compositTitleSize\": 35,\n \"radius\": 5,\n \"defaultRenderer\": \"dagre-wrapper\"\n },\n \"er\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 20,\n \"layoutDirection\": \"TB\",\n \"minEntityWidth\": 100,\n \"minEntityHeight\": 75,\n \"entityPadding\": 15,\n \"stroke\": \"gray\",\n \"fill\": \"honeydew\",\n \"fontSize\": 12\n },\n \"pie\": {\n \"useMaxWidth\": true,\n \"textPosition\": 0.75\n },\n \"quadrantChart\": {\n \"useMaxWidth\": true,\n \"chartWidth\": 500,\n \"chartHeight\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"quadrantPadding\": 5,\n \"xAxisLabelPadding\": 5,\n \"yAxisLabelPadding\": 5,\n \"xAxisLabelFontSize\": 16,\n \"yAxisLabelFontSize\": 16,\n \"quadrantLabelFontSize\": 16,\n \"quadrantTextTopPadding\": 5,\n \"pointTextPadding\": 5,\n \"pointLabelFontSize\": 12,\n \"pointRadius\": 5,\n \"xAxisPosition\": \"top\",\n \"yAxisPosition\": \"left\",\n \"quadrantInternalBorderStrokeWidth\": 1,\n \"quadrantExternalBorderStrokeWidth\": 2\n },\n \"xyChart\": {\n \"useMaxWidth\": true,\n \"width\": 700,\n \"height\": 500,\n \"titleFontSize\": 20,\n \"titlePadding\": 10,\n \"showTitle\": true,\n \"xAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"yAxis\": {\n \"$ref\": \"#/$defs/XYChartAxisConfig\",\n \"showLabel\": true,\n \"labelFontSize\": 14,\n \"labelPadding\": 5,\n \"showTitle\": true,\n \"titleFontSize\": 16,\n \"titlePadding\": 5,\n \"showTick\": true,\n \"tickLength\": 5,\n \"tickWidth\": 2,\n \"showAxisLine\": true,\n \"axisLineWidth\": 2\n },\n \"chartOrientation\": \"vertical\",\n \"plotReservedSpacePercent\": 50\n },\n \"requirement\": {\n \"useMaxWidth\": true,\n \"rect_fill\": \"#f9f9f9\",\n \"text_color\": \"#333\",\n \"rect_border_size\": \"0.5px\",\n \"rect_border_color\": \"#bbb\",\n \"rect_min_width\": 200,\n \"rect_min_height\": 200,\n \"fontSize\": 14,\n \"rect_padding\": 10,\n \"line_height\": 20\n },\n \"mindmap\": {\n \"useMaxWidth\": true,\n \"padding\": 10,\n \"maxNodeWidth\": 200\n },\n \"timeline\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"leftMargin\": 150,\n \"width\": 150,\n \"height\": 50,\n \"boxMargin\": 10,\n \"boxTextMargin\": 5,\n \"noteMargin\": 10,\n \"messageMargin\": 35,\n \"messageAlign\": \"center\",\n \"bottomMarginAdj\": 1,\n \"rightAngles\": false,\n \"taskFontSize\": 14,\n \"taskFontFamily\": '\"Open Sans\", sans-serif',\n \"taskMargin\": 50,\n \"activationWidth\": 10,\n \"textPlacement\": \"fo\",\n \"actorColours\": [\n \"#8FBC8F\",\n \"#7CFC00\",\n \"#00FFFF\",\n \"#20B2AA\",\n \"#B0E0E6\",\n \"#FFFFE0\"\n ],\n \"sectionFills\": [\n \"#191970\",\n \"#8B008B\",\n \"#4B0082\",\n \"#2F4F4F\",\n \"#800000\",\n \"#8B4513\",\n \"#00008B\"\n ],\n \"sectionColours\": [\n \"#fff\"\n ],\n \"disableMulticolor\": false\n },\n \"gitGraph\": {\n \"useMaxWidth\": true,\n \"titleTopMargin\": 25,\n \"diagramPadding\": 8,\n \"nodeLabel\": {\n \"width\": 75,\n \"height\": 100,\n \"x\": -25,\n \"y\": 0\n },\n \"mainBranchName\": \"main\",\n \"mainBranchOrder\": 0,\n \"showCommitLabel\": true,\n \"showBranches\": true,\n \"rotateCommitLabel\": true,\n \"arrowMarkerAbsolute\": false\n },\n \"c4\": {\n \"useMaxWidth\": true,\n \"diagramMarginX\": 50,\n \"diagramMarginY\": 10,\n \"c4ShapeMargin\": 50,\n \"c4ShapePadding\": 20,\n \"width\": 216,\n \"height\": 60,\n \"boxMargin\": 10,\n \"c4ShapeInRow\": 4,\n \"nextLinePaddingX\": 0,\n \"c4BoundaryInRow\": 2,\n \"personFontSize\": 14,\n \"personFontFamily\": '\"Open Sans\", sans-serif',\n \"personFontWeight\": \"normal\",\n \"external_personFontSize\": 14,\n \"external_personFontFamily\": '\"Open Sans\", sans-serif',\n \"external_personFontWeight\": \"normal\",\n \"systemFontSize\": 14,\n \"systemFontFamily\": '\"Open Sans\", sans-serif',\n \"systemFontWeight\": \"normal\",\n \"external_systemFontSize\": 14,\n \"external_systemFontFamily\": '\"Open Sans\", sans-serif',\n \"external_systemFontWeight\": \"normal\",\n \"system_dbFontSize\": 14,\n \"system_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"system_dbFontWeight\": \"normal\",\n \"external_system_dbFontSize\": 14,\n \"external_system_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_system_dbFontWeight\": \"normal\",\n \"system_queueFontSize\": 14,\n \"system_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"system_queueFontWeight\": \"normal\",\n \"external_system_queueFontSize\": 14,\n \"external_system_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_system_queueFontWeight\": \"normal\",\n \"boundaryFontSize\": 14,\n \"boundaryFontFamily\": '\"Open Sans\", sans-serif',\n \"boundaryFontWeight\": \"normal\",\n \"messageFontSize\": 12,\n \"messageFontFamily\": '\"Open Sans\", sans-serif',\n \"messageFontWeight\": \"normal\",\n \"containerFontSize\": 14,\n \"containerFontFamily\": '\"Open Sans\", sans-serif',\n \"containerFontWeight\": \"normal\",\n \"external_containerFontSize\": 14,\n \"external_containerFontFamily\": '\"Open Sans\", sans-serif',\n \"external_containerFontWeight\": \"normal\",\n \"container_dbFontSize\": 14,\n \"container_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"container_dbFontWeight\": \"normal\",\n \"external_container_dbFontSize\": 14,\n \"external_container_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_container_dbFontWeight\": \"normal\",\n \"container_queueFontSize\": 14,\n \"container_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"container_queueFontWeight\": \"normal\",\n \"external_container_queueFontSize\": 14,\n \"external_container_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_container_queueFontWeight\": \"normal\",\n \"componentFontSize\": 14,\n \"componentFontFamily\": '\"Open Sans\", sans-serif',\n \"componentFontWeight\": \"normal\",\n \"external_componentFontSize\": 14,\n \"external_componentFontFamily\": '\"Open Sans\", sans-serif',\n \"external_componentFontWeight\": \"normal\",\n \"component_dbFontSize\": 14,\n \"component_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"component_dbFontWeight\": \"normal\",\n \"external_component_dbFontSize\": 14,\n \"external_component_dbFontFamily\": '\"Open Sans\", sans-serif',\n \"external_component_dbFontWeight\": \"normal\",\n \"component_queueFontSize\": 14,\n \"component_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"component_queueFontWeight\": \"normal\",\n \"external_component_queueFontSize\": 14,\n \"external_component_queueFontFamily\": '\"Open Sans\", sans-serif',\n \"external_component_queueFontWeight\": \"normal\",\n \"wrap\": true,\n \"wrapPadding\": 10,\n \"person_bg_color\": \"#08427B\",\n \"person_border_color\": \"#073B6F\",\n \"external_person_bg_color\": \"#686868\",\n \"external_person_border_color\": \"#8A8A8A\",\n \"system_bg_color\": \"#1168BD\",\n \"system_border_color\": \"#3C7FC0\",\n \"system_db_bg_color\": \"#1168BD\",\n \"system_db_border_color\": \"#3C7FC0\",\n \"system_queue_bg_color\": \"#1168BD\",\n \"system_queue_border_color\": \"#3C7FC0\",\n \"external_system_bg_color\": \"#999999\",\n \"external_system_border_color\": \"#8A8A8A\",\n \"external_system_db_bg_color\": \"#999999\",\n \"external_system_db_border_color\": \"#8A8A8A\",\n \"external_system_queue_bg_color\": \"#999999\",\n \"external_system_queue_border_color\": \"#8A8A8A\",\n \"container_bg_color\": \"#438DD5\",\n \"container_border_color\": \"#3C7FC0\",\n \"container_db_bg_color\": \"#438DD5\",\n \"container_db_border_color\": \"#3C7FC0\",\n \"container_queue_bg_color\": \"#438DD5\",\n \"container_queue_border_color\": \"#3C7FC0\",\n \"external_container_bg_color\": \"#B3B3B3\",\n \"external_container_border_color\": \"#A6A6A6\",\n \"external_container_db_bg_color\": \"#B3B3B3\",\n \"external_container_db_border_color\": \"#A6A6A6\",\n \"external_container_queue_bg_color\": \"#B3B3B3\",\n \"external_container_queue_border_color\": \"#A6A6A6\",\n \"component_bg_color\": \"#85BBF0\",\n \"component_border_color\": \"#78A8D8\",\n \"component_db_bg_color\": \"#85BBF0\",\n \"component_db_border_color\": \"#78A8D8\",\n \"component_queue_bg_color\": \"#85BBF0\",\n \"component_queue_border_color\": \"#78A8D8\",\n \"external_component_bg_color\": \"#CCCCCC\",\n \"external_component_border_color\": \"#BFBFBF\",\n \"external_component_db_bg_color\": \"#CCCCCC\",\n \"external_component_db_border_color\": \"#BFBFBF\",\n \"external_component_queue_bg_color\": \"#CCCCCC\",\n \"external_component_queue_border_color\": \"#BFBFBF\"\n },\n \"sankey\": {\n \"useMaxWidth\": true,\n \"width\": 600,\n \"height\": 400,\n \"linkColor\": \"gradient\",\n \"nodeAlignment\": \"justify\",\n \"showValues\": true,\n \"prefix\": \"\",\n \"suffix\": \"\"\n },\n \"theme\": \"default\",\n \"maxTextSize\": 5e4,\n \"darkMode\": false,\n \"fontFamily\": '\"trebuchet ms\", verdana, arial, sans-serif;',\n \"logLevel\": 5,\n \"securityLevel\": \"strict\",\n \"startOnLoad\": true,\n \"arrowMarkerAbsolute\": false,\n \"secure\": [\n \"secure\",\n \"securityLevel\",\n \"startOnLoad\",\n \"maxTextSize\"\n ],\n \"deterministicIds\": false,\n \"fontSize\": 16\n};\nconst config = {\n ...defaultConfigJson,\n // Set, even though they're `undefined` so that `configKeys` finds these keys\n // TODO: Should we replace these with `null` so that they can go in the JSON Schema?\n deterministicIDSeed: void 0,\n themeCSS: void 0,\n // add non-JSON default config values\n themeVariables: theme[\"default\"].getThemeVariables(),\n sequence: {\n ...defaultConfigJson.sequence,\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n gantt: {\n ...defaultConfigJson.gantt,\n tickInterval: void 0,\n useWidth: void 0\n // can probably be removed since `configKeys` already includes this\n },\n c4: {\n ...defaultConfigJson.c4,\n useWidth: void 0,\n personFont: function() {\n return {\n fontFamily: this.personFontFamily,\n fontSize: this.personFontSize,\n fontWeight: this.personFontWeight\n };\n },\n external_personFont: function() {\n return {\n fontFamily: this.external_personFontFamily,\n fontSize: this.external_personFontSize,\n fontWeight: this.external_personFontWeight\n };\n },\n systemFont: function() {\n return {\n fontFamily: this.systemFontFamily,\n fontSize: this.systemFontSize,\n fontWeight: this.systemFontWeight\n };\n },\n external_systemFont: function() {\n return {\n fontFamily: this.external_systemFontFamily,\n fontSize: this.external_systemFontSize,\n fontWeight: this.external_systemFontWeight\n };\n },\n system_dbFont: function() {\n return {\n fontFamily: this.system_dbFontFamily,\n fontSize: this.system_dbFontSize,\n fontWeight: this.system_dbFontWeight\n };\n },\n external_system_dbFont: function() {\n return {\n fontFamily: this.external_system_dbFontFamily,\n fontSize: this.external_system_dbFontSize,\n fontWeight: this.external_system_dbFontWeight\n };\n },\n system_queueFont: function() {\n return {\n fontFamily: this.system_queueFontFamily,\n fontSize: this.system_queueFontSize,\n fontWeight: this.system_queueFontWeight\n };\n },\n external_system_queueFont: function() {\n return {\n fontFamily: this.external_system_queueFontFamily,\n fontSize: this.external_system_queueFontSize,\n fontWeight: this.external_system_queueFontWeight\n };\n },\n containerFont: function() {\n return {\n fontFamily: this.containerFontFamily,\n fontSize: this.containerFontSize,\n fontWeight: this.containerFontWeight\n };\n },\n external_containerFont: function() {\n return {\n fontFamily: this.external_containerFontFamily,\n fontSize: this.external_containerFontSize,\n fontWeight: this.external_containerFontWeight\n };\n },\n container_dbFont: function() {\n return {\n fontFamily: this.container_dbFontFamily,\n fontSize: this.container_dbFontSize,\n fontWeight: this.container_dbFontWeight\n };\n },\n external_container_dbFont: function() {\n return {\n fontFamily: this.external_container_dbFontFamily,\n fontSize: this.external_container_dbFontSize,\n fontWeight: this.external_container_dbFontWeight\n };\n },\n container_queueFont: function() {\n return {\n fontFamily: this.container_queueFontFamily,\n fontSize: this.container_queueFontSize,\n fontWeight: this.container_queueFontWeight\n };\n },\n external_container_queueFont: function() {\n return {\n fontFamily: this.external_container_queueFontFamily,\n fontSize: this.external_container_queueFontSize,\n fontWeight: this.external_container_queueFontWeight\n };\n },\n componentFont: function() {\n return {\n fontFamily: this.componentFontFamily,\n fontSize: this.componentFontSize,\n fontWeight: this.componentFontWeight\n };\n },\n external_componentFont: function() {\n return {\n fontFamily: this.external_componentFontFamily,\n fontSize: this.external_componentFontSize,\n fontWeight: this.external_componentFontWeight\n };\n },\n component_dbFont: function() {\n return {\n fontFamily: this.component_dbFontFamily,\n fontSize: this.component_dbFontSize,\n fontWeight: this.component_dbFontWeight\n };\n },\n external_component_dbFont: function() {\n return {\n fontFamily: this.external_component_dbFontFamily,\n fontSize: this.external_component_dbFontSize,\n fontWeight: this.external_component_dbFontWeight\n };\n },\n component_queueFont: function() {\n return {\n fontFamily: this.component_queueFontFamily,\n fontSize: this.component_queueFontSize,\n fontWeight: this.component_queueFontWeight\n };\n },\n external_component_queueFont: function() {\n return {\n fontFamily: this.external_component_queueFontFamily,\n fontSize: this.external_component_queueFontSize,\n fontWeight: this.external_component_queueFontWeight\n };\n },\n boundaryFont: function() {\n return {\n fontFamily: this.boundaryFontFamily,\n fontSize: this.boundaryFontSize,\n fontWeight: this.boundaryFontWeight\n };\n },\n messageFont: function() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n }\n },\n pie: {\n ...defaultConfigJson.pie,\n useWidth: 984\n },\n xyChart: {\n ...defaultConfigJson.xyChart,\n useWidth: void 0\n },\n requirement: {\n ...defaultConfigJson.requirement,\n useWidth: void 0\n },\n gitGraph: {\n ...defaultConfigJson.gitGraph,\n // TODO: This is a temporary override for `gitGraph`, since every other\n // diagram does have `useMaxWidth`, but instead sets it to `true`.\n // Should we set this to `true` instead?\n useMaxWidth: false\n },\n sankey: {\n ...defaultConfigJson.sankey,\n // this is false, unlike every other diagram (other than gitGraph)\n // TODO: can we make this default to `true` instead?\n useMaxWidth: false\n }\n};\nconst keyify = (obj, prefix = \"\") => Object.keys(obj).reduce((res, el) => {\n if (Array.isArray(obj[el])) {\n return res;\n } else if (typeof obj[el] === \"object\" && obj[el] !== null) {\n return [...res, prefix + el, ...keyify(obj[el], \"\")];\n }\n return [...res, prefix + el];\n}, []);\nconst configKeys = new Set(keyify(config, \"\"));\nconst defaultConfig$2 = config;\nconst sanitizeDirective = (args) => {\n log$1.debug(\"sanitizeDirective called with\", args);\n if (typeof args !== \"object\" || args == null) {\n return;\n }\n if (Array.isArray(args)) {\n args.forEach((arg) => sanitizeDirective(arg));\n return;\n }\n for (const key of Object.keys(args)) {\n log$1.debug(\"Checking key\", key);\n if (key.startsWith(\"__\") || key.includes(\"proto\") || key.includes(\"constr\") || !configKeys.has(key) || args[key] == null) {\n log$1.debug(\"sanitize deleting key: \", key);\n delete args[key];\n continue;\n }\n if (typeof args[key] === \"object\") {\n log$1.debug(\"sanitizing object\", key);\n sanitizeDirective(args[key]);\n continue;\n }\n const cssMatchers = [\"themeCSS\", \"fontFamily\", \"altFontFamily\"];\n for (const cssKey of cssMatchers) {\n if (key.includes(cssKey)) {\n log$1.debug(\"sanitizing css option\", key);\n args[key] = sanitizeCss(args[key]);\n }\n }\n }\n if (args.themeVariables) {\n for (const k of Object.keys(args.themeVariables)) {\n const val = args.themeVariables[k];\n if ((val == null ? void 0 : val.match) && !val.match(/^[\\d \"#%(),.;A-Za-z]+$/)) {\n args.themeVariables[k] = \"\";\n }\n }\n }\n log$1.debug(\"After sanitization\", args);\n};\nconst sanitizeCss = (str2) => {\n let startCnt = 0;\n let endCnt = 0;\n for (const element of str2) {\n if (startCnt < endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n if (element === \"{\") {\n startCnt++;\n } else if (element === \"}\") {\n endCnt++;\n }\n }\n if (startCnt !== endCnt) {\n return \"{ /* ERROR: Unbalanced CSS */ }\";\n }\n return str2;\n};\nconst frontMatterRegex = /^-{3}\\s*[\\n\\r](.*?)[\\n\\r]-{3}\\s*[\\n\\r]+/s;\nconst directiveRegex = /%{2}{\\s*(?:(\\w+)\\s*:|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nconst anyCommentRegex = /\\s*%%.*\\n/gm;\nclass UnknownDiagramError extends Error {\n constructor(message) {\n super(message);\n this.name = \"UnknownDiagramError\";\n }\n}\nconst detectors = {};\nconst detectType = function(text, config2) {\n text = text.replace(frontMatterRegex, \"\").replace(directiveRegex, \"\").replace(anyCommentRegex, \"\\n\");\n for (const [key, { detector: detector2 }] of Object.entries(detectors)) {\n const diagram2 = detector2(text, config2);\n if (diagram2) {\n return key;\n }\n }\n throw new UnknownDiagramError(\n `No diagram type detected matching given configuration for text: ${text}`\n );\n};\nconst registerLazyLoadedDiagrams = (...diagrams2) => {\n for (const { id: id2, detector: detector2, loader: loader2 } of diagrams2) {\n addDetector(id2, detector2, loader2);\n }\n};\nconst addDetector = (key, detector2, loader2) => {\n if (detectors[key]) {\n log$1.error(`Detector with key ${key} already exists`);\n } else {\n detectors[key] = { detector: detector2, loader: loader2 };\n }\n log$1.debug(`Detector with key ${key} added${loader2 ? \" with loader\" : \"\"}`);\n};\nconst getDiagramLoader = (key) => {\n return detectors[key].loader;\n};\nconst assignWithDepth = (dst, src, { depth = 2, clobber = false } = {}) => {\n const config2 = { depth, clobber };\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach((s) => assignWithDepth(dst, s, config2));\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach((s) => {\n if (!dst.includes(s)) {\n dst.push(s);\n }\n });\n return dst;\n }\n if (dst === void 0 || depth <= 0) {\n if (dst !== void 0 && dst !== null && typeof dst === \"object\" && typeof src === \"object\") {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n if (src !== void 0 && typeof dst === \"object\" && typeof src === \"object\") {\n Object.keys(src).forEach((key) => {\n if (typeof src[key] === \"object\" && (dst[key] === void 0 || typeof dst[key] === \"object\")) {\n if (dst[key] === void 0) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n dst[key] = assignWithDepth(dst[key], src[key], { depth: depth - 1, clobber });\n } else if (clobber || typeof dst[key] !== \"object\" && typeof src[key] !== \"object\") {\n dst[key] = src[key];\n }\n });\n }\n return dst;\n};\nconst assignWithDepth$1 = assignWithDepth;\nconst ZERO_WIDTH_SPACE = \"​\";\nconst d3CurveTypes = {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBumpX,\n curveBumpY,\n curveBundle,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCardinal,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveCatmullRom,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore\n};\nconst directiveWithoutOpen = /\\s*(?:(\\w+)(?=:):|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nconst detectInit = function(text, config2) {\n const inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n const args = inits.map((init2) => init2.args);\n sanitizeDirective(args);\n results = assignWithDepth$1(results, [...args]);\n } else {\n results = inits.args;\n }\n if (!results) {\n return;\n }\n let type2 = detectType(text, config2);\n const prop = \"config\";\n if (results[prop] !== void 0) {\n if (type2 === \"flowchart-v2\") {\n type2 = \"flowchart\";\n }\n results[type2] = results[prop];\n delete results[prop];\n }\n return results;\n};\nconst detectDirective = function(text, type2 = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\n`,\n \"ig\"\n );\n text = text.trim().replace(commentWithoutDirectives, \"\").replace(/'/gm, '\"');\n log$1.debug(\n `Detecting diagram directive${type2 !== null ? \" type:\" + type2 : \"\"} based on the text:${text}`\n );\n let match;\n const result = [];\n while ((match = directiveRegex.exec(text)) !== null) {\n if (match.index === directiveRegex.lastIndex) {\n directiveRegex.lastIndex++;\n }\n if (match && !type2 || type2 && match[1] && match[1].match(type2) || type2 && match[2] && match[2].match(type2)) {\n const type22 = match[1] ? match[1] : match[2];\n const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type: type22, args });\n }\n }\n if (result.length === 0) {\n return { type: text, args: null };\n }\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log$1.error(\n `ERROR: ${error.message} - Unable to parse directive type: '${type2}' based on the text: '${text}'`\n );\n return { type: void 0, args: null };\n }\n};\nconst removeDirectives = function(text) {\n return text.replace(directiveRegex, \"\");\n};\nconst isSubstringInArray = function(str2, arr) {\n for (const [i, element] of arr.entries()) {\n if (element.match(str2)) {\n return i;\n }\n }\n return -1;\n};\nfunction interpolateToCurve(interpolate, defaultCurve) {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] ?? defaultCurve;\n}\nfunction formatUrl(linkStr, config2) {\n const url = linkStr.trim();\n if (!url) {\n return void 0;\n }\n if (config2.securityLevel !== \"loose\") {\n return sanitizeUrl(url);\n }\n return url;\n}\nconst runFunc = (functionName, ...params) => {\n const arrPaths = functionName.split(\".\");\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) {\n log$1.error(`Function name: ${functionName} not found in window`);\n return;\n }\n }\n obj[fnName](...params);\n};\nfunction distance(p1, p2) {\n if (!p1 || !p2) {\n return 0;\n }\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\nfunction traverseEdge(points) {\n let prevPoint;\n let totalDistance = 0;\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n const remainingDistance = totalDistance / 2;\n return calculatePoint(points, remainingDistance);\n}\nfunction calcLabelPosition(points) {\n if (points.length === 1) {\n return points[0];\n }\n return traverseEdge(points);\n}\nconst roundNumber = (num, precision = 2) => {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n};\nconst calculatePoint = (points, distanceToTraverse) => {\n let prevPoint = void 0;\n let remainingDistance = distanceToTraverse;\n for (const point of points) {\n if (prevPoint) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n return prevPoint;\n }\n if (distanceRatio >= 1) {\n return { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n return {\n x: roundNumber((1 - distanceRatio) * prevPoint.x + distanceRatio * point.x, 5),\n y: roundNumber((1 - distanceRatio) * prevPoint.y + distanceRatio * point.y, 5)\n };\n }\n }\n }\n prevPoint = point;\n }\n throw new Error(\"Could not find a suitable point for the given distance\");\n};\nconst calcCardinalityPosition = (isRelationTypePresent, points, initialPosition) => {\n log$1.info(`our points ${JSON.stringify(points)}`);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n const distanceToCardinalityPoint = 25;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = isRelationTypePresent ? 10 : 5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\nfunction calcTerminalLabelPosition(terminalMarkerSize, position, _points) {\n const points = structuredClone(_points);\n log$1.info(\"our points\", points);\n if (position !== \"start_left\" && position !== \"start_right\") {\n points.reverse();\n }\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = 10 + terminalMarkerSize * 0.5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n if (position === \"start_left\") {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n } else if (position === \"end_right\") {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n } else if (position === \"end_left\") {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n } else {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n }\n return cardinalityPosition;\n}\nfunction getStylesFromArray(arr) {\n let style = \"\";\n let labelStyle = \"\";\n for (const element of arr) {\n if (element !== void 0) {\n if (element.startsWith(\"color:\") || element.startsWith(\"text-align:\")) {\n labelStyle = labelStyle + element + \";\";\n } else {\n style = style + element + \";\";\n }\n }\n }\n return { style, labelStyle };\n}\nlet cnt = 0;\nconst generateId = () => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n};\nfunction makeRandomHex(length) {\n let result = \"\";\n const characters = \"0123456789abcdef\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\nconst random = (options) => {\n return makeRandomHex(options.length);\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n anchor: \"start\",\n style: \"#666\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: void 0,\n text: \"\"\n };\n};\nconst drawSimpleText = function(elem, textData) {\n const nText = textData.text.replace(common$1.lineBreakRegex, \" \");\n const [, _fontSizePx] = parseFontSize(textData.fontSize);\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.style(\"text-anchor\", textData.anchor);\n textElem.style(\"font-family\", textData.fontFamily);\n textElem.style(\"font-size\", _fontSizePx);\n textElem.style(\"font-weight\", textData.fontWeight);\n textElem.attr(\"fill\", textData.fill);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.attr(\"fill\", textData.fill);\n span.text(nText);\n return textElem;\n};\nconst wrapLabel = memoize(\n (label, maxWidth, config2) => {\n if (!label) {\n return label;\n }\n config2 = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", joinWith: \"
\" },\n config2\n );\n if (common$1.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(\" \");\n const completedLines = [];\n let nextLine = \"\";\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config2);\n const nextLineLength = calculateTextWidth(nextLine, config2);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, \"-\", config2);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(\" \");\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== \"\").join(config2.joinWith);\n },\n (label, maxWidth, config2) => `${label}${maxWidth}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}${config2.joinWith}`\n);\nconst breakString = memoize(\n (word, maxWidth, hyphenCharacter = \"-\", config2) => {\n config2 = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", margin: 0 },\n config2\n );\n const characters = [...word];\n const lines = [];\n let currentLine = \"\";\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config2);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = \"\";\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = \"-\", config2) => `${word}${maxWidth}${hyphenCharacter}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}`\n);\nfunction calculateTextHeight(text, config2) {\n return calculateTextDimensions(text, config2).height;\n}\nfunction calculateTextWidth(text, config2) {\n return calculateTextDimensions(text, config2).width;\n}\nconst calculateTextDimensions = memoize(\n (text, config2) => {\n const { fontSize = 12, fontFamily = \"Arial\", fontWeight = 400 } = config2;\n if (!text) {\n return { width: 0, height: 0 };\n }\n const [, _fontSizePx] = parseFontSize(fontSize);\n const fontFamilies = [\"sans-serif\", fontFamily];\n const lines = text.split(common$1.lineBreakRegex);\n const dims = [];\n const body = select(\"body\");\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n const g = body.append(\"svg\");\n for (const fontFamily2 of fontFamilies) {\n let cHeight = 0;\n const dim = { width: 0, height: 0, lineHeight: 0 };\n for (const line of lines) {\n const textObj = getTextObj();\n textObj.text = line || ZERO_WIDTH_SPACE;\n const textElem = drawSimpleText(g, textObj).style(\"font-size\", _fontSizePx).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily2);\n const bBox = (textElem._groups || textElem)[0][0].getBBox();\n if (bBox.width === 0 && bBox.height === 0) {\n throw new Error(\"svg element not in render tree\");\n }\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cHeight = Math.round(bBox.height);\n dim.height += cHeight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cHeight));\n }\n dims.push(dim);\n }\n g.remove();\n const index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;\n return dims[index];\n },\n (text, config2) => `${text}${config2.fontSize}${config2.fontWeight}${config2.fontFamily}`\n);\nclass InitIDGenerator {\n constructor(deterministic = false, seed) {\n this.count = 0;\n this.count = seed ? seed.length : 0;\n this.next = deterministic ? () => this.count++ : () => Date.now();\n }\n}\nlet decoder;\nconst entityDecode = function(html) {\n decoder = decoder || document.createElement(\"div\");\n html = escape(html).replace(/%26/g, \"&\").replace(/%23/g, \"#\").replace(/%3B/g, \";\");\n decoder.innerHTML = html;\n return unescape(decoder.textContent);\n};\nfunction isDetailedError(error) {\n return \"str\" in error;\n}\nconst insertTitle = (parent, cssClass, titleTopMargin, title) => {\n var _a;\n if (!title) {\n return;\n }\n const bounds = (_a = parent.node()) == null ? void 0 : _a.getBBox();\n if (!bounds) {\n return;\n }\n parent.append(\"text\").text(title).attr(\"x\", bounds.x + bounds.width / 2).attr(\"y\", -titleTopMargin).attr(\"class\", cssClass);\n};\nconst parseFontSize = (fontSize) => {\n if (typeof fontSize === \"number\") {\n return [fontSize, fontSize + \"px\"];\n }\n const fontSizeNumber = parseInt(fontSize ?? \"\", 10);\n if (Number.isNaN(fontSizeNumber)) {\n return [void 0, void 0];\n } else if (fontSize === String(fontSizeNumber)) {\n return [fontSizeNumber, fontSize + \"px\"];\n } else {\n return [fontSizeNumber, fontSize];\n }\n};\nfunction cleanAndMerge(defaultData, data) {\n return merge$1({}, defaultData, data);\n}\nconst utils = {\n assignWithDepth: assignWithDepth$1,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n cleanAndMerge,\n detectInit,\n detectDirective,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n runFunc,\n entityDecode,\n insertTitle,\n parseFontSize,\n InitIDGenerator\n};\nconst version = \"10.6.1\";\nconst defaultConfig$1 = Object.freeze(defaultConfig$2);\nlet siteConfig = assignWithDepth$1({}, defaultConfig$1);\nlet configFromInitialize;\nlet directives = [];\nlet currentConfig = assignWithDepth$1({}, defaultConfig$1);\nconst updateCurrentConfig = (siteCfg, _directives) => {\n let cfg = assignWithDepth$1({}, siteCfg);\n let sumOfDirectives = {};\n for (const d of _directives) {\n sanitize(d);\n sumOfDirectives = assignWithDepth$1(sumOfDirectives, d);\n }\n cfg = assignWithDepth$1(cfg, sumOfDirectives);\n if (sumOfDirectives.theme && sumOfDirectives.theme in theme) {\n const tmpConfigFromInitialize = assignWithDepth$1({}, configFromInitialize);\n const themeVariables = assignWithDepth$1(\n tmpConfigFromInitialize.themeVariables || {},\n sumOfDirectives.themeVariables\n );\n if (cfg.theme && cfg.theme in theme) {\n cfg.themeVariables = theme[cfg.theme].getThemeVariables(themeVariables);\n }\n }\n currentConfig = cfg;\n checkConfig(currentConfig);\n return currentConfig;\n};\nconst setSiteConfig = (conf) => {\n siteConfig = assignWithDepth$1({}, defaultConfig$1);\n siteConfig = assignWithDepth$1(siteConfig, conf);\n if (conf.theme && theme[conf.theme]) {\n siteConfig.themeVariables = theme[conf.theme].getThemeVariables(conf.themeVariables);\n }\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\nconst saveConfigFromInitialize = (conf) => {\n configFromInitialize = assignWithDepth$1({}, conf);\n};\nconst updateSiteConfig = (conf) => {\n siteConfig = assignWithDepth$1(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\nconst getSiteConfig = () => {\n return assignWithDepth$1({}, siteConfig);\n};\nconst setConfig$1 = (conf) => {\n checkConfig(conf);\n assignWithDepth$1(currentConfig, conf);\n return getConfig$1();\n};\nconst getConfig$1 = () => {\n return assignWithDepth$1({}, currentConfig);\n};\nconst sanitize = (options) => {\n if (!options) {\n return;\n }\n [\"secure\", ...siteConfig.secure ?? []].forEach((key) => {\n if (Object.hasOwn(options, key)) {\n log$1.debug(`Denied attempt to modify a secure key ${key}`, options[key]);\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (key.startsWith(\"__\")) {\n delete options[key];\n }\n });\n Object.keys(options).forEach((key) => {\n if (typeof options[key] === \"string\" && (options[key].includes(\"<\") || options[key].includes(\">\") || options[key].includes(\"url(data:\"))) {\n delete options[key];\n }\n if (typeof options[key] === \"object\") {\n sanitize(options[key]);\n }\n });\n};\nconst addDirective = (directive) => {\n sanitizeDirective(directive);\n if (directive.fontFamily && (!directive.themeVariables || !directive.themeVariables.fontFamily)) {\n directive.themeVariables = { fontFamily: directive.fontFamily };\n }\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\nconst reset = (config2 = siteConfig) => {\n directives = [];\n updateCurrentConfig(config2, directives);\n};\nconst ConfigWarning = {\n LAZY_LOAD_DEPRECATED: \"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.\"\n};\nconst issuedWarnings = {};\nconst issueWarning = (warning) => {\n if (issuedWarnings[warning]) {\n return;\n }\n log$1.warn(ConfigWarning[warning]);\n issuedWarnings[warning] = true;\n};\nconst checkConfig = (config2) => {\n if (!config2) {\n return;\n }\n if (config2.lazyLoadedDiagrams || config2.loadExternalDiagramsAtStartup) {\n issueWarning(\"LAZY_LOAD_DEPRECATED\");\n }\n};\nconst id$k = \"c4\";\nconst detector$k = (txt) => {\n return /^\\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);\n};\nconst loader$l = async () => {\n const { diagram: diagram2 } = await import(\"./c4Diagram-817c8e44.js\");\n return { id: id$k, diagram: diagram2 };\n};\nconst plugin$i = {\n id: id$k,\n detector: detector$k,\n loader: loader$l\n};\nconst c4 = plugin$i;\nconst id$j = \"flowchart\";\nconst detector$j = (txt, config2) => {\n var _a, _b;\n if (((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\" || ((_b = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _b.defaultRenderer) === \"elk\") {\n return false;\n }\n return /^\\s*graph/.test(txt);\n};\nconst loader$k = async () => {\n const { diagram: diagram2 } = await import(\"./flowDiagram-61eb444c.js\");\n return { id: id$j, diagram: diagram2 };\n};\nconst plugin$h = {\n id: id$j,\n detector: detector$j,\n loader: loader$k\n};\nconst flowchart = plugin$h;\nconst id$i = \"flowchart-v2\";\nconst detector$i = (txt, config2) => {\n var _a, _b, _c;\n if (((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"dagre-d3\" || ((_b = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _b.defaultRenderer) === \"elk\") {\n return false;\n }\n if (/^\\s*graph/.test(txt) && ((_c = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _c.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return /^\\s*flowchart/.test(txt);\n};\nconst loader$j = async () => {\n const { diagram: diagram2 } = await import(\"./flowDiagram-v2-2f8f667a.js\");\n return { id: id$i, diagram: diagram2 };\n};\nconst plugin$g = {\n id: id$i,\n detector: detector$i,\n loader: loader$j\n};\nconst flowchartV2 = plugin$g;\nconst id$h = \"er\";\nconst detector$h = (txt) => {\n return /^\\s*erDiagram/.test(txt);\n};\nconst loader$i = async () => {\n const { diagram: diagram2 } = await import(\"./erDiagram-9cfc3649.js\");\n return { id: id$h, diagram: diagram2 };\n};\nconst plugin$f = {\n id: id$h,\n detector: detector$h,\n loader: loader$i\n};\nconst er = plugin$f;\nconst id$g = \"gitGraph\";\nconst detector$g = (txt) => {\n return /^\\s*gitGraph/.test(txt);\n};\nconst loader$h = async () => {\n const { diagram: diagram2 } = await import(\"./gitGraphDiagram-6b463803.js\");\n return { id: id$g, diagram: diagram2 };\n};\nconst plugin$e = {\n id: id$g,\n detector: detector$g,\n loader: loader$h\n};\nconst git = plugin$e;\nconst id$f = \"gantt\";\nconst detector$f = (txt) => {\n return /^\\s*gantt/.test(txt);\n};\nconst loader$g = async () => {\n const { diagram: diagram2 } = await import(\"./ganttDiagram-db6931fb.js\");\n return { id: id$f, diagram: diagram2 };\n};\nconst plugin$d = {\n id: id$f,\n detector: detector$f,\n loader: loader$g\n};\nconst gantt = plugin$d;\nconst id$e = \"info\";\nconst detector$e = (txt) => {\n return /^\\s*info/.test(txt);\n};\nconst loader$f = async () => {\n const { diagram: diagram2 } = await import(\"./infoDiagram-a336098b.js\");\n return { id: id$e, diagram: diagram2 };\n};\nconst info = {\n id: id$e,\n detector: detector$e,\n loader: loader$f\n};\nconst id$d = \"pie\";\nconst detector$d = (txt) => {\n return /^\\s*pie/.test(txt);\n};\nconst loader$e = async () => {\n const { diagram: diagram2 } = await import(\"./pieDiagram-a5166659.js\");\n return { id: id$d, diagram: diagram2 };\n};\nconst pie = {\n id: id$d,\n detector: detector$d,\n loader: loader$e\n};\nconst id$c = \"quadrantChart\";\nconst detector$c = (txt) => {\n return /^\\s*quadrantChart/.test(txt);\n};\nconst loader$d = async () => {\n const { diagram: diagram2 } = await import(\"./quadrantDiagram-6c355bbc.js\");\n return { id: id$c, diagram: diagram2 };\n};\nconst plugin$c = {\n id: id$c,\n detector: detector$c,\n loader: loader$d\n};\nconst quadrantChart = plugin$c;\nconst id$b = \"xychart\";\nconst detector$b = (txt) => {\n return /^\\s*xychart-beta/.test(txt);\n};\nconst loader$c = async () => {\n const { diagram: diagram2 } = await import(\"./xychartDiagram-f746c04c.js\");\n return { id: id$b, diagram: diagram2 };\n};\nconst plugin$b = {\n id: id$b,\n detector: detector$b,\n loader: loader$c\n};\nconst xychart = plugin$b;\nconst id$a = \"requirement\";\nconst detector$a = (txt) => {\n return /^\\s*requirement(Diagram)?/.test(txt);\n};\nconst loader$b = async () => {\n const { diagram: diagram2 } = await import(\"./requirementDiagram-4038b16c.js\");\n return { id: id$a, diagram: diagram2 };\n};\nconst plugin$a = {\n id: id$a,\n detector: detector$a,\n loader: loader$b\n};\nconst requirement = plugin$a;\nconst id$9 = \"sequence\";\nconst detector$9 = (txt) => {\n return /^\\s*sequenceDiagram/.test(txt);\n};\nconst loader$a = async () => {\n const { diagram: diagram2 } = await import(\"./sequenceDiagram-465a088a.js\");\n return { id: id$9, diagram: diagram2 };\n};\nconst plugin$9 = {\n id: id$9,\n detector: detector$9,\n loader: loader$a\n};\nconst sequence = plugin$9;\nconst id$8 = \"class\";\nconst detector$8 = (txt, config2) => {\n var _a;\n if (((_a = config2 == null ? void 0 : config2.class) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return false;\n }\n return /^\\s*classDiagram/.test(txt);\n};\nconst loader$9 = async () => {\n const { diagram: diagram2 } = await import(\"./classDiagram-48ab76fb.js\");\n return { id: id$8, diagram: diagram2 };\n};\nconst plugin$8 = {\n id: id$8,\n detector: detector$8,\n loader: loader$9\n};\nconst classDiagram = plugin$8;\nconst id$7 = \"classDiagram\";\nconst detector$7 = (txt, config2) => {\n var _a;\n if (/^\\s*classDiagram/.test(txt) && ((_a = config2 == null ? void 0 : config2.class) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return /^\\s*classDiagram-v2/.test(txt);\n};\nconst loader$8 = async () => {\n const { diagram: diagram2 } = await import(\"./classDiagram-v2-8ecb0bfc.js\");\n return { id: id$7, diagram: diagram2 };\n};\nconst plugin$7 = {\n id: id$7,\n detector: detector$7,\n loader: loader$8\n};\nconst classDiagramV2 = plugin$7;\nconst id$6 = \"state\";\nconst detector$6 = (txt, config2) => {\n var _a;\n if (((_a = config2 == null ? void 0 : config2.state) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return false;\n }\n return /^\\s*stateDiagram/.test(txt);\n};\nconst loader$7 = async () => {\n const { diagram: diagram2 } = await import(\"./stateDiagram-b620d43f.js\");\n return { id: id$6, diagram: diagram2 };\n};\nconst plugin$6 = {\n id: id$6,\n detector: detector$6,\n loader: loader$7\n};\nconst state = plugin$6;\nconst id$5 = \"stateDiagram\";\nconst detector$5 = (txt, config2) => {\n var _a;\n if (/^\\s*stateDiagram-v2/.test(txt)) {\n return true;\n }\n if (/^\\s*stateDiagram/.test(txt) && ((_a = config2 == null ? void 0 : config2.state) == null ? void 0 : _a.defaultRenderer) === \"dagre-wrapper\") {\n return true;\n }\n return false;\n};\nconst loader$6 = async () => {\n const { diagram: diagram2 } = await import(\"./stateDiagram-v2-2671c3d1.js\");\n return { id: id$5, diagram: diagram2 };\n};\nconst plugin$5 = {\n id: id$5,\n detector: detector$5,\n loader: loader$6\n};\nconst stateV2 = plugin$5;\nconst id$4 = \"journey\";\nconst detector$4 = (txt) => {\n return /^\\s*journey/.test(txt);\n};\nconst loader$5 = async () => {\n const { diagram: diagram2 } = await import(\"./journeyDiagram-deae3313.js\");\n return { id: id$4, diagram: diagram2 };\n};\nconst plugin$4 = {\n id: id$4,\n detector: detector$4,\n loader: loader$5\n};\nconst journey = plugin$4;\nconst d3Attrs = function(d3Elem, attrs) {\n for (let attr of attrs) {\n d3Elem.attr(attr[0], attr[1]);\n }\n};\nconst calculateSvgSizeAttrs = function(height, width, useMaxWidth) {\n let attrs = /* @__PURE__ */ new Map();\n if (useMaxWidth) {\n attrs.set(\"width\", \"100%\");\n attrs.set(\"style\", `max-width: ${width}px;`);\n } else {\n attrs.set(\"height\", height);\n attrs.set(\"width\", width);\n }\n return attrs;\n};\nconst configureSvgSize = function(svgElem, height, width, useMaxWidth) {\n const attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\nconst setupGraphViewbox$1 = function(graph, svgElem, padding, useMaxWidth) {\n const svgBounds = svgElem.node().getBBox();\n const sWidth = svgBounds.width;\n const sHeight = svgBounds.height;\n log$1.info(`SVG bounds: ${sWidth}x${sHeight}`, svgBounds);\n let width = 0;\n let height = 0;\n log$1.info(`Graph bounds: ${width}x${height}`, graph);\n width = sWidth + padding * 2;\n height = sHeight + padding * 2;\n log$1.info(`Calculated bounds: ${width}x${height}`);\n configureSvgSize(svgElem, height, width, useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${svgBounds.width + 2 * padding} ${svgBounds.height + 2 * padding}`;\n svgElem.attr(\"viewBox\", vBox);\n};\nconst themes = {};\nconst getStyles = (type2, userStyles, options) => {\n let diagramStyles = \"\";\n if (type2 in themes && themes[type2]) {\n diagramStyles = themes[type2](options);\n } else {\n log$1.warn(`No theme found for ${type2}`);\n }\n return ` & {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n fill: ${options.textColor}\n }\n\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${options.errorBkgColor};\n }\n & .error-text {\n fill: ${options.errorTextColor};\n stroke: ${options.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 2px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n }\n & .marker.cross {\n stroke: ${options.lineColor};\n }\n\n & svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n ${diagramStyles}\n\n ${userStyles}\n`;\n};\nconst addStylesForDiagram = (type2, diagramTheme) => {\n if (diagramTheme !== void 0) {\n themes[type2] = diagramTheme;\n }\n};\nconst getStyles$1 = getStyles;\nlet accTitle = \"\";\nlet diagramTitle = \"\";\nlet accDescription = \"\";\nconst sanitizeText$1 = (txt) => sanitizeText$2(txt, getConfig$1());\nconst clear = () => {\n accTitle = \"\";\n accDescription = \"\";\n diagramTitle = \"\";\n};\nconst setAccTitle = (txt) => {\n accTitle = sanitizeText$1(txt).replace(/^\\s+/g, \"\");\n};\nconst getAccTitle = () => accTitle;\nconst setAccDescription = (txt) => {\n accDescription = sanitizeText$1(txt).replace(/\\n\\s+/g, \"\\n\");\n};\nconst getAccDescription = () => accDescription;\nconst setDiagramTitle = (txt) => {\n diagramTitle = sanitizeText$1(txt);\n};\nconst getDiagramTitle = () => diagramTitle;\nconst commonDb = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n clear,\n getAccDescription,\n getAccTitle,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst log = log$1;\nconst setLogLevel = setLogLevel$1;\nconst getConfig = getConfig$1;\nconst setConfig = setConfig$1;\nconst defaultConfig = defaultConfig$1;\nconst sanitizeText = (text) => sanitizeText$2(text, getConfig());\nconst setupGraphViewbox = setupGraphViewbox$1;\nconst getCommonDb = () => {\n return commonDb;\n};\nconst diagrams = {};\nconst registerDiagram = (id2, diagram2, detector2) => {\n var _a;\n if (diagrams[id2]) {\n throw new Error(`Diagram ${id2} already registered.`);\n }\n diagrams[id2] = diagram2;\n if (detector2) {\n addDetector(id2, detector2);\n }\n addStylesForDiagram(id2, diagram2.styles);\n (_a = diagram2.injectUtils) == null ? void 0 : _a.call(\n diagram2,\n log,\n setLogLevel,\n getConfig,\n sanitizeText,\n setupGraphViewbox,\n getCommonDb(),\n () => {\n }\n );\n};\nconst getDiagram = (name) => {\n if (name in diagrams) {\n return diagrams[name];\n }\n throw new DiagramNotFoundError(name);\n};\nclass DiagramNotFoundError extends Error {\n constructor(name) {\n super(`Diagram ${name} not found.`);\n }\n}\nconst selectSvgElement = (id2) => {\n var _a;\n const { securityLevel } = getConfig();\n let root = select(\"body\");\n if (securityLevel === \"sandbox\") {\n const sandboxElement = select(`#i${id2}`);\n const doc = ((_a = sandboxElement.node()) == null ? void 0 : _a.contentDocument) ?? document;\n root = select(doc.body);\n }\n const svg = root.select(`#${id2}`);\n return svg;\n};\nconst draw = (_text, id2, version2) => {\n log$1.debug(\"renering svg for syntax error\\n\");\n const svg = selectSvgElement(id2);\n svg.attr(\"viewBox\", \"0 0 2412 512\");\n configureSvgSize(svg, 100, 512, true);\n const g = svg.append(\"g\");\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z\"\n );\n g.append(\"path\").attr(\"class\", \"error-icon\").attr(\n \"d\",\n \"m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z\"\n );\n g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1440).attr(\"y\", 250).attr(\"font-size\", \"150px\").style(\"text-anchor\", \"middle\").text(\"Syntax error in text\");\n g.append(\"text\").attr(\"class\", \"error-text\").attr(\"x\", 1250).attr(\"y\", 400).attr(\"font-size\", \"100px\").style(\"text-anchor\", \"middle\").text(`mermaid version ${version2}`);\n};\nconst renderer = { draw };\nconst errorRenderer = renderer;\nconst diagram = {\n db: {},\n renderer,\n parser: {\n parser: { yy: {} },\n parse: () => {\n return;\n }\n }\n};\nconst errorDiagram = diagram;\nconst id$3 = \"flowchart-elk\";\nconst detector$3 = (txt, config2) => {\n var _a;\n if (\n // If diagram explicitly states flowchart-elk\n /^\\s*flowchart-elk/.test(txt) || // If a flowchart/graph diagram has their default renderer set to elk\n /^\\s*flowchart|graph/.test(txt) && ((_a = config2 == null ? void 0 : config2.flowchart) == null ? void 0 : _a.defaultRenderer) === \"elk\"\n ) {\n return true;\n }\n return false;\n};\nconst loader$4 = async () => {\n const { diagram: diagram2 } = await import(\"./flowchart-elk-definition-e097735e.js\");\n return { id: id$3, diagram: diagram2 };\n};\nconst plugin$3 = {\n id: id$3,\n detector: detector$3,\n loader: loader$4\n};\nconst flowchartElk = plugin$3;\nconst id$2 = \"timeline\";\nconst detector$2 = (txt) => {\n return /^\\s*timeline/.test(txt);\n};\nconst loader$3 = async () => {\n const { diagram: diagram2 } = await import(\"./timeline-definition-732a2638.js\");\n return { id: id$2, diagram: diagram2 };\n};\nconst plugin$2 = {\n id: id$2,\n detector: detector$2,\n loader: loader$3\n};\nconst timeline = plugin$2;\nconst id$1 = \"mindmap\";\nconst detector$1 = (txt) => {\n return /^\\s*mindmap/.test(txt);\n};\nconst loader$2 = async () => {\n const { diagram: diagram2 } = await import(\"./mindmap-definition-617cf8dd.js\");\n return { id: id$1, diagram: diagram2 };\n};\nconst plugin$1 = {\n id: id$1,\n detector: detector$1,\n loader: loader$2\n};\nconst mindmap = plugin$1;\nconst id = \"sankey\";\nconst detector = (txt) => {\n return /^\\s*sankey-beta/.test(txt);\n};\nconst loader$1 = async () => {\n const { diagram: diagram2 } = await import(\"./sankeyDiagram-6db3d513.js\");\n return { id, diagram: diagram2 };\n};\nconst plugin = {\n id,\n detector,\n loader: loader$1\n};\nconst sankey = plugin;\nlet hasLoadedDiagrams = false;\nconst addDiagrams = () => {\n if (hasLoadedDiagrams) {\n return;\n }\n hasLoadedDiagrams = true;\n registerDiagram(\"error\", errorDiagram, (text) => {\n return text.toLowerCase().trim() === \"error\";\n });\n registerDiagram(\n \"---\",\n // --- diagram type may appear if YAML front-matter is not parsed correctly\n {\n db: {\n clear: () => {\n }\n },\n styles: {},\n // should never be used\n renderer: {\n draw: () => {\n }\n },\n parser: {\n parser: { yy: {} },\n parse: () => {\n throw new Error(\n \"Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks\"\n );\n }\n },\n init: () => null\n // no op\n },\n (text) => {\n return text.toLowerCase().trimStart().startsWith(\"---\");\n }\n );\n registerLazyLoadedDiagrams(\n c4,\n classDiagramV2,\n classDiagram,\n er,\n gantt,\n info,\n pie,\n requirement,\n sequence,\n flowchartElk,\n flowchartV2,\n flowchart,\n mindmap,\n timeline,\n git,\n stateV2,\n state,\n journey,\n quadrantChart,\n sankey,\n xychart\n );\n};\nclass Diagram {\n constructor(text, metadata = {}) {\n this.text = text;\n this.metadata = metadata;\n this.type = \"graph\";\n this.text += \"\\n\";\n const cnf = getConfig$1();\n try {\n this.type = detectType(text, cnf);\n } catch (e) {\n this.type = \"error\";\n this.detectError = e;\n }\n const diagram2 = getDiagram(this.type);\n log$1.debug(\"Type \" + this.type);\n this.db = diagram2.db;\n this.renderer = diagram2.renderer;\n this.parser = diagram2.parser;\n this.parser.parser.yy = this.db;\n this.init = diagram2.init;\n this.parse();\n }\n parse() {\n var _a, _b, _c, _d, _e;\n if (this.detectError) {\n throw this.detectError;\n }\n (_b = (_a = this.db).clear) == null ? void 0 : _b.call(_a);\n const config2 = getConfig$1();\n (_c = this.init) == null ? void 0 : _c.call(this, config2);\n if (this.metadata.title) {\n (_e = (_d = this.db).setDiagramTitle) == null ? void 0 : _e.call(_d, this.metadata.title);\n }\n this.parser.parse(this.text);\n }\n async render(id2, version2) {\n await this.renderer.draw(this.text, id2, version2, this);\n }\n getParser() {\n return this.parser;\n }\n getType() {\n return this.type;\n }\n}\nconst getDiagramFromText = async (text, metadata = {}) => {\n const type2 = detectType(text, getConfig$1());\n try {\n getDiagram(type2);\n } catch (error) {\n const loader2 = getDiagramLoader(type2);\n if (!loader2) {\n throw new UnknownDiagramError(`Diagram ${type2} not found.`);\n }\n const { id: id2, diagram: diagram2 } = await loader2();\n registerDiagram(id2, diagram2);\n }\n return new Diagram(text, metadata);\n};\nlet interactionFunctions = [];\nconst addFunction = (func) => {\n interactionFunctions.push(func);\n};\nconst attachFunctions = () => {\n interactionFunctions.forEach((f) => {\n f();\n });\n interactionFunctions = [];\n};\nconst SVG_ROLE = \"graphics-document document\";\nfunction setA11yDiagramInfo(svg, diagramType) {\n svg.attr(\"role\", SVG_ROLE);\n if (diagramType !== \"\") {\n svg.attr(\"aria-roledescription\", diagramType);\n }\n}\nfunction addSVGa11yTitleDescription(svg, a11yTitle, a11yDesc, baseId) {\n if (svg.insert === void 0) {\n return;\n }\n if (a11yDesc) {\n const descId = `chart-desc-${baseId}`;\n svg.attr(\"aria-describedby\", descId);\n svg.insert(\"desc\", \":first-child\").attr(\"id\", descId).text(a11yDesc);\n }\n if (a11yTitle) {\n const titleId = `chart-title-${baseId}`;\n svg.attr(\"aria-labelledby\", titleId);\n svg.insert(\"title\", \":first-child\").attr(\"id\", titleId).text(a11yTitle);\n }\n}\nconst cleanupComments = (text) => {\n return text.replace(/^\\s*%%(?!{)[^\\n]+\\n?/gm, \"\").trimStart();\n};\n/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */\nfunction isNothing(subject) {\n return typeof subject === \"undefined\" || subject === null;\n}\nfunction isObject(subject) {\n return typeof subject === \"object\" && subject !== null;\n}\nfunction toArray(sequence2) {\n if (Array.isArray(sequence2))\n return sequence2;\n else if (isNothing(sequence2))\n return [];\n return [sequence2];\n}\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n if (source) {\n sourceKeys = Object.keys(source);\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction repeat(string, count) {\n var result = \"\", cycle;\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n return result;\n}\nfunction isNegativeZero(number) {\n return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;\n}\nvar isNothing_1 = isNothing;\nvar isObject_1 = isObject;\nvar toArray_1 = toArray;\nvar repeat_1 = repeat;\nvar isNegativeZero_1 = isNegativeZero;\nvar extend_1 = extend;\nvar common = {\n isNothing: isNothing_1,\n isObject: isObject_1,\n toArray: toArray_1,\n repeat: repeat_1,\n isNegativeZero: isNegativeZero_1,\n extend: extend_1\n};\nfunction formatError(exception2, compact) {\n var where = \"\", message = exception2.reason || \"(unknown reason)\";\n if (!exception2.mark)\n return message;\n if (exception2.mark.name) {\n where += 'in \"' + exception2.mark.name + '\" ';\n }\n where += \"(\" + (exception2.mark.line + 1) + \":\" + (exception2.mark.column + 1) + \")\";\n if (!compact && exception2.mark.snippet) {\n where += \"\\n\\n\" + exception2.mark.snippet;\n }\n return message + \" \" + where;\n}\nfunction YAMLException$1(reason, mark) {\n Error.call(this);\n this.name = \"YAMLException\";\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error().stack || \"\";\n }\n}\nYAMLException$1.prototype = Object.create(Error.prototype);\nYAMLException$1.prototype.constructor = YAMLException$1;\nYAMLException$1.prototype.toString = function toString(compact) {\n return this.name + \": \" + formatError(this, compact);\n};\nvar exception = YAMLException$1;\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = \"\";\n var tail = \"\";\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n if (position - lineStart > maxHalfLength) {\n head = \" ... \";\n lineStart = position - maxHalfLength + head.length;\n }\n if (lineEnd - position > maxHalfLength) {\n tail = \" ...\";\n lineEnd = position + maxHalfLength - tail.length;\n }\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, \"→\") + tail,\n pos: position - lineStart + head.length\n // relative position\n };\n}\nfunction padStart(string, max) {\n return common.repeat(\" \", max - string.length) + string;\n}\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n if (!mark.buffer)\n return null;\n if (!options.maxLength)\n options.maxLength = 79;\n if (typeof options.indent !== \"number\")\n options.indent = 1;\n if (typeof options.linesBefore !== \"number\")\n options.linesBefore = 3;\n if (typeof options.linesAfter !== \"number\")\n options.linesAfter = 2;\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [0];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n while (match = re.exec(mark.buffer)) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n if (foundLineNo < 0)\n foundLineNo = lineStarts.length - 1;\n var result = \"\", i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0)\n break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(\" \", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\" + result;\n }\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(\" \", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n result += common.repeat(\"-\", options.indent + lineNoLength + 3 + line.pos) + \"^\\n\";\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length)\n break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(\" \", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + \" | \" + line.str + \"\\n\";\n }\n return result.replace(/\\n$/, \"\");\n}\nvar snippet = makeSnippet;\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n \"kind\",\n \"multi\",\n \"resolve\",\n \"construct\",\n \"instanceOf\",\n \"predicate\",\n \"represent\",\n \"representName\",\n \"defaultStyle\",\n \"styleAliases\"\n];\nvar YAML_NODE_KINDS = [\n \"scalar\",\n \"sequence\",\n \"mapping\"\n];\nfunction compileStyleAliases(map2) {\n var result = {};\n if (map2 !== null) {\n Object.keys(map2).forEach(function(style) {\n map2[style].forEach(function(alias) {\n result[String(alias)] = style;\n });\n });\n }\n return result;\n}\nfunction Type$1(tag, options) {\n options = options || {};\n Object.keys(options).forEach(function(name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new exception('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n this.options = options;\n this.tag = tag;\n this.kind = options[\"kind\"] || null;\n this.resolve = options[\"resolve\"] || function() {\n return true;\n };\n this.construct = options[\"construct\"] || function(data) {\n return data;\n };\n this.instanceOf = options[\"instanceOf\"] || null;\n this.predicate = options[\"predicate\"] || null;\n this.represent = options[\"represent\"] || null;\n this.representName = options[\"representName\"] || null;\n this.defaultStyle = options[\"defaultStyle\"] || null;\n this.multi = options[\"multi\"] || false;\n this.styleAliases = compileStyleAliases(options[\"styleAliases\"] || null);\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new exception('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\nvar type = Type$1;\nfunction compileList(schema2, name) {\n var result = [];\n schema2[name].forEach(function(currentType) {\n var newIndex = result.length;\n result.forEach(function(previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) {\n newIndex = previousIndex;\n }\n });\n result[newIndex] = currentType;\n });\n return result;\n}\nfunction compileMap() {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n function collectType(type2) {\n if (type2.multi) {\n result.multi[type2.kind].push(type2);\n result.multi[\"fallback\"].push(type2);\n } else {\n result[type2.kind][type2.tag] = result[\"fallback\"][type2.tag] = type2;\n }\n }\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\nfunction Schema$1(definition) {\n return this.extend(definition);\n}\nSchema$1.prototype.extend = function extend2(definition) {\n var implicit = [];\n var explicit = [];\n if (definition instanceof type) {\n explicit.push(definition);\n } else if (Array.isArray(definition)) {\n explicit = explicit.concat(definition);\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n if (definition.implicit)\n implicit = implicit.concat(definition.implicit);\n if (definition.explicit)\n explicit = explicit.concat(definition.explicit);\n } else {\n throw new exception(\"Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })\");\n }\n implicit.forEach(function(type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n }\n if (type$1.loadKind && type$1.loadKind !== \"scalar\") {\n throw new exception(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\");\n }\n if (type$1.multi) {\n throw new exception(\"There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.\");\n }\n });\n explicit.forEach(function(type$1) {\n if (!(type$1 instanceof type)) {\n throw new exception(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");\n }\n });\n var result = Object.create(Schema$1.prototype);\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n result.compiledImplicit = compileList(result, \"implicit\");\n result.compiledExplicit = compileList(result, \"explicit\");\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n return result;\n};\nvar schema = Schema$1;\nvar str = new type(\"tag:yaml.org,2002:str\", {\n kind: \"scalar\",\n construct: function(data) {\n return data !== null ? data : \"\";\n }\n});\nvar seq = new type(\"tag:yaml.org,2002:seq\", {\n kind: \"sequence\",\n construct: function(data) {\n return data !== null ? data : [];\n }\n});\nvar map = new type(\"tag:yaml.org,2002:map\", {\n kind: \"mapping\",\n construct: function(data) {\n return data !== null ? data : {};\n }\n});\nvar failsafe = new schema({\n explicit: [\n str,\n seq,\n map\n ]\n});\nfunction resolveYamlNull(data) {\n if (data === null)\n return true;\n var max = data.length;\n return max === 1 && data === \"~\" || max === 4 && (data === \"null\" || data === \"Null\" || data === \"NULL\");\n}\nfunction constructYamlNull() {\n return null;\n}\nfunction isNull(object) {\n return object === null;\n}\nvar _null = new type(\"tag:yaml.org,2002:null\", {\n kind: \"scalar\",\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function() {\n return \"~\";\n },\n lowercase: function() {\n return \"null\";\n },\n uppercase: function() {\n return \"NULL\";\n },\n camelcase: function() {\n return \"Null\";\n },\n empty: function() {\n return \"\";\n }\n },\n defaultStyle: \"lowercase\"\n});\nfunction resolveYamlBoolean(data) {\n if (data === null)\n return false;\n var max = data.length;\n return max === 4 && (data === \"true\" || data === \"True\" || data === \"TRUE\") || max === 5 && (data === \"false\" || data === \"False\" || data === \"FALSE\");\n}\nfunction constructYamlBoolean(data) {\n return data === \"true\" || data === \"True\" || data === \"TRUE\";\n}\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === \"[object Boolean]\";\n}\nvar bool = new type(\"tag:yaml.org,2002:bool\", {\n kind: \"scalar\",\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function(object) {\n return object ? \"true\" : \"false\";\n },\n uppercase: function(object) {\n return object ? \"TRUE\" : \"FALSE\";\n },\n camelcase: function(object) {\n return object ? \"True\" : \"False\";\n }\n },\n defaultStyle: \"lowercase\"\n});\nfunction isHexCode(c) {\n return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102;\n}\nfunction isOctCode(c) {\n return 48 <= c && c <= 55;\n}\nfunction isDecCode(c) {\n return 48 <= c && c <= 57;\n}\nfunction resolveYamlInteger(data) {\n if (data === null)\n return false;\n var max = data.length, index = 0, hasDigits = false, ch;\n if (!max)\n return false;\n ch = data[index];\n if (ch === \"-\" || ch === \"+\") {\n ch = data[++index];\n }\n if (ch === \"0\") {\n if (index + 1 === max)\n return true;\n ch = data[++index];\n if (ch === \"b\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (ch !== \"0\" && ch !== \"1\")\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n if (ch === \"x\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isHexCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n if (ch === \"o\") {\n index++;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isOctCode(data.charCodeAt(index)))\n return false;\n hasDigits = true;\n }\n return hasDigits && ch !== \"_\";\n }\n }\n if (ch === \"_\")\n return false;\n for (; index < max; index++) {\n ch = data[index];\n if (ch === \"_\")\n continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n if (!hasDigits || ch === \"_\")\n return false;\n return true;\n}\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n if (value.indexOf(\"_\") !== -1) {\n value = value.replace(/_/g, \"\");\n }\n ch = value[0];\n if (ch === \"-\" || ch === \"+\") {\n if (ch === \"-\")\n sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n if (value === \"0\")\n return 0;\n if (ch === \"0\") {\n if (value[1] === \"b\")\n return sign * parseInt(value.slice(2), 2);\n if (value[1] === \"x\")\n return sign * parseInt(value.slice(2), 16);\n if (value[1] === \"o\")\n return sign * parseInt(value.slice(2), 8);\n }\n return sign * parseInt(value, 10);\n}\nfunction isInteger(object) {\n return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 === 0 && !common.isNegativeZero(object));\n}\nvar int = new type(\"tag:yaml.org,2002:int\", {\n kind: \"scalar\",\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function(obj) {\n return obj >= 0 ? \"0b\" + obj.toString(2) : \"-0b\" + obj.toString(2).slice(1);\n },\n octal: function(obj) {\n return obj >= 0 ? \"0o\" + obj.toString(8) : \"-0o\" + obj.toString(8).slice(1);\n },\n decimal: function(obj) {\n return obj.toString(10);\n },\n /* eslint-disable max-len */\n hexadecimal: function(obj) {\n return obj >= 0 ? \"0x\" + obj.toString(16).toUpperCase() : \"-0x\" + obj.toString(16).toUpperCase().slice(1);\n }\n },\n defaultStyle: \"decimal\",\n styleAliases: {\n binary: [2, \"bin\"],\n octal: [8, \"oct\"],\n decimal: [10, \"dec\"],\n hexadecimal: [16, \"hex\"]\n }\n});\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n \"^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))$\"\n);\nfunction resolveYamlFloat(data) {\n if (data === null)\n return false;\n if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === \"_\") {\n return false;\n }\n return true;\n}\nfunction constructYamlFloat(data) {\n var value, sign;\n value = data.replace(/_/g, \"\").toLowerCase();\n sign = value[0] === \"-\" ? -1 : 1;\n if (\"+-\".indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n if (value === \".inf\") {\n return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n } else if (value === \".nan\") {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\nfunction representYamlFloat(object, style) {\n var res;\n if (isNaN(object)) {\n switch (style) {\n case \"lowercase\":\n return \".nan\";\n case \"uppercase\":\n return \".NAN\";\n case \"camelcase\":\n return \".NaN\";\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case \"lowercase\":\n return \".inf\";\n case \"uppercase\":\n return \".INF\";\n case \"camelcase\":\n return \".Inf\";\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case \"lowercase\":\n return \"-.inf\";\n case \"uppercase\":\n return \"-.INF\";\n case \"camelcase\":\n return \"-.Inf\";\n }\n } else if (common.isNegativeZero(object)) {\n return \"-0.0\";\n }\n res = object.toString(10);\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace(\"e\", \".e\") : res;\n}\nfunction isFloat(object) {\n return Object.prototype.toString.call(object) === \"[object Number]\" && (object % 1 !== 0 || common.isNegativeZero(object));\n}\nvar float = new type(\"tag:yaml.org,2002:float\", {\n kind: \"scalar\",\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: \"lowercase\"\n});\nvar json = failsafe.extend({\n implicit: [\n _null,\n bool,\n int,\n float\n ]\n});\nvar core = json;\nvar YAML_DATE_REGEXP = new RegExp(\n \"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"\n);\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n \"^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\\\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\\\.([0-9]*))?(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$\"\n);\nfunction resolveYamlTimestamp(data) {\n if (data === null)\n return false;\n if (YAML_DATE_REGEXP.exec(data) !== null)\n return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null)\n return true;\n return false;\n}\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date;\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null)\n match = YAML_TIMESTAMP_REGEXP.exec(data);\n if (match === null)\n throw new Error(\"Date resolve error\");\n year = +match[1];\n month = +match[2] - 1;\n day = +match[3];\n if (!match[4]) {\n return new Date(Date.UTC(year, month, day));\n }\n hour = +match[4];\n minute = +match[5];\n second = +match[6];\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) {\n fraction += \"0\";\n }\n fraction = +fraction;\n }\n if (match[9]) {\n tz_hour = +match[10];\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 6e4;\n if (match[9] === \"-\")\n delta = -delta;\n }\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n if (delta)\n date.setTime(date.getTime() - delta);\n return date;\n}\nfunction representYamlTimestamp(object) {\n return object.toISOString();\n}\nvar timestamp = new type(\"tag:yaml.org,2002:timestamp\", {\n kind: \"scalar\",\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\nfunction resolveYamlMerge(data) {\n return data === \"<<\" || data === null;\n}\nvar merge = new type(\"tag:yaml.org,2002:merge\", {\n kind: \"scalar\",\n resolve: resolveYamlMerge\n});\nvar BASE64_MAP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r\";\nfunction resolveYamlBinary(data) {\n if (data === null)\n return false;\n var code, idx, bitlen = 0, max = data.length, map2 = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n code = map2.indexOf(data.charAt(idx));\n if (code > 64)\n continue;\n if (code < 0)\n return false;\n bitlen += 6;\n }\n return bitlen % 8 === 0;\n}\nfunction constructYamlBinary(data) {\n var idx, tailbits, input = data.replace(/[\\r\\n=]/g, \"\"), max = input.length, map2 = BASE64_MAP, bits = 0, result = [];\n for (idx = 0; idx < max; idx++) {\n if (idx % 4 === 0 && idx) {\n result.push(bits >> 16 & 255);\n result.push(bits >> 8 & 255);\n result.push(bits & 255);\n }\n bits = bits << 6 | map2.indexOf(input.charAt(idx));\n }\n tailbits = max % 4 * 6;\n if (tailbits === 0) {\n result.push(bits >> 16 & 255);\n result.push(bits >> 8 & 255);\n result.push(bits & 255);\n } else if (tailbits === 18) {\n result.push(bits >> 10 & 255);\n result.push(bits >> 2 & 255);\n } else if (tailbits === 12) {\n result.push(bits >> 4 & 255);\n }\n return new Uint8Array(result);\n}\nfunction representYamlBinary(object) {\n var result = \"\", bits = 0, idx, tail, max = object.length, map2 = BASE64_MAP;\n for (idx = 0; idx < max; idx++) {\n if (idx % 3 === 0 && idx) {\n result += map2[bits >> 18 & 63];\n result += map2[bits >> 12 & 63];\n result += map2[bits >> 6 & 63];\n result += map2[bits & 63];\n }\n bits = (bits << 8) + object[idx];\n }\n tail = max % 3;\n if (tail === 0) {\n result += map2[bits >> 18 & 63];\n result += map2[bits >> 12 & 63];\n result += map2[bits >> 6 & 63];\n result += map2[bits & 63];\n } else if (tail === 2) {\n result += map2[bits >> 10 & 63];\n result += map2[bits >> 4 & 63];\n result += map2[bits << 2 & 63];\n result += map2[64];\n } else if (tail === 1) {\n result += map2[bits >> 2 & 63];\n result += map2[bits << 4 & 63];\n result += map2[64];\n result += map2[64];\n }\n return result;\n}\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === \"[object Uint8Array]\";\n}\nvar binary = new type(\"tag:yaml.org,2002:binary\", {\n kind: \"scalar\",\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\nvar _hasOwnProperty$3 = Object.prototype.hasOwnProperty;\nvar _toString$2 = Object.prototype.toString;\nfunction resolveYamlOmap(data) {\n if (data === null)\n return true;\n var objectKeys = [], index, length, pair, pairKey, pairHasKey, object = data;\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n if (_toString$2.call(pair) !== \"[object Object]\")\n return false;\n for (pairKey in pair) {\n if (_hasOwnProperty$3.call(pair, pairKey)) {\n if (!pairHasKey)\n pairHasKey = true;\n else\n return false;\n }\n }\n if (!pairHasKey)\n return false;\n if (objectKeys.indexOf(pairKey) === -1)\n objectKeys.push(pairKey);\n else\n return false;\n }\n return true;\n}\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\nvar omap = new type(\"tag:yaml.org,2002:omap\", {\n kind: \"sequence\",\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\nvar _toString$1 = Object.prototype.toString;\nfunction resolveYamlPairs(data) {\n if (data === null)\n return true;\n var index, length, pair, keys, result, object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n if (_toString$1.call(pair) !== \"[object Object]\")\n return false;\n keys = Object.keys(pair);\n if (keys.length !== 1)\n return false;\n result[index] = [keys[0], pair[keys[0]]];\n }\n return true;\n}\nfunction constructYamlPairs(data) {\n if (data === null)\n return [];\n var index, length, pair, keys, result, object = data;\n result = new Array(object.length);\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n keys = Object.keys(pair);\n result[index] = [keys[0], pair[keys[0]]];\n }\n return result;\n}\nvar pairs = new type(\"tag:yaml.org,2002:pairs\", {\n kind: \"sequence\",\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\nvar _hasOwnProperty$2 = Object.prototype.hasOwnProperty;\nfunction resolveYamlSet(data) {\n if (data === null)\n return true;\n var key, object = data;\n for (key in object) {\n if (_hasOwnProperty$2.call(object, key)) {\n if (object[key] !== null)\n return false;\n }\n }\n return true;\n}\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\nvar set = new type(\"tag:yaml.org,2002:set\", {\n kind: \"mapping\",\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\nvar _default = core.extend({\n implicit: [\n timestamp,\n merge\n ],\n explicit: [\n binary,\n omap,\n pairs,\n set\n ]\n});\nvar _hasOwnProperty$1 = Object.prototype.hasOwnProperty;\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction is_EOL(c) {\n return c === 10 || c === 13;\n}\nfunction is_WHITE_SPACE(c) {\n return c === 9 || c === 32;\n}\nfunction is_WS_OR_EOL(c) {\n return c === 9 || c === 32 || c === 10 || c === 13;\n}\nfunction is_FLOW_INDICATOR(c) {\n return c === 44 || c === 91 || c === 93 || c === 123 || c === 125;\n}\nfunction fromHexCode(c) {\n var lc;\n if (48 <= c && c <= 57) {\n return c - 48;\n }\n lc = c | 32;\n if (97 <= lc && lc <= 102) {\n return lc - 97 + 10;\n }\n return -1;\n}\nfunction escapedHexLen(c) {\n if (c === 120) {\n return 2;\n }\n if (c === 117) {\n return 4;\n }\n if (c === 85) {\n return 8;\n }\n return 0;\n}\nfunction fromDecimalCode(c) {\n if (48 <= c && c <= 57) {\n return c - 48;\n }\n return -1;\n}\nfunction simpleEscapeSequence(c) {\n return c === 48 ? \"\\0\" : c === 97 ? \"\\x07\" : c === 98 ? \"\\b\" : c === 116 ? \"\t\" : c === 9 ? \"\t\" : c === 110 ? \"\\n\" : c === 118 ? \"\\v\" : c === 102 ? \"\\f\" : c === 114 ? \"\\r\" : c === 101 ? \"\\x1B\" : c === 32 ? \" \" : c === 34 ? '\"' : c === 47 ? \"/\" : c === 92 ? \"\\\\\" : c === 78 ? \"…\" : c === 95 ? \" \" : c === 76 ? \"\\u2028\" : c === 80 ? \"\\u2029\" : \"\";\n}\nfunction charFromCodepoint(c) {\n if (c <= 65535) {\n return String.fromCharCode(c);\n }\n return String.fromCharCode(\n (c - 65536 >> 10) + 55296,\n (c - 65536 & 1023) + 56320\n );\n}\nvar simpleEscapeCheck = new Array(256);\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\nfunction State$1(input, options) {\n this.input = input;\n this.filename = options[\"filename\"] || null;\n this.schema = options[\"schema\"] || _default;\n this.onWarning = options[\"onWarning\"] || null;\n this.legacy = options[\"legacy\"] || false;\n this.json = options[\"json\"] || false;\n this.listener = options[\"listener\"] || null;\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n this.firstTabInLine = -1;\n this.documents = [];\n}\nfunction generateError(state2, message) {\n var mark = {\n name: state2.filename,\n buffer: state2.input.slice(0, -1),\n // omit trailing \\0\n position: state2.position,\n line: state2.line,\n column: state2.position - state2.lineStart\n };\n mark.snippet = snippet(mark);\n return new exception(message, mark);\n}\nfunction throwError(state2, message) {\n throw generateError(state2, message);\n}\nfunction throwWarning(state2, message) {\n if (state2.onWarning) {\n state2.onWarning.call(null, generateError(state2, message));\n }\n}\nvar directiveHandlers = {\n YAML: function handleYamlDirective(state2, name, args) {\n var match, major, minor;\n if (state2.version !== null) {\n throwError(state2, \"duplication of %YAML directive\");\n }\n if (args.length !== 1) {\n throwError(state2, \"YAML directive accepts exactly one argument\");\n }\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n if (match === null) {\n throwError(state2, \"ill-formed argument of the YAML directive\");\n }\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n if (major !== 1) {\n throwError(state2, \"unacceptable YAML version of the document\");\n }\n state2.version = args[0];\n state2.checkLineBreaks = minor < 2;\n if (minor !== 1 && minor !== 2) {\n throwWarning(state2, \"unsupported YAML version of the document\");\n }\n },\n TAG: function handleTagDirective(state2, name, args) {\n var handle, prefix;\n if (args.length !== 2) {\n throwError(state2, \"TAG directive accepts exactly two arguments\");\n }\n handle = args[0];\n prefix = args[1];\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state2, \"ill-formed tag handle (first argument) of the TAG directive\");\n }\n if (_hasOwnProperty$1.call(state2.tagMap, handle)) {\n throwError(state2, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state2, \"ill-formed tag prefix (second argument) of the TAG directive\");\n }\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state2, \"tag prefix is malformed: \" + prefix);\n }\n state2.tagMap[handle] = prefix;\n }\n};\nfunction captureSegment(state2, start, end, checkJson) {\n var _position, _length, _character, _result;\n if (start < end) {\n _result = state2.input.slice(start, end);\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 9 || 32 <= _character && _character <= 1114111)) {\n throwError(state2, \"expected valid JSON character\");\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state2, \"the stream contains non-printable characters\");\n }\n state2.result += _result;\n }\n}\nfunction mergeMappings(state2, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n if (!common.isObject(source)) {\n throwError(state2, \"cannot merge mappings; the provided source object is unacceptable\");\n }\n sourceKeys = Object.keys(source);\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n if (!_hasOwnProperty$1.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\nfunction storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {\n var index, quantity;\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state2, \"nested arrays are not supported inside keys\");\n }\n if (typeof keyNode === \"object\" && _class(keyNode[index]) === \"[object Object]\") {\n keyNode[index] = \"[object Object]\";\n }\n }\n }\n if (typeof keyNode === \"object\" && _class(keyNode) === \"[object Object]\") {\n keyNode = \"[object Object]\";\n }\n keyNode = String(keyNode);\n if (_result === null) {\n _result = {};\n }\n if (keyTag === \"tag:yaml.org,2002:merge\") {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state2, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state2, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state2.json && !_hasOwnProperty$1.call(overridableKeys, keyNode) && _hasOwnProperty$1.call(_result, keyNode)) {\n state2.line = startLine || state2.line;\n state2.lineStart = startLineStart || state2.lineStart;\n state2.position = startPos || state2.position;\n throwError(state2, \"duplicated mapping key\");\n }\n if (keyNode === \"__proto__\") {\n Object.defineProperty(_result, keyNode, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: valueNode\n });\n } else {\n _result[keyNode] = valueNode;\n }\n delete overridableKeys[keyNode];\n }\n return _result;\n}\nfunction readLineBreak(state2) {\n var ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 10) {\n state2.position++;\n } else if (ch === 13) {\n state2.position++;\n if (state2.input.charCodeAt(state2.position) === 10) {\n state2.position++;\n }\n } else {\n throwError(state2, \"a line break is expected\");\n }\n state2.line += 1;\n state2.lineStart = state2.position;\n state2.firstTabInLine = -1;\n}\nfunction skipSeparationSpace(state2, allowComments, checkIndent) {\n var lineBreaks = 0, ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 9 && state2.firstTabInLine === -1) {\n state2.firstTabInLine = state2.position;\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (allowComments && ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 10 && ch !== 13 && ch !== 0);\n }\n if (is_EOL(ch)) {\n readLineBreak(state2);\n ch = state2.input.charCodeAt(state2.position);\n lineBreaks++;\n state2.lineIndent = 0;\n while (ch === 32) {\n state2.lineIndent++;\n ch = state2.input.charCodeAt(++state2.position);\n }\n } else {\n break;\n }\n }\n if (checkIndent !== -1 && lineBreaks !== 0 && state2.lineIndent < checkIndent) {\n throwWarning(state2, \"deficient indentation\");\n }\n return lineBreaks;\n}\nfunction testDocumentSeparator(state2) {\n var _position = state2.position, ch;\n ch = state2.input.charCodeAt(_position);\n if ((ch === 45 || ch === 46) && ch === state2.input.charCodeAt(_position + 1) && ch === state2.input.charCodeAt(_position + 2)) {\n _position += 3;\n ch = state2.input.charCodeAt(_position);\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n return false;\n}\nfunction writeFoldedLines(state2, count) {\n if (count === 1) {\n state2.result += \" \";\n } else if (count > 1) {\n state2.result += common.repeat(\"\\n\", count - 1);\n }\n}\nfunction readPlainScalar(state2, nodeIndent, withinFlowCollection) {\n var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state2.kind, _result = state2.result, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) {\n return false;\n }\n if (ch === 63 || ch === 45) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n captureStart = captureEnd = state2.position;\n hasPendingContent = false;\n while (ch !== 0) {\n if (ch === 58) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n } else if (ch === 35) {\n preceding = state2.input.charCodeAt(state2.position - 1);\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n } else if (is_EOL(ch)) {\n _line = state2.line;\n _lineStart = state2.lineStart;\n _lineIndent = state2.lineIndent;\n skipSeparationSpace(state2, false, -1);\n if (state2.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state2.input.charCodeAt(state2.position);\n continue;\n } else {\n state2.position = captureEnd;\n state2.line = _line;\n state2.lineStart = _lineStart;\n state2.lineIndent = _lineIndent;\n break;\n }\n }\n if (hasPendingContent) {\n captureSegment(state2, captureStart, captureEnd, false);\n writeFoldedLines(state2, state2.line - _line);\n captureStart = captureEnd = state2.position;\n hasPendingContent = false;\n }\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state2.position + 1;\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n captureSegment(state2, captureStart, captureEnd, false);\n if (state2.result) {\n return true;\n }\n state2.kind = _kind;\n state2.result = _result;\n return false;\n}\nfunction readSingleQuotedScalar(state2, nodeIndent) {\n var ch, captureStart, captureEnd;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 39) {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n state2.position++;\n captureStart = captureEnd = state2.position;\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n if (ch === 39) {\n captureSegment(state2, captureStart, state2.position, true);\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 39) {\n captureStart = state2.position;\n state2.position++;\n captureEnd = state2.position;\n } else {\n return true;\n }\n } else if (is_EOL(ch)) {\n captureSegment(state2, captureStart, captureEnd, true);\n writeFoldedLines(state2, skipSeparationSpace(state2, false, nodeIndent));\n captureStart = captureEnd = state2.position;\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n throwError(state2, \"unexpected end of the document within a single quoted scalar\");\n } else {\n state2.position++;\n captureEnd = state2.position;\n }\n }\n throwError(state2, \"unexpected end of the stream within a single quoted scalar\");\n}\nfunction readDoubleQuotedScalar(state2, nodeIndent) {\n var captureStart, captureEnd, hexLength, hexResult, tmp, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 34) {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n state2.position++;\n captureStart = captureEnd = state2.position;\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n if (ch === 34) {\n captureSegment(state2, captureStart, state2.position, true);\n state2.position++;\n return true;\n } else if (ch === 92) {\n captureSegment(state2, captureStart, state2.position, true);\n ch = state2.input.charCodeAt(++state2.position);\n if (is_EOL(ch)) {\n skipSeparationSpace(state2, false, nodeIndent);\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state2.result += simpleEscapeMap[ch];\n state2.position++;\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n for (; hexLength > 0; hexLength--) {\n ch = state2.input.charCodeAt(++state2.position);\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n } else {\n throwError(state2, \"expected hexadecimal character\");\n }\n }\n state2.result += charFromCodepoint(hexResult);\n state2.position++;\n } else {\n throwError(state2, \"unknown escape sequence\");\n }\n captureStart = captureEnd = state2.position;\n } else if (is_EOL(ch)) {\n captureSegment(state2, captureStart, captureEnd, true);\n writeFoldedLines(state2, skipSeparationSpace(state2, false, nodeIndent));\n captureStart = captureEnd = state2.position;\n } else if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n throwError(state2, \"unexpected end of the document within a double quoted scalar\");\n } else {\n state2.position++;\n captureEnd = state2.position;\n }\n }\n throwError(state2, \"unexpected end of the stream within a double quoted scalar\");\n}\nfunction readFlowCollection(state2, nodeIndent) {\n var readNext = true, _line, _lineStart, _pos, _tag = state2.tag, _result, _anchor = state2.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 91) {\n terminator = 93;\n isMapping = false;\n _result = [];\n } else if (ch === 123) {\n terminator = 125;\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(++state2.position);\n while (ch !== 0) {\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if (ch === terminator) {\n state2.position++;\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = isMapping ? \"mapping\" : \"sequence\";\n state2.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state2, \"missed comma between flow collection entries\");\n } else if (ch === 44) {\n throwError(state2, \"expected the node content, but found ','\");\n }\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n if (ch === 63) {\n following = state2.input.charCodeAt(state2.position + 1);\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state2.position++;\n skipSeparationSpace(state2, true, nodeIndent);\n }\n }\n _line = state2.line;\n _lineStart = state2.lineStart;\n _pos = state2.position;\n composeNode(state2, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state2.tag;\n keyNode = state2.result;\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if ((isExplicitPair || state2.line === _line) && ch === 58) {\n isPair = true;\n ch = state2.input.charCodeAt(++state2.position);\n skipSeparationSpace(state2, true, nodeIndent);\n composeNode(state2, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state2.result;\n }\n if (isMapping) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state2, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n skipSeparationSpace(state2, true, nodeIndent);\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 44) {\n readNext = true;\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n readNext = false;\n }\n }\n throwError(state2, \"unexpected end of the stream within a flow collection\");\n}\nfunction readBlockScalar(state2, nodeIndent) {\n var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch === 124) {\n folding = false;\n } else if (ch === 62) {\n folding = true;\n } else {\n return false;\n }\n state2.kind = \"scalar\";\n state2.result = \"\";\n while (ch !== 0) {\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 43 || ch === 45) {\n if (CHOMPING_CLIP === chomping) {\n chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state2, \"repeat of a chomping mode identifier\");\n }\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state2, \"bad explicit indentation width of a block scalar; it cannot be less than one\");\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state2, \"repeat of an indentation width identifier\");\n }\n } else {\n break;\n }\n }\n if (is_WHITE_SPACE(ch)) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (is_WHITE_SPACE(ch));\n if (ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (!is_EOL(ch) && ch !== 0);\n }\n }\n while (ch !== 0) {\n readLineBreak(state2);\n state2.lineIndent = 0;\n ch = state2.input.charCodeAt(state2.position);\n while ((!detectedIndent || state2.lineIndent < textIndent) && ch === 32) {\n state2.lineIndent++;\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (!detectedIndent && state2.lineIndent > textIndent) {\n textIndent = state2.lineIndent;\n }\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n if (state2.lineIndent < textIndent) {\n if (chomping === CHOMPING_KEEP) {\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) {\n state2.result += \"\\n\";\n }\n }\n break;\n }\n if (folding) {\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state2.result += common.repeat(\"\\n\", emptyLines + 1);\n } else if (emptyLines === 0) {\n if (didReadContent) {\n state2.result += \" \";\n }\n } else {\n state2.result += common.repeat(\"\\n\", emptyLines);\n }\n } else {\n state2.result += common.repeat(\"\\n\", didReadContent ? 1 + emptyLines : emptyLines);\n }\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state2.position;\n while (!is_EOL(ch) && ch !== 0) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n captureSegment(state2, captureStart, state2.position, false);\n }\n return true;\n}\nfunction readBlockSequence(state2, nodeIndent) {\n var _line, _tag = state2.tag, _anchor = state2.anchor, _result = [], following, detected = false, ch;\n if (state2.firstTabInLine !== -1)\n return false;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n if (state2.firstTabInLine !== -1) {\n state2.position = state2.firstTabInLine;\n throwError(state2, \"tab characters must not be used in indentation\");\n }\n if (ch !== 45) {\n break;\n }\n following = state2.input.charCodeAt(state2.position + 1);\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n detected = true;\n state2.position++;\n if (skipSeparationSpace(state2, true, -1)) {\n if (state2.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state2.input.charCodeAt(state2.position);\n continue;\n }\n }\n _line = state2.line;\n composeNode(state2, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state2.result);\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n if ((state2.line === _line || state2.lineIndent > nodeIndent) && ch !== 0) {\n throwError(state2, \"bad indentation of a sequence entry\");\n } else if (state2.lineIndent < nodeIndent) {\n break;\n }\n }\n if (detected) {\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = \"sequence\";\n state2.result = _result;\n return true;\n }\n return false;\n}\nfunction readBlockMapping(state2, nodeIndent, flowIndent) {\n var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state2.tag, _anchor = state2.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch;\n if (state2.firstTabInLine !== -1)\n return false;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = _result;\n }\n ch = state2.input.charCodeAt(state2.position);\n while (ch !== 0) {\n if (!atExplicitKey && state2.firstTabInLine !== -1) {\n state2.position = state2.firstTabInLine;\n throwError(state2, \"tab characters must not be used in indentation\");\n }\n following = state2.input.charCodeAt(state2.position + 1);\n _line = state2.line;\n if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) {\n if (ch === 63) {\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n } else if (atExplicitKey) {\n atExplicitKey = false;\n allowCompact = true;\n } else {\n throwError(state2, \"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\");\n }\n state2.position += 1;\n ch = following;\n } else {\n _keyLine = state2.line;\n _keyLineStart = state2.lineStart;\n _keyPos = state2.position;\n if (!composeNode(state2, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n break;\n }\n if (state2.line === _line) {\n ch = state2.input.charCodeAt(state2.position);\n while (is_WHITE_SPACE(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (ch === 58) {\n ch = state2.input.charCodeAt(++state2.position);\n if (!is_WS_OR_EOL(ch)) {\n throwError(state2, \"a whitespace character is expected after the key-value separator within a block mapping\");\n }\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state2.tag;\n keyNode = state2.result;\n } else if (detected) {\n throwError(state2, \"can not read an implicit mapping pair; a colon is missed\");\n } else {\n state2.tag = _tag;\n state2.anchor = _anchor;\n return true;\n }\n } else if (detected) {\n throwError(state2, \"can not read a block mapping entry; a multiline key may not be an implicit key\");\n } else {\n state2.tag = _tag;\n state2.anchor = _anchor;\n return true;\n }\n }\n if (state2.line === _line || state2.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state2.line;\n _keyLineStart = state2.lineStart;\n _keyPos = state2.position;\n }\n if (composeNode(state2, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state2.result;\n } else {\n valueNode = state2.result;\n }\n }\n if (!atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n }\n if ((state2.line === _line || state2.lineIndent > nodeIndent) && ch !== 0) {\n throwError(state2, \"bad indentation of a mapping entry\");\n } else if (state2.lineIndent < nodeIndent) {\n break;\n }\n }\n if (atExplicitKey) {\n storeMappingPair(state2, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n if (detected) {\n state2.tag = _tag;\n state2.anchor = _anchor;\n state2.kind = \"mapping\";\n state2.result = _result;\n }\n return detected;\n}\nfunction readTagProperty(state2) {\n var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 33)\n return false;\n if (state2.tag !== null) {\n throwError(state2, \"duplication of a tag property\");\n }\n ch = state2.input.charCodeAt(++state2.position);\n if (ch === 60) {\n isVerbatim = true;\n ch = state2.input.charCodeAt(++state2.position);\n } else if (ch === 33) {\n isNamed = true;\n tagHandle = \"!!\";\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n tagHandle = \"!\";\n }\n _position = state2.position;\n if (isVerbatim) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 0 && ch !== 62);\n if (state2.position < state2.length) {\n tagName = state2.input.slice(_position, state2.position);\n ch = state2.input.charCodeAt(++state2.position);\n } else {\n throwError(state2, \"unexpected end of the stream within a verbatim tag\");\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n if (ch === 33) {\n if (!isNamed) {\n tagHandle = state2.input.slice(_position - 1, state2.position + 1);\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state2, \"named tag handle cannot contain such characters\");\n }\n isNamed = true;\n _position = state2.position + 1;\n } else {\n throwError(state2, \"tag suffix cannot contain exclamation marks\");\n }\n }\n ch = state2.input.charCodeAt(++state2.position);\n }\n tagName = state2.input.slice(_position, state2.position);\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state2, \"tag suffix cannot contain flow indicator characters\");\n }\n }\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state2, \"tag name cannot contain such characters: \" + tagName);\n }\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state2, \"tag name is malformed: \" + tagName);\n }\n if (isVerbatim) {\n state2.tag = tagName;\n } else if (_hasOwnProperty$1.call(state2.tagMap, tagHandle)) {\n state2.tag = state2.tagMap[tagHandle] + tagName;\n } else if (tagHandle === \"!\") {\n state2.tag = \"!\" + tagName;\n } else if (tagHandle === \"!!\") {\n state2.tag = \"tag:yaml.org,2002:\" + tagName;\n } else {\n throwError(state2, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n return true;\n}\nfunction readAnchorProperty(state2) {\n var _position, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 38)\n return false;\n if (state2.anchor !== null) {\n throwError(state2, \"duplication of an anchor property\");\n }\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (state2.position === _position) {\n throwError(state2, \"name of an anchor node must contain at least one character\");\n }\n state2.anchor = state2.input.slice(_position, state2.position);\n return true;\n}\nfunction readAlias(state2) {\n var _position, alias, ch;\n ch = state2.input.charCodeAt(state2.position);\n if (ch !== 42)\n return false;\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (state2.position === _position) {\n throwError(state2, \"name of an alias node must contain at least one character\");\n }\n alias = state2.input.slice(_position, state2.position);\n if (!_hasOwnProperty$1.call(state2.anchorMap, alias)) {\n throwError(state2, 'unidentified alias \"' + alias + '\"');\n }\n state2.result = state2.anchorMap[alias];\n skipSeparationSpace(state2, true, -1);\n return true;\n}\nfunction composeNode(state2, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type2, flowIndent, blockIndent;\n if (state2.listener !== null) {\n state2.listener(\"open\", state2);\n }\n state2.tag = null;\n state2.anchor = null;\n state2.kind = null;\n state2.result = null;\n allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;\n if (allowToSeek) {\n if (skipSeparationSpace(state2, true, -1)) {\n atNewLine = true;\n if (state2.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state2.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state2.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n if (indentStatus === 1) {\n while (readTagProperty(state2) || readAnchorProperty(state2)) {\n if (skipSeparationSpace(state2, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n if (state2.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state2.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state2.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n blockIndent = state2.position - state2.lineStart;\n if (indentStatus === 1) {\n if (allowBlockCollections && (readBlockSequence(state2, blockIndent) || readBlockMapping(state2, blockIndent, flowIndent)) || readFlowCollection(state2, flowIndent)) {\n hasContent = true;\n } else {\n if (allowBlockScalars && readBlockScalar(state2, flowIndent) || readSingleQuotedScalar(state2, flowIndent) || readDoubleQuotedScalar(state2, flowIndent)) {\n hasContent = true;\n } else if (readAlias(state2)) {\n hasContent = true;\n if (state2.tag !== null || state2.anchor !== null) {\n throwError(state2, \"alias node should not have any properties\");\n }\n } else if (readPlainScalar(state2, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n if (state2.tag === null) {\n state2.tag = \"?\";\n }\n }\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n }\n } else if (indentStatus === 0) {\n hasContent = allowBlockCollections && readBlockSequence(state2, blockIndent);\n }\n }\n if (state2.tag === null) {\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n } else if (state2.tag === \"?\") {\n if (state2.result !== null && state2.kind !== \"scalar\") {\n throwError(state2, 'unacceptable node kind for ! tag; it should be \"scalar\", not \"' + state2.kind + '\"');\n }\n for (typeIndex = 0, typeQuantity = state2.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type2 = state2.implicitTypes[typeIndex];\n if (type2.resolve(state2.result)) {\n state2.result = type2.construct(state2.result);\n state2.tag = type2.tag;\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n break;\n }\n }\n } else if (state2.tag !== \"!\") {\n if (_hasOwnProperty$1.call(state2.typeMap[state2.kind || \"fallback\"], state2.tag)) {\n type2 = state2.typeMap[state2.kind || \"fallback\"][state2.tag];\n } else {\n type2 = null;\n typeList = state2.typeMap.multi[state2.kind || \"fallback\"];\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state2.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type2 = typeList[typeIndex];\n break;\n }\n }\n }\n if (!type2) {\n throwError(state2, \"unknown tag !<\" + state2.tag + \">\");\n }\n if (state2.result !== null && type2.kind !== state2.kind) {\n throwError(state2, \"unacceptable node kind for !<\" + state2.tag + '> tag; it should be \"' + type2.kind + '\", not \"' + state2.kind + '\"');\n }\n if (!type2.resolve(state2.result, state2.tag)) {\n throwError(state2, \"cannot resolve a node with !<\" + state2.tag + \"> explicit tag\");\n } else {\n state2.result = type2.construct(state2.result, state2.tag);\n if (state2.anchor !== null) {\n state2.anchorMap[state2.anchor] = state2.result;\n }\n }\n }\n if (state2.listener !== null) {\n state2.listener(\"close\", state2);\n }\n return state2.tag !== null || state2.anchor !== null || hasContent;\n}\nfunction readDocument(state2) {\n var documentStart = state2.position, _position, directiveName, directiveArgs, hasDirectives = false, ch;\n state2.version = null;\n state2.checkLineBreaks = state2.legacy;\n state2.tagMap = /* @__PURE__ */ Object.create(null);\n state2.anchorMap = /* @__PURE__ */ Object.create(null);\n while ((ch = state2.input.charCodeAt(state2.position)) !== 0) {\n skipSeparationSpace(state2, true, -1);\n ch = state2.input.charCodeAt(state2.position);\n if (state2.lineIndent > 0 || ch !== 37) {\n break;\n }\n hasDirectives = true;\n ch = state2.input.charCodeAt(++state2.position);\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n directiveName = state2.input.slice(_position, state2.position);\n directiveArgs = [];\n if (directiveName.length < 1) {\n throwError(state2, \"directive name must not be less than one character in length\");\n }\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n if (ch === 35) {\n do {\n ch = state2.input.charCodeAt(++state2.position);\n } while (ch !== 0 && !is_EOL(ch));\n break;\n }\n if (is_EOL(ch))\n break;\n _position = state2.position;\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state2.input.charCodeAt(++state2.position);\n }\n directiveArgs.push(state2.input.slice(_position, state2.position));\n }\n if (ch !== 0)\n readLineBreak(state2);\n if (_hasOwnProperty$1.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state2, directiveName, directiveArgs);\n } else {\n throwWarning(state2, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n skipSeparationSpace(state2, true, -1);\n if (state2.lineIndent === 0 && state2.input.charCodeAt(state2.position) === 45 && state2.input.charCodeAt(state2.position + 1) === 45 && state2.input.charCodeAt(state2.position + 2) === 45) {\n state2.position += 3;\n skipSeparationSpace(state2, true, -1);\n } else if (hasDirectives) {\n throwError(state2, \"directives end mark is expected\");\n }\n composeNode(state2, state2.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state2, true, -1);\n if (state2.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state2.input.slice(documentStart, state2.position))) {\n throwWarning(state2, \"non-ASCII line breaks are interpreted as content\");\n }\n state2.documents.push(state2.result);\n if (state2.position === state2.lineStart && testDocumentSeparator(state2)) {\n if (state2.input.charCodeAt(state2.position) === 46) {\n state2.position += 3;\n skipSeparationSpace(state2, true, -1);\n }\n return;\n }\n if (state2.position < state2.length - 1) {\n throwError(state2, \"end of the stream or a document separator is expected\");\n } else {\n return;\n }\n}\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n if (input.length !== 0) {\n if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) {\n input += \"\\n\";\n }\n if (input.charCodeAt(0) === 65279) {\n input = input.slice(1);\n }\n }\n var state2 = new State$1(input, options);\n var nullpos = input.indexOf(\"\\0\");\n if (nullpos !== -1) {\n state2.position = nullpos;\n throwError(state2, \"null byte is not allowed in input\");\n }\n state2.input += \"\\0\";\n while (state2.input.charCodeAt(state2.position) === 32) {\n state2.lineIndent += 1;\n state2.position += 1;\n }\n while (state2.position < state2.length - 1) {\n readDocument(state2);\n }\n return state2.documents;\n}\nfunction loadAll$1(input, iterator, options) {\n if (iterator !== null && typeof iterator === \"object\" && typeof options === \"undefined\") {\n options = iterator;\n iterator = null;\n }\n var documents = loadDocuments(input, options);\n if (typeof iterator !== \"function\") {\n return documents;\n }\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\nfunction load$1(input, options) {\n var documents = loadDocuments(input, options);\n if (documents.length === 0) {\n return void 0;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new exception(\"expected a single document in the stream, but found more\");\n}\nvar loadAll_1 = loadAll$1;\nvar load_1 = load$1;\nvar loader = {\n loadAll: loadAll_1,\n load: load_1\n};\nvar JSON_SCHEMA = json;\nvar load = loader.load;\nfunction extractFrontMatter(text) {\n const matches = text.match(frontMatterRegex);\n if (!matches) {\n return {\n text,\n metadata: {}\n };\n }\n let parsed = load(matches[1], {\n // To support config, we need JSON schema.\n // https://www.yaml.org/spec/1.2/spec.html#id2803231\n schema: JSON_SCHEMA\n }) ?? {};\n parsed = typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : {};\n const metadata = {};\n if (parsed.displayMode) {\n metadata.displayMode = parsed.displayMode.toString();\n }\n if (parsed.title) {\n metadata.title = parsed.title.toString();\n }\n if (parsed.config) {\n metadata.config = parsed.config;\n }\n return {\n text: text.slice(matches[0].length),\n metadata\n };\n}\nconst cleanupText = (code) => {\n return code.replace(/\\r\\n?/g, \"\\n\").replace(\n /<(\\w+)([^>]*)>/g,\n (match, tag, attributes) => \"<\" + tag + attributes.replace(/=\"([^\"]*)\"/g, \"='$1'\") + \">\"\n );\n};\nconst processFrontmatter = (code) => {\n const { text, metadata } = extractFrontMatter(code);\n const { displayMode, title, config: config2 = {} } = metadata;\n if (displayMode) {\n if (!config2.gantt) {\n config2.gantt = {};\n }\n config2.gantt.displayMode = displayMode;\n }\n return { title, config: config2, text };\n};\nconst processDirectives = (code) => {\n const initDirective = utils.detectInit(code) ?? {};\n const wrapDirectives = utils.detectDirective(code, \"wrap\");\n if (Array.isArray(wrapDirectives)) {\n initDirective.wrap = wrapDirectives.some(({ type: type2 }) => {\n });\n } else if ((wrapDirectives == null ? void 0 : wrapDirectives.type) === \"wrap\") {\n initDirective.wrap = true;\n }\n return {\n text: removeDirectives(code),\n directive: initDirective\n };\n};\nfunction preprocessDiagram(code) {\n const cleanedCode = cleanupText(code);\n const frontMatterResult = processFrontmatter(cleanedCode);\n const directiveResult = processDirectives(frontMatterResult.text);\n const config2 = cleanAndMerge(frontMatterResult.config, directiveResult.directive);\n code = cleanupComments(directiveResult.text);\n return {\n code,\n title: frontMatterResult.title,\n config: config2\n };\n}\nconst MAX_TEXTLENGTH = 5e4;\nconst MAX_TEXTLENGTH_EXCEEDED_MSG = \"graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa\";\nconst SECURITY_LVL_SANDBOX = \"sandbox\";\nconst SECURITY_LVL_LOOSE = \"loose\";\nconst XMLNS_SVG_STD = \"http://www.w3.org/2000/svg\";\nconst XMLNS_XLINK_STD = \"http://www.w3.org/1999/xlink\";\nconst XMLNS_XHTML_STD = \"http://www.w3.org/1999/xhtml\";\nconst IFRAME_WIDTH = \"100%\";\nconst IFRAME_HEIGHT = \"100%\";\nconst IFRAME_STYLES = \"border:0;margin:0;\";\nconst IFRAME_BODY_STYLE = \"margin:0\";\nconst IFRAME_SANDBOX_OPTS = \"allow-top-navigation-by-user-activation allow-popups\";\nconst IFRAME_NOT_SUPPORTED_MSG = 'The \"iframe\" tag is not supported by your browser.';\nconst DOMPURIFY_TAGS = [\"foreignobject\"];\nconst DOMPURIFY_ATTR = [\"dominant-baseline\"];\nfunction processAndSetConfigs(text) {\n const processed = preprocessDiagram(text);\n reset();\n addDirective(processed.config ?? {});\n return processed;\n}\nasync function parse$1(text, parseOptions) {\n addDiagrams();\n text = processAndSetConfigs(text).code;\n try {\n await getDiagramFromText(text);\n } catch (error) {\n if (parseOptions == null ? void 0 : parseOptions.suppressErrors) {\n return false;\n }\n throw error;\n }\n return true;\n}\nconst encodeEntities = function(text) {\n let txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return \"fl°°\" + innerTxt + \"¶ß\";\n } else {\n return \"fl°\" + innerTxt + \"¶ß\";\n }\n });\n return txt;\n};\nconst decodeEntities = function(text) {\n return text.replace(/fl°°/g, \"&#\").replace(/fl°/g, \"&\").replace(/¶ß/g, \";\");\n};\nconst cssImportantStyles = (cssClass, element, cssClasses = []) => {\n return `\n.${cssClass} ${element} { ${cssClasses.join(\" !important; \")} !important; }`;\n};\nconst createCssStyles = (config2, classDefs = {}) => {\n var _a;\n let cssStyles = \"\";\n if (config2.themeCSS !== void 0) {\n cssStyles += `\n${config2.themeCSS}`;\n }\n if (config2.fontFamily !== void 0) {\n cssStyles += `\n:root { --mermaid-font-family: ${config2.fontFamily}}`;\n }\n if (config2.altFontFamily !== void 0) {\n cssStyles += `\n:root { --mermaid-alt-font-family: ${config2.altFontFamily}}`;\n }\n if (!isEmpty(classDefs)) {\n const htmlLabels = config2.htmlLabels || ((_a = config2.flowchart) == null ? void 0 : _a.htmlLabels);\n const cssHtmlElements = [\"> *\", \"span\"];\n const cssShapeElements = [\"rect\", \"polygon\", \"ellipse\", \"circle\", \"path\"];\n const cssElements = htmlLabels ? cssHtmlElements : cssShapeElements;\n for (const classId in classDefs) {\n const styleClassDef = classDefs[classId];\n if (!isEmpty(styleClassDef.styles)) {\n cssElements.forEach((cssElement) => {\n cssStyles += cssImportantStyles(styleClassDef.id, cssElement, styleClassDef.styles);\n });\n }\n if (!isEmpty(styleClassDef.textStyles)) {\n cssStyles += cssImportantStyles(styleClassDef.id, \"tspan\", styleClassDef.textStyles);\n }\n }\n }\n return cssStyles;\n};\nconst createUserStyles = (config2, graphType, classDefs, svgId) => {\n const userCSSstyles = createCssStyles(config2, classDefs);\n const allStyles = getStyles$1(graphType, userCSSstyles, config2.themeVariables);\n return serialize(compile(`${svgId}{${allStyles}}`), stringify);\n};\nconst cleanUpSvgCode = (svgCode = \"\", inSandboxMode, useArrowMarkerUrls) => {\n let cleanedUpSvg = svgCode;\n if (!useArrowMarkerUrls && !inSandboxMode) {\n cleanedUpSvg = cleanedUpSvg.replace(\n /marker-end=\"url\\([\\d+./:=?A-Za-z-]*?#/g,\n 'marker-end=\"url(#'\n );\n }\n cleanedUpSvg = decodeEntities(cleanedUpSvg);\n cleanedUpSvg = cleanedUpSvg.replace(/
/g, \"
\");\n return cleanedUpSvg;\n};\nconst putIntoIFrame = (svgCode = \"\", svgElement) => {\n var _a, _b;\n const height = ((_b = (_a = svgElement == null ? void 0 : svgElement.viewBox) == null ? void 0 : _a.baseVal) == null ? void 0 : _b.height) ? svgElement.viewBox.baseVal.height + \"px\" : IFRAME_HEIGHT;\n const base64encodedSrc = btoa('' + svgCode + \"\");\n return ``;\n};\nconst appendDivSvgG = (parentRoot, id2, enclosingDivId, divStyle, svgXlink) => {\n const enclosingDiv = parentRoot.append(\"div\");\n enclosingDiv.attr(\"id\", enclosingDivId);\n if (divStyle) {\n enclosingDiv.attr(\"style\", divStyle);\n }\n const svgNode = enclosingDiv.append(\"svg\").attr(\"id\", id2).attr(\"width\", \"100%\").attr(\"xmlns\", XMLNS_SVG_STD);\n if (svgXlink) {\n svgNode.attr(\"xmlns:xlink\", svgXlink);\n }\n svgNode.append(\"g\");\n return parentRoot;\n};\nfunction sandboxedIframe(parentNode, iFrameId) {\n return parentNode.append(\"iframe\").attr(\"id\", iFrameId).attr(\"style\", \"width: 100%; height: 100%;\").attr(\"sandbox\", \"\");\n}\nconst removeExistingElements = (doc, id2, divId, iFrameId) => {\n var _a, _b, _c;\n (_a = doc.getElementById(id2)) == null ? void 0 : _a.remove();\n (_b = doc.getElementById(divId)) == null ? void 0 : _b.remove();\n (_c = doc.getElementById(iFrameId)) == null ? void 0 : _c.remove();\n};\nconst render$1 = async function(id2, text, svgContainingElement) {\n var _a, _b, _c, _d, _e, _f;\n addDiagrams();\n const processed = processAndSetConfigs(text);\n text = processed.code;\n const config2 = getConfig$1();\n log$1.debug(config2);\n if (text.length > ((config2 == null ? void 0 : config2.maxTextSize) ?? MAX_TEXTLENGTH)) {\n text = MAX_TEXTLENGTH_EXCEEDED_MSG;\n }\n const idSelector = \"#\" + id2;\n const iFrameID = \"i\" + id2;\n const iFrameID_selector = \"#\" + iFrameID;\n const enclosingDivID = \"d\" + id2;\n const enclosingDivID_selector = \"#\" + enclosingDivID;\n let root = select(\"body\");\n const isSandboxed = config2.securityLevel === SECURITY_LVL_SANDBOX;\n const isLooseSecurityLevel = config2.securityLevel === SECURITY_LVL_LOOSE;\n const fontFamily = config2.fontFamily;\n if (svgContainingElement !== void 0) {\n if (svgContainingElement) {\n svgContainingElement.innerHTML = \"\";\n }\n if (isSandboxed) {\n const iframe = sandboxedIframe(select(svgContainingElement), iFrameID);\n root = select(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = select(svgContainingElement);\n }\n appendDivSvgG(root, id2, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD);\n } else {\n removeExistingElements(document, id2, enclosingDivID, iFrameID);\n if (isSandboxed) {\n const iframe = sandboxedIframe(select(\"body\"), iFrameID);\n root = select(iframe.nodes()[0].contentDocument.body);\n root.node().style.margin = 0;\n } else {\n root = select(\"body\");\n }\n appendDivSvgG(root, id2, enclosingDivID);\n }\n text = encodeEntities(text);\n let diag;\n let parseEncounteredException;\n try {\n diag = await getDiagramFromText(text, { title: processed.title });\n } catch (error) {\n diag = new Diagram(\"error\");\n parseEncounteredException = error;\n }\n const element = root.select(enclosingDivID_selector).node();\n const diagramType = diag.type;\n const svg = element.firstChild;\n const firstChild = svg.firstChild;\n const diagramClassDefs = (_b = (_a = diag.renderer).getClasses) == null ? void 0 : _b.call(_a, text, diag);\n const rules = createUserStyles(config2, diagramType, diagramClassDefs, idSelector);\n const style1 = document.createElement(\"style\");\n style1.innerHTML = rules;\n svg.insertBefore(style1, firstChild);\n try {\n await diag.renderer.draw(text, id2, version, diag);\n } catch (e) {\n errorRenderer.draw(text, id2, version);\n throw e;\n }\n const svgNode = root.select(`${enclosingDivID_selector} svg`);\n const a11yTitle = (_d = (_c = diag.db).getAccTitle) == null ? void 0 : _d.call(_c);\n const a11yDescr = (_f = (_e = diag.db).getAccDescription) == null ? void 0 : _f.call(_e);\n addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr);\n root.select(`[id=\"${id2}\"]`).selectAll(\"foreignobject > *\").attr(\"xmlns\", XMLNS_XHTML_STD);\n let svgCode = root.select(enclosingDivID_selector).node().innerHTML;\n log$1.debug(\"config.arrowMarkerAbsolute\", config2.arrowMarkerAbsolute);\n svgCode = cleanUpSvgCode(svgCode, isSandboxed, evaluate(config2.arrowMarkerAbsolute));\n if (isSandboxed) {\n const svgEl = root.select(enclosingDivID_selector + \" svg\").node();\n svgCode = putIntoIFrame(svgCode, svgEl);\n } else if (!isLooseSecurityLevel) {\n svgCode = DOMPurify.sanitize(svgCode, {\n ADD_TAGS: DOMPURIFY_TAGS,\n ADD_ATTR: DOMPURIFY_ATTR\n });\n }\n attachFunctions();\n if (parseEncounteredException) {\n throw parseEncounteredException;\n }\n const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector;\n const node = select(tmpElementSelector).node();\n if (node && \"remove\" in node) {\n node.remove();\n }\n return {\n svg: svgCode,\n bindFunctions: diag.db.bindFunctions\n };\n};\nfunction initialize$1(options = {}) {\n var _a;\n if ((options == null ? void 0 : options.fontFamily) && !((_a = options.themeVariables) == null ? void 0 : _a.fontFamily)) {\n if (!options.themeVariables) {\n options.themeVariables = {};\n }\n options.themeVariables.fontFamily = options.fontFamily;\n }\n saveConfigFromInitialize(options);\n if ((options == null ? void 0 : options.theme) && options.theme in theme) {\n options.themeVariables = theme[options.theme].getThemeVariables(\n options.themeVariables\n );\n } else if (options) {\n options.themeVariables = theme.default.getThemeVariables(options.themeVariables);\n }\n const config2 = typeof options === \"object\" ? setSiteConfig(options) : getSiteConfig();\n setLogLevel$1(config2.logLevel);\n addDiagrams();\n}\nfunction addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr) {\n setA11yDiagramInfo(svgNode, diagramType);\n addSVGa11yTitleDescription(svgNode, a11yTitle, a11yDescr, svgNode.attr(\"id\"));\n}\nconst mermaidAPI = Object.freeze({\n render: render$1,\n parse: parse$1,\n getDiagramFromText,\n initialize: initialize$1,\n getConfig: getConfig$1,\n setConfig: setConfig$1,\n getSiteConfig,\n updateSiteConfig,\n reset: () => {\n reset();\n },\n globalReset: () => {\n reset(defaultConfig$1);\n },\n defaultConfig: defaultConfig$1\n});\nsetLogLevel$1(getConfig$1().logLevel);\nreset(getConfig$1());\nconst loadRegisteredDiagrams = async () => {\n log$1.debug(`Loading registered diagrams`);\n const results = await Promise.allSettled(\n Object.entries(detectors).map(async ([key, { detector: detector2, loader: loader2 }]) => {\n if (loader2) {\n try {\n getDiagram(key);\n } catch (error) {\n try {\n const { diagram: diagram2, id: id2 } = await loader2();\n registerDiagram(id2, diagram2, detector2);\n } catch (err) {\n log$1.error(`Failed to load external diagram with key ${key}. Removing from detectors.`);\n delete detectors[key];\n throw err;\n }\n }\n }\n })\n );\n const failed = results.filter((result) => result.status === \"rejected\");\n if (failed.length > 0) {\n log$1.error(`Failed to load ${failed.length} external diagrams`);\n for (const res of failed) {\n log$1.error(res);\n }\n throw new Error(`Failed to load ${failed.length} external diagrams`);\n }\n};\nconst handleError = (error, errors, parseError) => {\n log$1.warn(error);\n if (isDetailedError(error)) {\n if (parseError) {\n parseError(error.str, error.hash);\n }\n errors.push({ ...error, message: error.str, error });\n } else {\n if (parseError) {\n parseError(error);\n }\n if (error instanceof Error) {\n errors.push({\n str: error.message,\n message: error.message,\n hash: error.name,\n error\n });\n }\n }\n};\nconst run = async function(options = {\n querySelector: \".mermaid\"\n}) {\n try {\n await runThrowsErrors(options);\n } catch (e) {\n if (isDetailedError(e)) {\n log$1.error(e.str);\n }\n if (mermaid.parseError) {\n mermaid.parseError(e);\n }\n if (!options.suppressErrors) {\n log$1.error(\"Use the suppressErrors option to suppress these errors\");\n throw e;\n }\n }\n};\nconst runThrowsErrors = async function({ postRenderCallback, querySelector, nodes } = {\n querySelector: \".mermaid\"\n}) {\n const conf = mermaidAPI.getConfig();\n log$1.debug(`${!postRenderCallback ? \"No \" : \"\"}Callback function found`);\n let nodesToProcess;\n if (nodes) {\n nodesToProcess = nodes;\n } else if (querySelector) {\n nodesToProcess = document.querySelectorAll(querySelector);\n } else {\n throw new Error(\"Nodes and querySelector are both undefined\");\n }\n log$1.debug(`Found ${nodesToProcess.length} diagrams`);\n if ((conf == null ? void 0 : conf.startOnLoad) !== void 0) {\n log$1.debug(\"Start On Load: \" + (conf == null ? void 0 : conf.startOnLoad));\n mermaidAPI.updateSiteConfig({ startOnLoad: conf == null ? void 0 : conf.startOnLoad });\n }\n const idGenerator = new utils.InitIDGenerator(conf.deterministicIds, conf.deterministicIDSeed);\n let txt;\n const errors = [];\n for (const element of Array.from(nodesToProcess)) {\n log$1.info(\"Rendering diagram: \" + element.id);\n /*! Check if previously processed */\n if (element.getAttribute(\"data-processed\")) {\n continue;\n }\n element.setAttribute(\"data-processed\", \"true\");\n const id2 = `mermaid-${idGenerator.next()}`;\n txt = element.innerHTML;\n txt = dedent(utils.entityDecode(txt)).trim().replace(//gi, \"
\");\n const init2 = utils.detectInit(txt);\n if (init2) {\n log$1.debug(\"Detected early reinit: \", init2);\n }\n try {\n const { svg, bindFunctions } = await render(id2, txt, element);\n element.innerHTML = svg;\n if (postRenderCallback) {\n await postRenderCallback(id2);\n }\n if (bindFunctions) {\n bindFunctions(element);\n }\n } catch (error) {\n handleError(error, errors, mermaid.parseError);\n }\n }\n if (errors.length > 0) {\n throw errors[0];\n }\n};\nconst initialize = function(config2) {\n mermaidAPI.initialize(config2);\n};\nconst init = async function(config2, nodes, callback) {\n log$1.warn(\"mermaid.init is deprecated. Please use run instead.\");\n if (config2) {\n initialize(config2);\n }\n const runOptions = { postRenderCallback: callback, querySelector: \".mermaid\" };\n if (typeof nodes === \"string\") {\n runOptions.querySelector = nodes;\n } else if (nodes) {\n if (nodes instanceof HTMLElement) {\n runOptions.nodes = [nodes];\n } else {\n runOptions.nodes = nodes;\n }\n }\n await run(runOptions);\n};\nconst registerExternalDiagrams = async (diagrams2, {\n lazyLoad = true\n} = {}) => {\n registerLazyLoadedDiagrams(...diagrams2);\n if (lazyLoad === false) {\n await loadRegisteredDiagrams();\n }\n};\nconst contentLoaded = function() {\n if (mermaid.startOnLoad) {\n const { startOnLoad } = mermaidAPI.getConfig();\n if (startOnLoad) {\n mermaid.run().catch((err) => log$1.error(\"Mermaid failed to initialize\", err));\n }\n }\n};\nif (typeof document !== \"undefined\") {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener(\"load\", contentLoaded, false);\n}\nconst setParseErrorHandler = function(parseErrorHandler) {\n mermaid.parseError = parseErrorHandler;\n};\nconst executionQueue = [];\nlet executionQueueRunning = false;\nconst executeQueue = async () => {\n if (executionQueueRunning) {\n return;\n }\n executionQueueRunning = true;\n while (executionQueue.length > 0) {\n const f = executionQueue.shift();\n if (f) {\n try {\n await f();\n } catch (e) {\n log$1.error(\"Error executing queue\", e);\n }\n }\n }\n executionQueueRunning = false;\n};\nconst parse = async (text, parseOptions) => {\n return new Promise((resolve, reject) => {\n const performCall = () => new Promise((res, rej) => {\n mermaidAPI.parse(text, parseOptions).then(\n (r) => {\n res(r);\n resolve(r);\n },\n (e) => {\n var _a;\n log$1.error(\"Error parsing\", e);\n (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e);\n rej(e);\n reject(e);\n }\n );\n });\n executionQueue.push(performCall);\n executeQueue().catch(reject);\n });\n};\nconst render = (id2, text, container) => {\n return new Promise((resolve, reject) => {\n const performCall = () => new Promise((res, rej) => {\n mermaidAPI.render(id2, text, container).then(\n (r) => {\n res(r);\n resolve(r);\n },\n (e) => {\n var _a;\n log$1.error(\"Error parsing\", e);\n (_a = mermaid.parseError) == null ? void 0 : _a.call(mermaid, e);\n rej(e);\n reject(e);\n }\n );\n });\n executionQueue.push(performCall);\n executeQueue().catch(reject);\n });\n};\nconst mermaid = {\n startOnLoad: true,\n mermaidAPI,\n parse,\n render,\n init,\n run,\n registerExternalDiagrams,\n initialize,\n parseError: void 0,\n contentLoaded,\n setParseErrorHandler,\n detectType\n};\nexport {\n defaultConfig$2 as A,\n cleanAndMerge as B,\n parseFontSize as C,\n getThemeVariables$2 as D,\n getConfig$1 as E,\n addFunction as F,\n generateId as G,\n lineBreakRegex as H,\n defaultConfig as I,\n decodeEntities as J,\n commonDb as K,\n mermaid as L,\n ZERO_WIDTH_SPACE as Z,\n getAccDescription as a,\n setAccDescription as b,\n getConfig as c,\n sanitizeText$2 as d,\n common$1 as e,\n assignWithDepth$1 as f,\n getAccTitle as g,\n calculateTextWidth as h,\n configureSvgSize as i,\n calculateTextHeight as j,\n getStylesFromArray as k,\n log$1 as l,\n evaluate as m,\n interpolateToCurve as n,\n setupGraphViewbox$1 as o,\n setConfig as p,\n setDiagramTitle as q,\n getDiagramTitle as r,\n setAccTitle as s,\n clear as t,\n utils as u,\n parseGenericTypes as v,\n wrapLabel as w,\n random as x,\n setupGraphViewbox as y,\n selectSvgElement as z\n};\n","import { d as sanitizeText$1, c as getConfig, l as log, o as setupGraphViewbox } from \"./mermaid-934d9bea.js\";\nimport { select } from \"d3\";\nimport { a as createText } from \"./createText-aebacdfe.js\";\nimport cytoscape from \"cytoscape/dist/cytoscape.umd.js\";\nimport coseBilkent from \"cytoscape-cose-bilkent\";\nimport { isDark, lighten, darken } from \"khroma\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"mdast-util-from-markdown\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 4], $V1 = [1, 13], $V2 = [1, 12], $V3 = [1, 15], $V4 = [1, 16], $V5 = [1, 20], $V6 = [1, 19], $V7 = [6, 7, 8], $V8 = [1, 26], $V9 = [1, 24], $Va = [1, 25], $Vb = [6, 7, 11], $Vc = [1, 6, 13, 15, 16, 19, 22], $Vd = [1, 33], $Ve = [1, 34], $Vf = [1, 6, 7, 11, 13, 15, 16, 19, 22];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mindMap\": 4, \"spaceLines\": 5, \"SPACELINE\": 6, \"NL\": 7, \"MINDMAP\": 8, \"document\": 9, \"stop\": 10, \"EOF\": 11, \"statement\": 12, \"SPACELIST\": 13, \"node\": 14, \"ICON\": 15, \"CLASS\": 16, \"nodeWithId\": 17, \"nodeWithoutId\": 18, \"NODE_DSTART\": 19, \"NODE_DESCR\": 20, \"NODE_DEND\": 21, \"NODE_ID\": 22, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 6: \"SPACELINE\", 7: \"NL\", 8: \"MINDMAP\", 11: \"EOF\", 13: \"SPACELIST\", 15: \"ICON\", 16: \"CLASS\", 19: \"NODE_DSTART\", 20: \"NODE_DESCR\", 21: \"NODE_DEND\", 22: \"NODE_ID\" },\n productions_: [0, [3, 1], [3, 2], [5, 1], [5, 2], [5, 2], [4, 2], [4, 3], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [9, 3], [9, 2], [12, 2], [12, 2], [12, 2], [12, 1], [12, 1], [12, 1], [12, 1], [12, 1], [14, 1], [14, 1], [18, 3], [17, 1], [17, 4]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 6:\n case 7:\n return yy;\n case 8:\n yy.getLogger().trace(\"Stop NL \");\n break;\n case 9:\n yy.getLogger().trace(\"Stop EOF \");\n break;\n case 11:\n yy.getLogger().trace(\"Stop NL2 \");\n break;\n case 12:\n yy.getLogger().trace(\"Stop EOF2 \");\n break;\n case 15:\n yy.getLogger().info(\"Node: \", $$[$0].id);\n yy.addNode($$[$0 - 1].length, $$[$0].id, $$[$0].descr, $$[$0].type);\n break;\n case 16:\n yy.getLogger().trace(\"Icon: \", $$[$0]);\n yy.decorateNode({ icon: $$[$0] });\n break;\n case 17:\n case 21:\n yy.decorateNode({ class: $$[$0] });\n break;\n case 18:\n yy.getLogger().trace(\"SPACELIST\");\n break;\n case 19:\n yy.getLogger().trace(\"Node: \", $$[$0].id);\n yy.addNode(0, $$[$0].id, $$[$0].descr, $$[$0].type);\n break;\n case 20:\n yy.decorateNode({ icon: $$[$0] });\n break;\n case 25:\n yy.getLogger().trace(\"node found ..\", $$[$0 - 2]);\n this.$ = { id: $$[$0 - 1], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) };\n break;\n case 26:\n this.$ = { id: $$[$0], descr: $$[$0], type: yy.nodeType.DEFAULT };\n break;\n case 27:\n yy.getLogger().trace(\"node found ..\", $$[$0 - 3]);\n this.$ = { id: $$[$0 - 3], descr: $$[$0 - 1], type: yy.getType($$[$0 - 2], $$[$0]) };\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: [1, 5], 8: $V0 }, { 1: [3] }, { 1: [2, 1] }, { 4: 6, 6: [1, 7], 7: [1, 8], 8: $V0 }, { 6: $V1, 7: [1, 10], 9: 9, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o($V7, [2, 3]), { 1: [2, 2] }, o($V7, [2, 4]), o($V7, [2, 5]), { 1: [2, 6], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V1, 9: 22, 12: 11, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, { 6: $V8, 7: $V9, 10: 23, 11: $Va }, o($Vb, [2, 22], { 17: 17, 18: 18, 14: 27, 15: [1, 28], 16: [1, 29], 19: $V5, 22: $V6 }), o($Vb, [2, 18]), o($Vb, [2, 19]), o($Vb, [2, 20]), o($Vb, [2, 21]), o($Vb, [2, 23]), o($Vb, [2, 24]), o($Vb, [2, 26], { 19: [1, 30] }), { 20: [1, 31] }, { 6: $V8, 7: $V9, 10: 32, 11: $Va }, { 1: [2, 7], 6: $V1, 12: 21, 13: $V2, 14: 14, 15: $V3, 16: $V4, 17: 17, 18: 18, 19: $V5, 22: $V6 }, o($Vc, [2, 14], { 7: $Vd, 11: $Ve }), o($Vf, [2, 8]), o($Vf, [2, 9]), o($Vf, [2, 10]), o($Vb, [2, 15]), o($Vb, [2, 16]), o($Vb, [2, 17]), { 20: [1, 35] }, { 21: [1, 36] }, o($Vc, [2, 13], { 7: $Vd, 11: $Ve }), o($Vf, [2, 11]), o($Vf, [2, 12]), { 21: [1, 37] }, o($Vb, [2, 25]), o($Vb, [2, 27])],\n defaultActions: { 2: [2, 1], 6: [2, 2] },\n parseError: function parseError2(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError2(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n yy.getLogger().trace(\"Found comment\", yy_.yytext);\n return 6;\n case 1:\n return 8;\n case 2:\n this.begin(\"CLASS\");\n break;\n case 3:\n this.popState();\n return 16;\n case 4:\n this.popState();\n break;\n case 5:\n yy.getLogger().trace(\"Begin icon\");\n this.begin(\"ICON\");\n break;\n case 6:\n yy.getLogger().trace(\"SPACELINE\");\n return 6;\n case 7:\n return 7;\n case 8:\n return 15;\n case 9:\n yy.getLogger().trace(\"end icon\");\n this.popState();\n break;\n case 10:\n yy.getLogger().trace(\"Exploding node\");\n this.begin(\"NODE\");\n return 19;\n case 11:\n yy.getLogger().trace(\"Cloud\");\n this.begin(\"NODE\");\n return 19;\n case 12:\n yy.getLogger().trace(\"Explosion Bang\");\n this.begin(\"NODE\");\n return 19;\n case 13:\n yy.getLogger().trace(\"Cloud Bang\");\n this.begin(\"NODE\");\n return 19;\n case 14:\n this.begin(\"NODE\");\n return 19;\n case 15:\n this.begin(\"NODE\");\n return 19;\n case 16:\n this.begin(\"NODE\");\n return 19;\n case 17:\n this.begin(\"NODE\");\n return 19;\n case 18:\n return 13;\n case 19:\n return 22;\n case 20:\n return 11;\n case 21:\n this.begin(\"NSTR2\");\n break;\n case 22:\n return \"NODE_DESCR\";\n case 23:\n this.popState();\n break;\n case 24:\n yy.getLogger().trace(\"Starting NSTR\");\n this.begin(\"NSTR\");\n break;\n case 25:\n yy.getLogger().trace(\"description:\", yy_.yytext);\n return \"NODE_DESCR\";\n case 26:\n this.popState();\n break;\n case 27:\n this.popState();\n yy.getLogger().trace(\"node end ))\");\n return \"NODE_DEND\";\n case 28:\n this.popState();\n yy.getLogger().trace(\"node end )\");\n return \"NODE_DEND\";\n case 29:\n this.popState();\n yy.getLogger().trace(\"node end ...\", yy_.yytext);\n return \"NODE_DEND\";\n case 30:\n this.popState();\n yy.getLogger().trace(\"node end ((\");\n return \"NODE_DEND\";\n case 31:\n this.popState();\n yy.getLogger().trace(\"node end (-\");\n return \"NODE_DEND\";\n case 32:\n this.popState();\n yy.getLogger().trace(\"node end (-\");\n return \"NODE_DEND\";\n case 33:\n this.popState();\n yy.getLogger().trace(\"node end ((\");\n return \"NODE_DEND\";\n case 34:\n this.popState();\n yy.getLogger().trace(\"node end ((\");\n return \"NODE_DEND\";\n case 35:\n yy.getLogger().trace(\"Long description:\", yy_.yytext);\n return 20;\n case 36:\n yy.getLogger().trace(\"Long description:\", yy_.yytext);\n return 20;\n }\n },\n rules: [/^(?:\\s*%%.*)/i, /^(?:mindmap\\b)/i, /^(?::::)/i, /^(?:.+)/i, /^(?:\\n)/i, /^(?:::icon\\()/i, /^(?:[\\s]+[\\n])/i, /^(?:[\\n]+)/i, /^(?:[^\\)]+)/i, /^(?:\\))/i, /^(?:-\\))/i, /^(?:\\(-)/i, /^(?:\\)\\))/i, /^(?:\\))/i, /^(?:\\(\\()/i, /^(?:\\{\\{)/i, /^(?:\\()/i, /^(?:\\[)/i, /^(?:[\\s]+)/i, /^(?:[^\\(\\[\\n\\)\\{\\}]+)/i, /^(?:$)/i, /^(?:[\"][`])/i, /^(?:[^`\"]+)/i, /^(?:[`][\"])/i, /^(?:[\"])/i, /^(?:[^\"]+)/i, /^(?:[\"])/i, /^(?:[\\)]\\))/i, /^(?:[\\)])/i, /^(?:[\\]])/i, /^(?:\\}\\})/i, /^(?:\\(-)/i, /^(?:-\\))/i, /^(?:\\(\\()/i, /^(?:\\()/i, /^(?:[^\\)\\]\\(\\}]+)/i, /^(?:.+(?!\\(\\())/i],\n conditions: { \"CLASS\": { \"rules\": [3, 4], \"inclusive\": false }, \"ICON\": { \"rules\": [8, 9], \"inclusive\": false }, \"NSTR2\": { \"rules\": [22, 23], \"inclusive\": false }, \"NSTR\": { \"rules\": [25, 26], \"inclusive\": false }, \"NODE\": { \"rules\": [21, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst mindmapParser = parser;\nconst sanitizeText = (text) => sanitizeText$1(text, getConfig());\nlet nodes = [];\nlet cnt = 0;\nlet elements = {};\nconst clear = () => {\n nodes = [];\n cnt = 0;\n elements = {};\n};\nconst getParent = function(level) {\n for (let i = nodes.length - 1; i >= 0; i--) {\n if (nodes[i].level < level) {\n return nodes[i];\n }\n }\n return null;\n};\nconst getMindmap = () => {\n return nodes.length > 0 ? nodes[0] : null;\n};\nconst addNode = (level, id, descr, type) => {\n log.info(\"addNode\", level, id, descr, type);\n const conf = getConfig();\n const node = {\n id: cnt++,\n nodeId: sanitizeText(id),\n level,\n descr: sanitizeText(descr),\n type,\n children: [],\n width: getConfig().mindmap.maxNodeWidth\n };\n switch (node.type) {\n case nodeType.ROUNDED_RECT:\n node.padding = 2 * conf.mindmap.padding;\n break;\n case nodeType.RECT:\n node.padding = 2 * conf.mindmap.padding;\n break;\n case nodeType.HEXAGON:\n node.padding = 2 * conf.mindmap.padding;\n break;\n default:\n node.padding = conf.mindmap.padding;\n }\n const parent = getParent(level);\n if (parent) {\n parent.children.push(node);\n nodes.push(node);\n } else {\n if (nodes.length === 0) {\n nodes.push(node);\n } else {\n let error = new Error(\n 'There can be only one root. No parent could be found for (\"' + node.descr + '\")'\n );\n error.hash = {\n text: \"branch \" + name,\n token: \"branch \" + name,\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: ['\"checkout ' + name + '\"']\n };\n throw error;\n }\n }\n};\nconst nodeType = {\n DEFAULT: 0,\n NO_BORDER: 0,\n ROUNDED_RECT: 1,\n RECT: 2,\n CIRCLE: 3,\n CLOUD: 4,\n BANG: 5,\n HEXAGON: 6\n};\nconst getType = (startStr, endStr) => {\n log.debug(\"In get type\", startStr, endStr);\n switch (startStr) {\n case \"[\":\n return nodeType.RECT;\n case \"(\":\n return endStr === \")\" ? nodeType.ROUNDED_RECT : nodeType.CLOUD;\n case \"((\":\n return nodeType.CIRCLE;\n case \")\":\n return nodeType.CLOUD;\n case \"))\":\n return nodeType.BANG;\n case \"{{\":\n return nodeType.HEXAGON;\n default:\n return nodeType.DEFAULT;\n }\n};\nconst setElementForId = (id, element) => {\n elements[id] = element;\n};\nconst decorateNode = (decoration) => {\n const node = nodes[nodes.length - 1];\n if (decoration && decoration.icon) {\n node.icon = sanitizeText(decoration.icon);\n }\n if (decoration && decoration.class) {\n node.class = sanitizeText(decoration.class);\n }\n};\nconst type2Str = (type) => {\n switch (type) {\n case nodeType.DEFAULT:\n return \"no-border\";\n case nodeType.RECT:\n return \"rect\";\n case nodeType.ROUNDED_RECT:\n return \"rounded-rect\";\n case nodeType.CIRCLE:\n return \"circle\";\n case nodeType.CLOUD:\n return \"cloud\";\n case nodeType.BANG:\n return \"bang\";\n case nodeType.HEXAGON:\n return \"hexgon\";\n default:\n return \"no-border\";\n }\n};\nlet parseError;\nconst setErrorHandler = (handler) => {\n parseError = handler;\n};\nconst getLogger = () => log;\nconst getNodeById = (id) => nodes[id];\nconst getElementById = (id) => elements[id];\nconst mindmapDb = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addNode,\n clear,\n decorateNode,\n getElementById,\n getLogger,\n getMindmap,\n getNodeById,\n getType,\n nodeType,\n get parseError() {\n return parseError;\n },\n sanitizeText,\n setElementForId,\n setErrorHandler,\n type2Str\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst MAX_SECTIONS = 12;\nconst defaultBkg = function(elem, node, section) {\n const rd = 5;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\n \"d\",\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${node.width - 2 * rd} q5,0 5,5 v${node.height - rd} H0 Z`\n );\n elem.append(\"line\").attr(\"class\", \"node-line-\" + section).attr(\"x1\", 0).attr(\"y1\", node.height).attr(\"x2\", node.width).attr(\"y2\", node.height);\n};\nconst rectBkg = function(elem, node) {\n elem.append(\"rect\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\"height\", node.height).attr(\"width\", node.width);\n};\nconst cloudBkg = function(elem, node) {\n const w = node.width;\n const h = node.height;\n const r1 = 0.15 * w;\n const r2 = 0.25 * w;\n const r3 = 0.35 * w;\n const r4 = 0.2 * w;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\n \"d\",\n `M0 0 a${r1},${r1} 0 0,1 ${w * 0.25},${-1 * w * 0.1}\n a${r3},${r3} 1 0,1 ${w * 0.4},${-1 * w * 0.1}\n a${r2},${r2} 1 0,1 ${w * 0.35},${1 * w * 0.2}\n\n a${r1},${r1} 1 0,1 ${w * 0.15},${1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${-1 * w * 0.15},${1 * h * 0.65}\n\n a${r2},${r1} 1 0,1 ${-1 * w * 0.25},${w * 0.15}\n a${r3},${r3} 1 0,1 ${-1 * w * 0.5},${0}\n a${r1},${r1} 1 0,1 ${-1 * w * 0.25},${-1 * w * 0.15}\n\n a${r1},${r1} 1 0,1 ${-1 * w * 0.1},${-1 * h * 0.35}\n a${r4},${r4} 1 0,1 ${w * 0.1},${-1 * h * 0.65}\n\n H0 V0 Z`\n );\n};\nconst bangBkg = function(elem, node) {\n const w = node.width;\n const h = node.height;\n const r = 0.15 * w;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\n \"d\",\n `M0 0 a${r},${r} 1 0,0 ${w * 0.25},${-1 * h * 0.1}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${0}\n a${r},${r} 1 0,0 ${w * 0.25},${1 * h * 0.1}\n\n a${r},${r} 1 0,0 ${w * 0.15},${1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${1 * h * 0.34}\n a${r},${r} 1 0,0 ${-1 * w * 0.15},${1 * h * 0.33}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${h * 0.15}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${0}\n a${r},${r} 1 0,0 ${-1 * w * 0.25},${-1 * h * 0.15}\n\n a${r},${r} 1 0,0 ${-1 * w * 0.1},${-1 * h * 0.33}\n a${r * 0.8},${r * 0.8} 1 0,0 ${0},${-1 * h * 0.34}\n a${r},${r} 1 0,0 ${w * 0.1},${-1 * h * 0.33}\n\n H0 V0 Z`\n );\n};\nconst circleBkg = function(elem, node) {\n elem.append(\"circle\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\"r\", node.width / 2);\n};\nfunction insertPolygonShape(parent, w, h, points, node) {\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(\"transform\", \"translate(\" + (node.width - w) / 2 + \", \" + h + \")\");\n}\nconst hexagonBkg = function(elem, node) {\n const h = node.height;\n const f = 4;\n const m = h / f;\n const w = node.width - node.padding + 2 * m;\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 insertPolygonShape(elem, w, h, points, node);\n};\nconst roundedRectBkg = function(elem, node) {\n elem.append(\"rect\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + type2Str(node.type)).attr(\"height\", node.height).attr(\"rx\", node.padding).attr(\"ry\", node.padding).attr(\"width\", node.width);\n};\nconst drawNode = function(elem, node, fullSection, conf) {\n const htmlLabels = conf.htmlLabels;\n const section = fullSection % (MAX_SECTIONS - 1);\n const nodeElem = elem.append(\"g\");\n node.section = section;\n let sectionClass = \"section-\" + section;\n if (section < 0) {\n sectionClass += \" section-root\";\n }\n nodeElem.attr(\"class\", (node.class ? node.class + \" \" : \"\") + \"mindmap-node \" + sectionClass);\n const bkgElem = nodeElem.append(\"g\");\n const textElem = nodeElem.append(\"g\");\n const description = node.descr.replace(/()/g, \"\\n\");\n createText(textElem, description, {\n useHtmlLabels: htmlLabels,\n width: node.width,\n classes: \"mindmap-node-label\"\n });\n if (!htmlLabels) {\n textElem.attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\");\n }\n const bbox = textElem.node().getBBox();\n const fontSize = conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.width = bbox.width + 2 * node.padding;\n if (node.icon) {\n if (node.type === nodeType.CIRCLE) {\n node.height += 50;\n node.width += 50;\n const icon = nodeElem.append(\"foreignObject\").attr(\"height\", \"50px\").attr(\"width\", node.width).attr(\"style\", \"text-align: center;\");\n icon.append(\"div\").attr(\"class\", \"icon-container\").append(\"i\").attr(\"class\", \"node-icon-\" + section + \" \" + node.icon);\n textElem.attr(\n \"transform\",\n \"translate(\" + node.width / 2 + \", \" + (node.height / 2 - 1.5 * node.padding) + \")\"\n );\n } else {\n node.width += 50;\n const orgHeight = node.height;\n node.height = Math.max(orgHeight, 60);\n const heightDiff = Math.abs(node.height - orgHeight);\n const icon = nodeElem.append(\"foreignObject\").attr(\"width\", \"60px\").attr(\"height\", node.height).attr(\"style\", \"text-align: center;margin-top:\" + heightDiff / 2 + \"px;\");\n icon.append(\"div\").attr(\"class\", \"icon-container\").append(\"i\").attr(\"class\", \"node-icon-\" + section + \" \" + node.icon);\n textElem.attr(\n \"transform\",\n \"translate(\" + (25 + node.width / 2) + \", \" + (heightDiff / 2 + node.padding / 2) + \")\"\n );\n }\n } else {\n if (!htmlLabels) {\n const dx = node.width / 2;\n const dy = node.padding / 2;\n textElem.attr(\"transform\", \"translate(\" + dx + \", \" + dy + \")\");\n } else {\n const dx = (node.width - bbox.width) / 2;\n const dy = (node.height - bbox.height) / 2;\n textElem.attr(\"transform\", \"translate(\" + dx + \", \" + dy + \")\");\n }\n }\n switch (node.type) {\n case nodeType.DEFAULT:\n defaultBkg(bkgElem, node, section);\n break;\n case nodeType.ROUNDED_RECT:\n roundedRectBkg(bkgElem, node);\n break;\n case nodeType.RECT:\n rectBkg(bkgElem, node);\n break;\n case nodeType.CIRCLE:\n bkgElem.attr(\"transform\", \"translate(\" + node.width / 2 + \", \" + +node.height / 2 + \")\");\n circleBkg(bkgElem, node);\n break;\n case nodeType.CLOUD:\n cloudBkg(bkgElem, node);\n break;\n case nodeType.BANG:\n bangBkg(bkgElem, node);\n break;\n case nodeType.HEXAGON:\n hexagonBkg(bkgElem, node);\n break;\n }\n setElementForId(node.id, nodeElem);\n return node.height;\n};\nconst drawEdge = function drawEdge2(edgesElem, mindmap, parent, depth, fullSection) {\n const section = fullSection % (MAX_SECTIONS - 1);\n const sx = parent.x + parent.width / 2;\n const sy = parent.y + parent.height / 2;\n const ex = mindmap.x + mindmap.width / 2;\n const ey = mindmap.y + mindmap.height / 2;\n const mx = ex > sx ? sx + Math.abs(sx - ex) / 2 : sx - Math.abs(sx - ex) / 2;\n const my = ey > sy ? sy + Math.abs(sy - ey) / 2 : sy - Math.abs(sy - ey) / 2;\n const qx = ex > sx ? Math.abs(sx - mx) / 2 + sx : -Math.abs(sx - mx) / 2 + sx;\n const qy = ey > sy ? Math.abs(sy - my) / 2 + sy : -Math.abs(sy - my) / 2 + sy;\n edgesElem.append(\"path\").attr(\n \"d\",\n parent.direction === \"TB\" || parent.direction === \"BT\" ? `M${sx},${sy} Q${sx},${qy} ${mx},${my} T${ex},${ey}` : `M${sx},${sy} Q${qx},${sy} ${mx},${my} T${ex},${ey}`\n ).attr(\"class\", \"edge section-edge-\" + section + \" edge-depth-\" + depth);\n};\nconst positionNode = function(node) {\n const nodeElem = getElementById(node.id);\n const x = node.x || 0;\n const y = node.y || 0;\n nodeElem.attr(\"transform\", \"translate(\" + x + \",\" + y + \")\");\n};\nconst svgDraw = { drawNode, positionNode, drawEdge };\ncytoscape.use(coseBilkent);\nfunction drawNodes(svg, mindmap, section, conf) {\n svgDraw.drawNode(svg, mindmap, section, conf);\n if (mindmap.children) {\n mindmap.children.forEach((child, index) => {\n drawNodes(svg, child, section < 0 ? index : section, conf);\n });\n }\n}\nfunction drawEdges(edgesEl, cy) {\n cy.edges().map((edge, id) => {\n const data = edge.data();\n if (edge[0]._private.bodyBounds) {\n const bounds = edge[0]._private.rscratch;\n log.trace(\"Edge: \", id, data);\n edgesEl.insert(\"path\").attr(\n \"d\",\n `M ${bounds.startX},${bounds.startY} L ${bounds.midX},${bounds.midY} L${bounds.endX},${bounds.endY} `\n ).attr(\"class\", \"edge section-edge-\" + data.section + \" edge-depth-\" + data.depth);\n }\n });\n}\nfunction addNodes(mindmap, cy, conf, level) {\n cy.add({\n group: \"nodes\",\n data: {\n id: mindmap.id,\n labelText: mindmap.descr,\n height: mindmap.height,\n width: mindmap.width,\n level,\n nodeId: mindmap.id,\n padding: mindmap.padding,\n type: mindmap.type\n },\n position: {\n x: mindmap.x,\n y: mindmap.y\n }\n });\n if (mindmap.children) {\n mindmap.children.forEach((child) => {\n addNodes(child, cy, conf, level + 1);\n cy.add({\n group: \"edges\",\n data: {\n id: `${mindmap.id}_${child.id}`,\n source: mindmap.id,\n target: child.id,\n depth: level,\n section: child.section\n }\n });\n });\n }\n}\nfunction layoutMindmap(node, conf) {\n return new Promise((resolve) => {\n const renderEl = select(\"body\").append(\"div\").attr(\"id\", \"cy\").attr(\"style\", \"display:none\");\n const cy = cytoscape({\n container: document.getElementById(\"cy\"),\n // container to render in\n style: [\n {\n selector: \"edge\",\n style: {\n \"curve-style\": \"bezier\"\n }\n }\n ]\n });\n renderEl.remove();\n addNodes(node, cy, conf, 0);\n cy.nodes().forEach(function(n) {\n n.layoutDimensions = () => {\n const data = n.data();\n return { w: data.width, h: data.height };\n };\n });\n cy.layout({\n name: \"cose-bilkent\",\n quality: \"proof\",\n // headless: true,\n styleEnabled: false,\n animate: false\n }).run();\n cy.ready((e) => {\n log.info(\"Ready\", e);\n resolve(cy);\n });\n });\n}\nfunction positionNodes(cy) {\n cy.nodes().map((node, id) => {\n const data = node.data();\n data.x = node.position().x;\n data.y = node.position().y;\n svgDraw.positionNode(data);\n const el = getElementById(data.nodeId);\n log.info(\"Id:\", id, \"Position: (\", node.position().x, \", \", node.position().y, \")\", data);\n el.attr(\n \"transform\",\n `translate(${node.position().x - data.width / 2}, ${node.position().y - data.height / 2})`\n );\n el.attr(\"attr\", `apa-${id})`);\n });\n}\nconst draw = async (text, id, version, diagObj) => {\n const conf = getConfig();\n conf.htmlLabels = false;\n log.debug(\"Rendering mindmap diagram\\n\" + text, diagObj.parser);\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(\"#\" + id);\n svg.append(\"g\");\n const mm = diagObj.db.getMindmap();\n const edgesElem = svg.append(\"g\");\n edgesElem.attr(\"class\", \"mindmap-edges\");\n const nodesElem = svg.append(\"g\");\n nodesElem.attr(\"class\", \"mindmap-nodes\");\n drawNodes(nodesElem, mm, -1, conf);\n const cy = await layoutMindmap(mm, conf);\n drawEdges(edgesElem, cy);\n positionNodes(cy);\n setupGraphViewbox(void 0, svg, conf.mindmap.padding, conf.mindmap.useMaxWidth);\n};\nconst mindmapRenderer = {\n draw\n};\nconst genSections = (options) => {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options[\"lineColor\" + i] = options[\"lineColor\" + i] || options[\"cScaleInv\" + i];\n if (isDark(options[\"lineColor\" + i])) {\n options[\"lineColor\" + i] = lighten(options[\"lineColor\" + i], 20);\n } else {\n options[\"lineColor\" + i] = darken(options[\"lineColor\" + i], 20);\n }\n }\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = \"\" + (17 - 3 * i);\n sections += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${i - 1} polygon, .section-${i - 1} path {\n fill: ${options[\"cScale\" + i]};\n }\n .section-${i - 1} text {\n fill: ${options[\"cScaleLabel\" + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options[\"cScaleLabel\" + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options[\"cScale\" + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options[\"cScaleInv\" + i]} ;\n stroke-width: 3;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections;\n};\nconst getStyles = (options) => `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n`;\nconst mindmapStyles = getStyles;\nconst diagram = {\n db: mindmapDb,\n renderer: mindmapRenderer,\n parser: mindmapParser,\n styles: mindmapStyles\n};\nexport {\n diagram\n};\n","import { A as defaultConfig, q as setDiagramTitle, r as getDiagramTitle, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, t as clear$1, d as sanitizeText, c as getConfig$1, l as log, B as cleanAndMerge, z as selectSvgElement, i as configureSvgSize, C as parseFontSize } from \"./mermaid-934d9bea.js\";\nimport { arc, scaleOrdinal, pie } from \"d3\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [1, 10, 12, 14, 16, 18, 19, 20, 21, 22], $V5 = [2, 4], $V6 = [1, 5, 10, 12, 14, 16, 18, 19, 20, 21, 22], $V7 = [20, 21, 22], $V8 = [2, 7], $V9 = [1, 12], $Va = [1, 13], $Vb = [1, 14], $Vc = [1, 15], $Vd = [1, 16], $Ve = [1, 17];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"PIE\": 5, \"document\": 6, \"showData\": 7, \"line\": 8, \"statement\": 9, \"txt\": 10, \"value\": 11, \"title\": 12, \"title_value\": 13, \"acc_title\": 14, \"acc_title_value\": 15, \"acc_descr\": 16, \"acc_descr_value\": 17, \"acc_descr_multiline_value\": 18, \"section\": 19, \"NEWLINE\": 20, \";\": 21, \"EOF\": 22, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"PIE\", 7: \"showData\", 10: \"txt\", 11: \"value\", 12: \"title\", 13: \"title_value\", 14: \"acc_title\", 15: \"acc_title_value\", 16: \"acc_descr\", 17: \"acc_descr_value\", 18: \"acc_descr_multiline_value\", 19: \"section\", 20: \"NEWLINE\", 21: \";\", 22: \"EOF\" },\n productions_: [0, [3, 2], [3, 2], [3, 3], [6, 0], [6, 2], [8, 2], [9, 0], [9, 2], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [4, 1], [4, 1], [4, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setShowData(true);\n break;\n case 6:\n this.$ = $$[$0 - 1];\n break;\n case 8:\n yy.addSection($$[$0 - 1], yy.cleanupValue($$[$0]));\n break;\n case 9:\n this.$ = $$[$0].trim();\n yy.setDiagramTitle(this.$);\n break;\n case 10:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 11:\n case 12:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 13:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: $V0, 20: $V1, 21: $V2, 22: $V3 }, { 1: [3] }, { 3: 7, 4: 2, 5: $V0, 20: $V1, 21: $V2, 22: $V3 }, o($V4, $V5, { 6: 8, 7: [1, 9] }), o($V6, [2, 14]), o($V6, [2, 15]), o($V6, [2, 16]), { 1: [2, 1] }, o($V7, $V8, { 8: 10, 9: 11, 1: [2, 2], 10: $V9, 12: $Va, 14: $Vb, 16: $Vc, 18: $Vd, 19: $Ve }), o($V4, $V5, { 6: 18 }), o($V4, [2, 5]), { 4: 19, 20: $V1, 21: $V2, 22: $V3 }, { 11: [1, 20] }, { 13: [1, 21] }, { 15: [1, 22] }, { 17: [1, 23] }, o($V7, [2, 12]), o($V7, [2, 13]), o($V7, $V8, { 8: 10, 9: 11, 1: [2, 3], 10: $V9, 12: $Va, 14: $Vb, 16: $Vc, 18: $Vd, 19: $Ve }), o($V4, [2, 6]), o($V7, [2, 8]), o($V7, [2, 9]), o($V7, [2, 10]), o($V7, [2, 11])],\n defaultActions: { 7: [2, 1] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 20;\n case 3:\n break;\n case 4:\n break;\n case 5:\n this.begin(\"title\");\n return 12;\n case 6:\n this.popState();\n return \"title_value\";\n case 7:\n this.begin(\"acc_title\");\n return 14;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.begin(\"acc_descr\");\n return 16;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.begin(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n this.begin(\"string\");\n break;\n case 15:\n this.popState();\n break;\n case 16:\n return \"txt\";\n case 17:\n return 5;\n case 18:\n return 7;\n case 19:\n return \"value\";\n case 20:\n return 22;\n }\n },\n rules: [/^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n\\r]+)/i, /^(?:%%[^\\n]*)/i, /^(?:[\\s]+)/i, /^(?:title\\b)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:pie\\b)/i, /^(?:showData\\b)/i, /^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i, /^(?:$)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"title\": { \"rules\": [6], \"inclusive\": false }, \"string\": { \"rules\": [15, 16], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 7, 9, 11, 14, 17, 18, 19, 20], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst DEFAULT_PIE_CONFIG = defaultConfig.pie;\nconst DEFAULT_PIE_DB = {\n sections: {},\n showData: false,\n config: DEFAULT_PIE_CONFIG\n};\nlet sections = DEFAULT_PIE_DB.sections;\nlet showData = DEFAULT_PIE_DB.showData;\nconst config = structuredClone(DEFAULT_PIE_CONFIG);\nconst getConfig = () => structuredClone(config);\nconst clear = () => {\n sections = structuredClone(DEFAULT_PIE_DB.sections);\n showData = DEFAULT_PIE_DB.showData;\n clear$1();\n};\nconst addSection = (label, value) => {\n label = sanitizeText(label, getConfig$1());\n if (sections[label] === void 0) {\n sections[label] = value;\n log.debug(`added new section: ${label}, with value: ${value}`);\n }\n};\nconst getSections = () => sections;\nconst cleanupValue = (value) => {\n if (value.substring(0, 1) === \":\") {\n value = value.substring(1).trim();\n }\n return Number(value.trim());\n};\nconst setShowData = (toggle) => {\n showData = toggle;\n};\nconst getShowData = () => showData;\nconst db = {\n getConfig,\n clear,\n setDiagramTitle,\n getDiagramTitle,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n cleanupValue,\n setShowData,\n getShowData\n};\nconst getStyles = (options) => `\n .pieCircle{\n stroke: ${options.pieStrokeColor};\n stroke-width : ${options.pieStrokeWidth};\n opacity : ${options.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${options.pieOuterStrokeColor};\n stroke-width: ${options.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${options.pieTitleTextSize};\n fill: ${options.pieTitleTextColor};\n font-family: ${options.fontFamily};\n }\n .slice {\n font-family: ${options.fontFamily};\n fill: ${options.pieSectionTextColor};\n font-size:${options.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${options.pieLegendTextColor};\n font-family: ${options.fontFamily};\n font-size: ${options.pieLegendTextSize};\n }\n`;\nconst styles = getStyles;\nconst createPieArcs = (sections2) => {\n const pieData = Object.entries(sections2).map((element) => {\n return {\n label: element[0],\n value: element[1]\n };\n }).sort((a, b) => {\n return b.value - a.value;\n });\n const pie$1 = pie().value(\n (d3Section) => d3Section.value\n );\n return pie$1(pieData);\n};\nconst draw = (text, id, _version, diagObj) => {\n var _a, _b;\n log.debug(\"rendering pie chart\\n\" + text);\n const db2 = diagObj.db;\n const globalConfig = getConfig$1();\n const pieConfig = cleanAndMerge(db2.getConfig(), globalConfig.pie);\n const height = 450;\n const width = ((_b = (_a = document.getElementById(id)) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.offsetWidth) ?? pieConfig.useWidth;\n const svg = selectSvgElement(id);\n svg.attr(\"viewBox\", `0 0 ${width} ${height}`);\n configureSvgSize(svg, height, width, pieConfig.useMaxWidth);\n const MARGIN = 40;\n const LEGEND_RECT_SIZE = 18;\n const LEGEND_SPACING = 4;\n const group = svg.append(\"g\");\n group.attr(\"transform\", \"translate(\" + width / 2 + \",\" + height / 2 + \")\");\n const { themeVariables } = globalConfig;\n let [outerStrokeWidth] = parseFontSize(themeVariables.pieOuterStrokeWidth);\n outerStrokeWidth ?? (outerStrokeWidth = 2);\n const textPosition = pieConfig.textPosition;\n const radius = Math.min(width, height) / 2 - MARGIN;\n const arcGenerator = arc().innerRadius(0).outerRadius(radius);\n const labelArcGenerator = arc().innerRadius(radius * textPosition).outerRadius(radius * textPosition);\n group.append(\"circle\").attr(\"cx\", 0).attr(\"cy\", 0).attr(\"r\", radius + outerStrokeWidth / 2).attr(\"class\", \"pieOuterCircle\");\n const sections2 = db2.getSections();\n const arcs = createPieArcs(sections2);\n const myGeneratedColors = [\n themeVariables.pie1,\n themeVariables.pie2,\n themeVariables.pie3,\n themeVariables.pie4,\n themeVariables.pie5,\n themeVariables.pie6,\n themeVariables.pie7,\n themeVariables.pie8,\n themeVariables.pie9,\n themeVariables.pie10,\n themeVariables.pie11,\n themeVariables.pie12\n ];\n const color = scaleOrdinal(myGeneratedColors);\n group.selectAll(\"mySlices\").data(arcs).enter().append(\"path\").attr(\"d\", arcGenerator).attr(\"fill\", (datum) => {\n return color(datum.data.label);\n }).attr(\"class\", \"pieCircle\");\n let sum = 0;\n Object.keys(sections2).forEach((key) => {\n sum += sections2[key];\n });\n group.selectAll(\"mySlices\").data(arcs).enter().append(\"text\").text((datum) => {\n return (datum.data.value / sum * 100).toFixed(0) + \"%\";\n }).attr(\"transform\", (datum) => {\n return \"translate(\" + labelArcGenerator.centroid(datum) + \")\";\n }).style(\"text-anchor\", \"middle\").attr(\"class\", \"slice\");\n group.append(\"text\").text(db2.getDiagramTitle()).attr(\"x\", 0).attr(\"y\", -(height - 50) / 2).attr(\"class\", \"pieTitleText\");\n const legend = group.selectAll(\".legend\").data(color.domain()).enter().append(\"g\").attr(\"class\", \"legend\").attr(\"transform\", (_datum, index) => {\n const height2 = LEGEND_RECT_SIZE + LEGEND_SPACING;\n const offset = height2 * color.domain().length / 2;\n const horizontal = 12 * LEGEND_RECT_SIZE;\n const vertical = index * height2 - offset;\n return \"translate(\" + horizontal + \",\" + vertical + \")\";\n });\n legend.append(\"rect\").attr(\"width\", LEGEND_RECT_SIZE).attr(\"height\", LEGEND_RECT_SIZE).style(\"fill\", color).style(\"stroke\", color);\n legend.data(arcs).append(\"text\").attr(\"x\", LEGEND_RECT_SIZE + LEGEND_SPACING).attr(\"y\", LEGEND_RECT_SIZE - LEGEND_SPACING).text((datum) => {\n const { label, value } = datum.data;\n if (db2.getShowData()) {\n return `${label} [${value}]`;\n }\n return label;\n });\n};\nconst renderer = { draw };\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles\n};\nexport {\n diagram\n};\n","import { D as getThemeVariables, A as defaultConfig, l as log, s as setAccTitle, g as getAccTitle, q as setDiagramTitle, r as getDiagramTitle, a as getAccDescription, b as setAccDescription, c as getConfig, t as clear$1, d as sanitizeText, i as configureSvgSize } from \"./mermaid-934d9bea.js\";\nimport { scaleLinear, select } from \"d3\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [1, 7], $V5 = [1, 5, 13, 15, 17, 19, 20, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $V6 = [1, 5, 6, 13, 15, 17, 19, 20, 25, 27, 28, 29, 30, 31, 32, 33, 34, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $V7 = [32, 33, 34], $V8 = [2, 7], $V9 = [1, 13], $Va = [1, 17], $Vb = [1, 18], $Vc = [1, 19], $Vd = [1, 20], $Ve = [1, 21], $Vf = [1, 22], $Vg = [1, 23], $Vh = [1, 24], $Vi = [1, 25], $Vj = [1, 26], $Vk = [1, 27], $Vl = [1, 30], $Vm = [1, 31], $Vn = [1, 32], $Vo = [1, 33], $Vp = [1, 34], $Vq = [1, 35], $Vr = [1, 36], $Vs = [1, 37], $Vt = [1, 38], $Vu = [1, 39], $Vv = [1, 40], $Vw = [1, 41], $Vx = [1, 42], $Vy = [1, 57], $Vz = [1, 58], $VA = [5, 22, 26, 32, 33, 34, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"SPACE\": 5, \"QUADRANT\": 6, \"document\": 7, \"line\": 8, \"statement\": 9, \"axisDetails\": 10, \"quadrantDetails\": 11, \"points\": 12, \"title\": 13, \"title_value\": 14, \"acc_title\": 15, \"acc_title_value\": 16, \"acc_descr\": 17, \"acc_descr_value\": 18, \"acc_descr_multiline_value\": 19, \"section\": 20, \"text\": 21, \"point_start\": 22, \"point_x\": 23, \"point_y\": 24, \"X-AXIS\": 25, \"AXIS-TEXT-DELIMITER\": 26, \"Y-AXIS\": 27, \"QUADRANT_1\": 28, \"QUADRANT_2\": 29, \"QUADRANT_3\": 30, \"QUADRANT_4\": 31, \"NEWLINE\": 32, \"SEMI\": 33, \"EOF\": 34, \"alphaNumToken\": 35, \"textNoTagsToken\": 36, \"STR\": 37, \"MD_STR\": 38, \"alphaNum\": 39, \"PUNCTUATION\": 40, \"AMP\": 41, \"NUM\": 42, \"ALPHA\": 43, \"COMMA\": 44, \"PLUS\": 45, \"EQUALS\": 46, \"MULT\": 47, \"DOT\": 48, \"BRKT\": 49, \"UNDERSCORE\": 50, \"MINUS\": 51, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"SPACE\", 6: \"QUADRANT\", 13: \"title\", 14: \"title_value\", 15: \"acc_title\", 16: \"acc_title_value\", 17: \"acc_descr\", 18: \"acc_descr_value\", 19: \"acc_descr_multiline_value\", 20: \"section\", 22: \"point_start\", 23: \"point_x\", 24: \"point_y\", 25: \"X-AXIS\", 26: \"AXIS-TEXT-DELIMITER\", 27: \"Y-AXIS\", 28: \"QUADRANT_1\", 29: \"QUADRANT_2\", 30: \"QUADRANT_3\", 31: \"QUADRANT_4\", 32: \"NEWLINE\", 33: \"SEMI\", 34: \"EOF\", 37: \"STR\", 38: \"MD_STR\", 40: \"PUNCTUATION\", 41: \"AMP\", 42: \"NUM\", 43: \"ALPHA\", 44: \"COMMA\", 45: \"PLUS\", 46: \"EQUALS\", 47: \"MULT\", 48: \"DOT\", 49: \"BRKT\", 50: \"UNDERSCORE\", 51: \"MINUS\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [9, 0], [9, 2], [9, 1], [9, 1], [9, 1], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [12, 4], [10, 4], [10, 3], [10, 2], [10, 4], [10, 3], [10, 2], [11, 2], [11, 2], [11, 2], [11, 2], [4, 1], [4, 1], [4, 1], [21, 1], [21, 2], [21, 1], [21, 1], [39, 1], [39, 2], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [35, 1], [36, 1], [36, 1], [36, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 12:\n this.$ = $$[$0].trim();\n yy.setDiagramTitle(this.$);\n break;\n case 13:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 14:\n case 15:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 16:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 17:\n yy.addPoint($$[$0 - 3], $$[$0 - 1], $$[$0]);\n break;\n case 18:\n yy.setXAxisLeftText($$[$0 - 2]);\n yy.setXAxisRightText($$[$0]);\n break;\n case 19:\n $$[$0 - 1].text += \" ⟶ \";\n yy.setXAxisLeftText($$[$0 - 1]);\n break;\n case 20:\n yy.setXAxisLeftText($$[$0]);\n break;\n case 21:\n yy.setYAxisBottomText($$[$0 - 2]);\n yy.setYAxisTopText($$[$0]);\n break;\n case 22:\n $$[$0 - 1].text += \" ⟶ \";\n yy.setYAxisBottomText($$[$0 - 1]);\n break;\n case 23:\n yy.setYAxisBottomText($$[$0]);\n break;\n case 24:\n yy.setQuadrant1Text($$[$0]);\n break;\n case 25:\n yy.setQuadrant2Text($$[$0]);\n break;\n case 26:\n yy.setQuadrant3Text($$[$0]);\n break;\n case 27:\n yy.setQuadrant4Text($$[$0]);\n break;\n case 31:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 32:\n this.$ = { text: $$[$0 - 1].text + \"\" + $$[$0], type: $$[$0 - 1].type };\n break;\n case 33:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 34:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 35:\n this.$ = $$[$0];\n break;\n case 36:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: $V0, 6: $V1, 32: $V2, 33: $V3, 34: $V4 }, { 1: [3] }, { 3: 8, 4: 2, 5: $V0, 6: $V1, 32: $V2, 33: $V3, 34: $V4 }, { 3: 9, 4: 2, 5: $V0, 6: $V1, 32: $V2, 33: $V3, 34: $V4 }, o($V5, [2, 4], { 7: 10 }), o($V6, [2, 28]), o($V6, [2, 29]), o($V6, [2, 30]), { 1: [2, 1] }, { 1: [2, 2] }, o($V7, $V8, { 8: 11, 9: 12, 10: 14, 11: 15, 12: 16, 21: 28, 35: 29, 1: [2, 3], 5: $V9, 13: $Va, 15: $Vb, 17: $Vc, 19: $Vd, 20: $Ve, 25: $Vf, 27: $Vg, 28: $Vh, 29: $Vi, 30: $Vj, 31: $Vk, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }), o($V5, [2, 5]), { 4: 43, 32: $V2, 33: $V3, 34: $V4 }, o($V7, $V8, { 10: 14, 11: 15, 12: 16, 21: 28, 35: 29, 9: 44, 5: $V9, 13: $Va, 15: $Vb, 17: $Vc, 19: $Vd, 20: $Ve, 25: $Vf, 27: $Vg, 28: $Vh, 29: $Vi, 30: $Vj, 31: $Vk, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }), o($V7, [2, 9]), o($V7, [2, 10]), o($V7, [2, 11]), { 14: [1, 45] }, { 16: [1, 46] }, { 18: [1, 47] }, o($V7, [2, 15]), o($V7, [2, 16]), { 21: 48, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 49, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 50, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 51, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 52, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 21: 53, 35: 29, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }, { 5: $Vy, 22: [1, 54], 35: 56, 36: 55, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }, o($VA, [2, 31]), o($VA, [2, 33]), o($VA, [2, 34]), o($VA, [2, 37]), o($VA, [2, 38]), o($VA, [2, 39]), o($VA, [2, 40]), o($VA, [2, 41]), o($VA, [2, 42]), o($VA, [2, 43]), o($VA, [2, 44]), o($VA, [2, 45]), o($VA, [2, 46]), o($VA, [2, 47]), o($V5, [2, 6]), o($V7, [2, 8]), o($V7, [2, 12]), o($V7, [2, 13]), o($V7, [2, 14]), o($V7, [2, 20], { 36: 55, 35: 56, 5: $Vy, 26: [1, 59], 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 23], { 36: 55, 35: 56, 5: $Vy, 26: [1, 60], 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 24], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 25], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 26], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 27], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), { 23: [1, 61] }, o($VA, [2, 32]), o($VA, [2, 48]), o($VA, [2, 49]), o($VA, [2, 50]), o($V7, [2, 19], { 35: 29, 21: 62, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }), o($V7, [2, 22], { 35: 29, 21: 63, 37: $Vl, 38: $Vm, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx }), { 24: [1, 64] }, o($V7, [2, 18], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 21], { 36: 55, 35: 56, 5: $Vy, 40: $Vn, 41: $Vo, 42: $Vp, 43: $Vq, 44: $Vr, 45: $Vs, 46: $Vt, 47: $Vu, 48: $Vv, 49: $Vw, 50: $Vx, 51: $Vz }), o($V7, [2, 17])],\n defaultActions: { 8: [2, 1], 9: [2, 2] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 32;\n case 3:\n break;\n case 4:\n this.begin(\"title\");\n return 13;\n case 5:\n this.popState();\n return \"title_value\";\n case 6:\n this.begin(\"acc_title\");\n return 15;\n case 7:\n this.popState();\n return \"acc_title_value\";\n case 8:\n this.begin(\"acc_descr\");\n return 17;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n case 13:\n return 25;\n case 14:\n return 27;\n case 15:\n return 26;\n case 16:\n return 28;\n case 17:\n return 29;\n case 18:\n return 30;\n case 19:\n return 31;\n case 20:\n this.begin(\"md_string\");\n break;\n case 21:\n return \"MD_STR\";\n case 22:\n this.popState();\n break;\n case 23:\n this.begin(\"string\");\n break;\n case 24:\n this.popState();\n break;\n case 25:\n return \"STR\";\n case 26:\n this.begin(\"point_start\");\n return 22;\n case 27:\n this.begin(\"point_x\");\n return 23;\n case 28:\n this.popState();\n break;\n case 29:\n this.popState();\n this.begin(\"point_y\");\n break;\n case 30:\n this.popState();\n return 24;\n case 31:\n return 6;\n case 32:\n return 43;\n case 33:\n return \"COLON\";\n case 34:\n return 45;\n case 35:\n return 44;\n case 36:\n return 46;\n case 37:\n return 46;\n case 38:\n return 47;\n case 39:\n return 49;\n case 40:\n return 50;\n case 41:\n return 48;\n case 42:\n return 41;\n case 43:\n return 51;\n case 44:\n return 42;\n case 45:\n return 5;\n case 46:\n return 33;\n case 47:\n return 40;\n case 48:\n return 34;\n }\n },\n rules: [/^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n\\r]+)/i, /^(?:%%[^\\n]*)/i, /^(?:title\\b)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?: *x-axis *)/i, /^(?: *y-axis *)/i, /^(?: *--+> *)/i, /^(?: *quadrant-1 *)/i, /^(?: *quadrant-2 *)/i, /^(?: *quadrant-3 *)/i, /^(?: *quadrant-4 *)/i, /^(?:[\"][`])/i, /^(?:[^`\"]+)/i, /^(?:[`][\"])/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:\\s*:\\s*\\[\\s*)/i, /^(?:(1)|(0(.\\d+)?))/i, /^(?:\\s*\\] *)/i, /^(?:\\s*,\\s*)/i, /^(?:(1)|(0(.\\d+)?))/i, /^(?: *quadrantChart *)/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:=)/i, /^(?:\\*)/i, /^(?:#)/i, /^(?:[\\_])/i, /^(?:\\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\\s)/i, /^(?:;)/i, /^(?:[!\"#$%&'*+,-.`?\\\\_/])/i, /^(?:$)/i],\n conditions: { \"point_y\": { \"rules\": [30], \"inclusive\": false }, \"point_x\": { \"rules\": [29], \"inclusive\": false }, \"point_start\": { \"rules\": [27, 28], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [11, 12], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9], \"inclusive\": false }, \"acc_title\": { \"rules\": [7], \"inclusive\": false }, \"title\": { \"rules\": [5], \"inclusive\": false }, \"md_string\": { \"rules\": [21, 22], \"inclusive\": false }, \"string\": { \"rules\": [24, 25], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 6, 8, 10, 13, 14, 15, 16, 17, 18, 19, 20, 23, 26, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst defaultThemeVariables = getThemeVariables();\nclass QuadrantBuilder {\n constructor() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n }\n getDefaultData() {\n return {\n titleText: \"\",\n quadrant1Text: \"\",\n quadrant2Text: \"\",\n quadrant3Text: \"\",\n quadrant4Text: \"\",\n xAxisLeftText: \"\",\n xAxisRightText: \"\",\n yAxisBottomText: \"\",\n yAxisTopText: \"\",\n points: []\n };\n }\n getDefaultConfig() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;\n return {\n showXAxis: true,\n showYAxis: true,\n showTitle: true,\n chartHeight: ((_a = defaultConfig.quadrantChart) == null ? void 0 : _a.chartWidth) || 500,\n chartWidth: ((_b = defaultConfig.quadrantChart) == null ? void 0 : _b.chartHeight) || 500,\n titlePadding: ((_c = defaultConfig.quadrantChart) == null ? void 0 : _c.titlePadding) || 10,\n titleFontSize: ((_d = defaultConfig.quadrantChart) == null ? void 0 : _d.titleFontSize) || 20,\n quadrantPadding: ((_e = defaultConfig.quadrantChart) == null ? void 0 : _e.quadrantPadding) || 5,\n xAxisLabelPadding: ((_f = defaultConfig.quadrantChart) == null ? void 0 : _f.xAxisLabelPadding) || 5,\n yAxisLabelPadding: ((_g = defaultConfig.quadrantChart) == null ? void 0 : _g.yAxisLabelPadding) || 5,\n xAxisLabelFontSize: ((_h = defaultConfig.quadrantChart) == null ? void 0 : _h.xAxisLabelFontSize) || 16,\n yAxisLabelFontSize: ((_i = defaultConfig.quadrantChart) == null ? void 0 : _i.yAxisLabelFontSize) || 16,\n quadrantLabelFontSize: ((_j = defaultConfig.quadrantChart) == null ? void 0 : _j.quadrantLabelFontSize) || 16,\n quadrantTextTopPadding: ((_k = defaultConfig.quadrantChart) == null ? void 0 : _k.quadrantTextTopPadding) || 5,\n pointTextPadding: ((_l = defaultConfig.quadrantChart) == null ? void 0 : _l.pointTextPadding) || 5,\n pointLabelFontSize: ((_m = defaultConfig.quadrantChart) == null ? void 0 : _m.pointLabelFontSize) || 12,\n pointRadius: ((_n = defaultConfig.quadrantChart) == null ? void 0 : _n.pointRadius) || 5,\n xAxisPosition: ((_o = defaultConfig.quadrantChart) == null ? void 0 : _o.xAxisPosition) || \"top\",\n yAxisPosition: ((_p = defaultConfig.quadrantChart) == null ? void 0 : _p.yAxisPosition) || \"left\",\n quadrantInternalBorderStrokeWidth: ((_q = defaultConfig.quadrantChart) == null ? void 0 : _q.quadrantInternalBorderStrokeWidth) || 1,\n quadrantExternalBorderStrokeWidth: ((_r = defaultConfig.quadrantChart) == null ? void 0 : _r.quadrantExternalBorderStrokeWidth) || 2\n };\n }\n getDefaultThemeConfig() {\n return {\n quadrant1Fill: defaultThemeVariables.quadrant1Fill,\n quadrant2Fill: defaultThemeVariables.quadrant2Fill,\n quadrant3Fill: defaultThemeVariables.quadrant3Fill,\n quadrant4Fill: defaultThemeVariables.quadrant4Fill,\n quadrant1TextFill: defaultThemeVariables.quadrant1TextFill,\n quadrant2TextFill: defaultThemeVariables.quadrant2TextFill,\n quadrant3TextFill: defaultThemeVariables.quadrant3TextFill,\n quadrant4TextFill: defaultThemeVariables.quadrant4TextFill,\n quadrantPointFill: defaultThemeVariables.quadrantPointFill,\n quadrantPointTextFill: defaultThemeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: defaultThemeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: defaultThemeVariables.quadrantYAxisTextFill,\n quadrantTitleFill: defaultThemeVariables.quadrantTitleFill,\n quadrantInternalBorderStrokeFill: defaultThemeVariables.quadrantInternalBorderStrokeFill,\n quadrantExternalBorderStrokeFill: defaultThemeVariables.quadrantExternalBorderStrokeFill\n };\n }\n clear() {\n this.config = this.getDefaultConfig();\n this.themeConfig = this.getDefaultThemeConfig();\n this.data = this.getDefaultData();\n log.info(\"clear called\");\n }\n setData(data) {\n this.data = { ...this.data, ...data };\n }\n addPoints(points) {\n this.data.points = [...points, ...this.data.points];\n }\n setConfig(config2) {\n log.trace(\"setConfig called with: \", config2);\n this.config = { ...this.config, ...config2 };\n }\n setThemeConfig(themeConfig) {\n log.trace(\"setThemeConfig called with: \", themeConfig);\n this.themeConfig = { ...this.themeConfig, ...themeConfig };\n }\n calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle) {\n const xAxisSpaceCalculation = this.config.xAxisLabelPadding * 2 + this.config.xAxisLabelFontSize;\n const xAxisSpace = {\n top: xAxisPosition === \"top\" && showXAxis ? xAxisSpaceCalculation : 0,\n bottom: xAxisPosition === \"bottom\" && showXAxis ? xAxisSpaceCalculation : 0\n };\n const yAxisSpaceCalculation = this.config.yAxisLabelPadding * 2 + this.config.yAxisLabelFontSize;\n const yAxisSpace = {\n left: this.config.yAxisPosition === \"left\" && showYAxis ? yAxisSpaceCalculation : 0,\n right: this.config.yAxisPosition === \"right\" && showYAxis ? yAxisSpaceCalculation : 0\n };\n const titleSpaceCalculation = this.config.titleFontSize + this.config.titlePadding * 2;\n const titleSpace = {\n top: showTitle ? titleSpaceCalculation : 0\n };\n const quadrantLeft = this.config.quadrantPadding + yAxisSpace.left;\n const quadrantTop = this.config.quadrantPadding + xAxisSpace.top + titleSpace.top;\n const quadrantWidth = this.config.chartWidth - this.config.quadrantPadding * 2 - yAxisSpace.left - yAxisSpace.right;\n const quadrantHeight = this.config.chartHeight - this.config.quadrantPadding * 2 - xAxisSpace.top - xAxisSpace.bottom - titleSpace.top;\n const quadrantHalfWidth = quadrantWidth / 2;\n const quadrantHalfHeight = quadrantHeight / 2;\n const quadrantSpace = {\n quadrantLeft,\n quadrantTop,\n quadrantWidth,\n quadrantHalfWidth,\n quadrantHeight,\n quadrantHalfHeight\n };\n return {\n xAxisSpace,\n yAxisSpace,\n titleSpace,\n quadrantSpace\n };\n }\n getAxisLabels(xAxisPosition, showXAxis, showYAxis, spaceData) {\n const { quadrantSpace, titleSpace } = spaceData;\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth\n } = quadrantSpace;\n const drawXAxisLabelsInMiddle = Boolean(this.data.xAxisRightText);\n const drawYAxisLabelsInMiddle = Boolean(this.data.yAxisTopText);\n const axisLabels = [];\n if (this.data.xAxisLeftText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisLeftText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0),\n y: xAxisPosition === \"top\" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawXAxisLabelsInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: 0\n });\n }\n if (this.data.xAxisRightText && showXAxis) {\n axisLabels.push({\n text: this.data.xAxisRightText,\n fill: this.themeConfig.quadrantXAxisTextFill,\n x: quadrantLeft + quadrantHalfWidth + (drawXAxisLabelsInMiddle ? quadrantHalfWidth / 2 : 0),\n y: xAxisPosition === \"top\" ? this.config.xAxisLabelPadding + titleSpace.top : this.config.xAxisLabelPadding + quadrantTop + quadrantHeight + this.config.quadrantPadding,\n fontSize: this.config.xAxisLabelFontSize,\n verticalPos: drawXAxisLabelsInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: 0\n });\n }\n if (this.data.yAxisBottomText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisBottomText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x: this.config.yAxisPosition === \"left\" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding,\n y: quadrantTop + quadrantHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawYAxisLabelsInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: -90\n });\n }\n if (this.data.yAxisTopText && showYAxis) {\n axisLabels.push({\n text: this.data.yAxisTopText,\n fill: this.themeConfig.quadrantYAxisTextFill,\n x: this.config.yAxisPosition === \"left\" ? this.config.yAxisLabelPadding : this.config.yAxisLabelPadding + quadrantLeft + quadrantWidth + this.config.quadrantPadding,\n y: quadrantTop + quadrantHalfHeight - (drawYAxisLabelsInMiddle ? quadrantHalfHeight / 2 : 0),\n fontSize: this.config.yAxisLabelFontSize,\n verticalPos: drawYAxisLabelsInMiddle ? \"center\" : \"left\",\n horizontalPos: \"top\",\n rotation: -90\n });\n }\n return axisLabels;\n }\n getQuadrants(spaceData) {\n const { quadrantSpace } = spaceData;\n const { quadrantHalfHeight, quadrantLeft, quadrantHalfWidth, quadrantTop } = quadrantSpace;\n const quadrants = [\n {\n text: {\n text: this.data.quadrant1Text,\n fill: this.themeConfig.quadrant1TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant1Fill\n },\n {\n text: {\n text: this.data.quadrant2Text,\n fill: this.themeConfig.quadrant2TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft,\n y: quadrantTop,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant2Fill\n },\n {\n text: {\n text: this.data.quadrant3Text,\n fill: this.themeConfig.quadrant3TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant3Fill\n },\n {\n text: {\n text: this.data.quadrant4Text,\n fill: this.themeConfig.quadrant4TextFill,\n x: 0,\n y: 0,\n fontSize: this.config.quadrantLabelFontSize,\n verticalPos: \"center\",\n horizontalPos: \"middle\",\n rotation: 0\n },\n x: quadrantLeft + quadrantHalfWidth,\n y: quadrantTop + quadrantHalfHeight,\n width: quadrantHalfWidth,\n height: quadrantHalfHeight,\n fill: this.themeConfig.quadrant4Fill\n }\n ];\n for (const quadrant of quadrants) {\n quadrant.text.x = quadrant.x + quadrant.width / 2;\n if (this.data.points.length === 0) {\n quadrant.text.y = quadrant.y + quadrant.height / 2;\n quadrant.text.horizontalPos = \"middle\";\n } else {\n quadrant.text.y = quadrant.y + this.config.quadrantTextTopPadding;\n quadrant.text.horizontalPos = \"top\";\n }\n }\n return quadrants;\n }\n getQuadrantPoints(spaceData) {\n const { quadrantSpace } = spaceData;\n const { quadrantHeight, quadrantLeft, quadrantTop, quadrantWidth } = quadrantSpace;\n const xAxis = scaleLinear().domain([0, 1]).range([quadrantLeft, quadrantWidth + quadrantLeft]);\n const yAxis = scaleLinear().domain([0, 1]).range([quadrantHeight + quadrantTop, quadrantTop]);\n const points = this.data.points.map((point) => {\n const props = {\n x: xAxis(point.x),\n y: yAxis(point.y),\n fill: this.themeConfig.quadrantPointFill,\n radius: this.config.pointRadius,\n text: {\n text: point.text,\n fill: this.themeConfig.quadrantPointTextFill,\n x: xAxis(point.x),\n y: yAxis(point.y) + this.config.pointTextPadding,\n verticalPos: \"center\",\n horizontalPos: \"top\",\n fontSize: this.config.pointLabelFontSize,\n rotation: 0\n }\n };\n return props;\n });\n return points;\n }\n getBorders(spaceData) {\n const halfExternalBorderWidth = this.config.quadrantExternalBorderStrokeWidth / 2;\n const { quadrantSpace } = spaceData;\n const {\n quadrantHalfHeight,\n quadrantHeight,\n quadrantLeft,\n quadrantHalfWidth,\n quadrantTop,\n quadrantWidth\n } = quadrantSpace;\n const borderLines = [\n // top border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop\n },\n // right border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth\n },\n // bottom border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft - halfExternalBorderWidth,\n y1: quadrantTop + quadrantHeight,\n x2: quadrantLeft + quadrantWidth + halfExternalBorderWidth,\n y2: quadrantTop + quadrantHeight\n },\n // left border\n {\n strokeFill: this.themeConfig.quadrantExternalBorderStrokeFill,\n strokeWidth: this.config.quadrantExternalBorderStrokeWidth,\n x1: quadrantLeft,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth\n },\n // vertical inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + quadrantHalfWidth,\n y1: quadrantTop + halfExternalBorderWidth,\n x2: quadrantLeft + quadrantHalfWidth,\n y2: quadrantTop + quadrantHeight - halfExternalBorderWidth\n },\n // horizontal inner border\n {\n strokeFill: this.themeConfig.quadrantInternalBorderStrokeFill,\n strokeWidth: this.config.quadrantInternalBorderStrokeWidth,\n x1: quadrantLeft + halfExternalBorderWidth,\n y1: quadrantTop + quadrantHalfHeight,\n x2: quadrantLeft + quadrantWidth - halfExternalBorderWidth,\n y2: quadrantTop + quadrantHalfHeight\n }\n ];\n return borderLines;\n }\n getTitle(showTitle) {\n if (showTitle) {\n return {\n text: this.data.titleText,\n fill: this.themeConfig.quadrantTitleFill,\n fontSize: this.config.titleFontSize,\n horizontalPos: \"top\",\n verticalPos: \"center\",\n rotation: 0,\n y: this.config.titlePadding,\n x: this.config.chartWidth / 2\n };\n }\n return;\n }\n build() {\n const showXAxis = this.config.showXAxis && !!(this.data.xAxisLeftText || this.data.xAxisRightText);\n const showYAxis = this.config.showYAxis && !!(this.data.yAxisTopText || this.data.yAxisBottomText);\n const showTitle = this.config.showTitle && !!this.data.titleText;\n const xAxisPosition = this.data.points.length > 0 ? \"bottom\" : this.config.xAxisPosition;\n const calculatedSpace = this.calculateSpace(xAxisPosition, showXAxis, showYAxis, showTitle);\n return {\n points: this.getQuadrantPoints(calculatedSpace),\n quadrants: this.getQuadrants(calculatedSpace),\n axisLabels: this.getAxisLabels(xAxisPosition, showXAxis, showYAxis, calculatedSpace),\n borderLines: this.getBorders(calculatedSpace),\n title: this.getTitle(showTitle)\n };\n }\n}\nconst config = getConfig();\nfunction textSanitizer(text) {\n return sanitizeText(text.trim(), config);\n}\nconst quadrantBuilder = new QuadrantBuilder();\nfunction setQuadrant1Text(textObj) {\n quadrantBuilder.setData({ quadrant1Text: textSanitizer(textObj.text) });\n}\nfunction setQuadrant2Text(textObj) {\n quadrantBuilder.setData({ quadrant2Text: textSanitizer(textObj.text) });\n}\nfunction setQuadrant3Text(textObj) {\n quadrantBuilder.setData({ quadrant3Text: textSanitizer(textObj.text) });\n}\nfunction setQuadrant4Text(textObj) {\n quadrantBuilder.setData({ quadrant4Text: textSanitizer(textObj.text) });\n}\nfunction setXAxisLeftText(textObj) {\n quadrantBuilder.setData({ xAxisLeftText: textSanitizer(textObj.text) });\n}\nfunction setXAxisRightText(textObj) {\n quadrantBuilder.setData({ xAxisRightText: textSanitizer(textObj.text) });\n}\nfunction setYAxisTopText(textObj) {\n quadrantBuilder.setData({ yAxisTopText: textSanitizer(textObj.text) });\n}\nfunction setYAxisBottomText(textObj) {\n quadrantBuilder.setData({ yAxisBottomText: textSanitizer(textObj.text) });\n}\nfunction addPoint(textObj, x, y) {\n quadrantBuilder.addPoints([{ x, y, text: textSanitizer(textObj.text) }]);\n}\nfunction setWidth(width) {\n quadrantBuilder.setConfig({ chartWidth: width });\n}\nfunction setHeight(height) {\n quadrantBuilder.setConfig({ chartHeight: height });\n}\nfunction getQuadrantData() {\n const config2 = getConfig();\n const { themeVariables, quadrantChart: quadrantChartConfig } = config2;\n if (quadrantChartConfig) {\n quadrantBuilder.setConfig(quadrantChartConfig);\n }\n quadrantBuilder.setThemeConfig({\n quadrant1Fill: themeVariables.quadrant1Fill,\n quadrant2Fill: themeVariables.quadrant2Fill,\n quadrant3Fill: themeVariables.quadrant3Fill,\n quadrant4Fill: themeVariables.quadrant4Fill,\n quadrant1TextFill: themeVariables.quadrant1TextFill,\n quadrant2TextFill: themeVariables.quadrant2TextFill,\n quadrant3TextFill: themeVariables.quadrant3TextFill,\n quadrant4TextFill: themeVariables.quadrant4TextFill,\n quadrantPointFill: themeVariables.quadrantPointFill,\n quadrantPointTextFill: themeVariables.quadrantPointTextFill,\n quadrantXAxisTextFill: themeVariables.quadrantXAxisTextFill,\n quadrantYAxisTextFill: themeVariables.quadrantYAxisTextFill,\n quadrantExternalBorderStrokeFill: themeVariables.quadrantExternalBorderStrokeFill,\n quadrantInternalBorderStrokeFill: themeVariables.quadrantInternalBorderStrokeFill,\n quadrantTitleFill: themeVariables.quadrantTitleFill\n });\n quadrantBuilder.setData({ titleText: getDiagramTitle() });\n return quadrantBuilder.build();\n}\nconst clear = function() {\n quadrantBuilder.clear();\n clear$1();\n};\nconst db = {\n setWidth,\n setHeight,\n setQuadrant1Text,\n setQuadrant2Text,\n setQuadrant3Text,\n setQuadrant4Text,\n setXAxisLeftText,\n setXAxisRightText,\n setYAxisTopText,\n setYAxisBottomText,\n addPoint,\n getQuadrantData,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription\n};\nconst draw = (txt, id, _version, diagObj) => {\n var _a, _b, _c;\n function getDominantBaseLine(horizontalPos) {\n return horizontalPos === \"top\" ? \"hanging\" : \"middle\";\n }\n function getTextAnchor(verticalPos) {\n return verticalPos === \"left\" ? \"start\" : \"middle\";\n }\n function getTransformation(data) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n const conf = getConfig();\n log.debug(\"Rendering quadrant chart\\n\" + txt);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const group = svg.append(\"g\").attr(\"class\", \"main\");\n const width = ((_a = conf.quadrantChart) == null ? void 0 : _a.chartWidth) || 500;\n const height = ((_b = conf.quadrantChart) == null ? void 0 : _b.chartHeight) || 500;\n configureSvgSize(svg, height, width, ((_c = conf.quadrantChart) == null ? void 0 : _c.useMaxWidth) || true);\n svg.attr(\"viewBox\", \"0 0 \" + width + \" \" + height);\n diagObj.db.setHeight(height);\n diagObj.db.setWidth(width);\n const quadrantData = diagObj.db.getQuadrantData();\n const quadrantsGroup = group.append(\"g\").attr(\"class\", \"quadrants\");\n const borderGroup = group.append(\"g\").attr(\"class\", \"border\");\n const dataPointGroup = group.append(\"g\").attr(\"class\", \"data-points\");\n const labelGroup = group.append(\"g\").attr(\"class\", \"labels\");\n const titleGroup = group.append(\"g\").attr(\"class\", \"title\");\n if (quadrantData.title) {\n titleGroup.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).attr(\"fill\", quadrantData.title.fill).attr(\"font-size\", quadrantData.title.fontSize).attr(\"dominant-baseline\", getDominantBaseLine(quadrantData.title.horizontalPos)).attr(\"text-anchor\", getTextAnchor(quadrantData.title.verticalPos)).attr(\"transform\", getTransformation(quadrantData.title)).text(quadrantData.title.text);\n }\n if (quadrantData.borderLines) {\n borderGroup.selectAll(\"line\").data(quadrantData.borderLines).enter().append(\"line\").attr(\"x1\", (data) => data.x1).attr(\"y1\", (data) => data.y1).attr(\"x2\", (data) => data.x2).attr(\"y2\", (data) => data.y2).style(\"stroke\", (data) => data.strokeFill).style(\"stroke-width\", (data) => data.strokeWidth);\n }\n const quadrants = quadrantsGroup.selectAll(\"g.quadrant\").data(quadrantData.quadrants).enter().append(\"g\").attr(\"class\", \"quadrant\");\n quadrants.append(\"rect\").attr(\"x\", (data) => data.x).attr(\"y\", (data) => data.y).attr(\"width\", (data) => data.width).attr(\"height\", (data) => data.height).attr(\"fill\", (data) => data.fill);\n quadrants.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).attr(\"fill\", (data) => data.text.fill).attr(\"font-size\", (data) => data.text.fontSize).attr(\n \"dominant-baseline\",\n (data) => getDominantBaseLine(data.text.horizontalPos)\n ).attr(\"text-anchor\", (data) => getTextAnchor(data.text.verticalPos)).attr(\"transform\", (data) => getTransformation(data.text)).text((data) => data.text.text);\n const labels = labelGroup.selectAll(\"g.label\").data(quadrantData.axisLabels).enter().append(\"g\").attr(\"class\", \"label\");\n labels.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).text((data) => data.text).attr(\"fill\", (data) => data.fill).attr(\"font-size\", (data) => data.fontSize).attr(\"dominant-baseline\", (data) => getDominantBaseLine(data.horizontalPos)).attr(\"text-anchor\", (data) => getTextAnchor(data.verticalPos)).attr(\"transform\", (data) => getTransformation(data));\n const dataPoints = dataPointGroup.selectAll(\"g.data-point\").data(quadrantData.points).enter().append(\"g\").attr(\"class\", \"data-point\");\n dataPoints.append(\"circle\").attr(\"cx\", (data) => data.x).attr(\"cy\", (data) => data.y).attr(\"r\", (data) => data.radius).attr(\"fill\", (data) => data.fill);\n dataPoints.append(\"text\").attr(\"x\", 0).attr(\"y\", 0).text((data) => data.text.text).attr(\"fill\", (data) => data.text.fill).attr(\"font-size\", (data) => data.text.fontSize).attr(\n \"dominant-baseline\",\n (data) => getDominantBaseLine(data.text.horizontalPos)\n ).attr(\"text-anchor\", (data) => getTextAnchor(data.text.verticalPos)).attr(\"transform\", (data) => getTransformation(data.text));\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles: () => \"\"\n};\nexport {\n diagram\n};\n","import { c as getConfig, s as setAccTitle, g as getAccTitle, b as setAccDescription, a as getAccDescription, l as log, t as clear$1, i as configureSvgSize, e as common } from \"./mermaid-934d9bea.js\";\nimport { select, line } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [5, 6, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 62, 63], $V5 = [1, 18], $V6 = [2, 7], $V7 = [1, 22], $V8 = [1, 23], $V9 = [1, 24], $Va = [1, 25], $Vb = [1, 26], $Vc = [1, 27], $Vd = [1, 20], $Ve = [1, 28], $Vf = [1, 29], $Vg = [62, 63], $Vh = [5, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 51, 53, 62, 63], $Vi = [1, 47], $Vj = [1, 48], $Vk = [1, 49], $Vl = [1, 50], $Vm = [1, 51], $Vn = [1, 52], $Vo = [1, 53], $Vp = [53, 54], $Vq = [1, 64], $Vr = [1, 60], $Vs = [1, 61], $Vt = [1, 62], $Vu = [1, 63], $Vv = [1, 65], $Vw = [1, 69], $Vx = [1, 70], $Vy = [1, 67], $Vz = [1, 68], $VA = [5, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 62, 63];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"directive\": 4, \"NEWLINE\": 5, \"RD\": 6, \"diagram\": 7, \"EOF\": 8, \"acc_title\": 9, \"acc_title_value\": 10, \"acc_descr\": 11, \"acc_descr_value\": 12, \"acc_descr_multiline_value\": 13, \"requirementDef\": 14, \"elementDef\": 15, \"relationshipDef\": 16, \"requirementType\": 17, \"requirementName\": 18, \"STRUCT_START\": 19, \"requirementBody\": 20, \"ID\": 21, \"COLONSEP\": 22, \"id\": 23, \"TEXT\": 24, \"text\": 25, \"RISK\": 26, \"riskLevel\": 27, \"VERIFYMTHD\": 28, \"verifyType\": 29, \"STRUCT_STOP\": 30, \"REQUIREMENT\": 31, \"FUNCTIONAL_REQUIREMENT\": 32, \"INTERFACE_REQUIREMENT\": 33, \"PERFORMANCE_REQUIREMENT\": 34, \"PHYSICAL_REQUIREMENT\": 35, \"DESIGN_CONSTRAINT\": 36, \"LOW_RISK\": 37, \"MED_RISK\": 38, \"HIGH_RISK\": 39, \"VERIFY_ANALYSIS\": 40, \"VERIFY_DEMONSTRATION\": 41, \"VERIFY_INSPECTION\": 42, \"VERIFY_TEST\": 43, \"ELEMENT\": 44, \"elementName\": 45, \"elementBody\": 46, \"TYPE\": 47, \"type\": 48, \"DOCREF\": 49, \"ref\": 50, \"END_ARROW_L\": 51, \"relationship\": 52, \"LINE\": 53, \"END_ARROW_R\": 54, \"CONTAINS\": 55, \"COPIES\": 56, \"DERIVES\": 57, \"SATISFIES\": 58, \"VERIFIES\": 59, \"REFINES\": 60, \"TRACES\": 61, \"unqString\": 62, \"qString\": 63, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"NEWLINE\", 6: \"RD\", 8: \"EOF\", 9: \"acc_title\", 10: \"acc_title_value\", 11: \"acc_descr\", 12: \"acc_descr_value\", 13: \"acc_descr_multiline_value\", 19: \"STRUCT_START\", 21: \"ID\", 22: \"COLONSEP\", 24: \"TEXT\", 26: \"RISK\", 28: \"VERIFYMTHD\", 30: \"STRUCT_STOP\", 31: \"REQUIREMENT\", 32: \"FUNCTIONAL_REQUIREMENT\", 33: \"INTERFACE_REQUIREMENT\", 34: \"PERFORMANCE_REQUIREMENT\", 35: \"PHYSICAL_REQUIREMENT\", 36: \"DESIGN_CONSTRAINT\", 37: \"LOW_RISK\", 38: \"MED_RISK\", 39: \"HIGH_RISK\", 40: \"VERIFY_ANALYSIS\", 41: \"VERIFY_DEMONSTRATION\", 42: \"VERIFY_INSPECTION\", 43: \"VERIFY_TEST\", 44: \"ELEMENT\", 47: \"TYPE\", 49: \"DOCREF\", 51: \"END_ARROW_L\", 53: \"LINE\", 54: \"END_ARROW_R\", 55: \"CONTAINS\", 56: \"COPIES\", 57: \"DERIVES\", 58: \"SATISFIES\", 59: \"VERIFIES\", 60: \"REFINES\", 61: \"TRACES\", 62: \"unqString\", 63: \"qString\" },\n productions_: [0, [3, 3], [3, 2], [3, 4], [4, 2], [4, 2], [4, 1], [7, 0], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [14, 5], [20, 5], [20, 5], [20, 5], [20, 5], [20, 2], [20, 1], [17, 1], [17, 1], [17, 1], [17, 1], [17, 1], [17, 1], [27, 1], [27, 1], [27, 1], [29, 1], [29, 1], [29, 1], [29, 1], [15, 5], [46, 5], [46, 5], [46, 2], [46, 1], [16, 5], [16, 5], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [18, 1], [18, 1], [23, 1], [23, 1], [25, 1], [25, 1], [45, 1], [45, 1], [48, 1], [48, 1], [50, 1], [50, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 4:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 5:\n case 6:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 7:\n this.$ = [];\n break;\n case 13:\n yy.addRequirement($$[$0 - 3], $$[$0 - 4]);\n break;\n case 14:\n yy.setNewReqId($$[$0 - 2]);\n break;\n case 15:\n yy.setNewReqText($$[$0 - 2]);\n break;\n case 16:\n yy.setNewReqRisk($$[$0 - 2]);\n break;\n case 17:\n yy.setNewReqVerifyMethod($$[$0 - 2]);\n break;\n case 20:\n this.$ = yy.RequirementType.REQUIREMENT;\n break;\n case 21:\n this.$ = yy.RequirementType.FUNCTIONAL_REQUIREMENT;\n break;\n case 22:\n this.$ = yy.RequirementType.INTERFACE_REQUIREMENT;\n break;\n case 23:\n this.$ = yy.RequirementType.PERFORMANCE_REQUIREMENT;\n break;\n case 24:\n this.$ = yy.RequirementType.PHYSICAL_REQUIREMENT;\n break;\n case 25:\n this.$ = yy.RequirementType.DESIGN_CONSTRAINT;\n break;\n case 26:\n this.$ = yy.RiskLevel.LOW_RISK;\n break;\n case 27:\n this.$ = yy.RiskLevel.MED_RISK;\n break;\n case 28:\n this.$ = yy.RiskLevel.HIGH_RISK;\n break;\n case 29:\n this.$ = yy.VerifyType.VERIFY_ANALYSIS;\n break;\n case 30:\n this.$ = yy.VerifyType.VERIFY_DEMONSTRATION;\n break;\n case 31:\n this.$ = yy.VerifyType.VERIFY_INSPECTION;\n break;\n case 32:\n this.$ = yy.VerifyType.VERIFY_TEST;\n break;\n case 33:\n yy.addElement($$[$0 - 3]);\n break;\n case 34:\n yy.setNewElementType($$[$0 - 2]);\n break;\n case 35:\n yy.setNewElementDocRef($$[$0 - 2]);\n break;\n case 38:\n yy.addRelationship($$[$0 - 2], $$[$0], $$[$0 - 4]);\n break;\n case 39:\n yy.addRelationship($$[$0 - 2], $$[$0 - 4], $$[$0]);\n break;\n case 40:\n this.$ = yy.Relationships.CONTAINS;\n break;\n case 41:\n this.$ = yy.Relationships.COPIES;\n break;\n case 42:\n this.$ = yy.Relationships.DERIVES;\n break;\n case 43:\n this.$ = yy.Relationships.SATISFIES;\n break;\n case 44:\n this.$ = yy.Relationships.VERIFIES;\n break;\n case 45:\n this.$ = yy.Relationships.REFINES;\n break;\n case 46:\n this.$ = yy.Relationships.TRACES;\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [3] }, { 3: 8, 4: 2, 5: [1, 7], 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 5: [1, 9] }, { 10: [1, 10] }, { 12: [1, 11] }, o($V4, [2, 6]), { 3: 12, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [2, 2] }, { 4: 17, 5: $V5, 7: 13, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, o($V4, [2, 4]), o($V4, [2, 5]), { 1: [2, 1] }, { 8: [1, 30] }, { 4: 17, 5: $V5, 7: 31, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 32, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 33, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 34, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 35, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 18: 36, 62: [1, 37], 63: [1, 38] }, { 45: 39, 62: [1, 40], 63: [1, 41] }, { 51: [1, 42], 53: [1, 43] }, o($Vg, [2, 20]), o($Vg, [2, 21]), o($Vg, [2, 22]), o($Vg, [2, 23]), o($Vg, [2, 24]), o($Vg, [2, 25]), o($Vh, [2, 49]), o($Vh, [2, 50]), { 1: [2, 3] }, { 8: [2, 8] }, { 8: [2, 9] }, { 8: [2, 10] }, { 8: [2, 11] }, { 8: [2, 12] }, { 19: [1, 44] }, { 19: [2, 47] }, { 19: [2, 48] }, { 19: [1, 45] }, { 19: [2, 53] }, { 19: [2, 54] }, { 52: 46, 55: $Vi, 56: $Vj, 57: $Vk, 58: $Vl, 59: $Vm, 60: $Vn, 61: $Vo }, { 52: 54, 55: $Vi, 56: $Vj, 57: $Vk, 58: $Vl, 59: $Vm, 60: $Vn, 61: $Vo }, { 5: [1, 55] }, { 5: [1, 56] }, { 53: [1, 57] }, o($Vp, [2, 40]), o($Vp, [2, 41]), o($Vp, [2, 42]), o($Vp, [2, 43]), o($Vp, [2, 44]), o($Vp, [2, 45]), o($Vp, [2, 46]), { 54: [1, 58] }, { 5: $Vq, 20: 59, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vw, 30: $Vx, 46: 66, 47: $Vy, 49: $Vz }, { 23: 71, 62: $Ve, 63: $Vf }, { 23: 72, 62: $Ve, 63: $Vf }, o($VA, [2, 13]), { 22: [1, 73] }, { 22: [1, 74] }, { 22: [1, 75] }, { 22: [1, 76] }, { 5: $Vq, 20: 77, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, o($VA, [2, 19]), o($VA, [2, 33]), { 22: [1, 78] }, { 22: [1, 79] }, { 5: $Vw, 30: $Vx, 46: 80, 47: $Vy, 49: $Vz }, o($VA, [2, 37]), o($VA, [2, 38]), o($VA, [2, 39]), { 23: 81, 62: $Ve, 63: $Vf }, { 25: 82, 62: [1, 83], 63: [1, 84] }, { 27: 85, 37: [1, 86], 38: [1, 87], 39: [1, 88] }, { 29: 89, 40: [1, 90], 41: [1, 91], 42: [1, 92], 43: [1, 93] }, o($VA, [2, 18]), { 48: 94, 62: [1, 95], 63: [1, 96] }, { 50: 97, 62: [1, 98], 63: [1, 99] }, o($VA, [2, 36]), { 5: [1, 100] }, { 5: [1, 101] }, { 5: [2, 51] }, { 5: [2, 52] }, { 5: [1, 102] }, { 5: [2, 26] }, { 5: [2, 27] }, { 5: [2, 28] }, { 5: [1, 103] }, { 5: [2, 29] }, { 5: [2, 30] }, { 5: [2, 31] }, { 5: [2, 32] }, { 5: [1, 104] }, { 5: [2, 55] }, { 5: [2, 56] }, { 5: [1, 105] }, { 5: [2, 57] }, { 5: [2, 58] }, { 5: $Vq, 20: 106, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vq, 20: 107, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vq, 20: 108, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vq, 20: 109, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vw, 30: $Vx, 46: 110, 47: $Vy, 49: $Vz }, { 5: $Vw, 30: $Vx, 46: 111, 47: $Vy, 49: $Vz }, o($VA, [2, 14]), o($VA, [2, 15]), o($VA, [2, 16]), o($VA, [2, 17]), o($VA, [2, 34]), o($VA, [2, 35])],\n defaultActions: { 8: [2, 2], 12: [2, 1], 30: [2, 3], 31: [2, 8], 32: [2, 9], 33: [2, 10], 34: [2, 11], 35: [2, 12], 37: [2, 47], 38: [2, 48], 40: [2, 53], 41: [2, 54], 83: [2, 51], 84: [2, 52], 86: [2, 26], 87: [2, 27], 88: [2, 28], 90: [2, 29], 91: [2, 30], 92: [2, 31], 93: [2, 32], 95: [2, 55], 96: [2, 56], 98: [2, 57], 99: [2, 58] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return \"title\";\n case 1:\n this.begin(\"acc_title\");\n return 9;\n case 2:\n this.popState();\n return \"acc_title_value\";\n case 3:\n this.begin(\"acc_descr\");\n return 11;\n case 4:\n this.popState();\n return \"acc_descr_value\";\n case 5:\n this.begin(\"acc_descr_multiline\");\n break;\n case 6:\n this.popState();\n break;\n case 7:\n return \"acc_descr_multiline_value\";\n case 8:\n return 5;\n case 9:\n break;\n case 10:\n break;\n case 11:\n break;\n case 12:\n return 8;\n case 13:\n return 6;\n case 14:\n return 19;\n case 15:\n return 30;\n case 16:\n return 22;\n case 17:\n return 21;\n case 18:\n return 24;\n case 19:\n return 26;\n case 20:\n return 28;\n case 21:\n return 31;\n case 22:\n return 32;\n case 23:\n return 33;\n case 24:\n return 34;\n case 25:\n return 35;\n case 26:\n return 36;\n case 27:\n return 37;\n case 28:\n return 38;\n case 29:\n return 39;\n case 30:\n return 40;\n case 31:\n return 41;\n case 32:\n return 42;\n case 33:\n return 43;\n case 34:\n return 44;\n case 35:\n return 55;\n case 36:\n return 56;\n case 37:\n return 57;\n case 38:\n return 58;\n case 39:\n return 59;\n case 40:\n return 60;\n case 41:\n return 61;\n case 42:\n return 47;\n case 43:\n return 49;\n case 44:\n return 51;\n case 45:\n return 54;\n case 46:\n return 53;\n case 47:\n this.begin(\"string\");\n break;\n case 48:\n this.popState();\n break;\n case 49:\n return \"qString\";\n case 50:\n yy_.yytext = yy_.yytext.trim();\n return 62;\n }\n },\n rules: [/^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:(\\r?\\n)+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:$)/i, /^(?:requirementDiagram\\b)/i, /^(?:\\{)/i, /^(?:\\})/i, /^(?::)/i, /^(?:id\\b)/i, /^(?:text\\b)/i, /^(?:risk\\b)/i, /^(?:verifyMethod\\b)/i, /^(?:requirement\\b)/i, /^(?:functionalRequirement\\b)/i, /^(?:interfaceRequirement\\b)/i, /^(?:performanceRequirement\\b)/i, /^(?:physicalRequirement\\b)/i, /^(?:designConstraint\\b)/i, /^(?:low\\b)/i, /^(?:medium\\b)/i, /^(?:high\\b)/i, /^(?:analysis\\b)/i, /^(?:demonstration\\b)/i, /^(?:inspection\\b)/i, /^(?:test\\b)/i, /^(?:element\\b)/i, /^(?:contains\\b)/i, /^(?:copies\\b)/i, /^(?:derives\\b)/i, /^(?:satisfies\\b)/i, /^(?:verifies\\b)/i, /^(?:refines\\b)/i, /^(?:traces\\b)/i, /^(?:type\\b)/i, /^(?:docref\\b)/i, /^(?:<-)/i, /^(?:->)/i, /^(?:-)/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [6, 7], \"inclusive\": false }, \"acc_descr\": { \"rules\": [4], \"inclusive\": false }, \"acc_title\": { \"rules\": [2], \"inclusive\": false }, \"unqString\": { \"rules\": [], \"inclusive\": false }, \"token\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [48, 49], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet relations = [];\nlet latestRequirement = {};\nlet requirements = {};\nlet latestElement = {};\nlet elements = {};\nconst RequirementType = {\n REQUIREMENT: \"Requirement\",\n FUNCTIONAL_REQUIREMENT: \"Functional Requirement\",\n INTERFACE_REQUIREMENT: \"Interface Requirement\",\n PERFORMANCE_REQUIREMENT: \"Performance Requirement\",\n PHYSICAL_REQUIREMENT: \"Physical Requirement\",\n DESIGN_CONSTRAINT: \"Design Constraint\"\n};\nconst RiskLevel = {\n LOW_RISK: \"Low\",\n MED_RISK: \"Medium\",\n HIGH_RISK: \"High\"\n};\nconst VerifyType = {\n VERIFY_ANALYSIS: \"Analysis\",\n VERIFY_DEMONSTRATION: \"Demonstration\",\n VERIFY_INSPECTION: \"Inspection\",\n VERIFY_TEST: \"Test\"\n};\nconst Relationships = {\n CONTAINS: \"contains\",\n COPIES: \"copies\",\n DERIVES: \"derives\",\n SATISFIES: \"satisfies\",\n VERIFIES: \"verifies\",\n REFINES: \"refines\",\n TRACES: \"traces\"\n};\nconst addRequirement = (name, type) => {\n if (requirements[name] === void 0) {\n requirements[name] = {\n name,\n type,\n id: latestRequirement.id,\n text: latestRequirement.text,\n risk: latestRequirement.risk,\n verifyMethod: latestRequirement.verifyMethod\n };\n }\n latestRequirement = {};\n return requirements[name];\n};\nconst getRequirements = () => requirements;\nconst setNewReqId = (id) => {\n if (latestRequirement !== void 0) {\n latestRequirement.id = id;\n }\n};\nconst setNewReqText = (text) => {\n if (latestRequirement !== void 0) {\n latestRequirement.text = text;\n }\n};\nconst setNewReqRisk = (risk) => {\n if (latestRequirement !== void 0) {\n latestRequirement.risk = risk;\n }\n};\nconst setNewReqVerifyMethod = (verifyMethod) => {\n if (latestRequirement !== void 0) {\n latestRequirement.verifyMethod = verifyMethod;\n }\n};\nconst addElement = (name) => {\n if (elements[name] === void 0) {\n elements[name] = {\n name,\n type: latestElement.type,\n docRef: latestElement.docRef\n };\n log.info(\"Added new requirement: \", name);\n }\n latestElement = {};\n return elements[name];\n};\nconst getElements = () => elements;\nconst setNewElementType = (type) => {\n if (latestElement !== void 0) {\n latestElement.type = type;\n }\n};\nconst setNewElementDocRef = (docRef) => {\n if (latestElement !== void 0) {\n latestElement.docRef = docRef;\n }\n};\nconst addRelationship = (type, src, dst) => {\n relations.push({\n type,\n src,\n dst\n });\n};\nconst getRelationships = () => relations;\nconst clear = () => {\n relations = [];\n latestRequirement = {};\n requirements = {};\n latestElement = {};\n elements = {};\n clear$1();\n};\nconst db = {\n RequirementType,\n RiskLevel,\n VerifyType,\n Relationships,\n getConfig: () => getConfig().req,\n addRequirement,\n getRequirements,\n setNewReqId,\n setNewReqText,\n setNewReqRisk,\n setNewReqVerifyMethod,\n setAccTitle,\n getAccTitle,\n setAccDescription,\n getAccDescription,\n addElement,\n getElements,\n setNewElementType,\n setNewElementDocRef,\n addRelationship,\n getRelationships,\n clear\n};\nconst getStyles = (options) => `\n\n marker {\n fill: ${options.relationColor};\n stroke: ${options.relationColor};\n }\n\n marker.cross {\n stroke: ${options.lineColor};\n }\n\n svg {\n font-family: ${options.fontFamily};\n font-size: ${options.fontSize};\n }\n\n .reqBox {\n fill: ${options.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${options.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${options.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${options.requirementBorderColor};\n stroke-width: ${options.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${options.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${options.relationLabelColor};\n }\n\n`;\nconst styles = getStyles;\nconst ReqMarkers = {\n CONTAINS: \"contains\",\n ARROW: \"arrow\"\n};\nconst insertLineEndings = (parentNode, conf2) => {\n let containsNode = parentNode.append(\"defs\").append(\"marker\").attr(\"id\", ReqMarkers.CONTAINS + \"_line_ending\").attr(\"refX\", 0).attr(\"refY\", conf2.line_height / 2).attr(\"markerWidth\", conf2.line_height).attr(\"markerHeight\", conf2.line_height).attr(\"orient\", \"auto\").append(\"g\");\n containsNode.append(\"circle\").attr(\"cx\", conf2.line_height / 2).attr(\"cy\", conf2.line_height / 2).attr(\"r\", conf2.line_height / 2).attr(\"fill\", \"none\");\n containsNode.append(\"line\").attr(\"x1\", 0).attr(\"x2\", conf2.line_height).attr(\"y1\", conf2.line_height / 2).attr(\"y2\", conf2.line_height / 2).attr(\"stroke-width\", 1);\n containsNode.append(\"line\").attr(\"y1\", 0).attr(\"y2\", conf2.line_height).attr(\"x1\", conf2.line_height / 2).attr(\"x2\", conf2.line_height / 2).attr(\"stroke-width\", 1);\n parentNode.append(\"defs\").append(\"marker\").attr(\"id\", ReqMarkers.ARROW + \"_line_ending\").attr(\"refX\", conf2.line_height).attr(\"refY\", 0.5 * conf2.line_height).attr(\"markerWidth\", conf2.line_height).attr(\"markerHeight\", conf2.line_height).attr(\"orient\", \"auto\").append(\"path\").attr(\n \"d\",\n `M0,0\n L${conf2.line_height},${conf2.line_height / 2}\n M${conf2.line_height},${conf2.line_height / 2}\n L0,${conf2.line_height}`\n ).attr(\"stroke-width\", 1);\n};\nconst markers = {\n ReqMarkers,\n insertLineEndings\n};\nlet conf = {};\nlet relCnt = 0;\nconst newRectNode = (parentNode, id) => {\n return parentNode.insert(\"rect\", \"#\" + id).attr(\"class\", \"req reqBox\").attr(\"x\", 0).attr(\"y\", 0).attr(\"width\", conf.rect_min_width + \"px\").attr(\"height\", conf.rect_min_height + \"px\");\n};\nconst newTitleNode = (parentNode, id, txts) => {\n let x = conf.rect_min_width / 2;\n let title = parentNode.append(\"text\").attr(\"class\", \"req reqLabel reqTitle\").attr(\"id\", id).attr(\"x\", x).attr(\"y\", conf.rect_padding).attr(\"dominant-baseline\", \"hanging\");\n let i = 0;\n txts.forEach((textStr) => {\n if (i == 0) {\n title.append(\"tspan\").attr(\"text-anchor\", \"middle\").attr(\"x\", conf.rect_min_width / 2).attr(\"dy\", 0).text(textStr);\n } else {\n title.append(\"tspan\").attr(\"text-anchor\", \"middle\").attr(\"x\", conf.rect_min_width / 2).attr(\"dy\", conf.line_height * 0.75).text(textStr);\n }\n i++;\n });\n let yPadding = 1.5 * conf.rect_padding;\n let linePadding = i * conf.line_height * 0.75;\n let totalY = yPadding + linePadding;\n parentNode.append(\"line\").attr(\"class\", \"req-title-line\").attr(\"x1\", \"0\").attr(\"x2\", conf.rect_min_width).attr(\"y1\", totalY).attr(\"y2\", totalY);\n return {\n titleNode: title,\n y: totalY\n };\n};\nconst newBodyNode = (parentNode, id, txts, yStart) => {\n let body = parentNode.append(\"text\").attr(\"class\", \"req reqLabel\").attr(\"id\", id).attr(\"x\", conf.rect_padding).attr(\"y\", yStart).attr(\"dominant-baseline\", \"hanging\");\n let currentRow = 0;\n const charLimit = 30;\n let wrappedTxts = [];\n txts.forEach((textStr) => {\n let currentTextLen = textStr.length;\n while (currentTextLen > charLimit && currentRow < 3) {\n let firstPart = textStr.substring(0, charLimit);\n textStr = textStr.substring(charLimit, textStr.length);\n currentTextLen = textStr.length;\n wrappedTxts[wrappedTxts.length] = firstPart;\n currentRow++;\n }\n if (currentRow == 3) {\n let lastStr = wrappedTxts[wrappedTxts.length - 1];\n wrappedTxts[wrappedTxts.length - 1] = lastStr.substring(0, lastStr.length - 4) + \"...\";\n } else {\n wrappedTxts[wrappedTxts.length] = textStr;\n }\n currentRow = 0;\n });\n wrappedTxts.forEach((textStr) => {\n body.append(\"tspan\").attr(\"x\", conf.rect_padding).attr(\"dy\", conf.line_height).text(textStr);\n });\n return body;\n};\nconst addEdgeLabel = (parentNode, svgPath, conf2, txt) => {\n const len = svgPath.node().getTotalLength();\n const labelPoint = svgPath.node().getPointAtLength(len * 0.5);\n const labelId = \"rel\" + relCnt;\n relCnt++;\n const labelNode = parentNode.append(\"text\").attr(\"class\", \"req relationshipLabel\").attr(\"id\", labelId).attr(\"x\", labelPoint.x).attr(\"y\", labelPoint.y).attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\").text(txt);\n const labelBBox = labelNode.node().getBBox();\n parentNode.insert(\"rect\", \"#\" + labelId).attr(\"class\", \"req reqLabelBox\").attr(\"x\", labelPoint.x - labelBBox.width / 2).attr(\"y\", labelPoint.y - labelBBox.height / 2).attr(\"width\", labelBBox.width).attr(\"height\", labelBBox.height).attr(\"fill\", \"white\").attr(\"fill-opacity\", \"85%\");\n};\nconst drawRelationshipFromLayout = function(svg, rel, g, insert, diagObj) {\n const edge = g.edge(elementString(rel.src), elementString(rel.dst));\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n });\n const svgPath = svg.insert(\"path\", \"#\" + insert).attr(\"class\", \"er relationshipLine\").attr(\"d\", lineFunction(edge.points)).attr(\"fill\", \"none\");\n if (rel.type == diagObj.db.Relationships.CONTAINS) {\n svgPath.attr(\n \"marker-start\",\n \"url(\" + common.getUrl(conf.arrowMarkerAbsolute) + \"#\" + rel.type + \"_line_ending)\"\n );\n } else {\n svgPath.attr(\"stroke-dasharray\", \"10,7\");\n svgPath.attr(\n \"marker-end\",\n \"url(\" + common.getUrl(conf.arrowMarkerAbsolute) + \"#\" + markers.ReqMarkers.ARROW + \"_line_ending)\"\n );\n }\n addEdgeLabel(svg, svgPath, conf, `<<${rel.type}>>`);\n return;\n};\nconst drawReqs = (reqs, graph, svgNode) => {\n Object.keys(reqs).forEach((reqName) => {\n let req = reqs[reqName];\n reqName = elementString(reqName);\n log.info(\"Added new requirement: \", reqName);\n const groupNode = svgNode.append(\"g\").attr(\"id\", reqName);\n const textId = \"req-\" + reqName;\n const rectNode = newRectNode(groupNode, textId);\n let titleNodeInfo = newTitleNode(groupNode, reqName + \"_title\", [\n `<<${req.type}>>`,\n `${req.name}`\n ]);\n newBodyNode(\n groupNode,\n reqName + \"_body\",\n [\n `Id: ${req.id}`,\n `Text: ${req.text}`,\n `Risk: ${req.risk}`,\n `Verification: ${req.verifyMethod}`\n ],\n titleNodeInfo.y\n );\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(reqName, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id: reqName\n });\n });\n};\nconst drawElements = (els, graph, svgNode) => {\n Object.keys(els).forEach((elName) => {\n let el = els[elName];\n const id = elementString(elName);\n const groupNode = svgNode.append(\"g\").attr(\"id\", id);\n const textId = \"element-\" + id;\n const rectNode = newRectNode(groupNode, textId);\n let titleNodeInfo = newTitleNode(groupNode, textId + \"_title\", [`<>`, `${elName}`]);\n newBodyNode(\n groupNode,\n textId + \"_body\",\n [`Type: ${el.type || \"Not Specified\"}`, `Doc Ref: ${el.docRef || \"None\"}`],\n titleNodeInfo.y\n );\n const rectBBox = rectNode.node().getBBox();\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: \"rect\",\n id\n });\n });\n};\nconst addRelationships = (relationships, g) => {\n relationships.forEach(function(r) {\n let src = elementString(r.src);\n let dst = elementString(r.dst);\n g.setEdge(src, dst, { relationship: r });\n });\n return relationships;\n};\nconst adjustEntities = function(svgNode, graph) {\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n svgNode.select(\"#\" + v);\n svgNode.select(\"#\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y - graph.node(v).height / 2) + \" )\"\n );\n }\n });\n return;\n};\nconst elementString = (str) => {\n return str.replace(/\\s/g, \"\").replace(/\\./g, \"_\");\n};\nconst draw = (text, id, _version, diagObj) => {\n conf = getConfig().requirement;\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id='${id}']`);\n markers.insertLineEndings(svg, conf);\n const g = new graphlib.Graph({\n multigraph: false,\n compound: false,\n directed: true\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let requirements2 = diagObj.db.getRequirements();\n let elements2 = diagObj.db.getElements();\n let relationships = diagObj.db.getRelationships();\n drawReqs(requirements2, g, svg);\n drawElements(elements2, g, svg);\n addRelationships(relationships, g);\n layout(g);\n adjustEntities(svg, g);\n relationships.forEach(function(rel) {\n drawRelationshipFromLayout(svg, rel, g, id, diagObj);\n });\n const padding = conf.rect_padding;\n const svgBounds = svg.node().getBBox();\n const width = svgBounds.width + padding * 2;\n const height = svgBounds.height + padding * 2;\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n svg.attr(\"viewBox\", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`);\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles\n};\nexport {\n diagram\n};\n","import { c as getConfig, g as getAccTitle, s as setAccTitle, a as getAccDescription, b as setAccDescription, r as getDiagramTitle, q as setDiagramTitle, t as clear$1, e as common, I as defaultConfig, i as configureSvgSize } from \"./mermaid-934d9bea.js\";\nimport { select, scaleOrdinal, schemeTableau10 } from \"d3\";\nimport { sankey, sankeyLinkHorizontal, sankeyLeft, sankeyRight, sankeyCenter, sankeyJustify } from \"d3-sankey\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 9], $V1 = [1, 10], $V2 = [1, 5, 10, 12];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SANKEY\": 4, \"NEWLINE\": 5, \"csv\": 6, \"opt_eof\": 7, \"record\": 8, \"csv_tail\": 9, \"EOF\": 10, \"field[source]\": 11, \"COMMA\": 12, \"field[target]\": 13, \"field[value]\": 14, \"field\": 15, \"escaped\": 16, \"non_escaped\": 17, \"DQUOTE\": 18, \"ESCAPED_TEXT\": 19, \"NON_ESCAPED_TEXT\": 20, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SANKEY\", 5: \"NEWLINE\", 10: \"EOF\", 11: \"field[source]\", 12: \"COMMA\", 13: \"field[target]\", 14: \"field[value]\", 18: \"DQUOTE\", 19: \"ESCAPED_TEXT\", 20: \"NON_ESCAPED_TEXT\" },\n productions_: [0, [3, 4], [6, 2], [9, 2], [9, 0], [7, 1], [7, 0], [8, 5], [15, 1], [15, 1], [16, 3], [17, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 7:\n const source = yy.findOrCreateNode($$[$0 - 4].trim().replaceAll('\"\"', '\"'));\n const target = yy.findOrCreateNode($$[$0 - 2].trim().replaceAll('\"\"', '\"'));\n const value = parseFloat($$[$0].trim());\n yy.addLink(source, target, value);\n break;\n case 8:\n case 9:\n case 11:\n this.$ = $$[$0];\n break;\n case 10:\n this.$ = $$[$0 - 1];\n break;\n }\n },\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, { 5: [1, 3] }, { 6: 4, 8: 5, 15: 6, 16: 7, 17: 8, 18: $V0, 20: $V1 }, { 1: [2, 6], 7: 11, 10: [1, 12] }, o($V1, [2, 4], { 9: 13, 5: [1, 14] }), { 12: [1, 15] }, o($V2, [2, 8]), o($V2, [2, 9]), { 19: [1, 16] }, o($V2, [2, 11]), { 1: [2, 1] }, { 1: [2, 5] }, o($V1, [2, 2]), { 6: 17, 8: 5, 15: 6, 16: 7, 17: 8, 18: $V0, 20: $V1 }, { 15: 18, 16: 7, 17: 8, 18: $V0, 20: $V1 }, { 18: [1, 19] }, o($V1, [2, 3]), { 12: [1, 20] }, o($V2, [2, 10]), { 15: 21, 16: 7, 17: 8, 18: $V0, 20: $V1 }, o([1, 5, 10], [2, 7])],\n defaultActions: { 11: [2, 1], 12: [2, 5] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"easy_keword_rules\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n this.pushState(\"csv\");\n return 4;\n case 1:\n return 10;\n case 2:\n return 5;\n case 3:\n return 12;\n case 4:\n this.pushState(\"escaped_text\");\n return 18;\n case 5:\n return 20;\n case 6:\n this.popState(\"escaped_text\");\n return 18;\n case 7:\n return 19;\n }\n },\n rules: [/^(?:sankey-beta\\b)/, /^(?:$)/, /^(?:((\\u000D\\u000A)|(\\u000A)))/, /^(?:(\\u002C))/, /^(?:(\\u0022))/, /^(?:([\\u0020-\\u0021\\u0023-\\u002B\\u002D-\\u007E])*)/, /^(?:(\\u0022)(?!(\\u0022)))/, /^(?:(([\\u0020-\\u0021\\u0023-\\u002B\\u002D-\\u007E])|(\\u002C)|(\\u000D)|(\\u000A)|(\\u0022)(\\u0022))*)/],\n conditions: { \"csv\": { \"rules\": [1, 2, 3, 4, 5, 6, 7], \"inclusive\": false }, \"escaped_text\": { \"rules\": [6, 7], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet links = [];\nlet nodes = [];\nlet nodesMap = {};\nconst clear = () => {\n links = [];\n nodes = [];\n nodesMap = {};\n clear$1();\n};\nclass SankeyLink {\n constructor(source, target, value = 0) {\n this.source = source;\n this.target = target;\n this.value = value;\n }\n}\nconst addLink = (source, target, value) => {\n links.push(new SankeyLink(source, target, value));\n};\nclass SankeyNode {\n constructor(ID) {\n this.ID = ID;\n }\n}\nconst findOrCreateNode = (ID) => {\n ID = common.sanitizeText(ID, getConfig());\n if (!nodesMap[ID]) {\n nodesMap[ID] = new SankeyNode(ID);\n nodes.push(nodesMap[ID]);\n }\n return nodesMap[ID];\n};\nconst getNodes = () => nodes;\nconst getLinks = () => links;\nconst getGraph = () => ({\n nodes: nodes.map((node) => ({ id: node.ID })),\n links: links.map((link) => ({\n source: link.source.ID,\n target: link.target.ID,\n value: link.value\n }))\n});\nconst db = {\n nodesMap,\n getConfig: () => getConfig().sankey,\n getNodes,\n getLinks,\n getGraph,\n addLink,\n findOrCreateNode,\n getAccTitle,\n setAccTitle,\n getAccDescription,\n setAccDescription,\n getDiagramTitle,\n setDiagramTitle,\n clear\n};\nconst _Uid = class _Uid2 {\n static next(name) {\n return new _Uid2(name + ++_Uid2.count);\n }\n constructor(id) {\n this.id = id;\n this.href = `#${id}`;\n }\n toString() {\n return \"url(\" + this.href + \")\";\n }\n};\n_Uid.count = 0;\nlet Uid = _Uid;\nconst alignmentsMap = {\n left: sankeyLeft,\n right: sankeyRight,\n center: sankeyCenter,\n justify: sankeyJustify\n};\nconst draw = function(text, id, _version, diagObj) {\n const { securityLevel, sankey: conf } = getConfig();\n const defaultSankeyConfig = defaultConfig.sankey;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n const width = (conf == null ? void 0 : conf.width) ?? defaultSankeyConfig.width;\n const height = (conf == null ? void 0 : conf.height) ?? defaultSankeyConfig.width;\n const useMaxWidth = (conf == null ? void 0 : conf.useMaxWidth) ?? defaultSankeyConfig.useMaxWidth;\n const nodeAlignment = (conf == null ? void 0 : conf.nodeAlignment) ?? defaultSankeyConfig.nodeAlignment;\n const prefix = (conf == null ? void 0 : conf.prefix) ?? defaultSankeyConfig.prefix;\n const suffix = (conf == null ? void 0 : conf.suffix) ?? defaultSankeyConfig.suffix;\n const showValues = (conf == null ? void 0 : conf.showValues) ?? defaultSankeyConfig.showValues;\n configureSvgSize(svg, height, width, useMaxWidth);\n const graph = diagObj.db.getGraph();\n const nodeAlign = alignmentsMap[nodeAlignment];\n const nodeWidth = 10;\n const sankey$1 = sankey().nodeId((d) => d.id).nodeWidth(nodeWidth).nodePadding(10 + (showValues ? 15 : 0)).nodeAlign(nodeAlign).extent([\n [0, 0],\n [width, height]\n ]);\n sankey$1(graph);\n const colorScheme = scaleOrdinal(schemeTableau10);\n svg.append(\"g\").attr(\"class\", \"nodes\").selectAll(\".node\").data(graph.nodes).join(\"g\").attr(\"class\", \"node\").attr(\"id\", (d) => (d.uid = Uid.next(\"node-\")).id).attr(\"transform\", function(d) {\n return \"translate(\" + d.x0 + \",\" + d.y0 + \")\";\n }).attr(\"x\", (d) => d.x0).attr(\"y\", (d) => d.y0).append(\"rect\").attr(\"height\", (d) => {\n return d.y1 - d.y0;\n }).attr(\"width\", (d) => d.x1 - d.x0).attr(\"fill\", (d) => colorScheme(d.id));\n const getText = ({ id: id2, value }) => {\n if (!showValues) {\n return id2;\n }\n return `${id2}\n${prefix}${Math.round(value * 100) / 100}${suffix}`;\n };\n svg.append(\"g\").attr(\"class\", \"node-labels\").attr(\"font-family\", \"sans-serif\").attr(\"font-size\", 14).selectAll(\"text\").data(graph.nodes).join(\"text\").attr(\"x\", (d) => d.x0 < width / 2 ? d.x1 + 6 : d.x0 - 6).attr(\"y\", (d) => (d.y1 + d.y0) / 2).attr(\"dy\", `${showValues ? \"0\" : \"0.35\"}em`).attr(\"text-anchor\", (d) => d.x0 < width / 2 ? \"start\" : \"end\").text(getText);\n const link = svg.append(\"g\").attr(\"class\", \"links\").attr(\"fill\", \"none\").attr(\"stroke-opacity\", 0.5).selectAll(\".link\").data(graph.links).join(\"g\").attr(\"class\", \"link\").style(\"mix-blend-mode\", \"multiply\");\n const linkColor = (conf == null ? void 0 : conf.linkColor) || \"gradient\";\n if (linkColor === \"gradient\") {\n const gradient = link.append(\"linearGradient\").attr(\"id\", (d) => (d.uid = Uid.next(\"linearGradient-\")).id).attr(\"gradientUnits\", \"userSpaceOnUse\").attr(\"x1\", (d) => d.source.x1).attr(\"x2\", (d) => d.target.x0);\n gradient.append(\"stop\").attr(\"offset\", \"0%\").attr(\"stop-color\", (d) => colorScheme(d.source.id));\n gradient.append(\"stop\").attr(\"offset\", \"100%\").attr(\"stop-color\", (d) => colorScheme(d.target.id));\n }\n let coloring;\n switch (linkColor) {\n case \"gradient\":\n coloring = (d) => d.uid;\n break;\n case \"source\":\n coloring = (d) => colorScheme(d.source.id);\n break;\n case \"target\":\n coloring = (d) => colorScheme(d.target.id);\n break;\n default:\n coloring = linkColor;\n }\n link.append(\"path\").attr(\"d\", sankeyLinkHorizontal()).attr(\"stroke\", coloring).attr(\"stroke-width\", (d) => Math.max(1, d.width));\n};\nconst renderer = {\n draw\n};\nconst prepareTextForParsing = (text) => {\n const textToParse = text.replaceAll(/^[^\\S\\n\\r]+|[^\\S\\n\\r]+$/g, \"\").replaceAll(/([\\n\\r])+/g, \"\\n\").trim();\n return textToParse;\n};\nconst originalParse = parser$1.parse.bind(parser$1);\nparser$1.parse = (text) => originalParse(prepareTextForParsing(text));\nconst diagram = {\n parser: parser$1,\n db,\n renderer\n};\nexport {\n diagram\n};\n","import { g as getAccTitle, r as getDiagramTitle, q as setDiagramTitle, c as getConfig, s as setAccTitle, b as setAccDescription, a as getAccDescription, t as clear$1, l as log, d as sanitizeText, e as common, C as parseFontSize, F as addFunction, Z as ZERO_WIDTH_SPACE, f as assignWithDepth, i as configureSvgSize, u as utils } from \"./mermaid-934d9bea.js\";\nimport { select } from \"d3\";\nimport { d as drawRect$1, a as drawBackgroundRect$1, b as drawEmbeddedImage, c as drawImage, e as getTextObj$1, g as getNoteRect$1 } from \"./svgDrawCommon-ad5ef572.js\";\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 13], $V7 = [1, 14], $V8 = [1, 16], $V9 = [1, 17], $Va = [1, 18], $Vb = [1, 24], $Vc = [1, 25], $Vd = [1, 26], $Ve = [1, 27], $Vf = [1, 28], $Vg = [1, 29], $Vh = [1, 30], $Vi = [1, 31], $Vj = [1, 32], $Vk = [1, 33], $Vl = [1, 34], $Vm = [1, 35], $Vn = [1, 36], $Vo = [1, 37], $Vp = [1, 38], $Vq = [1, 39], $Vr = [1, 41], $Vs = [1, 42], $Vt = [1, 43], $Vu = [1, 44], $Vv = [1, 45], $Vw = [1, 46], $Vx = [1, 4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54, 59, 60, 61, 62, 70], $Vy = [4, 5, 16, 50, 52, 53], $Vz = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VA = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 49, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VB = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 48, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VC = [4, 5, 13, 14, 16, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 50, 52, 53, 54, 59, 60, 61, 62, 70], $VD = [68, 69, 70], $VE = [1, 120];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SPACE\": 4, \"NEWLINE\": 5, \"SD\": 6, \"document\": 7, \"line\": 8, \"statement\": 9, \"box_section\": 10, \"box_line\": 11, \"participant_statement\": 12, \"create\": 13, \"box\": 14, \"restOfLine\": 15, \"end\": 16, \"signal\": 17, \"autonumber\": 18, \"NUM\": 19, \"off\": 20, \"activate\": 21, \"actor\": 22, \"deactivate\": 23, \"note_statement\": 24, \"links_statement\": 25, \"link_statement\": 26, \"properties_statement\": 27, \"details_statement\": 28, \"title\": 29, \"legacy_title\": 30, \"acc_title\": 31, \"acc_title_value\": 32, \"acc_descr\": 33, \"acc_descr_value\": 34, \"acc_descr_multiline_value\": 35, \"loop\": 36, \"rect\": 37, \"opt\": 38, \"alt\": 39, \"else_sections\": 40, \"par\": 41, \"par_sections\": 42, \"par_over\": 43, \"critical\": 44, \"option_sections\": 45, \"break\": 46, \"option\": 47, \"and\": 48, \"else\": 49, \"participant\": 50, \"AS\": 51, \"participant_actor\": 52, \"destroy\": 53, \"note\": 54, \"placement\": 55, \"text2\": 56, \"over\": 57, \"actor_pair\": 58, \"links\": 59, \"link\": 60, \"properties\": 61, \"details\": 62, \"spaceList\": 63, \",\": 64, \"left_of\": 65, \"right_of\": 66, \"signaltype\": 67, \"+\": 68, \"-\": 69, \"ACTOR\": 70, \"SOLID_OPEN_ARROW\": 71, \"DOTTED_OPEN_ARROW\": 72, \"SOLID_ARROW\": 73, \"DOTTED_ARROW\": 74, \"SOLID_CROSS\": 75, \"DOTTED_CROSS\": 76, \"SOLID_POINT\": 77, \"DOTTED_POINT\": 78, \"TXT\": 79, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACE\", 5: \"NEWLINE\", 6: \"SD\", 13: \"create\", 14: \"box\", 15: \"restOfLine\", 16: \"end\", 18: \"autonumber\", 19: \"NUM\", 20: \"off\", 21: \"activate\", 23: \"deactivate\", 29: \"title\", 30: \"legacy_title\", 31: \"acc_title\", 32: \"acc_title_value\", 33: \"acc_descr\", 34: \"acc_descr_value\", 35: \"acc_descr_multiline_value\", 36: \"loop\", 37: \"rect\", 38: \"opt\", 39: \"alt\", 41: \"par\", 43: \"par_over\", 44: \"critical\", 46: \"break\", 47: \"option\", 48: \"and\", 49: \"else\", 50: \"participant\", 51: \"AS\", 52: \"participant_actor\", 53: \"destroy\", 54: \"note\", 57: \"over\", 59: \"links\", 60: \"link\", 61: \"properties\", 62: \"details\", 64: \",\", 65: \"left_of\", 66: \"right_of\", 68: \"+\", 69: \"-\", 70: \"ACTOR\", 71: \"SOLID_OPEN_ARROW\", 72: \"DOTTED_OPEN_ARROW\", 73: \"SOLID_ARROW\", 74: \"DOTTED_ARROW\", 75: \"SOLID_CROSS\", 76: \"DOTTED_CROSS\", 77: \"SOLID_POINT\", 78: \"DOTTED_POINT\", 79: \"TXT\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [10, 0], [10, 2], [11, 2], [11, 1], [11, 1], [9, 1], [9, 2], [9, 4], [9, 2], [9, 4], [9, 3], [9, 3], [9, 2], [9, 3], [9, 3], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [9, 4], [45, 1], [45, 4], [42, 1], [42, 4], [40, 1], [40, 4], [12, 5], [12, 3], [12, 5], [12, 3], [12, 3], [24, 4], [24, 4], [25, 3], [26, 3], [27, 3], [28, 3], [63, 2], [63, 1], [58, 3], [58, 1], [55, 1], [55, 1], [17, 5], [17, 5], [17, 4], [22, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [67, 1], [56, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.apply($$[$0]);\n return $$[$0];\n case 4:\n case 9:\n this.$ = [];\n break;\n case 5:\n case 10:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 6:\n case 7:\n case 11:\n case 12:\n this.$ = $$[$0];\n break;\n case 8:\n case 13:\n this.$ = [];\n break;\n case 15:\n $$[$0].type = \"createParticipant\";\n this.$ = $$[$0];\n break;\n case 16:\n $$[$0 - 1].unshift({ type: \"boxStart\", boxData: yy.parseBoxData($$[$0 - 2]) });\n $$[$0 - 1].push({ type: \"boxEnd\", boxText: $$[$0 - 2] });\n this.$ = $$[$0 - 1];\n break;\n case 18:\n this.$ = { type: \"sequenceIndex\", sequenceIndex: Number($$[$0 - 2]), sequenceIndexStep: Number($$[$0 - 1]), sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 19:\n this.$ = { type: \"sequenceIndex\", sequenceIndex: Number($$[$0 - 1]), sequenceIndexStep: 1, sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 20:\n this.$ = { type: \"sequenceIndex\", sequenceVisible: false, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 21:\n this.$ = { type: \"sequenceIndex\", sequenceVisible: true, signalType: yy.LINETYPE.AUTONUMBER };\n break;\n case 22:\n this.$ = { type: \"activeStart\", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] };\n break;\n case 23:\n this.$ = { type: \"activeEnd\", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 1] };\n break;\n case 29:\n yy.setDiagramTitle($$[$0].substring(6));\n this.$ = $$[$0].substring(6);\n break;\n case 30:\n yy.setDiagramTitle($$[$0].substring(7));\n this.$ = $$[$0].substring(7);\n break;\n case 31:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 32:\n case 33:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 34:\n $$[$0 - 1].unshift({ type: \"loopStart\", loopText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.LOOP_START });\n $$[$0 - 1].push({ type: \"loopEnd\", loopText: $$[$0 - 2], signalType: yy.LINETYPE.LOOP_END });\n this.$ = $$[$0 - 1];\n break;\n case 35:\n $$[$0 - 1].unshift({ type: \"rectStart\", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_START });\n $$[$0 - 1].push({ type: \"rectEnd\", color: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.RECT_END });\n this.$ = $$[$0 - 1];\n break;\n case 36:\n $$[$0 - 1].unshift({ type: \"optStart\", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_START });\n $$[$0 - 1].push({ type: \"optEnd\", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.OPT_END });\n this.$ = $$[$0 - 1];\n break;\n case 37:\n $$[$0 - 1].unshift({ type: \"altStart\", altText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.ALT_START });\n $$[$0 - 1].push({ type: \"altEnd\", signalType: yy.LINETYPE.ALT_END });\n this.$ = $$[$0 - 1];\n break;\n case 38:\n $$[$0 - 1].unshift({ type: \"parStart\", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_START });\n $$[$0 - 1].push({ type: \"parEnd\", signalType: yy.LINETYPE.PAR_END });\n this.$ = $$[$0 - 1];\n break;\n case 39:\n $$[$0 - 1].unshift({ type: \"parStart\", parText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.PAR_OVER_START });\n $$[$0 - 1].push({ type: \"parEnd\", signalType: yy.LINETYPE.PAR_END });\n this.$ = $$[$0 - 1];\n break;\n case 40:\n $$[$0 - 1].unshift({ type: \"criticalStart\", criticalText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.CRITICAL_START });\n $$[$0 - 1].push({ type: \"criticalEnd\", signalType: yy.LINETYPE.CRITICAL_END });\n this.$ = $$[$0 - 1];\n break;\n case 41:\n $$[$0 - 1].unshift({ type: \"breakStart\", breakText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_START });\n $$[$0 - 1].push({ type: \"breakEnd\", optText: yy.parseMessage($$[$0 - 2]), signalType: yy.LINETYPE.BREAK_END });\n this.$ = $$[$0 - 1];\n break;\n case 43:\n this.$ = $$[$0 - 3].concat([{ type: \"option\", optionText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.CRITICAL_OPTION }, $$[$0]]);\n break;\n case 45:\n this.$ = $$[$0 - 3].concat([{ type: \"and\", parText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.PAR_AND }, $$[$0]]);\n break;\n case 47:\n this.$ = $$[$0 - 3].concat([{ type: \"else\", altText: yy.parseMessage($$[$0 - 1]), signalType: yy.LINETYPE.ALT_ELSE }, $$[$0]]);\n break;\n case 48:\n $$[$0 - 3].draw = \"participant\";\n $$[$0 - 3].type = \"addParticipant\";\n $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]);\n this.$ = $$[$0 - 3];\n break;\n case 49:\n $$[$0 - 1].draw = \"participant\";\n $$[$0 - 1].type = \"addParticipant\";\n this.$ = $$[$0 - 1];\n break;\n case 50:\n $$[$0 - 3].draw = \"actor\";\n $$[$0 - 3].type = \"addParticipant\";\n $$[$0 - 3].description = yy.parseMessage($$[$0 - 1]);\n this.$ = $$[$0 - 3];\n break;\n case 51:\n $$[$0 - 1].draw = \"actor\";\n $$[$0 - 1].type = \"addParticipant\";\n this.$ = $$[$0 - 1];\n break;\n case 52:\n $$[$0 - 1].type = \"destroyParticipant\";\n this.$ = $$[$0 - 1];\n break;\n case 53:\n this.$ = [$$[$0 - 1], { type: \"addNote\", placement: $$[$0 - 2], actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 54:\n $$[$0 - 2] = [].concat($$[$0 - 1], $$[$0 - 1]).slice(0, 2);\n $$[$0 - 2][0] = $$[$0 - 2][0].actor;\n $$[$0 - 2][1] = $$[$0 - 2][1].actor;\n this.$ = [$$[$0 - 1], { type: \"addNote\", placement: yy.PLACEMENT.OVER, actor: $$[$0 - 2].slice(0, 2), text: $$[$0] }];\n break;\n case 55:\n this.$ = [$$[$0 - 1], { type: \"addLinks\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 56:\n this.$ = [$$[$0 - 1], { type: \"addALink\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 57:\n this.$ = [$$[$0 - 1], { type: \"addProperties\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 58:\n this.$ = [$$[$0 - 1], { type: \"addDetails\", actor: $$[$0 - 1].actor, text: $$[$0] }];\n break;\n case 61:\n this.$ = [$$[$0 - 2], $$[$0]];\n break;\n case 62:\n this.$ = $$[$0];\n break;\n case 63:\n this.$ = yy.PLACEMENT.LEFTOF;\n break;\n case 64:\n this.$ = yy.PLACEMENT.RIGHTOF;\n break;\n case 65:\n this.$ = [\n $$[$0 - 4],\n $$[$0 - 1],\n { type: \"addMessage\", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0], activate: true },\n { type: \"activeStart\", signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0 - 1] }\n ];\n break;\n case 66:\n this.$ = [\n $$[$0 - 4],\n $$[$0 - 1],\n { type: \"addMessage\", from: $$[$0 - 4].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 3], msg: $$[$0] },\n { type: \"activeEnd\", signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0 - 4] }\n ];\n break;\n case 67:\n this.$ = [$$[$0 - 3], $$[$0 - 1], { type: \"addMessage\", from: $$[$0 - 3].actor, to: $$[$0 - 1].actor, signalType: $$[$0 - 2], msg: $$[$0] }];\n break;\n case 68:\n this.$ = { type: \"addParticipant\", actor: $$[$0] };\n break;\n case 69:\n this.$ = yy.LINETYPE.SOLID_OPEN;\n break;\n case 70:\n this.$ = yy.LINETYPE.DOTTED_OPEN;\n break;\n case 71:\n this.$ = yy.LINETYPE.SOLID;\n break;\n case 72:\n this.$ = yy.LINETYPE.DOTTED;\n break;\n case 73:\n this.$ = yy.LINETYPE.SOLID_CROSS;\n break;\n case 74:\n this.$ = yy.LINETYPE.DOTTED_CROSS;\n break;\n case 75:\n this.$ = yy.LINETYPE.SOLID_POINT;\n break;\n case 76:\n this.$ = yy.LINETYPE.DOTTED_POINT;\n break;\n case 77:\n this.$ = yy.parseMessage($$[$0].trim().substring(1));\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o([1, 4, 5, 13, 14, 18, 21, 23, 29, 30, 31, 33, 35, 36, 37, 38, 39, 41, 43, 44, 46, 50, 52, 53, 54, 59, 60, 61, 62, 70], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, o($Vx, [2, 5]), { 9: 47, 12: 12, 13: $V6, 14: $V7, 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, o($Vx, [2, 7]), o($Vx, [2, 8]), o($Vx, [2, 14]), { 12: 48, 50: $Vo, 52: $Vp, 53: $Vq }, { 15: [1, 49] }, { 5: [1, 50] }, { 5: [1, 53], 19: [1, 51], 20: [1, 52] }, { 22: 54, 70: $Vw }, { 22: 55, 70: $Vw }, { 5: [1, 56] }, { 5: [1, 57] }, { 5: [1, 58] }, { 5: [1, 59] }, { 5: [1, 60] }, o($Vx, [2, 29]), o($Vx, [2, 30]), { 32: [1, 61] }, { 34: [1, 62] }, o($Vx, [2, 33]), { 15: [1, 63] }, { 15: [1, 64] }, { 15: [1, 65] }, { 15: [1, 66] }, { 15: [1, 67] }, { 15: [1, 68] }, { 15: [1, 69] }, { 15: [1, 70] }, { 22: 71, 70: $Vw }, { 22: 72, 70: $Vw }, { 22: 73, 70: $Vw }, { 67: 74, 71: [1, 75], 72: [1, 76], 73: [1, 77], 74: [1, 78], 75: [1, 79], 76: [1, 80], 77: [1, 81], 78: [1, 82] }, { 55: 83, 57: [1, 84], 65: [1, 85], 66: [1, 86] }, { 22: 87, 70: $Vw }, { 22: 88, 70: $Vw }, { 22: 89, 70: $Vw }, { 22: 90, 70: $Vw }, o([5, 51, 64, 71, 72, 73, 74, 75, 76, 77, 78, 79], [2, 68]), o($Vx, [2, 6]), o($Vx, [2, 15]), o($Vy, [2, 9], { 10: 91 }), o($Vx, [2, 17]), { 5: [1, 93], 19: [1, 92] }, { 5: [1, 94] }, o($Vx, [2, 21]), { 5: [1, 95] }, { 5: [1, 96] }, o($Vx, [2, 24]), o($Vx, [2, 25]), o($Vx, [2, 26]), o($Vx, [2, 27]), o($Vx, [2, 28]), o($Vx, [2, 31]), o($Vx, [2, 32]), o($Vz, $V3, { 7: 97 }), o($Vz, $V3, { 7: 98 }), o($Vz, $V3, { 7: 99 }), o($VA, $V3, { 40: 100, 7: 101 }), o($VB, $V3, { 42: 102, 7: 103 }), o($VB, $V3, { 7: 103, 42: 104 }), o($VC, $V3, { 45: 105, 7: 106 }), o($Vz, $V3, { 7: 107 }), { 5: [1, 109], 51: [1, 108] }, { 5: [1, 111], 51: [1, 110] }, { 5: [1, 112] }, { 22: 115, 68: [1, 113], 69: [1, 114], 70: $Vw }, o($VD, [2, 69]), o($VD, [2, 70]), o($VD, [2, 71]), o($VD, [2, 72]), o($VD, [2, 73]), o($VD, [2, 74]), o($VD, [2, 75]), o($VD, [2, 76]), { 22: 116, 70: $Vw }, { 22: 118, 58: 117, 70: $Vw }, { 70: [2, 63] }, { 70: [2, 64] }, { 56: 119, 79: $VE }, { 56: 121, 79: $VE }, { 56: 122, 79: $VE }, { 56: 123, 79: $VE }, { 4: [1, 126], 5: [1, 128], 11: 125, 12: 127, 16: [1, 124], 50: $Vo, 52: $Vp, 53: $Vq }, { 5: [1, 129] }, o($Vx, [2, 19]), o($Vx, [2, 20]), o($Vx, [2, 22]), o($Vx, [2, 23]), { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 130], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 131], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 132], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 16: [1, 133] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 46], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 49: [1, 134], 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 16: [1, 135] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 44], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 48: [1, 136], 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 16: [1, 137] }, { 16: [1, 138] }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [2, 42], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 47: [1, 139], 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 4: $V4, 5: $V5, 8: 8, 9: 10, 12: 12, 13: $V6, 14: $V7, 16: [1, 140], 17: 15, 18: $V8, 21: $V9, 22: 40, 23: $Va, 24: 19, 25: 20, 26: 21, 27: 22, 28: 23, 29: $Vb, 30: $Vc, 31: $Vd, 33: $Ve, 35: $Vf, 36: $Vg, 37: $Vh, 38: $Vi, 39: $Vj, 41: $Vk, 43: $Vl, 44: $Vm, 46: $Vn, 50: $Vo, 52: $Vp, 53: $Vq, 54: $Vr, 59: $Vs, 60: $Vt, 61: $Vu, 62: $Vv, 70: $Vw }, { 15: [1, 141] }, o($Vx, [2, 49]), { 15: [1, 142] }, o($Vx, [2, 51]), o($Vx, [2, 52]), { 22: 143, 70: $Vw }, { 22: 144, 70: $Vw }, { 56: 145, 79: $VE }, { 56: 146, 79: $VE }, { 56: 147, 79: $VE }, { 64: [1, 148], 79: [2, 62] }, { 5: [2, 55] }, { 5: [2, 77] }, { 5: [2, 56] }, { 5: [2, 57] }, { 5: [2, 58] }, o($Vx, [2, 16]), o($Vy, [2, 10]), { 12: 149, 50: $Vo, 52: $Vp, 53: $Vq }, o($Vy, [2, 12]), o($Vy, [2, 13]), o($Vx, [2, 18]), o($Vx, [2, 34]), o($Vx, [2, 35]), o($Vx, [2, 36]), o($Vx, [2, 37]), { 15: [1, 150] }, o($Vx, [2, 38]), { 15: [1, 151] }, o($Vx, [2, 39]), o($Vx, [2, 40]), { 15: [1, 152] }, o($Vx, [2, 41]), { 5: [1, 153] }, { 5: [1, 154] }, { 56: 155, 79: $VE }, { 56: 156, 79: $VE }, { 5: [2, 67] }, { 5: [2, 53] }, { 5: [2, 54] }, { 22: 157, 70: $Vw }, o($Vy, [2, 11]), o($VA, $V3, { 7: 101, 40: 158 }), o($VB, $V3, { 7: 103, 42: 159 }), o($VC, $V3, { 7: 106, 45: 160 }), o($Vx, [2, 48]), o($Vx, [2, 50]), { 5: [2, 65] }, { 5: [2, 66] }, { 79: [2, 61] }, { 16: [2, 47] }, { 16: [2, 45] }, { 16: [2, 43] }],\n defaultActions: { 5: [2, 1], 6: [2, 2], 85: [2, 63], 86: [2, 64], 119: [2, 55], 120: [2, 77], 121: [2, 56], 122: [2, 57], 123: [2, 58], 145: [2, 67], 146: [2, 53], 147: [2, 54], 155: [2, 65], 156: [2, 66], 157: [2, 61], 158: [2, 47], 159: [2, 45], 160: [2, 43] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 5;\n case 1:\n break;\n case 2:\n break;\n case 3:\n break;\n case 4:\n break;\n case 5:\n break;\n case 6:\n return 19;\n case 7:\n this.begin(\"LINE\");\n return 14;\n case 8:\n this.begin(\"ID\");\n return 50;\n case 9:\n this.begin(\"ID\");\n return 52;\n case 10:\n return 13;\n case 11:\n this.begin(\"ID\");\n return 53;\n case 12:\n yy_.yytext = yy_.yytext.trim();\n this.begin(\"ALIAS\");\n return 70;\n case 13:\n this.popState();\n this.popState();\n this.begin(\"LINE\");\n return 51;\n case 14:\n this.popState();\n this.popState();\n return 5;\n case 15:\n this.begin(\"LINE\");\n return 36;\n case 16:\n this.begin(\"LINE\");\n return 37;\n case 17:\n this.begin(\"LINE\");\n return 38;\n case 18:\n this.begin(\"LINE\");\n return 39;\n case 19:\n this.begin(\"LINE\");\n return 49;\n case 20:\n this.begin(\"LINE\");\n return 41;\n case 21:\n this.begin(\"LINE\");\n return 43;\n case 22:\n this.begin(\"LINE\");\n return 48;\n case 23:\n this.begin(\"LINE\");\n return 44;\n case 24:\n this.begin(\"LINE\");\n return 47;\n case 25:\n this.begin(\"LINE\");\n return 46;\n case 26:\n this.popState();\n return 15;\n case 27:\n return 16;\n case 28:\n return 65;\n case 29:\n return 66;\n case 30:\n return 59;\n case 31:\n return 60;\n case 32:\n return 61;\n case 33:\n return 62;\n case 34:\n return 57;\n case 35:\n return 54;\n case 36:\n this.begin(\"ID\");\n return 21;\n case 37:\n this.begin(\"ID\");\n return 23;\n case 38:\n return 29;\n case 39:\n return 30;\n case 40:\n this.begin(\"acc_title\");\n return 31;\n case 41:\n this.popState();\n return \"acc_title_value\";\n case 42:\n this.begin(\"acc_descr\");\n return 33;\n case 43:\n this.popState();\n return \"acc_descr_value\";\n case 44:\n this.begin(\"acc_descr_multiline\");\n break;\n case 45:\n this.popState();\n break;\n case 46:\n return \"acc_descr_multiline_value\";\n case 47:\n return 6;\n case 48:\n return 18;\n case 49:\n return 20;\n case 50:\n return 64;\n case 51:\n return 5;\n case 52:\n yy_.yytext = yy_.yytext.trim();\n return 70;\n case 53:\n return 73;\n case 54:\n return 74;\n case 55:\n return 71;\n case 56:\n return 72;\n case 57:\n return 75;\n case 58:\n return 76;\n case 59:\n return 77;\n case 60:\n return 78;\n case 61:\n return 79;\n case 62:\n return 68;\n case 63:\n return 69;\n case 64:\n return 5;\n case 65:\n return \"INVALID\";\n }\n },\n rules: [/^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:((?!\\n)\\s)+)/i, /^(?:#[^\\n]*)/i, /^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[0-9]+(?=[ \\n]+))/i, /^(?:box\\b)/i, /^(?:participant\\b)/i, /^(?:actor\\b)/i, /^(?:create\\b)/i, /^(?:destroy\\b)/i, /^(?:[^\\->:\\n,;]+?([\\-]*[^\\->:\\n,;]+?)*?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i, /^(?:as\\b)/i, /^(?:(?:))/i, /^(?:loop\\b)/i, /^(?:rect\\b)/i, /^(?:opt\\b)/i, /^(?:alt\\b)/i, /^(?:else\\b)/i, /^(?:par\\b)/i, /^(?:par_over\\b)/i, /^(?:and\\b)/i, /^(?:critical\\b)/i, /^(?:option\\b)/i, /^(?:break\\b)/i, /^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i, /^(?:end\\b)/i, /^(?:left of\\b)/i, /^(?:right of\\b)/i, /^(?:links\\b)/i, /^(?:link\\b)/i, /^(?:properties\\b)/i, /^(?:details\\b)/i, /^(?:over\\b)/i, /^(?:note\\b)/i, /^(?:activate\\b)/i, /^(?:deactivate\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:title:\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:sequenceDiagram\\b)/i, /^(?:autonumber\\b)/i, /^(?:off\\b)/i, /^(?:,)/i, /^(?:;)/i, /^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i, /^(?:->>)/i, /^(?:-->>)/i, /^(?:->)/i, /^(?:-->)/i, /^(?:-[x])/i, /^(?:--[x])/i, /^(?:-[\\)])/i, /^(?:--[\\)])/i, /^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i, /^(?:\\+)/i, /^(?:-)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [45, 46], \"inclusive\": false }, \"acc_descr\": { \"rules\": [43], \"inclusive\": false }, \"acc_title\": { \"rules\": [41], \"inclusive\": false }, \"ID\": { \"rules\": [2, 3, 12], \"inclusive\": false }, \"ALIAS\": { \"rules\": [2, 3, 13, 14], \"inclusive\": false }, \"LINE\": { \"rules\": [2, 3, 26], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 44, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet prevActor = void 0;\nlet actors = {};\nlet createdActors = {};\nlet destroyedActors = {};\nlet boxes = [];\nlet messages = [];\nlet sequenceNumbersEnabled = false;\nlet wrapEnabled;\nlet currentBox = void 0;\nlet lastCreated = void 0;\nlet lastDestroyed = void 0;\nconst addBox = function(data) {\n boxes.push({\n name: data.text,\n wrap: data.wrap === void 0 && autoWrap() || !!data.wrap,\n fill: data.color,\n actorKeys: []\n });\n currentBox = boxes.slice(-1)[0];\n};\nconst addActor = function(id, name, description, type) {\n let assignedBox = currentBox;\n const old = actors[id];\n if (old) {\n if (currentBox && old.box && currentBox !== old.box) {\n throw new Error(\n \"A same participant should only be defined in one Box: \" + old.name + \" can't be in '\" + old.box.name + \"' and in '\" + currentBox.name + \"' at the same time.\"\n );\n }\n assignedBox = old.box ? old.box : currentBox;\n old.box = assignedBox;\n if (old && name === old.name && description == null) {\n return;\n }\n }\n if (description == null || description.text == null) {\n description = { text: name, wrap: null, type };\n }\n if (type == null || description.text == null) {\n description = { text: name, wrap: null, type };\n }\n actors[id] = {\n box: assignedBox,\n name,\n description: description.text,\n wrap: description.wrap === void 0 && autoWrap() || !!description.wrap,\n prevActor,\n links: {},\n properties: {},\n actorCnt: null,\n rectData: null,\n type: type || \"participant\"\n };\n if (prevActor && actors[prevActor]) {\n actors[prevActor].nextActor = id;\n }\n if (currentBox) {\n currentBox.actorKeys.push(id);\n }\n prevActor = id;\n};\nconst activationCount = (part) => {\n let i;\n let count = 0;\n for (i = 0; i < messages.length; i++) {\n if (messages[i].type === LINETYPE.ACTIVE_START && messages[i].from.actor === part) {\n count++;\n }\n if (messages[i].type === LINETYPE.ACTIVE_END && messages[i].from.actor === part) {\n count--;\n }\n }\n return count;\n};\nconst addMessage = function(idFrom, idTo, message, answer) {\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,\n answer\n });\n};\nconst addSignal = function(idFrom, idTo, message = { text: void 0, wrap: void 0 }, messageType, activate = false) {\n if (messageType === LINETYPE.ACTIVE_END) {\n const cnt = activationCount(idFrom.actor);\n if (cnt < 1) {\n let error = new Error(\"Trying to inactivate an inactive participant (\" + idFrom.actor + \")\");\n error.hash = {\n text: \"->>-\",\n token: \"->>-\",\n line: \"1\",\n loc: { first_line: 1, last_line: 1, first_column: 1, last_column: 1 },\n expected: [\"'ACTIVE_PARTICIPANT'\"]\n };\n throw error;\n }\n }\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,\n type: messageType,\n activate\n });\n return true;\n};\nconst hasAtLeastOneBox = function() {\n return boxes.length > 0;\n};\nconst hasAtLeastOneBoxWithTitle = function() {\n return boxes.some((b) => b.name);\n};\nconst getMessages = function() {\n return messages;\n};\nconst getBoxes = function() {\n return boxes;\n};\nconst getActors = function() {\n return actors;\n};\nconst getCreatedActors = function() {\n return createdActors;\n};\nconst getDestroyedActors = function() {\n return destroyedActors;\n};\nconst getActor = function(id) {\n return actors[id];\n};\nconst getActorKeys = function() {\n return Object.keys(actors);\n};\nconst enableSequenceNumbers = function() {\n sequenceNumbersEnabled = true;\n};\nconst disableSequenceNumbers = function() {\n sequenceNumbersEnabled = false;\n};\nconst showSequenceNumbers = () => sequenceNumbersEnabled;\nconst setWrap = function(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\nconst autoWrap = () => {\n if (wrapEnabled !== void 0) {\n return wrapEnabled;\n }\n return getConfig().sequence.wrap;\n};\nconst clear = function() {\n actors = {};\n createdActors = {};\n destroyedActors = {};\n boxes = [];\n messages = [];\n sequenceNumbersEnabled = false;\n clear$1();\n};\nconst parseMessage = function(str) {\n const _str = str.trim();\n const message = {\n text: _str.replace(/^:?(?:no)?wrap:/, \"\").trim(),\n wrap: _str.match(/^:?wrap:/) !== null ? true : _str.match(/^:?nowrap:/) !== null ? false : void 0\n };\n log.debug(\"parseMessage:\", message);\n return message;\n};\nconst parseBoxData = function(str) {\n const match = str.match(/^((?:rgba?|hsla?)\\s*\\(.*\\)|\\w*)(.*)$/);\n let color = match != null && match[1] ? match[1].trim() : \"transparent\";\n let title = match != null && match[2] ? match[2].trim() : void 0;\n if (window && window.CSS) {\n if (!window.CSS.supports(\"color\", color)) {\n color = \"transparent\";\n title = str.trim();\n }\n } else {\n const style = new Option().style;\n style.color = color;\n if (style.color !== color) {\n color = \"transparent\";\n title = str.trim();\n }\n }\n const boxData = {\n color,\n text: title !== void 0 ? sanitizeText(title.replace(/^:?(?:no)?wrap:/, \"\"), getConfig()) : void 0,\n wrap: title !== void 0 ? title.match(/^:?wrap:/) !== null ? true : title.match(/^:?nowrap:/) !== null ? false : void 0 : void 0\n };\n return boxData;\n};\nconst LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n AUTONUMBER: 26,\n CRITICAL_START: 27,\n CRITICAL_OPTION: 28,\n CRITICAL_END: 29,\n BREAK_START: 30,\n BREAK_END: 31,\n PAR_OVER_START: 32\n};\nconst ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\nconst PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\nconst addNote = function(actor, placement, message) {\n ({\n actor,\n placement,\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap\n });\n const actors2 = [].concat(actor, actor);\n messages.push({\n from: actors2[0],\n to: actors2[1],\n message: message.text,\n wrap: message.wrap === void 0 && autoWrap() || !!message.wrap,\n type: LINETYPE.NOTE,\n placement\n });\n};\nconst addLinks = function(actorId, text) {\n const actor = getActor(actorId);\n try {\n let sanitizedText = sanitizeText(text.text, getConfig());\n sanitizedText = sanitizedText.replace(/&/g, \"&\");\n sanitizedText = sanitizedText.replace(/=/g, \"=\");\n const links = JSON.parse(sanitizedText);\n insertLinks(actor, links);\n } catch (e) {\n log.error(\"error while parsing actor link text\", e);\n }\n};\nconst addALink = function(actorId, text) {\n const actor = getActor(actorId);\n try {\n const links = {};\n let sanitizedText = sanitizeText(text.text, getConfig());\n var sep = sanitizedText.indexOf(\"@\");\n sanitizedText = sanitizedText.replace(/&/g, \"&\");\n sanitizedText = sanitizedText.replace(/=/g, \"=\");\n var label = sanitizedText.slice(0, sep - 1).trim();\n var link = sanitizedText.slice(sep + 1).trim();\n links[label] = link;\n insertLinks(actor, links);\n } catch (e) {\n log.error(\"error while parsing actor link text\", e);\n }\n};\nfunction insertLinks(actor, links) {\n if (actor.links == null) {\n actor.links = links;\n } else {\n for (let key in links) {\n actor.links[key] = links[key];\n }\n }\n}\nconst addProperties = function(actorId, text) {\n const actor = getActor(actorId);\n try {\n let sanitizedText = sanitizeText(text.text, getConfig());\n const properties = JSON.parse(sanitizedText);\n insertProperties(actor, properties);\n } catch (e) {\n log.error(\"error while parsing actor properties text\", e);\n }\n};\nfunction insertProperties(actor, properties) {\n if (actor.properties == null) {\n actor.properties = properties;\n } else {\n for (let key in properties) {\n actor.properties[key] = properties[key];\n }\n }\n}\nfunction boxEnd() {\n currentBox = void 0;\n}\nconst addDetails = function(actorId, text) {\n const actor = getActor(actorId);\n const elem = document.getElementById(text.text);\n try {\n const text2 = elem.innerHTML;\n const details = JSON.parse(text2);\n if (details[\"properties\"]) {\n insertProperties(actor, details[\"properties\"]);\n }\n if (details[\"links\"]) {\n insertLinks(actor, details[\"links\"]);\n }\n } catch (e) {\n log.error(\"error while parsing actor details text\", e);\n }\n};\nconst getActorProperty = function(actor, key) {\n if (actor !== void 0 && actor.properties !== void 0) {\n return actor.properties[key];\n }\n return void 0;\n};\nconst apply = function(param) {\n if (Array.isArray(param)) {\n param.forEach(function(item) {\n apply(item);\n });\n } else {\n switch (param.type) {\n case \"sequenceIndex\":\n messages.push({\n from: void 0,\n to: void 0,\n message: {\n start: param.sequenceIndex,\n step: param.sequenceIndexStep,\n visible: param.sequenceVisible\n },\n wrap: false,\n type: param.signalType\n });\n break;\n case \"addParticipant\":\n addActor(param.actor, param.actor, param.description, param.draw);\n break;\n case \"createParticipant\":\n if (actors[param.actor]) {\n throw new Error(\n \"It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior\"\n );\n }\n lastCreated = param.actor;\n addActor(param.actor, param.actor, param.description, param.draw);\n createdActors[param.actor] = messages.length;\n break;\n case \"destroyParticipant\":\n lastDestroyed = param.actor;\n destroyedActors[param.actor] = messages.length;\n break;\n case \"activeStart\":\n addSignal(param.actor, void 0, void 0, param.signalType);\n break;\n case \"activeEnd\":\n addSignal(param.actor, void 0, void 0, param.signalType);\n break;\n case \"addNote\":\n addNote(param.actor, param.placement, param.text);\n break;\n case \"addLinks\":\n addLinks(param.actor, param.text);\n break;\n case \"addALink\":\n addALink(param.actor, param.text);\n break;\n case \"addProperties\":\n addProperties(param.actor, param.text);\n break;\n case \"addDetails\":\n addDetails(param.actor, param.text);\n break;\n case \"addMessage\":\n if (lastCreated) {\n if (param.to !== lastCreated) {\n throw new Error(\n \"The created participant \" + lastCreated + \" does not have an associated creating message after its declaration. Please check the sequence diagram.\"\n );\n } else {\n lastCreated = void 0;\n }\n } else if (lastDestroyed) {\n if (param.to !== lastDestroyed && param.from !== lastDestroyed) {\n throw new Error(\n \"The destroyed participant \" + lastDestroyed + \" does not have an associated destroying message after its declaration. Please check the sequence diagram.\"\n );\n } else {\n lastDestroyed = void 0;\n }\n }\n addSignal(param.from, param.to, param.msg, param.signalType, param.activate);\n break;\n case \"boxStart\":\n addBox(param.boxData);\n break;\n case \"boxEnd\":\n boxEnd();\n break;\n case \"loopStart\":\n addSignal(void 0, void 0, param.loopText, param.signalType);\n break;\n case \"loopEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"rectStart\":\n addSignal(void 0, void 0, param.color, param.signalType);\n break;\n case \"rectEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"optStart\":\n addSignal(void 0, void 0, param.optText, param.signalType);\n break;\n case \"optEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"altStart\":\n addSignal(void 0, void 0, param.altText, param.signalType);\n break;\n case \"else\":\n addSignal(void 0, void 0, param.altText, param.signalType);\n break;\n case \"altEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"setAccTitle\":\n setAccTitle(param.text);\n break;\n case \"parStart\":\n addSignal(void 0, void 0, param.parText, param.signalType);\n break;\n case \"and\":\n addSignal(void 0, void 0, param.parText, param.signalType);\n break;\n case \"parEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"criticalStart\":\n addSignal(void 0, void 0, param.criticalText, param.signalType);\n break;\n case \"option\":\n addSignal(void 0, void 0, param.optionText, param.signalType);\n break;\n case \"criticalEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n case \"breakStart\":\n addSignal(void 0, void 0, param.breakText, param.signalType);\n break;\n case \"breakEnd\":\n addSignal(void 0, void 0, void 0, param.signalType);\n break;\n }\n }\n};\nconst db = {\n addActor,\n addMessage,\n addSignal,\n addLinks,\n addDetails,\n addProperties,\n autoWrap,\n setWrap,\n enableSequenceNumbers,\n disableSequenceNumbers,\n showSequenceNumbers,\n getMessages,\n getActors,\n getCreatedActors,\n getDestroyedActors,\n getActor,\n getActorKeys,\n getActorProperty,\n getAccTitle,\n getBoxes,\n getDiagramTitle,\n setDiagramTitle,\n getConfig: () => getConfig().sequence,\n clear,\n parseMessage,\n parseBoxData,\n LINETYPE,\n ARROWTYPE,\n PLACEMENT,\n addNote,\n setAccTitle,\n apply,\n setAccDescription,\n getAccDescription,\n hasAtLeastOneBox,\n hasAtLeastOneBoxWithTitle\n};\nconst getStyles = (options) => `.actor {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${options.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${options.actorLineColor};\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${options.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${options.signalColor};\n }\n\n #arrowhead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .sequenceNumber {\n fill: ${options.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${options.signalColor};\n }\n\n #crosshead path {\n fill: ${options.signalColor};\n stroke: ${options.signalColor};\n }\n\n .messageText {\n fill: ${options.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${options.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${options.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${options.labelBoxBorderColor};\n fill: ${options.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${options.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation1 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .activation2 {\n fill: ${options.activationBkgColor};\n stroke: ${options.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${options.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${options.actorBorder};\n fill: ${options.actorBkg};\n stroke-width: 2px;\n }\n`;\nconst styles = getStyles;\nconst ACTOR_TYPE_WIDTH = 18 * 2;\nconst drawRect = function(elem, rectData) {\n return drawRect$1(elem, rectData);\n};\nconst addPopupInteraction = (id, actorCnt2) => {\n addFunction(() => {\n const arr = document.querySelectorAll(id);\n if (arr.length === 0) {\n return;\n }\n arr[0].addEventListener(\"mouseover\", function() {\n popupMenuUpFunc(\"actor\" + actorCnt2 + \"_popup\");\n });\n arr[0].addEventListener(\"mouseout\", function() {\n popupMenuDownFunc(\"actor\" + actorCnt2 + \"_popup\");\n });\n });\n};\nconst drawPopup = function(elem, actor, minMenuWidth, textAttrs, forceMenus) {\n if (actor.links === void 0 || actor.links === null || Object.keys(actor.links).length === 0) {\n return { height: 0, width: 0 };\n }\n const links = actor.links;\n const actorCnt2 = actor.actorCnt;\n const rectData = actor.rectData;\n var displayValue = \"none\";\n if (forceMenus) {\n displayValue = \"block !important\";\n }\n const g = elem.append(\"g\");\n g.attr(\"id\", \"actor\" + actorCnt2 + \"_popup\");\n g.attr(\"class\", \"actorPopupMenu\");\n g.attr(\"display\", displayValue);\n addPopupInteraction(\"#actor\" + actorCnt2 + \"_popup\", actorCnt2);\n var actorClass = \"\";\n if (rectData.class !== void 0) {\n actorClass = \" \" + rectData.class;\n }\n let menuWidth = rectData.width > minMenuWidth ? rectData.width : minMenuWidth;\n const rectElem = g.append(\"rect\");\n rectElem.attr(\"class\", \"actorPopupMenuPanel\" + actorClass);\n rectElem.attr(\"x\", rectData.x);\n rectElem.attr(\"y\", rectData.height);\n rectElem.attr(\"fill\", rectData.fill);\n rectElem.attr(\"stroke\", rectData.stroke);\n rectElem.attr(\"width\", menuWidth);\n rectElem.attr(\"height\", rectData.height);\n rectElem.attr(\"rx\", rectData.rx);\n rectElem.attr(\"ry\", rectData.ry);\n if (links != null) {\n var linkY = 20;\n for (let key in links) {\n var linkElem = g.append(\"a\");\n var sanitizedLink = sanitizeUrl(links[key]);\n linkElem.attr(\"xlink:href\", sanitizedLink);\n linkElem.attr(\"target\", \"_blank\");\n _drawMenuItemTextCandidateFunc(textAttrs)(\n key,\n linkElem,\n rectData.x + 10,\n rectData.height + linkY,\n menuWidth,\n 20,\n { class: \"actor\" },\n textAttrs\n );\n linkY += 30;\n }\n }\n rectElem.attr(\"height\", linkY);\n return { height: rectData.height + linkY, width: menuWidth };\n};\nconst popupMenu = function(popid) {\n return \"var pu = document.getElementById('\" + popid + \"'); if (pu != null) { pu.style.display = 'block'; }\";\n};\nconst popdownMenu = function(popid) {\n return \"var pu = document.getElementById('\" + popid + \"'); if (pu != null) { pu.style.display = 'none'; }\";\n};\nconst popupMenuUpFunc = function(popupId) {\n var pu = document.getElementById(popupId);\n if (pu != null) {\n pu.style.display = \"block\";\n }\n};\nconst popupMenuDownFunc = function(popupId) {\n var pu = document.getElementById(popupId);\n if (pu != null) {\n pu.style.display = \"none\";\n }\n};\nconst drawText = function(elem, textData) {\n let prevTextHeight = 0;\n let textHeight = 0;\n const lines = textData.text.split(common.lineBreakRegex);\n const [_textFontSize, _textFontSizePx] = parseFontSize(textData.fontSize);\n let textElems = [];\n let dy = 0;\n let yfunc = () => textData.y;\n if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) {\n switch (textData.valign) {\n case \"top\":\n case \"start\":\n yfunc = () => Math.round(textData.y + textData.textMargin);\n break;\n case \"middle\":\n case \"center\":\n yfunc = () => Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n break;\n case \"bottom\":\n case \"end\":\n yfunc = () => Math.round(\n textData.y + (prevTextHeight + textHeight + 2 * textData.textMargin) - textData.textMargin\n );\n break;\n }\n }\n if (textData.anchor !== void 0 && textData.textMargin !== void 0 && textData.width !== void 0) {\n switch (textData.anchor) {\n case \"left\":\n case \"start\":\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = \"start\";\n textData.dominantBaseline = \"middle\";\n textData.alignmentBaseline = \"middle\";\n break;\n case \"middle\":\n case \"center\":\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = \"middle\";\n textData.dominantBaseline = \"middle\";\n textData.alignmentBaseline = \"middle\";\n break;\n case \"right\":\n case \"end\":\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = \"end\";\n textData.dominantBaseline = \"middle\";\n textData.alignmentBaseline = \"middle\";\n break;\n }\n }\n for (let [i, line] of lines.entries()) {\n if (textData.textMargin !== void 0 && textData.textMargin === 0 && _textFontSize !== void 0) {\n dy = i * _textFontSize;\n }\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", yfunc());\n if (textData.anchor !== void 0) {\n textElem.attr(\"text-anchor\", textData.anchor).attr(\"dominant-baseline\", textData.dominantBaseline).attr(\"alignment-baseline\", textData.alignmentBaseline);\n }\n if (textData.fontFamily !== void 0) {\n textElem.style(\"font-family\", textData.fontFamily);\n }\n if (_textFontSizePx !== void 0) {\n textElem.style(\"font-size\", _textFontSizePx);\n }\n if (textData.fontWeight !== void 0) {\n textElem.style(\"font-weight\", textData.fontWeight);\n }\n if (textData.fill !== void 0) {\n textElem.attr(\"fill\", textData.fill);\n }\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n if (textData.dy !== void 0) {\n textElem.attr(\"dy\", textData.dy);\n } else if (dy !== 0) {\n textElem.attr(\"dy\", dy);\n }\n const text = line || ZERO_WIDTH_SPACE;\n if (textData.tspan) {\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x);\n if (textData.fill !== void 0) {\n span.attr(\"fill\", textData.fill);\n }\n span.text(text);\n } else {\n textElem.text(text);\n }\n if (textData.valign !== void 0 && textData.textMargin !== void 0 && textData.textMargin > 0) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n textElems.push(textElem);\n }\n return textElems;\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\n }\n const polygon = elem.append(\"polygon\");\n polygon.attr(\"points\", genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr(\"class\", \"labelBox\");\n txtObject.y = txtObject.y + txtObject.height / 2;\n drawText(elem, txtObject);\n return polygon;\n};\nlet actorCnt = -1;\nconst fixLifeLineHeights = (diagram2, actors2, actorKeys, conf2) => {\n if (!diagram2.select) {\n return;\n }\n actorKeys.forEach((actorKey) => {\n const actor = actors2[actorKey];\n const actorDOM = diagram2.select(\"#actor\" + actor.actorCnt);\n if (!conf2.mirrorActors && actor.stopy) {\n actorDOM.attr(\"y2\", actor.stopy + actor.height / 2);\n } else if (conf2.mirrorActors) {\n actorDOM.attr(\"y2\", actor.stopy);\n }\n });\n};\nconst drawActorTypeParticipant = function(elem, actor, conf2, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 5;\n const boxpluslineGroup = elem.append(\"g\").lower();\n var g = boxpluslineGroup;\n if (!isFooter) {\n actorCnt++;\n g.append(\"line\").attr(\"id\", \"actor\" + actorCnt).attr(\"x1\", center).attr(\"y1\", centerY).attr(\"x2\", center).attr(\"y2\", 2e3).attr(\"class\", \"actor-line\").attr(\"class\", \"200\").attr(\"stroke-width\", \"0.5px\").attr(\"stroke\", \"#999\");\n g = boxpluslineGroup.append(\"g\");\n actor.actorCnt = actorCnt;\n if (actor.links != null) {\n g.attr(\"id\", \"root-\" + actorCnt);\n addPopupInteraction(\"#root-\" + actorCnt, actorCnt);\n }\n }\n const rect = getNoteRect$1();\n var cssclass = \"actor\";\n if (actor.properties != null && actor.properties[\"class\"]) {\n cssclass = actor.properties[\"class\"];\n } else {\n rect.fill = \"#eaeaea\";\n }\n rect.x = actor.x;\n rect.y = actorY;\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = cssclass;\n rect.rx = 3;\n rect.ry = 3;\n const rectElem = drawRect(g, rect);\n actor.rectData = rect;\n if (actor.properties != null && actor.properties[\"icon\"]) {\n const iconSrc = actor.properties[\"icon\"].trim();\n if (iconSrc.charAt(0) === \"@\") {\n drawEmbeddedImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc.substr(1));\n } else {\n drawImage(g, rect.x + rect.width - 20, rect.y + 10, iconSrc);\n }\n }\n _drawTextCandidateFunc(conf2)(\n actor.description,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"actor\" },\n conf2\n );\n let height = actor.height;\n if (rectElem.node) {\n const bounds2 = rectElem.node().getBBox();\n actor.height = bounds2.height;\n height = bounds2.height;\n }\n return height;\n};\nconst drawActorTypeActor = function(elem, actor, conf2, isFooter) {\n const actorY = isFooter ? actor.stopy : actor.starty;\n const center = actor.x + actor.width / 2;\n const centerY = actorY + 80;\n elem.lower();\n if (!isFooter) {\n actorCnt++;\n elem.append(\"line\").attr(\"id\", \"actor\" + actorCnt).attr(\"x1\", center).attr(\"y1\", centerY).attr(\"x2\", center).attr(\"y2\", 2e3).attr(\"class\", \"actor-line\").attr(\"class\", \"200\").attr(\"stroke-width\", \"0.5px\").attr(\"stroke\", \"#999\");\n actor.actorCnt = actorCnt;\n }\n const actElem = elem.append(\"g\");\n actElem.attr(\"class\", \"actor-man\");\n const rect = getNoteRect$1();\n rect.x = actor.x;\n rect.y = actorY;\n rect.fill = \"#eaeaea\";\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = \"actor\";\n rect.rx = 3;\n rect.ry = 3;\n actElem.append(\"line\").attr(\"id\", \"actor-man-torso\" + actorCnt).attr(\"x1\", center).attr(\"y1\", actorY + 25).attr(\"x2\", center).attr(\"y2\", actorY + 45);\n actElem.append(\"line\").attr(\"id\", \"actor-man-arms\" + actorCnt).attr(\"x1\", center - ACTOR_TYPE_WIDTH / 2).attr(\"y1\", actorY + 33).attr(\"x2\", center + ACTOR_TYPE_WIDTH / 2).attr(\"y2\", actorY + 33);\n actElem.append(\"line\").attr(\"x1\", center - ACTOR_TYPE_WIDTH / 2).attr(\"y1\", actorY + 60).attr(\"x2\", center).attr(\"y2\", actorY + 45);\n actElem.append(\"line\").attr(\"x1\", center).attr(\"y1\", actorY + 45).attr(\"x2\", center + ACTOR_TYPE_WIDTH / 2 - 2).attr(\"y2\", actorY + 60);\n const circle = actElem.append(\"circle\");\n circle.attr(\"cx\", actor.x + actor.width / 2);\n circle.attr(\"cy\", actorY + 10);\n circle.attr(\"r\", 15);\n circle.attr(\"width\", actor.width);\n circle.attr(\"height\", actor.height);\n const bounds2 = actElem.node().getBBox();\n actor.height = bounds2.height;\n _drawTextCandidateFunc(conf2)(\n actor.description,\n actElem,\n rect.x,\n rect.y + 35,\n rect.width,\n rect.height,\n { class: \"actor\" },\n conf2\n );\n return actor.height;\n};\nconst drawActor = function(elem, actor, conf2, isFooter) {\n switch (actor.type) {\n case \"actor\":\n return drawActorTypeActor(elem, actor, conf2, isFooter);\n case \"participant\":\n return drawActorTypeParticipant(elem, actor, conf2, isFooter);\n }\n};\nconst drawBox = function(elem, box, conf2) {\n const boxplustextGroup = elem.append(\"g\");\n const g = boxplustextGroup;\n drawBackgroundRect(g, box);\n if (box.name) {\n _drawTextCandidateFunc(conf2)(\n box.name,\n g,\n box.x,\n box.y + (box.textMaxHeight || 0) / 2,\n box.width,\n 0,\n { class: \"text\" },\n conf2\n );\n }\n g.lower();\n};\nconst anchorElement = function(elem) {\n return elem.append(\"g\");\n};\nconst drawActivation = function(elem, bounds2, verticalPos, conf2, actorActivations2) {\n const rect = getNoteRect$1();\n const g = bounds2.anchored;\n rect.x = bounds2.startx;\n rect.y = bounds2.starty;\n rect.class = \"activation\" + actorActivations2 % 3;\n rect.width = bounds2.stopx - bounds2.startx;\n rect.height = verticalPos - bounds2.starty;\n drawRect(g, rect);\n};\nconst drawLoop = function(elem, loopModel, labelText, conf2) {\n const {\n boxMargin,\n boxTextMargin,\n labelBoxHeight,\n labelBoxWidth,\n messageFontFamily: fontFamily,\n messageFontSize: fontSize,\n messageFontWeight: fontWeight\n } = conf2;\n const g = elem.append(\"g\");\n const drawLoopLine = function(startx, starty, stopx, stopy) {\n return g.append(\"line\").attr(\"x1\", startx).attr(\"y1\", starty).attr(\"x2\", stopx).attr(\"y2\", stopy).attr(\"class\", \"loopLine\");\n };\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n if (loopModel.sections !== void 0) {\n loopModel.sections.forEach(function(item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style(\n \"stroke-dasharray\",\n \"3, 3\"\n );\n });\n }\n let txt = getTextObj$1();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = \"middle\";\n txt.valign = \"middle\";\n txt.tspan = false;\n txt.width = labelBoxWidth || 50;\n txt.height = labelBoxHeight || 20;\n txt.textMargin = boxTextMargin;\n txt.class = \"labelText\";\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = \"middle\";\n txt.valign = \"middle\";\n txt.textMargin = boxTextMargin;\n txt.class = \"loopText\";\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n let textElem = drawText(g, txt);\n if (loopModel.sectionTitles !== void 0) {\n loopModel.sectionTitles.forEach(function(item, idx) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = \"loopText\";\n txt.anchor = \"middle\";\n txt.valign = \"middle\";\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n textElem = drawText(g, txt);\n let sectionHeight = Math.round(\n textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\n );\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n });\n }\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\nconst drawBackgroundRect = function(elem, bounds2) {\n drawBackgroundRect$1(elem, bounds2);\n};\nconst insertDatabaseIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"database\").attr(\"fill-rule\", \"evenodd\").attr(\"clip-rule\", \"evenodd\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"\n );\n};\nconst insertComputerIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"computer\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"\n );\n};\nconst insertClockIcon = function(elem) {\n elem.append(\"defs\").append(\"symbol\").attr(\"id\", \"clock\").attr(\"width\", \"24\").attr(\"height\", \"24\").append(\"path\").attr(\"transform\", \"scale(.5)\").attr(\n \"d\",\n \"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"\n );\n};\nconst insertArrowHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 7.9).attr(\"refY\", 5).attr(\"markerUnits\", \"userSpaceOnUse\").attr(\"markerWidth\", 12).attr(\"markerHeight\", 12).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\");\n};\nconst insertArrowFilledHead = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"filled-head\").attr(\"refX\", 15.5).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 18,7 L9,13 L14,7 L9,1 Z\");\n};\nconst insertSequenceNumber = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"sequencenumber\").attr(\"refX\", 15).attr(\"refY\", 15).attr(\"markerWidth\", 60).attr(\"markerHeight\", 40).attr(\"orient\", \"auto\").append(\"circle\").attr(\"cx\", 15).attr(\"cy\", 15).attr(\"r\", 6);\n};\nconst insertArrowCrossHead = function(elem) {\n const defs = elem.append(\"defs\");\n const marker = defs.append(\"marker\").attr(\"id\", \"crosshead\").attr(\"markerWidth\", 15).attr(\"markerHeight\", 8).attr(\"orient\", \"auto\").attr(\"refX\", 4).attr(\"refY\", 4.5);\n marker.append(\"path\").attr(\"fill\", \"none\").attr(\"stroke\", \"#000000\").style(\"stroke-dasharray\", \"0, 0\").attr(\"stroke-width\", \"1pt\").attr(\"d\", \"M 1,2 L 6,7 M 6,2 L 1,7\");\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n anchor: void 0,\n style: \"#666\",\n width: void 0,\n height: void 0,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: void 0\n };\n};\nconst getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n fill: \"#EDF2AE\",\n stroke: \"#666\",\n width: 100,\n anchor: \"start\",\n height: 100,\n rx: 0,\n ry: 0\n };\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf2;\n const [_actorFontSize, _actorFontSizePx] = parseFontSize(actorFontSize);\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * _actorFontSize - _actorFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).style(\"text-anchor\", \"middle\").style(\"font-size\", _actorFontSizePx).style(\"font-weight\", actorFontWeight).style(\"font-family\", actorFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst _drawMenuItemTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs) {\n const text = g.append(\"text\").attr(\"x\", x).attr(\"y\", y).style(\"text-anchor\", \"start\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf2) {\n const { actorFontSize, actorFontFamily, actorFontWeight } = conf2;\n const lines = content.split(common.lineBreakRegex);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * actorFontSize - actorFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x).attr(\"y\", y).style(\"text-anchor\", \"start\").style(\"font-size\", actorFontSize).style(\"font-weight\", actorFontWeight).style(\"font-family\", actorFontFamily);\n text.append(\"tspan\").attr(\"x\", x).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf2) {\n const s = g.append(\"switch\");\n const f = s.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf2);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf2) {\n return conf2.textPlacement === \"fo\" ? byFo : conf2.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst svgDraw = {\n drawRect,\n drawText,\n drawLabel,\n drawActor,\n drawBox,\n drawPopup,\n anchorElement,\n drawActivation,\n drawLoop,\n drawBackgroundRect,\n insertArrowHead,\n insertArrowFilledHead,\n insertSequenceNumber,\n insertArrowCrossHead,\n insertDatabaseIcon,\n insertComputerIcon,\n insertClockIcon,\n getTextObj,\n getNoteRect,\n popupMenu,\n popdownMenu,\n fixLifeLineHeights,\n sanitizeUrl\n};\nlet conf = {};\nconst bounds = {\n data: {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function() {\n return Math.max.apply(\n null,\n this.actors.length === 0 ? [0] : this.actors.map((actor) => actor.height || 0)\n ) + (this.loops.length === 0 ? 0 : this.loops.map((it) => it.height || 0).reduce((acc, h) => acc + h)) + (this.messages.length === 0 ? 0 : this.messages.map((it) => it.height || 0).reduce((acc, h) => acc + h)) + (this.notes.length === 0 ? 0 : this.notes.map((it) => it.height || 0).reduce((acc, h) => acc + h));\n },\n clear: function() {\n this.actors = [];\n this.boxes = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addBox: function(boxModel) {\n this.boxes.push(boxModel);\n },\n addActor: function(actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function(loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function(msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function(noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function() {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function() {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function() {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function() {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n boxes: [],\n loops: [],\n messages: [],\n notes: []\n },\n init: function() {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: void 0,\n stopx: void 0,\n starty: void 0,\n stopy: void 0\n };\n this.verticalPos = 0;\n setConf(getConfig());\n },\n updateVal: function(obj, key, val, fun) {\n if (obj[key] === void 0) {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function(startx, starty, stopx, stopy) {\n const _self = this;\n let cnt = 0;\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++;\n const n = _self.sequenceItems.length - cnt + 1;\n _self.updateVal(item, \"starty\", starty - n * conf.boxMargin, Math.min);\n _self.updateVal(item, \"stopy\", stopy + n * conf.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"startx\", startx - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopx\", stopx + n * conf.boxMargin, Math.max);\n if (!(type === \"activation\")) {\n _self.updateVal(item, \"startx\", startx - n * conf.boxMargin, Math.min);\n _self.updateVal(item, \"stopx\", stopx + n * conf.boxMargin, Math.max);\n _self.updateVal(bounds.data, \"starty\", starty - n * conf.boxMargin, Math.min);\n _self.updateVal(bounds.data, \"stopy\", stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn(\"activation\"));\n },\n insert: function(startx, starty, stopx, stopy) {\n const _startx = common.getMin(startx, stopx);\n const _stopx = common.getMax(startx, stopx);\n const _starty = common.getMin(starty, stopy);\n const _stopy = common.getMax(starty, stopy);\n this.updateVal(bounds.data, \"startx\", _startx, Math.min);\n this.updateVal(bounds.data, \"starty\", _starty, Math.min);\n this.updateVal(bounds.data, \"stopx\", _stopx, Math.max);\n this.updateVal(bounds.data, \"stopy\", _stopy, Math.max);\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function(message, diagram2, actors2) {\n const actorRect = actors2[message.from.actor];\n const stackedSize = actorActivations(message.from.actor).length || 0;\n const x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: void 0,\n actor: message.from.actor,\n anchored: svgDraw.anchorElement(diagram2)\n });\n },\n endActivation: function(message) {\n const lastActorActivationIdx = this.activations.map(function(activation) {\n return activation.actor;\n }).lastIndexOf(message.from.actor);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function(title = { message: void 0, wrap: false, width: void 0 }, fill) {\n return {\n startx: void 0,\n starty: this.verticalPos,\n stopx: void 0,\n stopy: void 0,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill\n };\n },\n newLoop: function(title = { message: void 0, wrap: false, width: void 0 }, fill) {\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function() {\n return this.sequenceItems.pop();\n },\n isLoopOverlap: function() {\n return this.sequenceItems.length ? this.sequenceItems[this.sequenceItems.length - 1].overlap : false;\n },\n addSectionToLoop: function(message) {\n const loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({ y: bounds.getVerticalPos(), height: 0 });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n saveVerticalPos: function() {\n if (this.isLoopOverlap()) {\n this.savedVerticalPos = this.verticalPos;\n }\n },\n resetVerticalPos: function() {\n if (this.isLoopOverlap()) {\n this.verticalPos = this.savedVerticalPos;\n }\n },\n bumpVerticalPos: function(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = common.getMax(this.data.stopy, this.verticalPos);\n },\n getVerticalPos: function() {\n return this.verticalPos;\n },\n getBounds: function() {\n return { bounds: this.data, models: this.models };\n }\n};\nconst drawNote = function(elem, noteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n const rect = getNoteRect$1();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = \"note\";\n const g = elem.append(\"g\");\n const rectElem = svgDraw.drawRect(g, rect);\n const textObj = getTextObj$1();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = \"1em\";\n textObj.text = noteModel.message;\n textObj.class = \"noteText\";\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = \"center\";\n const textElem = drawText(g, textObj);\n const textHeight = Math.round(\n textElem.map((te) => (te._groups || te)[0][0].getBBox().height).reduce((acc, curr) => acc + curr)\n );\n rectElem.attr(\"height\", textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\nconst messageFont = (cnf) => {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight\n };\n};\nconst noteFont = (cnf) => {\n return {\n fontFamily: cnf.noteFontFamily,\n fontSize: cnf.noteFontSize,\n fontWeight: cnf.noteFontWeight\n };\n};\nconst actorFont = (cnf) => {\n return {\n fontFamily: cnf.actorFontFamily,\n fontSize: cnf.actorFontSize,\n fontWeight: cnf.actorFontWeight\n };\n};\nfunction boundMessage(_diagram, msgModel) {\n bounds.bumpVerticalPos(10);\n const { startx, stopx, message } = msgModel;\n const lines = common.splitBreaks(message).length;\n const textDims = utils.calculateTextDimensions(message, messageFont(conf));\n const lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n bounds.bumpVerticalPos(lineHeight);\n let lineStartY;\n let totalOffset = textDims.height - 10;\n const textWidth = textDims.width;\n if (startx === stopx) {\n lineStartY = bounds.getVerticalPos() + totalOffset;\n if (!conf.rightAngles) {\n totalOffset += conf.boxMargin;\n lineStartY = bounds.getVerticalPos() + totalOffset;\n }\n totalOffset += 30;\n const dx = common.getMax(textWidth / 2, conf.width / 2);\n bounds.insert(\n startx - dx,\n bounds.getVerticalPos() - 10 + totalOffset,\n stopx + dx,\n bounds.getVerticalPos() + 30 + totalOffset\n );\n } else {\n totalOffset += conf.boxMargin;\n lineStartY = bounds.getVerticalPos() + totalOffset;\n bounds.insert(startx, lineStartY - 10, stopx, lineStartY);\n }\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n return lineStartY;\n}\nconst drawMessage = function(diagram2, msgModel, lineStartY, diagObj) {\n const { startx, stopx, starty, message, type, sequenceIndex, sequenceVisible } = msgModel;\n const textDims = utils.calculateTextDimensions(message, messageFont(conf));\n const textObj = getTextObj$1();\n textObj.x = startx;\n textObj.y = starty + 10;\n textObj.width = stopx - startx;\n textObj.class = \"messageText\";\n textObj.dy = \"1em\";\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = \"center\";\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n drawText(diagram2, textObj);\n const textWidth = textDims.width;\n let line;\n if (startx === stopx) {\n if (conf.rightAngles) {\n line = diagram2.append(\"path\").attr(\n \"d\",\n `M ${startx},${lineStartY} H ${startx + common.getMax(conf.width / 2, textWidth / 2)} V ${lineStartY + 25} H ${startx}`\n );\n } else {\n line = diagram2.append(\"path\").attr(\n \"d\",\n \"M \" + startx + \",\" + lineStartY + \" C \" + (startx + 60) + \",\" + (lineStartY - 10) + \" \" + (startx + 60) + \",\" + (lineStartY + 30) + \" \" + startx + \",\" + (lineStartY + 20)\n );\n }\n } else {\n line = diagram2.append(\"line\");\n line.attr(\"x1\", startx);\n line.attr(\"y1\", lineStartY);\n line.attr(\"x2\", stopx);\n line.attr(\"y2\", lineStartY);\n }\n if (type === diagObj.db.LINETYPE.DOTTED || type === diagObj.db.LINETYPE.DOTTED_CROSS || type === diagObj.db.LINETYPE.DOTTED_POINT || type === diagObj.db.LINETYPE.DOTTED_OPEN) {\n line.style(\"stroke-dasharray\", \"3, 3\");\n line.attr(\"class\", \"messageLine1\");\n } else {\n line.attr(\"class\", \"messageLine0\");\n }\n let url = \"\";\n if (conf.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 line.attr(\"stroke-width\", 2);\n line.attr(\"stroke\", \"none\");\n line.style(\"fill\", \"none\");\n if (type === diagObj.db.LINETYPE.SOLID || type === diagObj.db.LINETYPE.DOTTED) {\n line.attr(\"marker-end\", \"url(\" + url + \"#arrowhead)\");\n }\n if (type === diagObj.db.LINETYPE.SOLID_POINT || type === diagObj.db.LINETYPE.DOTTED_POINT) {\n line.attr(\"marker-end\", \"url(\" + url + \"#filled-head)\");\n }\n if (type === diagObj.db.LINETYPE.SOLID_CROSS || type === diagObj.db.LINETYPE.DOTTED_CROSS) {\n line.attr(\"marker-end\", \"url(\" + url + \"#crosshead)\");\n }\n if (sequenceVisible || conf.showSequenceNumbers) {\n line.attr(\"marker-start\", \"url(\" + url + \"#sequencenumber)\");\n diagram2.append(\"text\").attr(\"x\", startx).attr(\"y\", lineStartY + 4).attr(\"font-family\", \"sans-serif\").attr(\"font-size\", \"12px\").attr(\"text-anchor\", \"middle\").attr(\"class\", \"sequenceNumber\").text(sequenceIndex);\n }\n};\nconst addActorRenderingData = function(diagram2, actors2, createdActors2, actorKeys, verticalPos, messages2, isFooter) {\n let prevWidth = 0;\n let prevMargin = 0;\n let prevBox = void 0;\n let maxHeight = 0;\n for (const actorKey of actorKeys) {\n const actor = actors2[actorKey];\n const box = actor.box;\n if (prevBox && prevBox != box) {\n if (!isFooter) {\n bounds.models.addBox(prevBox);\n }\n prevMargin += conf.boxMargin + prevBox.margin;\n }\n if (box && box != prevBox) {\n if (!isFooter) {\n box.x = prevWidth + prevMargin;\n box.y = verticalPos;\n }\n prevMargin += box.margin;\n }\n actor.width = actor.width || conf.width;\n actor.height = common.getMax(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n maxHeight = common.getMax(maxHeight, actor.height);\n if (createdActors2[actor.name]) {\n prevMargin += actor.width / 2;\n }\n actor.x = prevWidth + prevMargin;\n actor.starty = bounds.getVerticalPos();\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n prevWidth += actor.width + prevMargin;\n if (actor.box) {\n actor.box.width = prevWidth + box.margin - actor.box.x;\n }\n prevMargin = actor.margin;\n prevBox = actor.box;\n bounds.models.addActor(actor);\n }\n if (prevBox && !isFooter) {\n bounds.models.addBox(prevBox);\n }\n bounds.bumpVerticalPos(maxHeight);\n};\nconst drawActors = function(diagram2, actors2, actorKeys, isFooter) {\n if (!isFooter) {\n for (const actorKey of actorKeys) {\n const actor = actors2[actorKey];\n svgDraw.drawActor(diagram2, actor, conf, false);\n }\n } else {\n let maxHeight = 0;\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n for (const actorKey of actorKeys) {\n const actor = actors2[actorKey];\n if (!actor.stopy) {\n actor.stopy = bounds.getVerticalPos();\n }\n const height = svgDraw.drawActor(diagram2, actor, conf, true);\n maxHeight = common.getMax(maxHeight, height);\n }\n bounds.bumpVerticalPos(maxHeight + conf.boxMargin);\n }\n};\nconst drawActorsPopup = function(diagram2, actors2, actorKeys, doc) {\n let maxHeight = 0;\n let maxWidth = 0;\n for (const actorKey of actorKeys) {\n const actor = actors2[actorKey];\n const minMenuWidth = getRequiredPopupWidth(actor);\n const menuDimensions = svgDraw.drawPopup(\n diagram2,\n actor,\n minMenuWidth,\n conf,\n conf.forceMenus,\n doc\n );\n if (menuDimensions.height > maxHeight) {\n maxHeight = menuDimensions.height;\n }\n if (menuDimensions.width + actor.x > maxWidth) {\n maxWidth = menuDimensions.width + actor.x;\n }\n }\n return { maxHeight, maxWidth };\n};\nconst setConf = function(cnf) {\n assignWithDepth(conf, cnf);\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\nconst actorActivations = function(actor) {\n return bounds.activations.filter(function(activation) {\n return activation.actor === actor;\n });\n};\nconst activationBounds = function(actor, actors2) {\n const actorObj = actors2[actor];\n const activations = actorActivations(actor);\n const left = activations.reduce(function(acc, activation) {\n return common.getMin(acc, activation.startx);\n }, actorObj.x + actorObj.width / 2 - 1);\n const right = activations.reduce(function(acc, activation) {\n return common.getMax(acc, activation.stopx);\n }, actorObj.x + actorObj.width / 2 + 1);\n return [left, right];\n};\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n let heightAdjust = postMargin;\n if (msg.id && msg.message && loopWidths[msg.id]) {\n const loopWidth = loopWidths[msg.id].width;\n const textConf = messageFont(conf);\n msg.message = utils.wrapLabel(`[${msg.message}]`, loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true;\n const textDims = utils.calculateTextDimensions(msg.message, textConf);\n const totalOffset = common.getMax(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n log.debug(`${totalOffset} - ${msg.message}`);\n }\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\nfunction adjustCreatedDestroyedData(msg, msgModel, lineStartY, index, actors2, createdActors2, destroyedActors2) {\n function receiverAdjustment(actor, adjustment) {\n if (actor.x < actors2[msg.from].x) {\n bounds.insert(\n msgModel.stopx - adjustment,\n msgModel.starty,\n msgModel.startx,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.stopx = msgModel.stopx + adjustment;\n } else {\n bounds.insert(\n msgModel.startx,\n msgModel.starty,\n msgModel.stopx + adjustment,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.stopx = msgModel.stopx - adjustment;\n }\n }\n function senderAdjustment(actor, adjustment) {\n if (actor.x < actors2[msg.to].x) {\n bounds.insert(\n msgModel.startx - adjustment,\n msgModel.starty,\n msgModel.stopx,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.startx = msgModel.startx + adjustment;\n } else {\n bounds.insert(\n msgModel.stopx,\n msgModel.starty,\n msgModel.startx + adjustment,\n msgModel.stopy + actor.height / 2 + conf.noteMargin\n );\n msgModel.startx = msgModel.startx - adjustment;\n }\n }\n if (createdActors2[msg.to] == index) {\n const actor = actors2[msg.to];\n const adjustment = actor.type == \"actor\" ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3;\n receiverAdjustment(actor, adjustment);\n actor.starty = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n } else if (destroyedActors2[msg.from] == index) {\n const actor = actors2[msg.from];\n if (conf.mirrorActors) {\n const adjustment = actor.type == \"actor\" ? ACTOR_TYPE_WIDTH / 2 : actor.width / 2;\n senderAdjustment(actor, adjustment);\n }\n actor.stopy = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n } else if (destroyedActors2[msg.to] == index) {\n const actor = actors2[msg.to];\n if (conf.mirrorActors) {\n const adjustment = actor.type == \"actor\" ? ACTOR_TYPE_WIDTH / 2 + 3 : actor.width / 2 + 3;\n receiverAdjustment(actor, adjustment);\n }\n actor.stopy = lineStartY - actor.height / 2;\n bounds.bumpVerticalPos(actor.height / 2);\n }\n}\nconst draw = function(_text, id, _version, diagObj) {\n const { securityLevel, sequence } = getConfig();\n conf = sequence;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n bounds.init();\n log.debug(diagObj.db);\n const diagram2 = securityLevel === \"sandbox\" ? root.select(`[id=\"${id}\"]`) : select(`[id=\"${id}\"]`);\n const actors2 = diagObj.db.getActors();\n const createdActors2 = diagObj.db.getCreatedActors();\n const destroyedActors2 = diagObj.db.getDestroyedActors();\n const boxes2 = diagObj.db.getBoxes();\n let actorKeys = diagObj.db.getActorKeys();\n const messages2 = diagObj.db.getMessages();\n const title = diagObj.db.getDiagramTitle();\n const hasBoxes = diagObj.db.hasAtLeastOneBox();\n const hasBoxTitles = diagObj.db.hasAtLeastOneBoxWithTitle();\n const maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors2, messages2, diagObj);\n conf.height = calculateActorMargins(actors2, maxMessageWidthPerActor, boxes2);\n svgDraw.insertComputerIcon(diagram2);\n svgDraw.insertDatabaseIcon(diagram2);\n svgDraw.insertClockIcon(diagram2);\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n if (hasBoxTitles) {\n bounds.bumpVerticalPos(boxes2[0].textMaxHeight);\n }\n }\n if (conf.hideUnusedParticipants === true) {\n const newActors = /* @__PURE__ */ new Set();\n messages2.forEach((message) => {\n newActors.add(message.from);\n newActors.add(message.to);\n });\n actorKeys = actorKeys.filter((actorKey) => newActors.has(actorKey));\n }\n addActorRenderingData(diagram2, actors2, createdActors2, actorKeys, 0, messages2, false);\n const loopWidths = calculateLoopBounds(messages2, actors2, maxMessageWidthPerActor, diagObj);\n svgDraw.insertArrowHead(diagram2);\n svgDraw.insertArrowCrossHead(diagram2);\n svgDraw.insertArrowFilledHead(diagram2);\n svgDraw.insertSequenceNumber(diagram2);\n function activeEnd(msg, verticalPos) {\n const activationData = bounds.endActivation(msg);\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n svgDraw.drawActivation(\n diagram2,\n activationData,\n verticalPos,\n conf,\n actorActivations(msg.from.actor).length\n );\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n }\n let sequenceIndex = 1;\n let sequenceIndexStep = 1;\n const messagesToDraw = [];\n const backgrounds = [];\n messages2.forEach(function(msg, index) {\n let loopModel, noteModel, msgModel;\n switch (msg.type) {\n case diagObj.db.LINETYPE.NOTE:\n bounds.resetVerticalPos();\n noteModel = msg.noteModel;\n drawNote(diagram2, noteModel);\n break;\n case diagObj.db.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram2, actors2);\n break;\n case diagObj.db.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n case diagObj.db.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"loop\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin,\n (message) => bounds.newLoop(void 0, message.message)\n );\n break;\n case diagObj.db.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n backgrounds.push(loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n case diagObj.db.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"opt\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"alt\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n bounds.saveVerticalPos();\n break;\n case diagObj.db.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"par\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.AUTONUMBER:\n sequenceIndex = msg.message.start || sequenceIndex;\n sequenceIndexStep = msg.message.step || sequenceIndexStep;\n if (msg.message.visible) {\n diagObj.db.enableSequenceNumbers();\n } else {\n diagObj.db.disableSequenceNumbers();\n }\n break;\n case diagObj.db.LINETYPE.CRITICAL_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.CRITICAL_OPTION:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin + conf.boxTextMargin,\n conf.boxMargin,\n (message) => bounds.addSectionToLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.CRITICAL_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"critical\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n case diagObj.db.LINETYPE.BREAK_START:\n adjustLoopHeightForWrap(\n loopWidths,\n msg,\n conf.boxMargin,\n conf.boxMargin + conf.boxTextMargin,\n (message) => bounds.newLoop(message)\n );\n break;\n case diagObj.db.LINETYPE.BREAK_END:\n loopModel = bounds.endLoop();\n svgDraw.drawLoop(diagram2, loopModel, \"break\", conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n default:\n try {\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n msgModel.sequenceVisible = diagObj.db.showSequenceNumbers();\n const lineStartY = boundMessage(diagram2, msgModel);\n adjustCreatedDestroyedData(\n msg,\n msgModel,\n lineStartY,\n index,\n actors2,\n createdActors2,\n destroyedActors2\n );\n messagesToDraw.push({ messageModel: msgModel, lineStartY });\n bounds.models.addMessage(msgModel);\n } catch (e) {\n log.error(\"error while drawing message\", e);\n }\n }\n if ([\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT\n ].includes(msg.type)) {\n sequenceIndex = sequenceIndex + sequenceIndexStep;\n }\n });\n log.debug(\"createdActors\", createdActors2);\n log.debug(\"destroyedActors\", destroyedActors2);\n drawActors(diagram2, actors2, actorKeys, false);\n messagesToDraw.forEach((e) => drawMessage(diagram2, e.messageModel, e.lineStartY, diagObj));\n if (conf.mirrorActors) {\n drawActors(diagram2, actors2, actorKeys, true);\n }\n backgrounds.forEach((e) => svgDraw.drawBackgroundRect(diagram2, e));\n fixLifeLineHeights(diagram2, actors2, actorKeys, conf);\n bounds.models.boxes.forEach(function(box2) {\n box2.height = bounds.getVerticalPos() - box2.y;\n bounds.insert(box2.x, box2.y, box2.x + box2.width, box2.height);\n box2.startx = box2.x;\n box2.starty = box2.y;\n box2.stopx = box2.startx + box2.width;\n box2.stopy = box2.starty + box2.height;\n box2.stroke = \"rgb(0,0,0, 0.5)\";\n svgDraw.drawBox(diagram2, box2, conf);\n });\n if (hasBoxes) {\n bounds.bumpVerticalPos(conf.boxMargin);\n }\n const requiredBoxSize = drawActorsPopup(diagram2, actors2, actorKeys, doc);\n const { bounds: box } = bounds.getBounds();\n let boxHeight = box.stopy - box.starty;\n if (boxHeight < requiredBoxSize.maxHeight) {\n boxHeight = requiredBoxSize.maxHeight;\n }\n let height = boxHeight + 2 * conf.diagramMarginY;\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n let boxWidth = box.stopx - box.startx;\n if (boxWidth < requiredBoxSize.maxWidth) {\n boxWidth = requiredBoxSize.maxWidth;\n }\n const width = boxWidth + 2 * conf.diagramMarginX;\n if (title) {\n diagram2.append(\"text\").text(title).attr(\"x\", (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX).attr(\"y\", -25);\n }\n configureSvgSize(diagram2, height, width, conf.useMaxWidth);\n const extraVertForTitle = title ? 40 : 0;\n diagram2.attr(\n \"viewBox\",\n box.startx - conf.diagramMarginX + \" -\" + (conf.diagramMarginY + extraVertForTitle) + \" \" + width + \" \" + (height + extraVertForTitle)\n );\n log.debug(`models:`, bounds.models);\n};\nfunction getMaxMessageWidthPerActor(actors2, messages2, diagObj) {\n const maxMessageWidthPerActor = {};\n messages2.forEach(function(msg) {\n if (actors2[msg.to] && actors2[msg.from]) {\n const actor = actors2[msg.to];\n if (msg.placement === diagObj.db.PLACEMENT.LEFTOF && !actor.prevActor) {\n return;\n }\n if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF && !actor.nextActor) {\n return;\n }\n const isNote = msg.placement !== void 0;\n const isMessage = !isNote;\n const textFont = isNote ? noteFont(conf) : messageFont(conf);\n const wrappedMessage = msg.wrap ? utils.wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont) : msg.message;\n const messageDimensions = utils.calculateTextDimensions(wrappedMessage, textFont);\n const messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = common.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n maxMessageWidthPerActor[msg.to] = common.getMax(\n maxMessageWidthPerActor[msg.to] || 0,\n messageWidth / 2\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = common.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth\n );\n } else if (msg.placement === diagObj.db.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = common.getMax(\n maxMessageWidthPerActor[actor.prevActor] || 0,\n messageWidth / 2\n );\n }\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = common.getMax(\n maxMessageWidthPerActor[msg.from] || 0,\n messageWidth / 2\n );\n }\n }\n }\n });\n log.debug(\"maxMessageWidthPerActor:\", maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n}\nconst getRequiredPopupWidth = function(actor) {\n let requiredPopupWidth = 0;\n const textFont = actorFont(conf);\n for (const key in actor.links) {\n const labelDimensions = utils.calculateTextDimensions(key, textFont);\n const labelWidth = labelDimensions.width + 2 * conf.wrapPadding + 2 * conf.boxMargin;\n if (requiredPopupWidth < labelWidth) {\n requiredPopupWidth = labelWidth;\n }\n }\n return requiredPopupWidth;\n};\nfunction calculateActorMargins(actors2, actorToMessageWidth, boxes2) {\n let maxHeight = 0;\n Object.keys(actors2).forEach((prop) => {\n const actor = actors2[prop];\n if (actor.wrap) {\n actor.description = utils.wrapLabel(\n actor.description,\n conf.width - 2 * conf.wrapPadding,\n actorFont(conf)\n );\n }\n const actDims = utils.calculateTextDimensions(actor.description, actorFont(conf));\n actor.width = actor.wrap ? conf.width : common.getMax(conf.width, actDims.width + 2 * conf.wrapPadding);\n actor.height = actor.wrap ? common.getMax(actDims.height, conf.height) : conf.height;\n maxHeight = common.getMax(maxHeight, actor.height);\n });\n for (const actorKey in actorToMessageWidth) {\n const actor = actors2[actorKey];\n if (!actor) {\n continue;\n }\n const nextActor = actors2[actor.nextActor];\n if (!nextActor) {\n const messageWidth2 = actorToMessageWidth[actorKey];\n const actorWidth2 = messageWidth2 + conf.actorMargin - actor.width / 2;\n actor.margin = common.getMax(actorWidth2, conf.actorMargin);\n continue;\n }\n const messageWidth = actorToMessageWidth[actorKey];\n const actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n actor.margin = common.getMax(actorWidth, conf.actorMargin);\n }\n let maxBoxHeight = 0;\n boxes2.forEach((box) => {\n const textFont = messageFont(conf);\n let totalWidth = box.actorKeys.reduce((total, aKey) => {\n return total += actors2[aKey].width + (actors2[aKey].margin || 0);\n }, 0);\n totalWidth -= 2 * conf.boxTextMargin;\n if (box.wrap) {\n box.name = utils.wrapLabel(box.name, totalWidth - 2 * conf.wrapPadding, textFont);\n }\n const boxMsgDimensions = utils.calculateTextDimensions(box.name, textFont);\n maxBoxHeight = common.getMax(boxMsgDimensions.height, maxBoxHeight);\n const minWidth = common.getMax(totalWidth, boxMsgDimensions.width + 2 * conf.wrapPadding);\n box.margin = conf.boxTextMargin;\n if (totalWidth < minWidth) {\n const missing = (minWidth - totalWidth) / 2;\n box.margin += missing;\n }\n });\n boxes2.forEach((box) => box.textMaxHeight = maxBoxHeight);\n return common.getMax(maxHeight, conf.height);\n}\nconst buildNoteModel = function(msg, actors2, diagObj) {\n const startx = actors2[msg.from].x;\n const stopx = actors2[msg.to].x;\n const shouldWrap = msg.wrap && msg.message;\n let textDimensions = utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(msg.message, conf.width, noteFont(conf)) : msg.message,\n noteFont(conf)\n );\n const noteModel = {\n width: shouldWrap ? conf.width : common.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: actors2[msg.from].x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message\n };\n if (msg.placement === diagObj.db.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap ? common.getMax(conf.width, textDimensions.width) : common.getMax(\n actors2[msg.from].width / 2 + actors2[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors2[msg.from].width + conf.actorMargin) / 2;\n } else if (msg.placement === diagObj.db.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap ? common.getMax(conf.width, textDimensions.width + 2 * conf.noteMargin) : common.getMax(\n actors2[msg.from].width / 2 + actors2[msg.to].width / 2,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx - noteModel.width + (actors2[msg.from].width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = utils.calculateTextDimensions(\n shouldWrap ? utils.wrapLabel(\n msg.message,\n common.getMax(conf.width, actors2[msg.from].width),\n noteFont(conf)\n ) : msg.message,\n noteFont(conf)\n );\n noteModel.width = shouldWrap ? common.getMax(conf.width, actors2[msg.from].width) : common.getMax(\n actors2[msg.from].width,\n conf.width,\n textDimensions.width + 2 * conf.noteMargin\n );\n noteModel.startx = startx + (actors2[msg.from].width - noteModel.width) / 2;\n } else {\n noteModel.width = Math.abs(startx + actors2[msg.from].width / 2 - (stopx + actors2[msg.to].width / 2)) + conf.actorMargin;\n noteModel.startx = startx < stopx ? startx + actors2[msg.from].width / 2 - conf.actorMargin / 2 : stopx + actors2[msg.to].width / 2 - conf.actorMargin / 2;\n }\n if (shouldWrap) {\n noteModel.message = utils.wrapLabel(\n msg.message,\n noteModel.width - 2 * conf.wrapPadding,\n noteFont(conf)\n );\n }\n log.debug(\n `NM:[${noteModel.startx},${noteModel.stopx},${noteModel.starty},${noteModel.stopy}:${noteModel.width},${noteModel.height}=${msg.message}]`\n );\n return noteModel;\n};\nconst buildMessageModel = function(msg, actors2, diagObj) {\n if (![\n diagObj.db.LINETYPE.SOLID_OPEN,\n diagObj.db.LINETYPE.DOTTED_OPEN,\n diagObj.db.LINETYPE.SOLID,\n diagObj.db.LINETYPE.DOTTED,\n diagObj.db.LINETYPE.SOLID_CROSS,\n diagObj.db.LINETYPE.DOTTED_CROSS,\n diagObj.db.LINETYPE.SOLID_POINT,\n diagObj.db.LINETYPE.DOTTED_POINT\n ].includes(msg.type)) {\n return {};\n }\n const [fromLeft, fromRight] = activationBounds(msg.from, actors2);\n const [toLeft, toRight] = activationBounds(msg.to, actors2);\n const isArrowToRight = fromLeft <= toLeft;\n const startx = isArrowToRight ? fromRight : fromLeft;\n let stopx = isArrowToRight ? toLeft : toRight;\n const isArrowToActivation = Math.abs(toLeft - toRight) > 2;\n const adjustValue = (value) => {\n return isArrowToRight ? -value : value;\n };\n if (msg.from === msg.to) {\n stopx = startx;\n } else {\n if (msg.activate && !isArrowToActivation) {\n stopx += adjustValue(conf.activationWidth / 2 - 1);\n }\n if (![diagObj.db.LINETYPE.SOLID_OPEN, diagObj.db.LINETYPE.DOTTED_OPEN].includes(msg.type)) {\n stopx += adjustValue(3);\n }\n }\n const allBounds = [fromLeft, fromRight, toLeft, toRight];\n const boundedWidth = Math.abs(startx - stopx);\n if (msg.wrap && msg.message) {\n msg.message = utils.wrapLabel(\n msg.message,\n common.getMax(boundedWidth + 2 * conf.wrapPadding, conf.width),\n messageFont(conf)\n );\n }\n const msgDims = utils.calculateTextDimensions(msg.message, messageFont(conf));\n return {\n width: common.getMax(\n msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding,\n boundedWidth + 2 * conf.wrapPadding,\n conf.width\n ),\n height: 0,\n startx,\n stopx,\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds)\n };\n};\nconst calculateLoopBounds = function(messages2, actors2, _maxWidthPerActor, diagObj) {\n const loops = {};\n const stack = [];\n let current, noteModel, msgModel;\n messages2.forEach(function(msg) {\n msg.id = utils.random({ length: 10 });\n switch (msg.type) {\n case diagObj.db.LINETYPE.LOOP_START:\n case diagObj.db.LINETYPE.ALT_START:\n case diagObj.db.LINETYPE.OPT_START:\n case diagObj.db.LINETYPE.PAR_START:\n case diagObj.db.LINETYPE.PAR_OVER_START:\n case diagObj.db.LINETYPE.CRITICAL_START:\n case diagObj.db.LINETYPE.BREAK_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0\n });\n break;\n case diagObj.db.LINETYPE.ALT_ELSE:\n case diagObj.db.LINETYPE.PAR_AND:\n case diagObj.db.LINETYPE.CRITICAL_OPTION:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n break;\n case diagObj.db.LINETYPE.LOOP_END:\n case diagObj.db.LINETYPE.ALT_END:\n case diagObj.db.LINETYPE.OPT_END:\n case diagObj.db.LINETYPE.PAR_END:\n case diagObj.db.LINETYPE.CRITICAL_END:\n case diagObj.db.LINETYPE.BREAK_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n case diagObj.db.LINETYPE.ACTIVE_START:\n {\n const actorRect = actors2[msg.from ? msg.from.actor : msg.to.actor];\n const stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;\n const x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;\n const toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from.actor,\n enabled: true\n };\n bounds.activations.push(toAdd);\n }\n break;\n case diagObj.db.LINETYPE.ACTIVE_END:\n {\n const lastActorActivationIdx = bounds.activations.map((a) => a.actor).lastIndexOf(msg.from.actor);\n delete bounds.activations.splice(lastActorActivationIdx, 1)[0];\n }\n break;\n }\n const isNote = msg.placement !== void 0;\n if (isNote) {\n noteModel = buildNoteModel(msg, actors2, diagObj);\n msg.noteModel = noteModel;\n stack.forEach((stk) => {\n current = stk;\n current.from = common.getMin(current.from, noteModel.startx);\n current.to = common.getMax(current.to, noteModel.startx + noteModel.width);\n current.width = common.getMax(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors2, diagObj);\n msg.msgModel = msgModel;\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach((stk) => {\n current = stk;\n if (msgModel.startx === msgModel.stopx) {\n const from = actors2[msg.from];\n const to = actors2[msg.to];\n current.from = common.getMin(\n from.x - msgModel.width / 2,\n from.x - from.width / 2,\n current.from\n );\n current.to = common.getMax(\n to.x + msgModel.width / 2,\n to.x + from.width / 2,\n current.to\n );\n current.width = common.getMax(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;\n } else {\n current.from = common.getMin(msgModel.startx, current.from);\n current.to = common.getMax(msgModel.stopx, current.to);\n current.width = common.getMax(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n });\n bounds.activations = [];\n log.debug(\"Loop type widths:\", loops);\n return loops;\n};\nconst renderer = {\n bounds,\n drawActors,\n drawActorsPopup,\n setConf,\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer,\n styles,\n init: ({ wrap }) => {\n db.setWrap(wrap);\n }\n};\nexport {\n diagram\n};\n","import { d as db, p as parser, s as styles } from \"./styles-bbc3fe3b.js\";\nimport { line, curveBasis, select } from \"d3\";\nimport { layout } from \"dagre-d3-es/src/dagre/index.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { c as getConfig, u as utils, e as common, l as log, i as configureSvgSize } from \"./mermaid-934d9bea.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nconst idCache = {};\nconst set = (key, val) => {\n idCache[key] = val;\n};\nconst get = (k) => idCache[k];\nconst keys = () => Object.keys(idCache);\nconst size = () => keys().length;\nconst idCache$1 = {\n get,\n set,\n keys,\n size\n};\nconst drawStartState = (g) => g.append(\"circle\").attr(\"class\", \"start-state\").attr(\"r\", getConfig().state.sizeUnit).attr(\"cx\", getConfig().state.padding + getConfig().state.sizeUnit).attr(\"cy\", getConfig().state.padding + getConfig().state.sizeUnit);\nconst drawDivider = (g) => g.append(\"line\").style(\"stroke\", \"grey\").style(\"stroke-dasharray\", \"3\").attr(\"x1\", getConfig().state.textHeight).attr(\"class\", \"divider\").attr(\"x2\", getConfig().state.textHeight * 2).attr(\"y1\", 0).attr(\"y2\", 0);\nconst drawSimpleState = (g, stateDef) => {\n const state = g.append(\"text\").attr(\"x\", 2 * getConfig().state.padding).attr(\"y\", getConfig().state.textHeight + 2 * getConfig().state.padding).attr(\"font-size\", getConfig().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const classBox = state.node().getBBox();\n g.insert(\"rect\", \":first-child\").attr(\"x\", getConfig().state.padding).attr(\"y\", getConfig().state.padding).attr(\"width\", classBox.width + 2 * getConfig().state.padding).attr(\"height\", classBox.height + 2 * getConfig().state.padding).attr(\"rx\", getConfig().state.radius);\n return state;\n};\nconst drawDescrState = (g, stateDef) => {\n const addTspan = function(textEl, txt, isFirst2) {\n const tSpan = textEl.append(\"tspan\").attr(\"x\", 2 * getConfig().state.padding).text(txt);\n if (!isFirst2) {\n tSpan.attr(\"dy\", getConfig().state.textHeight);\n }\n };\n const title = g.append(\"text\").attr(\"x\", 2 * getConfig().state.padding).attr(\"y\", getConfig().state.textHeight + 1.3 * getConfig().state.padding).attr(\"font-size\", getConfig().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.descriptions[0]);\n const titleBox = title.node().getBBox();\n const titleHeight = titleBox.height;\n const description = g.append(\"text\").attr(\"x\", getConfig().state.padding).attr(\n \"y\",\n titleHeight + getConfig().state.padding * 0.4 + getConfig().state.dividerMargin + getConfig().state.textHeight\n ).attr(\"class\", \"state-description\");\n let isFirst = true;\n let isSecond = true;\n stateDef.descriptions.forEach(function(descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n isFirst = false;\n });\n const descrLine = g.append(\"line\").attr(\"x1\", getConfig().state.padding).attr(\"y1\", getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2).attr(\"y2\", getConfig().state.padding + titleHeight + getConfig().state.dividerMargin / 2).attr(\"class\", \"descr-divider\");\n const descrBox = description.node().getBBox();\n const width = Math.max(descrBox.width, titleBox.width);\n descrLine.attr(\"x2\", width + 3 * getConfig().state.padding);\n g.insert(\"rect\", \":first-child\").attr(\"x\", getConfig().state.padding).attr(\"y\", getConfig().state.padding).attr(\"width\", width + 2 * getConfig().state.padding).attr(\"height\", descrBox.height + titleHeight + 2 * getConfig().state.padding).attr(\"rx\", getConfig().state.radius);\n return g;\n};\nconst addTitleAndBox = (g, stateDef, altBkg) => {\n const pad = getConfig().state.padding;\n const dblPad = 2 * getConfig().state.padding;\n const orgBox = g.node().getBBox();\n const orgWidth = orgBox.width;\n const orgX = orgBox.x;\n const title = g.append(\"text\").attr(\"x\", 0).attr(\"y\", getConfig().state.titleShift).attr(\"font-size\", getConfig().state.fontSize).attr(\"class\", \"state-title\").text(stateDef.id);\n const titleBox = title.node().getBBox();\n const titleWidth = titleBox.width + dblPad;\n let width = Math.max(titleWidth, orgWidth);\n if (width === orgWidth) {\n width = width + dblPad;\n }\n let startX;\n const graphBox = g.node().getBBox();\n if (stateDef.doc)\n ;\n startX = orgX - pad;\n if (titleWidth > orgWidth) {\n startX = (orgWidth - width) / 2 + pad;\n }\n if (Math.abs(orgX - graphBox.x) < pad && titleWidth > orgWidth) {\n startX = orgX - (titleWidth - orgWidth) / 2;\n }\n const lineY = 1 - getConfig().state.textHeight;\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\"y\", lineY).attr(\"class\", altBkg ? \"alt-composit\" : \"composit\").attr(\"width\", width).attr(\n \"height\",\n graphBox.height + getConfig().state.textHeight + getConfig().state.titleShift + 1\n ).attr(\"rx\", \"0\");\n title.attr(\"x\", startX + pad);\n if (titleWidth <= orgWidth) {\n title.attr(\"x\", orgX + (width - dblPad) / 2 - titleWidth / 2 + pad);\n }\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\n \"y\",\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n ).attr(\"width\", width).attr(\"height\", getConfig().state.textHeight * 3).attr(\"rx\", getConfig().state.radius);\n g.insert(\"rect\", \":first-child\").attr(\"x\", startX).attr(\n \"y\",\n getConfig().state.titleShift - getConfig().state.textHeight - getConfig().state.padding\n ).attr(\"width\", width).attr(\"height\", graphBox.height + 3 + 2 * getConfig().state.textHeight).attr(\"rx\", getConfig().state.radius);\n return g;\n};\nconst drawEndState = (g) => {\n g.append(\"circle\").attr(\"class\", \"end-state-outer\").attr(\"r\", getConfig().state.sizeUnit + getConfig().state.miniPadding).attr(\n \"cx\",\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n ).attr(\n \"cy\",\n getConfig().state.padding + getConfig().state.sizeUnit + getConfig().state.miniPadding\n );\n return g.append(\"circle\").attr(\"class\", \"end-state-inner\").attr(\"r\", getConfig().state.sizeUnit).attr(\"cx\", getConfig().state.padding + getConfig().state.sizeUnit + 2).attr(\"cy\", getConfig().state.padding + getConfig().state.sizeUnit + 2);\n};\nconst drawForkJoinState = (g, stateDef) => {\n let width = getConfig().state.forkWidth;\n let height = getConfig().state.forkHeight;\n if (stateDef.parentId) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n return g.append(\"rect\").style(\"stroke\", \"black\").style(\"fill\", \"black\").attr(\"width\", width).attr(\"height\", height).attr(\"x\", getConfig().state.padding).attr(\"y\", getConfig().state.padding);\n};\nconst _drawLongText = (_text, x, y, g) => {\n let textHeight = 0;\n const textElem = g.append(\"text\");\n textElem.style(\"text-anchor\", \"start\");\n textElem.attr(\"class\", \"noteText\");\n let text = _text.replace(/\\r\\n/g, \"
\");\n text = text.replace(/\\n/g, \"
\");\n const lines = text.split(common.lineBreakRegex);\n let tHeight = 1.25 * getConfig().state.noteMargin;\n for (const line2 of lines) {\n const txt = line2.trim();\n if (txt.length > 0) {\n const span = textElem.append(\"tspan\");\n span.text(txt);\n if (tHeight === 0) {\n const textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n textHeight += tHeight;\n span.attr(\"x\", x + getConfig().state.noteMargin);\n span.attr(\"y\", y + textHeight + 1.25 * getConfig().state.noteMargin);\n }\n }\n return { textWidth: textElem.node().getBBox().width, textHeight };\n};\nconst drawNote = (text, g) => {\n g.attr(\"class\", \"state-note\");\n const note = g.append(\"rect\").attr(\"x\", 0).attr(\"y\", getConfig().state.padding);\n const rectElem = g.append(\"g\");\n const { textWidth, textHeight } = _drawLongText(text, 0, 0, rectElem);\n note.attr(\"height\", textHeight + 2 * getConfig().state.noteMargin);\n note.attr(\"width\", textWidth + getConfig().state.noteMargin * 2);\n return note;\n};\nconst drawState = function(elem, stateDef) {\n const id = stateDef.id;\n const stateInfo = {\n id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n const g = elem.append(\"g\").attr(\"id\", id).attr(\"class\", \"stateGroup\");\n if (stateDef.type === \"start\") {\n drawStartState(g);\n }\n if (stateDef.type === \"end\") {\n drawEndState(g);\n }\n if (stateDef.type === \"fork\" || stateDef.type === \"join\") {\n drawForkJoinState(g, stateDef);\n }\n if (stateDef.type === \"note\") {\n drawNote(stateDef.note.text, g);\n }\n if (stateDef.type === \"divider\") {\n drawDivider(g);\n }\n if (stateDef.type === \"default\" && stateDef.descriptions.length === 0) {\n drawSimpleState(g, stateDef);\n }\n if (stateDef.type === \"default\" && stateDef.descriptions.length > 0) {\n drawDescrState(g, stateDef);\n }\n const stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * getConfig().state.padding;\n stateInfo.height = stateBox.height + 2 * getConfig().state.padding;\n idCache$1.set(id, stateInfo);\n return stateInfo;\n};\nlet edgeCount = 0;\nconst drawEdge = function(elem, path, relation) {\n const getRelationType = function(type) {\n switch (type) {\n case db.relationType.AGGREGATION:\n return \"aggregation\";\n case db.relationType.EXTENSION:\n return \"extension\";\n case db.relationType.COMPOSITION:\n return \"composition\";\n case db.relationType.DEPENDENCY:\n return \"dependency\";\n }\n };\n path.points = path.points.filter((p) => !Number.isNaN(p.y));\n const lineData = path.points;\n const lineFunction = line().x(function(d) {\n return d.x;\n }).y(function(d) {\n return d.y;\n }).curve(curveBasis);\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", \"edge\" + edgeCount).attr(\"class\", \"transition\");\n let url = \"\";\n if (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 svgPath.attr(\n \"marker-end\",\n \"url(\" + url + \"#\" + getRelationType(db.relationType.DEPENDENCY) + \"End)\"\n );\n if (relation.title !== void 0) {\n const label = elem.append(\"g\").attr(\"class\", \"stateLabel\");\n const { x, y } = utils.calcLabelPosition(path.points);\n const rows = common.getRows(relation.title);\n let titleHeight = 0;\n const titleRows = [];\n let maxWidth = 0;\n let minX = 0;\n for (let i = 0; i <= rows.length; i++) {\n const title = label.append(\"text\").attr(\"text-anchor\", \"middle\").text(rows[i]).attr(\"x\", x).attr(\"y\", y + titleHeight);\n const boundstmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundstmp.width);\n minX = Math.min(minX, boundstmp.x);\n log.info(boundstmp.x, x, y + titleHeight);\n if (titleHeight === 0) {\n const titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n log.info(\"Title height\", titleHeight, y);\n }\n titleRows.push(title);\n }\n let boxHeight = titleHeight * rows.length;\n if (rows.length > 1) {\n const heightAdj = (rows.length - 1) * titleHeight * 0.5;\n titleRows.forEach((title, i) => title.attr(\"y\", y + i * titleHeight - heightAdj));\n boxHeight = titleHeight * rows.length;\n }\n const bounds = label.node().getBBox();\n label.insert(\"rect\", \":first-child\").attr(\"class\", \"box\").attr(\"x\", x - maxWidth / 2 - getConfig().state.padding / 2).attr(\"y\", y - boxHeight / 2 - getConfig().state.padding / 2 - 3.5).attr(\"width\", maxWidth + getConfig().state.padding).attr(\"height\", boxHeight + getConfig().state.padding);\n log.info(bounds);\n }\n edgeCount++;\n};\nlet conf;\nconst transformationLog = {};\nconst setConf = function() {\n};\nconst insertMarkers = function(elem) {\n elem.append(\"defs\").append(\"marker\").attr(\"id\", \"dependencyEnd\").attr(\"refX\", 19).attr(\"refY\", 7).attr(\"markerWidth\", 20).attr(\"markerHeight\", 28).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 19,7 L9,13 L14,7 L9,1 Z\");\n};\nconst draw = function(text, id, _version, diagObj) {\n conf = getConfig().state;\n const securityLevel = getConfig().securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n log.debug(\"Rendering diagram \" + text);\n const diagram2 = root.select(`[id='${id}']`);\n insertMarkers(diagram2);\n const rootDoc = diagObj.db.getRootDoc();\n renderDoc(rootDoc, diagram2, void 0, false, root, doc, diagObj);\n const padding = conf.padding;\n const bounds = diagram2.node().getBBox();\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n const svgWidth = width * 1.75;\n configureSvgSize(diagram2, height, svgWidth, conf.useMaxWidth);\n diagram2.attr(\n \"viewBox\",\n `${bounds.x - conf.padding} ${bounds.y - conf.padding} ` + width + \" \" + height\n );\n};\nconst getLabelWidth = (text) => {\n return text ? text.length * conf.fontSizeFactor : 1;\n};\nconst renderDoc = (doc, diagram2, parentId, altBkg, root, domDocument, diagObj) => {\n const graph = new graphlib.Graph({\n compound: true,\n multigraph: true\n });\n let i;\n let edgeFreeDoc = true;\n for (i = 0; i < doc.length; i++) {\n if (doc[i].stmt === \"relation\") {\n edgeFreeDoc = false;\n break;\n }\n }\n if (parentId) {\n graph.setGraph({\n rankdir: \"LR\",\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: \"tight-tree\",\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true\n // ranksep: 5,\n // nodesep: 1\n });\n } else {\n graph.setGraph({\n rankdir: \"TB\",\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: \"tight-tree\",\n // ranker: 'network-simplex'\n isMultiGraph: true\n });\n }\n graph.setDefaultEdgeLabel(function() {\n return {};\n });\n diagObj.db.extract(doc);\n const states = diagObj.db.getStates();\n const relations = diagObj.db.getRelations();\n const keys2 = Object.keys(states);\n for (const key of keys2) {\n const stateDef = states[key];\n if (parentId) {\n stateDef.parentId = parentId;\n }\n let node;\n if (stateDef.doc) {\n let sub = diagram2.append(\"g\").attr(\"id\", stateDef.id).attr(\"class\", \"stateGroup\");\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg, root, domDocument, diagObj);\n {\n sub = addTitleAndBox(sub, stateDef, altBkg);\n let boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + conf.padding / 2;\n transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n }\n } else {\n node = drawState(diagram2, stateDef);\n }\n if (stateDef.note) {\n const noteDef = {\n descriptions: [],\n id: stateDef.id + \"-note\",\n note: stateDef.note,\n type: \"note\"\n };\n const note = drawState(diagram2, noteDef);\n if (stateDef.note.position === \"left of\") {\n graph.setNode(node.id + \"-note\", note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + \"-note\", note);\n }\n graph.setParent(node.id, node.id + \"-group\");\n graph.setParent(node.id + \"-note\", node.id + \"-group\");\n } else {\n graph.setNode(node.id, node);\n }\n }\n log.debug(\"Count=\", graph.nodeCount(), graph);\n let cnt = 0;\n relations.forEach(function(relation) {\n cnt++;\n log.debug(\"Setting edge\", relation);\n graph.setEdge(\n relation.id1,\n relation.id2,\n {\n relation,\n width: getLabelWidth(relation.title),\n height: conf.labelHeight * common.getRows(relation.title).length,\n labelpos: \"c\"\n },\n \"id\" + cnt\n );\n });\n layout(graph);\n log.debug(\"Graph after layout\", graph.nodes());\n const svgElem = diagram2.node();\n graph.nodes().forEach(function(v) {\n if (v !== void 0 && graph.node(v) !== void 0) {\n log.warn(\"Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\n \"transform\",\n \"translate(\" + (graph.node(v).x - graph.node(v).width / 2) + \",\" + (graph.node(v).y + (transformationLog[v] ? transformationLog[v].y : 0) - graph.node(v).height / 2) + \" )\"\n );\n root.select(\"#\" + svgElem.id + \" #\" + v).attr(\"data-x-shift\", graph.node(v).x - graph.node(v).width / 2);\n const dividers = domDocument.querySelectorAll(\"#\" + svgElem.id + \" #\" + v + \" .divider\");\n dividers.forEach((divider) => {\n const parent = divider.parentElement;\n let pWidth = 0;\n let pShift = 0;\n if (parent) {\n if (parent.parentElement) {\n pWidth = parent.parentElement.getBBox().width;\n }\n pShift = parseInt(parent.getAttribute(\"data-x-shift\"), 10);\n if (Number.isNaN(pShift)) {\n pShift = 0;\n }\n }\n divider.setAttribute(\"x1\", 0 - pShift + 8);\n divider.setAttribute(\"x2\", pWidth - pShift - 8);\n });\n } else {\n log.debug(\"No Node \" + v + \": \" + JSON.stringify(graph.node(v)));\n }\n });\n let stateBox = svgElem.getBBox();\n graph.edges().forEach(function(e) {\n if (e !== void 0 && graph.edge(e) !== void 0) {\n log.debug(\"Edge \" + e.v + \" -> \" + e.w + \": \" + JSON.stringify(graph.edge(e)));\n drawEdge(diagram2, graph.edge(e), graph.edge(e).relation);\n }\n });\n stateBox = svgElem.getBBox();\n const stateInfo = {\n id: parentId ? parentId : \"root\",\n label: parentId ? parentId : \"root\",\n width: 0,\n height: 0\n };\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n log.debug(\"Doc rendered\", stateInfo, graph);\n return stateInfo;\n};\nconst renderer = {\n setConf,\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import { D as DEFAULT_STATE_TYPE, a as DIVIDER_TYPE, S as STMT_RELATION, b as STMT_STATE, c as DEFAULT_NESTED_DOC_DIR, p as parser, d as db, s as styles } from \"./styles-bbc3fe3b.js\";\nimport * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { select } from \"d3\";\nimport { l as log, c as getConfig, u as utils, i as configureSvgSize, e as common } from \"./mermaid-934d9bea.js\";\nimport { r as render } from \"./index-67a42d7d.js\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"dagre-d3-es/src/dagre/index.js\";\nimport \"dagre-d3-es/src/graphlib/json.js\";\nimport \"./edges-80f1ebb6.js\";\nimport \"./createText-aebacdfe.js\";\nimport \"mdast-util-from-markdown\";\nconst SHAPE_STATE = \"rect\";\nconst SHAPE_STATE_WITH_DESC = \"rectWithTitle\";\nconst SHAPE_START = \"start\";\nconst SHAPE_END = \"end\";\nconst SHAPE_DIVIDER = \"divider\";\nconst SHAPE_GROUP = \"roundedWithTitle\";\nconst SHAPE_NOTE = \"note\";\nconst SHAPE_NOTEGROUP = \"noteGroup\";\nconst CSS_DIAGRAM = \"statediagram\";\nconst CSS_STATE = \"state\";\nconst CSS_DIAGRAM_STATE = `${CSS_DIAGRAM}-${CSS_STATE}`;\nconst CSS_EDGE = \"transition\";\nconst CSS_NOTE = \"note\";\nconst CSS_NOTE_EDGE = \"note-edge\";\nconst CSS_EDGE_NOTE_EDGE = `${CSS_EDGE} ${CSS_NOTE_EDGE}`;\nconst CSS_DIAGRAM_NOTE = `${CSS_DIAGRAM}-${CSS_NOTE}`;\nconst CSS_CLUSTER = \"cluster\";\nconst CSS_DIAGRAM_CLUSTER = `${CSS_DIAGRAM}-${CSS_CLUSTER}`;\nconst CSS_CLUSTER_ALT = \"cluster-alt\";\nconst CSS_DIAGRAM_CLUSTER_ALT = `${CSS_DIAGRAM}-${CSS_CLUSTER_ALT}`;\nconst PARENT = \"parent\";\nconst NOTE = \"note\";\nconst DOMID_STATE = \"state\";\nconst DOMID_TYPE_SPACER = \"----\";\nconst NOTE_ID = `${DOMID_TYPE_SPACER}${NOTE}`;\nconst PARENT_ID = `${DOMID_TYPE_SPACER}${PARENT}`;\nconst G_EDGE_STYLE = \"fill:none\";\nconst G_EDGE_ARROWHEADSTYLE = \"fill: #333\";\nconst G_EDGE_LABELPOS = \"c\";\nconst G_EDGE_LABELTYPE = \"text\";\nconst G_EDGE_THICKNESS = \"normal\";\nlet nodeDb = {};\nlet graphItemCount = 0;\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n cnf[key];\n }\n};\nconst getClasses = function(text, diagramObj) {\n diagramObj.db.extract(diagramObj.db.getRootDocV2());\n return diagramObj.db.getClasses();\n};\nfunction getClassesFromDbInfo(dbInfoItem) {\n if (dbInfoItem === void 0 || dbInfoItem === null) {\n return \"\";\n } else {\n if (dbInfoItem.classes) {\n return dbInfoItem.classes.join(\" \");\n } else {\n return \"\";\n }\n }\n}\nfunction stateDomId(itemId = \"\", counter = 0, type = \"\", typeSpacer = DOMID_TYPE_SPACER) {\n const typeStr = type !== null && type.length > 0 ? `${typeSpacer}${type}` : \"\";\n return `${DOMID_STATE}-${itemId}${typeStr}-${counter}`;\n}\nconst setupNode = (g, parent, parsedItem, diagramStates, diagramDb, altFlag) => {\n const itemId = parsedItem.id;\n const classStr = getClassesFromDbInfo(diagramStates[itemId]);\n if (itemId !== \"root\") {\n let shape = SHAPE_STATE;\n if (parsedItem.start === true) {\n shape = SHAPE_START;\n }\n if (parsedItem.start === false) {\n shape = SHAPE_END;\n }\n if (parsedItem.type !== DEFAULT_STATE_TYPE) {\n shape = parsedItem.type;\n }\n if (!nodeDb[itemId]) {\n nodeDb[itemId] = {\n id: itemId,\n shape,\n description: common.sanitizeText(itemId, getConfig()),\n classes: `${classStr} ${CSS_DIAGRAM_STATE}`\n };\n }\n const newNode = nodeDb[itemId];\n if (parsedItem.description) {\n if (Array.isArray(newNode.description)) {\n newNode.shape = SHAPE_STATE_WITH_DESC;\n newNode.description.push(parsedItem.description);\n } else {\n if (newNode.description.length > 0) {\n newNode.shape = SHAPE_STATE_WITH_DESC;\n if (newNode.description === itemId) {\n newNode.description = [parsedItem.description];\n } else {\n newNode.description = [newNode.description, parsedItem.description];\n }\n } else {\n newNode.shape = SHAPE_STATE;\n newNode.description = parsedItem.description;\n }\n }\n newNode.description = common.sanitizeTextOrArray(newNode.description, getConfig());\n }\n if (newNode.description.length === 1 && newNode.shape === SHAPE_STATE_WITH_DESC) {\n newNode.shape = SHAPE_STATE;\n }\n if (!newNode.type && parsedItem.doc) {\n log.info(\"Setting cluster for \", itemId, getDir(parsedItem));\n newNode.type = \"group\";\n newNode.dir = getDir(parsedItem);\n newNode.shape = parsedItem.type === DIVIDER_TYPE ? SHAPE_DIVIDER : SHAPE_GROUP;\n newNode.classes = newNode.classes + \" \" + CSS_DIAGRAM_CLUSTER + \" \" + (altFlag ? CSS_DIAGRAM_CLUSTER_ALT : \"\");\n }\n const nodeData = {\n labelStyle: \"\",\n shape: newNode.shape,\n labelText: newNode.description,\n // typeof newNode.description === 'object'\n // ? newNode.description[0]\n // : newNode.description,\n classes: newNode.classes,\n style: \"\",\n //styles.style,\n id: itemId,\n dir: newNode.dir,\n domId: stateDomId(itemId, graphItemCount),\n type: newNode.type,\n padding: 15\n //getConfig().flowchart.padding\n };\n nodeData.centerLabel = true;\n if (parsedItem.note) {\n const noteData = {\n labelStyle: \"\",\n shape: SHAPE_NOTE,\n labelText: parsedItem.note.text,\n classes: CSS_DIAGRAM_NOTE,\n // useHtmlLabels: false,\n style: \"\",\n // styles.style,\n id: itemId + NOTE_ID + \"-\" + graphItemCount,\n domId: stateDomId(itemId, graphItemCount, NOTE),\n type: newNode.type,\n padding: 15\n //getConfig().flowchart.padding\n };\n const groupData = {\n labelStyle: \"\",\n shape: SHAPE_NOTEGROUP,\n labelText: parsedItem.note.text,\n classes: newNode.classes,\n style: \"\",\n // styles.style,\n id: itemId + PARENT_ID,\n domId: stateDomId(itemId, graphItemCount, PARENT),\n type: \"group\",\n padding: 0\n //getConfig().flowchart.padding\n };\n graphItemCount++;\n const parentNodeId = itemId + PARENT_ID;\n g.setNode(parentNodeId, groupData);\n g.setNode(noteData.id, noteData);\n g.setNode(itemId, nodeData);\n g.setParent(itemId, parentNodeId);\n g.setParent(noteData.id, parentNodeId);\n let from = itemId;\n let to = noteData.id;\n if (parsedItem.note.position === \"left of\") {\n from = noteData.id;\n to = itemId;\n }\n g.setEdge(from, to, {\n arrowhead: \"none\",\n arrowType: \"\",\n style: G_EDGE_STYLE,\n labelStyle: \"\",\n classes: CSS_EDGE_NOTE_EDGE,\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS\n });\n } else {\n g.setNode(itemId, nodeData);\n }\n }\n if (parent && parent.id !== \"root\") {\n log.trace(\"Setting node \", itemId, \" to be child of its parent \", parent.id);\n g.setParent(itemId, parent.id);\n }\n if (parsedItem.doc) {\n log.trace(\"Adding nodes children \");\n setupDoc(g, parsedItem, parsedItem.doc, diagramStates, diagramDb, !altFlag);\n }\n};\nconst setupDoc = (g, parentParsedItem, doc, diagramStates, diagramDb, altFlag) => {\n log.trace(\"items\", doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case STMT_STATE:\n setupNode(g, parentParsedItem, item, diagramStates, diagramDb, altFlag);\n break;\n case DEFAULT_STATE_TYPE:\n setupNode(g, parentParsedItem, item, diagramStates, diagramDb, altFlag);\n break;\n case STMT_RELATION:\n {\n setupNode(g, parentParsedItem, item.state1, diagramStates, diagramDb, altFlag);\n setupNode(g, parentParsedItem, item.state2, diagramStates, diagramDb, altFlag);\n const edgeData = {\n id: \"edge\" + graphItemCount,\n arrowhead: \"normal\",\n arrowTypeEnd: \"arrow_barb\",\n style: G_EDGE_STYLE,\n labelStyle: \"\",\n label: common.sanitizeText(item.description, getConfig()),\n arrowheadStyle: G_EDGE_ARROWHEADSTYLE,\n labelpos: G_EDGE_LABELPOS,\n labelType: G_EDGE_LABELTYPE,\n thickness: G_EDGE_THICKNESS,\n classes: CSS_EDGE\n };\n g.setEdge(item.state1.id, item.state2.id, edgeData, graphItemCount);\n graphItemCount++;\n }\n break;\n }\n });\n};\nconst getDir = (parsedItem, defaultDir = DEFAULT_NESTED_DOC_DIR) => {\n let dir = defaultDir;\n if (parsedItem.doc) {\n for (let i = 0; i < parsedItem.doc.length; i++) {\n const parsedItemDoc = parsedItem.doc[i];\n if (parsedItemDoc.stmt === \"dir\") {\n dir = parsedItemDoc.value;\n }\n }\n }\n return dir;\n};\nconst draw = async function(text, id, _version, diag) {\n log.info(\"Drawing state diagram (v2)\", id);\n nodeDb = {};\n diag.db.getDirection();\n const { securityLevel, state: conf } = getConfig();\n const nodeSpacing = conf.nodeSpacing || 50;\n const rankSpacing = conf.rankSpacing || 50;\n log.info(diag.db.getRootDocV2());\n diag.db.extract(diag.db.getRootDocV2());\n log.info(diag.db.getRootDocV2());\n const diagramStates = diag.db.getStates();\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: getDir(diag.db.getRootDocV2()),\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n setupNode(g, void 0, diag.db.getRootDocV2(), diagramStates, diag.db, true);\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await render(element, g, [\"barb\"], CSS_DIAGRAM, id);\n const padding = 8;\n utils.insertTitle(svg, \"statediagramTitleText\", conf.titleTopMargin, diag.db.getDiagramTitle());\n const bounds = svg.node().getBBox();\n const width = bounds.width + padding * 2;\n const height = bounds.height + padding * 2;\n svg.attr(\"class\", CSS_DIAGRAM);\n const svgBounds = svg.node().getBBox();\n configureSvgSize(svg, height, width, conf.useMaxWidth);\n const vBox = `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`;\n log.debug(`viewBox ${vBox}`);\n svg.attr(\"viewBox\", vBox);\n const labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", SHAPE_STATE);\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n};\nconst renderer = {\n setConf,\n getClasses,\n draw\n};\nconst diagram = {\n parser,\n db,\n renderer,\n styles,\n init: (cnf) => {\n if (!cnf.state) {\n cnf.state = {};\n }\n cnf.state.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n db.clear();\n }\n};\nexport {\n diagram\n};\n","import { select } from \"d3\";\nimport { d as sanitizeText$1, c as getConfig, v as parseGenericTypes, s as setAccTitle, g as getAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, r as getDiagramTitle, e as common, t as clear$1, l as log, u as utils } from \"./mermaid-934d9bea.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 16], $V1 = [1, 17], $V2 = [1, 18], $V3 = [1, 37], $V4 = [1, 38], $V5 = [1, 24], $V6 = [1, 22], $V7 = [1, 23], $V8 = [1, 29], $V9 = [1, 30], $Va = [1, 31], $Vb = [1, 32], $Vc = [1, 33], $Vd = [1, 34], $Ve = [1, 25], $Vf = [1, 26], $Vg = [1, 27], $Vh = [1, 28], $Vi = [1, 42], $Vj = [1, 39], $Vk = [1, 40], $Vl = [1, 41], $Vm = [1, 43], $Vn = [1, 9], $Vo = [1, 8, 9], $Vp = [1, 54], $Vq = [1, 55], $Vr = [1, 56], $Vs = [1, 57], $Vt = [1, 58], $Vu = [1, 59], $Vv = [1, 60], $Vw = [1, 8, 9, 38], $Vx = [1, 71], $Vy = [1, 8, 9, 12, 13, 21, 36, 38, 41, 58, 59, 60, 61, 62, 63, 64, 69, 71], $Vz = [1, 8, 9, 12, 13, 19, 21, 36, 38, 41, 45, 58, 59, 60, 61, 62, 63, 64, 69, 71, 84, 86, 87, 88, 89], $VA = [13, 84, 86, 87, 88, 89], $VB = [13, 63, 64, 84, 86, 87, 88, 89], $VC = [13, 58, 59, 60, 61, 62, 84, 86, 87, 88, 89], $VD = [1, 90], $VE = [1, 8, 9, 36, 38, 41], $VF = [1, 8, 9, 21];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"mermaidDoc\": 4, \"statements\": 5, \"graphConfig\": 6, \"CLASS_DIAGRAM\": 7, \"NEWLINE\": 8, \"EOF\": 9, \"statement\": 10, \"classLabel\": 11, \"SQS\": 12, \"STR\": 13, \"SQE\": 14, \"namespaceName\": 15, \"alphaNumToken\": 16, \"className\": 17, \"classLiteralName\": 18, \"GENERICTYPE\": 19, \"relationStatement\": 20, \"LABEL\": 21, \"namespaceStatement\": 22, \"classStatement\": 23, \"memberStatement\": 24, \"annotationStatement\": 25, \"clickStatement\": 26, \"cssClassStatement\": 27, \"noteStatement\": 28, \"direction\": 29, \"acc_title\": 30, \"acc_title_value\": 31, \"acc_descr\": 32, \"acc_descr_value\": 33, \"acc_descr_multiline_value\": 34, \"namespaceIdentifier\": 35, \"STRUCT_START\": 36, \"classStatements\": 37, \"STRUCT_STOP\": 38, \"NAMESPACE\": 39, \"classIdentifier\": 40, \"STYLE_SEPARATOR\": 41, \"members\": 42, \"CLASS\": 43, \"ANNOTATION_START\": 44, \"ANNOTATION_END\": 45, \"MEMBER\": 46, \"SEPARATOR\": 47, \"relation\": 48, \"NOTE_FOR\": 49, \"noteText\": 50, \"NOTE\": 51, \"direction_tb\": 52, \"direction_bt\": 53, \"direction_rl\": 54, \"direction_lr\": 55, \"relationType\": 56, \"lineType\": 57, \"AGGREGATION\": 58, \"EXTENSION\": 59, \"COMPOSITION\": 60, \"DEPENDENCY\": 61, \"LOLLIPOP\": 62, \"LINE\": 63, \"DOTTED_LINE\": 64, \"CALLBACK\": 65, \"LINK\": 66, \"LINK_TARGET\": 67, \"CLICK\": 68, \"CALLBACK_NAME\": 69, \"CALLBACK_ARGS\": 70, \"HREF\": 71, \"CSSCLASS\": 72, \"commentToken\": 73, \"textToken\": 74, \"graphCodeTokens\": 75, \"textNoTagsToken\": 76, \"TAGSTART\": 77, \"TAGEND\": 78, \"==\": 79, \"--\": 80, \"PCT\": 81, \"DEFAULT\": 82, \"SPACE\": 83, \"MINUS\": 84, \"keywords\": 85, \"UNICODE_TEXT\": 86, \"NUM\": 87, \"ALPHA\": 88, \"BQUOTE_STR\": 89, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 7: \"CLASS_DIAGRAM\", 8: \"NEWLINE\", 9: \"EOF\", 12: \"SQS\", 13: \"STR\", 14: \"SQE\", 19: \"GENERICTYPE\", 21: \"LABEL\", 30: \"acc_title\", 31: \"acc_title_value\", 32: \"acc_descr\", 33: \"acc_descr_value\", 34: \"acc_descr_multiline_value\", 36: \"STRUCT_START\", 38: \"STRUCT_STOP\", 39: \"NAMESPACE\", 41: \"STYLE_SEPARATOR\", 43: \"CLASS\", 44: \"ANNOTATION_START\", 45: \"ANNOTATION_END\", 46: \"MEMBER\", 47: \"SEPARATOR\", 49: \"NOTE_FOR\", 51: \"NOTE\", 52: \"direction_tb\", 53: \"direction_bt\", 54: \"direction_rl\", 55: \"direction_lr\", 58: \"AGGREGATION\", 59: \"EXTENSION\", 60: \"COMPOSITION\", 61: \"DEPENDENCY\", 62: \"LOLLIPOP\", 63: \"LINE\", 64: \"DOTTED_LINE\", 65: \"CALLBACK\", 66: \"LINK\", 67: \"LINK_TARGET\", 68: \"CLICK\", 69: \"CALLBACK_NAME\", 70: \"CALLBACK_ARGS\", 71: \"HREF\", 72: \"CSSCLASS\", 75: \"graphCodeTokens\", 77: \"TAGSTART\", 78: \"TAGEND\", 79: \"==\", 80: \"--\", 81: \"PCT\", 82: \"DEFAULT\", 83: \"SPACE\", 84: \"MINUS\", 85: \"keywords\", 86: \"UNICODE_TEXT\", 87: \"NUM\", 88: \"ALPHA\", 89: \"BQUOTE_STR\" },\n productions_: [0, [3, 1], [3, 1], [4, 1], [6, 4], [5, 1], [5, 2], [5, 3], [11, 3], [15, 1], [15, 2], [17, 1], [17, 1], [17, 2], [17, 2], [17, 2], [10, 1], [10, 2], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 1], [10, 2], [10, 2], [10, 1], [22, 4], [22, 5], [35, 2], [37, 1], [37, 2], [37, 3], [23, 1], [23, 3], [23, 4], [23, 6], [40, 2], [40, 3], [25, 4], [42, 1], [42, 2], [24, 1], [24, 2], [24, 1], [24, 1], [20, 3], [20, 4], [20, 4], [20, 5], [28, 3], [28, 2], [29, 1], [29, 1], [29, 1], [29, 1], [48, 3], [48, 2], [48, 2], [48, 1], [56, 1], [56, 1], [56, 1], [56, 1], [56, 1], [57, 1], [57, 1], [26, 3], [26, 4], [26, 3], [26, 4], [26, 4], [26, 5], [26, 3], [26, 4], [26, 4], [26, 5], [26, 4], [26, 5], [26, 5], [26, 6], [27, 3], [73, 1], [73, 1], [74, 1], [74, 1], [74, 1], [74, 1], [74, 1], [74, 1], [74, 1], [76, 1], [76, 1], [76, 1], [76, 1], [16, 1], [16, 1], [16, 1], [16, 1], [18, 1], [50, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 8:\n this.$ = $$[$0 - 1];\n break;\n case 9:\n case 11:\n case 12:\n this.$ = $$[$0];\n break;\n case 10:\n case 13:\n this.$ = $$[$0 - 1] + $$[$0];\n break;\n case 14:\n case 15:\n this.$ = $$[$0 - 1] + \"~\" + $$[$0] + \"~\";\n break;\n case 16:\n yy.addRelation($$[$0]);\n break;\n case 17:\n $$[$0 - 1].title = yy.cleanupLabel($$[$0]);\n yy.addRelation($$[$0 - 1]);\n break;\n case 26:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 27:\n case 28:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 29:\n yy.addClassesToNamespace($$[$0 - 3], $$[$0 - 1]);\n break;\n case 30:\n yy.addClassesToNamespace($$[$0 - 4], $$[$0 - 1]);\n break;\n case 31:\n this.$ = $$[$0];\n yy.addNamespace($$[$0]);\n break;\n case 32:\n this.$ = [$$[$0]];\n break;\n case 33:\n this.$ = [$$[$0 - 1]];\n break;\n case 34:\n $$[$0].unshift($$[$0 - 2]);\n this.$ = $$[$0];\n break;\n case 36:\n yy.setCssClass($$[$0 - 2], $$[$0]);\n break;\n case 37:\n yy.addMembers($$[$0 - 3], $$[$0 - 1]);\n break;\n case 38:\n yy.setCssClass($$[$0 - 5], $$[$0 - 3]);\n yy.addMembers($$[$0 - 5], $$[$0 - 1]);\n break;\n case 39:\n this.$ = $$[$0];\n yy.addClass($$[$0]);\n break;\n case 40:\n this.$ = $$[$0 - 1];\n yy.addClass($$[$0 - 1]);\n yy.setClassLabel($$[$0 - 1], $$[$0]);\n break;\n case 41:\n yy.addAnnotation($$[$0], $$[$0 - 2]);\n break;\n case 42:\n this.$ = [$$[$0]];\n break;\n case 43:\n $$[$0].push($$[$0 - 1]);\n this.$ = $$[$0];\n break;\n case 44:\n break;\n case 45:\n yy.addMember($$[$0 - 1], yy.cleanupLabel($$[$0]));\n break;\n case 46:\n break;\n case 47:\n break;\n case 48:\n this.$ = { \"id1\": $$[$0 - 2], \"id2\": $$[$0], relation: $$[$0 - 1], relationTitle1: \"none\", relationTitle2: \"none\" };\n break;\n case 49:\n this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 1], relationTitle1: $$[$0 - 2], relationTitle2: \"none\" };\n break;\n case 50:\n this.$ = { id1: $$[$0 - 3], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: \"none\", relationTitle2: $$[$0 - 1] };\n break;\n case 51:\n this.$ = { id1: $$[$0 - 4], id2: $$[$0], relation: $$[$0 - 2], relationTitle1: $$[$0 - 3], relationTitle2: $$[$0 - 1] };\n break;\n case 52:\n yy.addNote($$[$0], $$[$0 - 1]);\n break;\n case 53:\n yy.addNote($$[$0]);\n break;\n case 54:\n yy.setDirection(\"TB\");\n break;\n case 55:\n yy.setDirection(\"BT\");\n break;\n case 56:\n yy.setDirection(\"RL\");\n break;\n case 57:\n yy.setDirection(\"LR\");\n break;\n case 58:\n this.$ = { type1: $$[$0 - 2], type2: $$[$0], lineType: $$[$0 - 1] };\n break;\n case 59:\n this.$ = { type1: \"none\", type2: $$[$0], lineType: $$[$0 - 1] };\n break;\n case 60:\n this.$ = { type1: $$[$0 - 1], type2: \"none\", lineType: $$[$0] };\n break;\n case 61:\n this.$ = { type1: \"none\", type2: \"none\", lineType: $$[$0] };\n break;\n case 62:\n this.$ = yy.relationType.AGGREGATION;\n break;\n case 63:\n this.$ = yy.relationType.EXTENSION;\n break;\n case 64:\n this.$ = yy.relationType.COMPOSITION;\n break;\n case 65:\n this.$ = yy.relationType.DEPENDENCY;\n break;\n case 66:\n this.$ = yy.relationType.LOLLIPOP;\n break;\n case 67:\n this.$ = yy.lineType.LINE;\n break;\n case 68:\n this.$ = yy.lineType.DOTTED_LINE;\n break;\n case 69:\n case 75:\n this.$ = $$[$0 - 2];\n yy.setClickEvent($$[$0 - 1], $$[$0]);\n break;\n case 70:\n case 76:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 2], $$[$0]);\n break;\n case 71:\n this.$ = $$[$0 - 2];\n yy.setLink($$[$0 - 1], $$[$0]);\n break;\n case 72:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 73:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 2], $$[$0]);\n break;\n case 74:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 2], $$[$0]);\n yy.setTooltip($$[$0 - 3], $$[$0 - 1]);\n break;\n case 77:\n this.$ = $$[$0 - 3];\n yy.setClickEvent($$[$0 - 2], $$[$0 - 1], $$[$0]);\n break;\n case 78:\n this.$ = $$[$0 - 4];\n yy.setClickEvent($$[$0 - 3], $$[$0 - 2], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 79:\n this.$ = $$[$0 - 3];\n yy.setLink($$[$0 - 2], $$[$0]);\n break;\n case 80:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 1], $$[$0]);\n break;\n case 81:\n this.$ = $$[$0 - 4];\n yy.setLink($$[$0 - 3], $$[$0 - 1]);\n yy.setTooltip($$[$0 - 3], $$[$0]);\n break;\n case 82:\n this.$ = $$[$0 - 5];\n yy.setLink($$[$0 - 4], $$[$0 - 2], $$[$0]);\n yy.setTooltip($$[$0 - 4], $$[$0 - 1]);\n break;\n case 83:\n yy.setCssClass($$[$0 - 1], $$[$0]);\n break;\n }\n },\n table: [{ 3: 1, 4: 2, 5: 3, 6: 4, 7: [1, 6], 10: 5, 16: 35, 17: 19, 18: 36, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: $V0, 32: $V1, 34: $V2, 35: 20, 39: $V3, 40: 21, 43: $V4, 44: $V5, 46: $V6, 47: $V7, 49: $V8, 51: $V9, 52: $Va, 53: $Vb, 54: $Vc, 55: $Vd, 65: $Ve, 66: $Vf, 68: $Vg, 72: $Vh, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 1: [3] }, { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3] }, o($Vn, [2, 5], { 8: [1, 44] }), { 8: [1, 45] }, o($Vo, [2, 16], { 21: [1, 46] }), o($Vo, [2, 18]), o($Vo, [2, 19]), o($Vo, [2, 20]), o($Vo, [2, 21]), o($Vo, [2, 22]), o($Vo, [2, 23]), o($Vo, [2, 24]), o($Vo, [2, 25]), { 31: [1, 47] }, { 33: [1, 48] }, o($Vo, [2, 28]), o($Vo, [2, 44], { 48: 49, 56: 52, 57: 53, 13: [1, 50], 21: [1, 51], 58: $Vp, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu, 64: $Vv }), { 36: [1, 61] }, o($Vw, [2, 35], { 36: [1, 63], 41: [1, 62] }), o($Vo, [2, 46]), o($Vo, [2, 47]), { 16: 64, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, { 16: 35, 17: 65, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 16: 35, 17: 66, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 16: 35, 17: 67, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 13: [1, 68] }, { 16: 35, 17: 69, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 13: $Vx, 50: 70 }, o($Vo, [2, 54]), o($Vo, [2, 55]), o($Vo, [2, 56]), o($Vo, [2, 57]), o($Vy, [2, 11], { 16: 35, 18: 36, 17: 72, 19: [1, 73], 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }), o($Vy, [2, 12], { 19: [1, 74] }), { 15: 75, 16: 76, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, { 16: 35, 17: 77, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($Vz, [2, 97]), o($Vz, [2, 98]), o($Vz, [2, 99]), o($Vz, [2, 100]), o([1, 8, 9, 12, 13, 19, 21, 36, 38, 41, 58, 59, 60, 61, 62, 63, 64, 69, 71], [2, 101]), o($Vn, [2, 6], { 10: 5, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 17: 19, 35: 20, 40: 21, 16: 35, 18: 36, 5: 78, 30: $V0, 32: $V1, 34: $V2, 39: $V3, 43: $V4, 44: $V5, 46: $V6, 47: $V7, 49: $V8, 51: $V9, 52: $Va, 53: $Vb, 54: $Vc, 55: $Vd, 65: $Ve, 66: $Vf, 68: $Vg, 72: $Vh, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }), { 5: 79, 10: 5, 16: 35, 17: 19, 18: 36, 20: 7, 22: 8, 23: 9, 24: 10, 25: 11, 26: 12, 27: 13, 28: 14, 29: 15, 30: $V0, 32: $V1, 34: $V2, 35: 20, 39: $V3, 40: 21, 43: $V4, 44: $V5, 46: $V6, 47: $V7, 49: $V8, 51: $V9, 52: $Va, 53: $Vb, 54: $Vc, 55: $Vd, 65: $Ve, 66: $Vf, 68: $Vg, 72: $Vh, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($Vo, [2, 17]), o($Vo, [2, 26]), o($Vo, [2, 27]), { 13: [1, 81], 16: 35, 17: 80, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 48: 82, 56: 52, 57: 53, 58: $Vp, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt, 63: $Vu, 64: $Vv }, o($Vo, [2, 45]), { 57: 83, 63: $Vu, 64: $Vv }, o($VA, [2, 61], { 56: 84, 58: $Vp, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt }), o($VB, [2, 62]), o($VB, [2, 63]), o($VB, [2, 64]), o($VB, [2, 65]), o($VB, [2, 66]), o($VC, [2, 67]), o($VC, [2, 68]), { 8: [1, 86], 23: 87, 37: 85, 40: 21, 43: $V4 }, { 16: 88, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, { 42: 89, 46: $VD }, { 45: [1, 91] }, { 13: [1, 92] }, { 13: [1, 93] }, { 69: [1, 94], 71: [1, 95] }, { 16: 96, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, { 13: $Vx, 50: 97 }, o($Vo, [2, 53]), o($Vo, [2, 102]), o($Vy, [2, 13]), o($Vy, [2, 14]), o($Vy, [2, 15]), { 36: [2, 31] }, { 15: 98, 16: 76, 36: [2, 9], 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl }, o($VE, [2, 39], { 11: 99, 12: [1, 100] }), o($Vn, [2, 7]), { 9: [1, 101] }, o($VF, [2, 48]), { 16: 35, 17: 102, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, { 13: [1, 104], 16: 35, 17: 103, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($VA, [2, 60], { 56: 105, 58: $Vp, 59: $Vq, 60: $Vr, 61: $Vs, 62: $Vt }), o($VA, [2, 59]), { 38: [1, 106] }, { 23: 87, 37: 107, 40: 21, 43: $V4 }, { 8: [1, 108], 38: [2, 32] }, o($Vw, [2, 36], { 36: [1, 109] }), { 38: [1, 110] }, { 38: [2, 42], 42: 111, 46: $VD }, { 16: 35, 17: 112, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($Vo, [2, 69], { 13: [1, 113] }), o($Vo, [2, 71], { 13: [1, 115], 67: [1, 114] }), o($Vo, [2, 75], { 13: [1, 116], 70: [1, 117] }), { 13: [1, 118] }, o($Vo, [2, 83]), o($Vo, [2, 52]), { 36: [2, 10] }, o($VE, [2, 40]), { 13: [1, 119] }, { 1: [2, 4] }, o($VF, [2, 50]), o($VF, [2, 49]), { 16: 35, 17: 120, 18: 36, 84: $Vi, 86: $Vj, 87: $Vk, 88: $Vl, 89: $Vm }, o($VA, [2, 58]), o($Vo, [2, 29]), { 38: [1, 121] }, { 23: 87, 37: 122, 38: [2, 33], 40: 21, 43: $V4 }, { 42: 123, 46: $VD }, o($Vw, [2, 37]), { 38: [2, 43] }, o($Vo, [2, 41]), o($Vo, [2, 70]), o($Vo, [2, 72]), o($Vo, [2, 73], { 67: [1, 124] }), o($Vo, [2, 76]), o($Vo, [2, 77], { 13: [1, 125] }), o($Vo, [2, 79], { 13: [1, 127], 67: [1, 126] }), { 14: [1, 128] }, o($VF, [2, 51]), o($Vo, [2, 30]), { 38: [2, 34] }, { 38: [1, 129] }, o($Vo, [2, 74]), o($Vo, [2, 78]), o($Vo, [2, 80]), o($Vo, [2, 81], { 67: [1, 130] }), o($VE, [2, 8]), o($Vw, [2, 38]), o($Vo, [2, 82])],\n defaultActions: { 2: [2, 1], 3: [2, 2], 4: [2, 3], 75: [2, 31], 98: [2, 10], 101: [2, 4], 111: [2, 43], 122: [2, 34] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: {},\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 52;\n case 1:\n return 53;\n case 2:\n return 54;\n case 3:\n return 55;\n case 4:\n break;\n case 5:\n break;\n case 6:\n this.begin(\"acc_title\");\n return 30;\n case 7:\n this.popState();\n return \"acc_title_value\";\n case 8:\n this.begin(\"acc_descr\");\n return 32;\n case 9:\n this.popState();\n return \"acc_descr_value\";\n case 10:\n this.begin(\"acc_descr_multiline\");\n break;\n case 11:\n this.popState();\n break;\n case 12:\n return \"acc_descr_multiline_value\";\n case 13:\n return 8;\n case 14:\n break;\n case 15:\n return 7;\n case 16:\n return 7;\n case 17:\n return \"EDGE_STATE\";\n case 18:\n this.begin(\"callback_name\");\n break;\n case 19:\n this.popState();\n break;\n case 20:\n this.popState();\n this.begin(\"callback_args\");\n break;\n case 21:\n return 69;\n case 22:\n this.popState();\n break;\n case 23:\n return 70;\n case 24:\n this.popState();\n break;\n case 25:\n return \"STR\";\n case 26:\n this.begin(\"string\");\n break;\n case 27:\n this.begin(\"namespace\");\n return 39;\n case 28:\n this.popState();\n return 8;\n case 29:\n break;\n case 30:\n this.begin(\"namespace-body\");\n return 36;\n case 31:\n this.popState();\n return 38;\n case 32:\n return \"EOF_IN_STRUCT\";\n case 33:\n return 8;\n case 34:\n break;\n case 35:\n return \"EDGE_STATE\";\n case 36:\n this.begin(\"class\");\n return 43;\n case 37:\n this.popState();\n return 8;\n case 38:\n break;\n case 39:\n this.popState();\n this.popState();\n return 38;\n case 40:\n this.begin(\"class-body\");\n return 36;\n case 41:\n this.popState();\n return 38;\n case 42:\n return \"EOF_IN_STRUCT\";\n case 43:\n return \"EDGE_STATE\";\n case 44:\n return \"OPEN_IN_STRUCT\";\n case 45:\n break;\n case 46:\n return \"MEMBER\";\n case 47:\n return 72;\n case 48:\n return 65;\n case 49:\n return 66;\n case 50:\n return 68;\n case 51:\n return 49;\n case 52:\n return 51;\n case 53:\n return 44;\n case 54:\n return 45;\n case 55:\n return 71;\n case 56:\n this.popState();\n break;\n case 57:\n return \"GENERICTYPE\";\n case 58:\n this.begin(\"generic\");\n break;\n case 59:\n this.popState();\n break;\n case 60:\n return \"BQUOTE_STR\";\n case 61:\n this.begin(\"bqstring\");\n break;\n case 62:\n return 67;\n case 63:\n return 67;\n case 64:\n return 67;\n case 65:\n return 67;\n case 66:\n return 59;\n case 67:\n return 59;\n case 68:\n return 61;\n case 69:\n return 61;\n case 70:\n return 60;\n case 71:\n return 58;\n case 72:\n return 62;\n case 73:\n return 63;\n case 74:\n return 64;\n case 75:\n return 21;\n case 76:\n return 41;\n case 77:\n return 84;\n case 78:\n return \"DOT\";\n case 79:\n return \"PLUS\";\n case 80:\n return 81;\n case 81:\n return \"EQUALS\";\n case 82:\n return \"EQUALS\";\n case 83:\n return 88;\n case 84:\n return 12;\n case 85:\n return 14;\n case 86:\n return \"PUNCTUATION\";\n case 87:\n return 87;\n case 88:\n return 86;\n case 89:\n return 83;\n case 90:\n return 9;\n }\n },\n rules: [/^(?:.*direction\\s+TB[^\\n]*)/, /^(?:.*direction\\s+BT[^\\n]*)/, /^(?:.*direction\\s+RL[^\\n]*)/, /^(?:.*direction\\s+LR[^\\n]*)/, /^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/, /^(?:%%[^\\n]*(\\r?\\n)*)/, /^(?:accTitle\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*:\\s*)/, /^(?:(?!\\n||)*[^\\n]*)/, /^(?:accDescr\\s*\\{\\s*)/, /^(?:[\\}])/, /^(?:[^\\}]*)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:classDiagram-v2\\b)/, /^(?:classDiagram\\b)/, /^(?:\\[\\*\\])/, /^(?:call[\\s]+)/, /^(?:\\([\\s]*\\))/, /^(?:\\()/, /^(?:[^(]*)/, /^(?:\\))/, /^(?:[^)]*)/, /^(?:[\"])/, /^(?:[^\"]*)/, /^(?:[\"])/, /^(?:namespace\\b)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:\\[\\*\\])/, /^(?:class\\b)/, /^(?:\\s*(\\r?\\n)+)/, /^(?:\\s+)/, /^(?:[}])/, /^(?:[{])/, /^(?:[}])/, /^(?:$)/, /^(?:\\[\\*\\])/, /^(?:[{])/, /^(?:[\\n])/, /^(?:[^{}\\n]*)/, /^(?:cssClass\\b)/, /^(?:callback\\b)/, /^(?:link\\b)/, /^(?:click\\b)/, /^(?:note for\\b)/, /^(?:note\\b)/, /^(?:<<)/, /^(?:>>)/, /^(?:href\\b)/, /^(?:[~])/, /^(?:[^~]*)/, /^(?:~)/, /^(?:[`])/, /^(?:[^`]+)/, /^(?:[`])/, /^(?:_self\\b)/, /^(?:_blank\\b)/, /^(?:_parent\\b)/, /^(?:_top\\b)/, /^(?:\\s*<\\|)/, /^(?:\\s*\\|>)/, /^(?:\\s*>)/, /^(?:\\s*<)/, /^(?:\\s*\\*)/, /^(?:\\s*o\\b)/, /^(?:\\s*\\(\\))/, /^(?:--)/, /^(?:\\.\\.)/, /^(?::{1}[^:\\n;]+)/, /^(?::{3})/, /^(?:-)/, /^(?:\\.)/, /^(?:\\+)/, /^(?:%)/, /^(?:=)/, /^(?:=)/, /^(?:\\w+)/, /^(?:\\[)/, /^(?:\\])/, /^(?:[!\"#$%&'*+,-.`?\\\\/])/, /^(?:[0-9]+)/, /^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/, /^(?:\\s)/, /^(?:$)/],\n conditions: { \"namespace-body\": { \"rules\": [26, 31, 32, 33, 34, 35, 36, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"namespace\": { \"rules\": [26, 27, 28, 29, 30, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"class-body\": { \"rules\": [26, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"class\": { \"rules\": [26, 37, 38, 39, 40, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [11, 12, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"acc_descr\": { \"rules\": [9, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"acc_title\": { \"rules\": [7, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"callback_args\": { \"rules\": [22, 23, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"callback_name\": { \"rules\": [19, 20, 21, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"href\": { \"rules\": [26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"struct\": { \"rules\": [26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"generic\": { \"rules\": [26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"bqstring\": { \"rules\": [26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"string\": { \"rules\": [24, 25, 26, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 8, 10, 13, 14, 15, 16, 17, 18, 26, 27, 36, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst visibilityValues = [\"#\", \"+\", \"~\", \"-\", \"\"];\nclass ClassMember {\n constructor(input, memberType) {\n this.memberType = memberType;\n this.visibility = \"\";\n this.classifier = \"\";\n const sanitizedInput = sanitizeText$1(input, getConfig());\n this.parseMember(sanitizedInput);\n }\n getDisplayDetails() {\n let displayText = this.visibility + parseGenericTypes(this.id);\n if (this.memberType === \"method\") {\n displayText += `(${parseGenericTypes(this.parameters.trim())})`;\n if (this.returnType) {\n displayText += \" : \" + parseGenericTypes(this.returnType);\n }\n }\n displayText = displayText.trim();\n const cssStyle = this.parseClassifier();\n return {\n displayText,\n cssStyle\n };\n }\n parseMember(input) {\n let potentialClassifier = \"\";\n if (this.memberType === \"method\") {\n const methodRegEx = /([#+~-])?(.+)\\((.*)\\)([\\s$*])?(.*)([$*])?/;\n const match = input.match(methodRegEx);\n if (match) {\n const detectedVisibility = match[1] ? match[1].trim() : \"\";\n if (visibilityValues.includes(detectedVisibility)) {\n this.visibility = detectedVisibility;\n }\n this.id = match[2].trim();\n this.parameters = match[3] ? match[3].trim() : \"\";\n potentialClassifier = match[4] ? match[4].trim() : \"\";\n this.returnType = match[5] ? match[5].trim() : \"\";\n if (potentialClassifier === \"\") {\n const lastChar = this.returnType.substring(this.returnType.length - 1);\n if (lastChar.match(/[$*]/)) {\n potentialClassifier = lastChar;\n this.returnType = this.returnType.substring(0, this.returnType.length - 1);\n }\n }\n }\n } else {\n const length = input.length;\n const firstChar = input.substring(0, 1);\n const lastChar = input.substring(length - 1);\n if (visibilityValues.includes(firstChar)) {\n this.visibility = firstChar;\n }\n if (lastChar.match(/[*?]/)) {\n potentialClassifier = lastChar;\n }\n this.id = input.substring(\n this.visibility === \"\" ? 0 : 1,\n potentialClassifier === \"\" ? length : length - 1\n );\n }\n this.classifier = potentialClassifier;\n }\n parseClassifier() {\n switch (this.classifier) {\n case \"*\":\n return \"font-style:italic;\";\n case \"$\":\n return \"text-decoration:underline;\";\n default:\n return \"\";\n }\n }\n}\nconst MERMAID_DOM_ID_PREFIX = \"classId-\";\nlet relations = [];\nlet classes = {};\nlet notes = [];\nlet classCounter = 0;\nlet namespaces = {};\nlet namespaceCounter = 0;\nlet functions = [];\nconst sanitizeText = (txt) => common.sanitizeText(txt, getConfig());\nconst splitClassNameAndType = function(_id) {\n const id = common.sanitizeText(_id, getConfig());\n let genericType = \"\";\n let className = id;\n if (id.indexOf(\"~\") > 0) {\n const split = id.split(\"~\");\n className = sanitizeText(split[0]);\n genericType = sanitizeText(split[1]);\n }\n return { className, type: genericType };\n};\nconst setClassLabel = function(_id, label) {\n const id = common.sanitizeText(_id, getConfig());\n if (label) {\n label = sanitizeText(label);\n }\n const { className } = splitClassNameAndType(id);\n classes[className].label = label;\n};\nconst addClass = function(_id) {\n const id = common.sanitizeText(_id, getConfig());\n const { className, type } = splitClassNameAndType(id);\n if (Object.hasOwn(classes, className)) {\n return;\n }\n const name = common.sanitizeText(className, getConfig());\n classes[name] = {\n id: name,\n type,\n label: name,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + name + \"-\" + classCounter\n };\n classCounter++;\n};\nconst lookUpDomId = function(_id) {\n const id = common.sanitizeText(_id, getConfig());\n if (id in classes) {\n return classes[id].domId;\n }\n throw new Error(\"Class not found: \" + id);\n};\nconst clear = function() {\n relations = [];\n classes = {};\n notes = [];\n functions = [];\n functions.push(setupToolTips);\n namespaces = {};\n namespaceCounter = 0;\n clear$1();\n};\nconst getClass = function(id) {\n return classes[id];\n};\nconst getClasses = function() {\n return classes;\n};\nconst getRelations = function() {\n return relations;\n};\nconst getNotes = function() {\n return notes;\n};\nconst addRelation = function(relation) {\n log.debug(\"Adding relation: \" + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n relation.relationTitle1 = common.sanitizeText(relation.relationTitle1.trim(), getConfig());\n relation.relationTitle2 = common.sanitizeText(relation.relationTitle2.trim(), getConfig());\n relations.push(relation);\n};\nconst addAnnotation = function(className, annotation) {\n const validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\nconst addMember = function(className, member) {\n addClass(className);\n const validatedClassName = splitClassNameAndType(className).className;\n const theClass = classes[validatedClassName];\n if (typeof member === \"string\") {\n const memberString = member.trim();\n if (memberString.startsWith(\"<<\") && memberString.endsWith(\">>\")) {\n theClass.annotations.push(sanitizeText(memberString.substring(2, memberString.length - 2)));\n } else if (memberString.indexOf(\")\") > 0) {\n theClass.methods.push(new ClassMember(memberString, \"method\"));\n } else if (memberString) {\n theClass.members.push(new ClassMember(memberString, \"attribute\"));\n }\n }\n};\nconst addMembers = function(className, members) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach((member) => addMember(className, member));\n }\n};\nconst addNote = function(text, className) {\n const note = {\n id: `note${notes.length}`,\n class: className,\n text\n };\n notes.push(note);\n};\nconst cleanupLabel = function(label) {\n if (label.startsWith(\":\")) {\n label = label.substring(1);\n }\n return sanitizeText(label.trim());\n};\nconst setCssClass = function(ids, className) {\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n if (classes[id] !== void 0) {\n classes[id].cssClasses.push(className);\n }\n });\n};\nconst setTooltip = function(ids, tooltip) {\n ids.split(\",\").forEach(function(id) {\n if (tooltip !== void 0) {\n classes[id].tooltip = sanitizeText(tooltip);\n }\n });\n};\nconst getTooltip = function(id, namespace) {\n if (namespace) {\n return namespaces[namespace].classes[id].tooltip;\n }\n return classes[id].tooltip;\n};\nconst setLink = function(ids, linkStr, target) {\n const config = getConfig();\n ids.split(\",\").forEach(function(_id) {\n let id = _id;\n if (_id[0].match(/\\d/)) {\n id = MERMAID_DOM_ID_PREFIX + id;\n }\n if (classes[id] !== void 0) {\n classes[id].link = utils.formatUrl(linkStr, config);\n if (config.securityLevel === \"sandbox\") {\n classes[id].linkTarget = \"_top\";\n } else if (typeof target === \"string\") {\n classes[id].linkTarget = sanitizeText(target);\n } else {\n classes[id].linkTarget = \"_blank\";\n }\n }\n });\n setCssClass(ids, \"clickable\");\n};\nconst setClickEvent = function(ids, functionName, functionArgs) {\n ids.split(\",\").forEach(function(id) {\n setClickFunc(id, functionName, functionArgs);\n classes[id].haveCallback = true;\n });\n setCssClass(ids, \"clickable\");\n};\nconst setClickFunc = function(_domId, functionName, functionArgs) {\n const domId = common.sanitizeText(_domId, getConfig());\n const config = getConfig();\n if (config.securityLevel !== \"loose\") {\n return;\n }\n if (functionName === void 0) {\n return;\n }\n const id = domId;\n if (classes[id] !== void 0) {\n const elemId = lookUpDomId(id);\n let argList = [];\n if (typeof functionArgs === \"string\") {\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n if (argList.length === 0) {\n argList.push(elemId);\n }\n functions.push(function() {\n const elem = document.querySelector(`[id=\"${elemId}\"]`);\n if (elem !== null) {\n elem.addEventListener(\n \"click\",\n function() {\n utils.runFunc(functionName, ...argList);\n },\n false\n );\n }\n });\n }\n};\nconst bindFunctions = function(element) {\n functions.forEach(function(fun) {\n fun(element);\n });\n};\nconst lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nconst relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n LOLLIPOP: 4\n};\nconst setupToolTips = function(element) {\n let tooltipElem = select(\".mermaidTooltip\");\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = select(\"body\").append(\"div\").attr(\"class\", \"mermaidTooltip\").style(\"opacity\", 0);\n }\n const svg = select(element).select(\"svg\");\n const nodes = svg.selectAll(\"g.node\");\n nodes.on(\"mouseover\", function() {\n const el = select(this);\n const title = el.attr(\"title\");\n if (title === null) {\n return;\n }\n const rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style(\"opacity\", \".9\");\n tooltipElem.text(el.attr(\"title\")).style(\"left\", window.scrollX + rect.left + (rect.right - rect.left) / 2 + \"px\").style(\"top\", window.scrollY + rect.top - 14 + document.body.scrollTop + \"px\");\n tooltipElem.html(tooltipElem.html().replace(/<br\\/>/g, \"
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n};\nfunctions.push(setupToolTips);\nlet direction = \"TB\";\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\nconst addNamespace = function(id) {\n if (namespaces[id] !== void 0) {\n return;\n }\n namespaces[id] = {\n id,\n classes: {},\n children: {},\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + namespaceCounter\n };\n namespaceCounter++;\n};\nconst getNamespace = function(name) {\n return namespaces[name];\n};\nconst getNamespaces = function() {\n return namespaces;\n};\nconst addClassesToNamespace = function(id, classNames) {\n if (namespaces[id] !== void 0) {\n classNames.map((className) => {\n classes[className].parent = id;\n namespaces[id].classes[className] = classes[className];\n });\n }\n};\nconst db = {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: () => getConfig().class,\n addClass,\n bindFunctions,\n clear,\n getClass,\n getClasses,\n getNotes,\n addAnnotation,\n addNote,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n setLink,\n getTooltip,\n setTooltip,\n lookUpDomId,\n setDiagramTitle,\n getDiagramTitle,\n setClassLabel,\n addNamespace,\n addClassesToNamespace,\n getNamespace,\n getNamespaces\n};\nconst getStyles = (options) => `g.classGroup text {\n fill: ${options.nodeBorder || options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`;\nconst styles = getStyles;\nexport {\n db as d,\n parser$1 as p,\n styles as s\n};\n","import * as graphlib from \"dagre-d3-es/src/graphlib/index.js\";\nimport { curveLinear, select, selectAll } from \"d3\";\nimport { k as getStylesFromArray, l as log, m as evaluate, c as getConfig, e as common, n as interpolateToCurve, u as utils, o as setupGraphViewbox } from \"./mermaid-934d9bea.js\";\nimport { r as render } from \"./index-67a42d7d.js\";\nimport { addHtmlLabel } from \"dagre-d3-es/src/dagre-js/label/add-html-label.js\";\nimport * as khroma from \"khroma\";\nconst conf = {};\nconst setConf = function(cnf) {\n const keys = Object.keys(cnf);\n for (const key of keys) {\n conf[key] = cnf[key];\n }\n};\nconst addVertices = function(vert, g, svgId, root, doc, diagObj) {\n const svg = root.select(`[id=\"${svgId}\"]`);\n const keys = Object.keys(vert);\n keys.forEach(function(id) {\n const vertex = vert[id];\n let classStr = \"default\";\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(\" \");\n }\n classStr = classStr + \" flowchart-label\";\n const styles = getStylesFromArray(vertex.styles);\n let vertexText = vertex.text !== void 0 ? vertex.text : vertex.id;\n let vertexNode;\n log.info(\"vertex\", vertex, vertex.labelType);\n if (vertex.labelType === \"markdown\") {\n log.info(\"vertex\", vertex, vertex.labelType);\n } else {\n if (evaluate(getConfig().flowchart.htmlLabels)) {\n const node = {\n label: vertexText.replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n )\n };\n vertexNode = addHtmlLabel(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n const svgLabel = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", styles.labelStyle.replace(\"color:\", \"fill:\"));\n const rows = vertexText.split(common.lineBreakRegex);\n for (const row of rows) {\n const tspan = doc.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\", \"1\");\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n vertexNode = svgLabel;\n }\n }\n let radious = 0;\n let _shape = \"\";\n switch (vertex.type) {\n case \"round\":\n radious = 5;\n _shape = \"rect\";\n break;\n case \"square\":\n _shape = \"rect\";\n break;\n case \"diamond\":\n _shape = \"question\";\n break;\n case \"hexagon\":\n _shape = \"hexagon\";\n break;\n case \"odd\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"lean_right\":\n _shape = \"lean_right\";\n break;\n case \"lean_left\":\n _shape = \"lean_left\";\n break;\n case \"trapezoid\":\n _shape = \"trapezoid\";\n break;\n case \"inv_trapezoid\":\n _shape = \"inv_trapezoid\";\n break;\n case \"odd_right\":\n _shape = \"rect_left_inv_arrow\";\n break;\n case \"circle\":\n _shape = \"circle\";\n break;\n case \"ellipse\":\n _shape = \"ellipse\";\n break;\n case \"stadium\":\n _shape = \"stadium\";\n break;\n case \"subroutine\":\n _shape = \"subroutine\";\n break;\n case \"cylinder\":\n _shape = \"cylinder\";\n break;\n case \"group\":\n _shape = \"rect\";\n break;\n case \"doublecircle\":\n _shape = \"doublecircle\";\n break;\n default:\n _shape = \"rect\";\n }\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n labelType: vertex.labelType,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: diagObj.db.getTooltip(vertex.id) || \"\",\n domId: diagObj.db.lookUpDomId(vertex.id),\n haveCallback: vertex.haveCallback,\n width: vertex.type === \"group\" ? 500 : void 0,\n dir: vertex.dir,\n type: vertex.type,\n props: vertex.props,\n padding: getConfig().flowchart.padding\n });\n log.info(\"setNode\", {\n labelStyle: styles.labelStyle,\n labelType: vertex.labelType,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n domId: diagObj.db.lookUpDomId(vertex.id),\n width: vertex.type === \"group\" ? 500 : void 0,\n type: vertex.type,\n dir: vertex.dir,\n props: vertex.props,\n padding: getConfig().flowchart.padding\n });\n });\n};\nconst addEdges = function(edges, g, diagObj) {\n log.info(\"abc78 edges = \", edges);\n let cnt = 0;\n let linkIdCnt = {};\n let defaultStyle;\n let defaultLabelStyle;\n if (edges.defaultStyle !== void 0) {\n const defaultStyles = getStylesFromArray(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n edges.forEach(function(edge) {\n cnt++;\n const linkIdBase = \"L-\" + edge.start + \"-\" + edge.end;\n if (linkIdCnt[linkIdBase] === void 0) {\n linkIdCnt[linkIdBase] = 0;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n } else {\n linkIdCnt[linkIdBase]++;\n log.info(\"abc78 new entry\", linkIdBase, linkIdCnt[linkIdBase]);\n }\n let linkId = linkIdBase + \"-\" + linkIdCnt[linkIdBase];\n log.info(\"abc78 new link id to be used is\", linkIdBase, linkId, linkIdCnt[linkIdBase]);\n const linkNameStart = \"LS-\" + edge.start;\n const linkNameEnd = \"LE-\" + edge.end;\n const edgeData = { style: \"\", labelStyle: \"\" };\n edgeData.minlen = edge.length || 1;\n if (edge.type === \"arrow_open\") {\n edgeData.arrowhead = \"none\";\n } else {\n edgeData.arrowhead = \"normal\";\n }\n edgeData.arrowTypeStart = \"arrow_open\";\n edgeData.arrowTypeEnd = \"arrow_open\";\n switch (edge.type) {\n case \"double_arrow_cross\":\n edgeData.arrowTypeStart = \"arrow_cross\";\n case \"arrow_cross\":\n edgeData.arrowTypeEnd = \"arrow_cross\";\n break;\n case \"double_arrow_point\":\n edgeData.arrowTypeStart = \"arrow_point\";\n case \"arrow_point\":\n edgeData.arrowTypeEnd = \"arrow_point\";\n break;\n case \"double_arrow_circle\":\n edgeData.arrowTypeStart = \"arrow_circle\";\n case \"arrow_circle\":\n edgeData.arrowTypeEnd = \"arrow_circle\";\n break;\n }\n let style = \"\";\n let labelStyle = \"\";\n switch (edge.stroke) {\n case \"normal\":\n style = \"fill:none;\";\n if (defaultStyle !== void 0) {\n style = defaultStyle;\n }\n if (defaultLabelStyle !== void 0) {\n labelStyle = defaultLabelStyle;\n }\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"solid\";\n break;\n case \"dotted\":\n edgeData.thickness = \"normal\";\n edgeData.pattern = \"dotted\";\n edgeData.style = \"fill:none;stroke-width:2px;stroke-dasharray:3;\";\n break;\n case \"thick\":\n edgeData.thickness = \"thick\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 3.5px;fill:none;\";\n break;\n case \"invisible\":\n edgeData.thickness = \"invisible\";\n edgeData.pattern = \"solid\";\n edgeData.style = \"stroke-width: 0;fill:none;\";\n break;\n }\n if (edge.style !== void 0) {\n const styles = getStylesFromArray(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n }\n edgeData.style = edgeData.style += style;\n edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n if (edge.interpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edge.interpolate, curveLinear);\n } else if (edges.defaultInterpolate !== void 0) {\n edgeData.curve = interpolateToCurve(edges.defaultInterpolate, curveLinear);\n } else {\n edgeData.curve = interpolateToCurve(conf.curve, curveLinear);\n }\n if (edge.text === void 0) {\n if (edge.style !== void 0) {\n edgeData.arrowheadStyle = \"fill: #333\";\n }\n } else {\n edgeData.arrowheadStyle = \"fill: #333\";\n edgeData.labelpos = \"c\";\n }\n edgeData.labelType = edge.labelType;\n edgeData.label = edge.text.replace(common.lineBreakRegex, \"\\n\");\n if (edge.style === void 0) {\n edgeData.style = edgeData.style || \"stroke: #333; stroke-width: 1.5px;fill:none;\";\n }\n edgeData.labelStyle = edgeData.labelStyle.replace(\"color:\", \"fill:\");\n edgeData.id = linkId;\n edgeData.classes = \"flowchart-link \" + linkNameStart + \" \" + linkNameEnd;\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\nconst getClasses = function(text, diagObj) {\n return diagObj.db.getClasses();\n};\nconst draw = async function(text, id, _version, diagObj) {\n log.info(\"Drawing flowchart\");\n let dir = diagObj.db.getDirection();\n if (dir === void 0) {\n dir = \"TD\";\n }\n const { securityLevel, flowchart: conf2 } = getConfig();\n const nodeSpacing = conf2.nodeSpacing || 50;\n const rankSpacing = conf2.rankSpacing || 50;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const doc = securityLevel === \"sandbox\" ? sandboxElement.nodes()[0].contentDocument : document;\n const g = new graphlib.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 0,\n marginy: 0\n }).setDefaultEdgeLabel(function() {\n return {};\n });\n let subG;\n const subGraphs = diagObj.db.getSubGraphs();\n log.info(\"Subgraphs - \", subGraphs);\n for (let i2 = subGraphs.length - 1; i2 >= 0; i2--) {\n subG = subGraphs[i2];\n log.info(\"Subgraph - \", subG);\n diagObj.db.addVertex(\n subG.id,\n { text: subG.title, type: subG.labelType },\n \"group\",\n void 0,\n subG.classes,\n subG.dir\n );\n }\n const vert = diagObj.db.getVertices();\n const edges = diagObj.db.getEdges();\n log.info(\"Edges\", edges);\n let i = 0;\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n selectAll(\"cluster\").append(\"text\");\n for (let j = 0; j < subG.nodes.length; j++) {\n log.info(\"Setting up subgraphs\", subG.nodes[j], subG.id);\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n addVertices(vert, g, id, root, doc, diagObj);\n addEdges(edges, g);\n const svg = root.select(`[id=\"${id}\"]`);\n const element = root.select(\"#\" + id + \" g\");\n await render(element, g, [\"point\", \"circle\", \"cross\"], \"flowchart\", id);\n utils.insertTitle(svg, \"flowchartTitleText\", conf2.titleTopMargin, diagObj.db.getDiagramTitle());\n setupGraphViewbox(g, svg, conf2.diagramPadding, conf2.useMaxWidth);\n diagObj.db.indexNodes(\"subGraph\" + i);\n if (!conf2.htmlLabels) {\n const labels = doc.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n for (const label of labels) {\n const dim = label.getBBox();\n const rect = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n rect.setAttribute(\"rx\", 0);\n rect.setAttribute(\"ry\", 0);\n rect.setAttribute(\"width\", dim.width);\n rect.setAttribute(\"height\", dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n const keys = Object.keys(vert);\n keys.forEach(function(key) {\n const vertex = vert[key];\n if (vertex.link) {\n const node = select(\"#\" + id + ' [id=\"' + key + '\"]');\n if (node) {\n const link = doc.createElementNS(\"http://www.w3.org/2000/svg\", \"a\");\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"class\", vertex.classes.join(\" \"));\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"href\", vertex.link);\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"rel\", \"noopener\");\n if (securityLevel === \"sandbox\") {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", \"_top\");\n } else if (vertex.linkTarget) {\n link.setAttributeNS(\"http://www.w3.org/2000/svg\", \"target\", vertex.linkTarget);\n }\n const linkNode = node.insert(function() {\n return link;\n }, \":first-child\");\n const shape = node.select(\".label-container\");\n if (shape) {\n linkNode.append(function() {\n return shape.node();\n });\n }\n const label = node.select(\".label\");\n if (label) {\n linkNode.append(function() {\n return label.node();\n });\n }\n }\n }\n });\n};\nconst flowRendererV2 = {\n setConf,\n addVertices,\n addEdges,\n getClasses,\n draw\n};\nconst fade = (color, opacity) => {\n const channel = khroma.channel;\n const r = channel(color, \"r\");\n const g = channel(color, \"g\");\n const b = channel(color, \"b\");\n return khroma.rgba(r, g, b, opacity);\n};\nconst getStyles = (options) => `.label {\n font-family: ${options.fontFamily};\n color: ${options.nodeTextColor || options.textColor};\n }\n .cluster-label text {\n fill: ${options.titleColor};\n }\n .cluster-label span,p {\n color: ${options.titleColor};\n }\n\n .label text,span,p {\n fill: ${options.nodeTextColor || options.textColor};\n color: ${options.nodeTextColor || options.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${options.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${options.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${options.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${options.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${options.edgeLabelBackground};\n fill: ${options.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${fade(options.edgeLabelBackground, 0.5)};\n // background-color: \n }\n\n .cluster rect {\n fill: ${options.clusterBkg};\n stroke: ${options.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${options.titleColor};\n }\n\n .cluster span,p {\n color: ${options.titleColor};\n }\n /* .cluster div {\n color: ${options.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${options.fontFamily};\n font-size: 12px;\n background: ${options.tertiaryColor};\n border: 1px solid ${options.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\nconst flowStyles = getStyles;\nexport {\n flowStyles as a,\n flowRendererV2 as f\n};\n","import { c as getConfig, g as getAccTitle, s as setAccTitle, a as getAccDescription, b as setAccDescription, q as setDiagramTitle, r as getDiagramTitle, l as log, e as common, t as clear$1, G as generateId } from \"./mermaid-934d9bea.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 2], $V1 = [1, 3], $V2 = [1, 4], $V3 = [2, 4], $V4 = [1, 9], $V5 = [1, 11], $V6 = [1, 15], $V7 = [1, 16], $V8 = [1, 17], $V9 = [1, 18], $Va = [1, 30], $Vb = [1, 19], $Vc = [1, 20], $Vd = [1, 21], $Ve = [1, 22], $Vf = [1, 23], $Vg = [1, 25], $Vh = [1, 26], $Vi = [1, 27], $Vj = [1, 28], $Vk = [1, 29], $Vl = [1, 32], $Vm = [1, 33], $Vn = [1, 34], $Vo = [1, 35], $Vp = [1, 31], $Vq = [1, 4, 5, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], $Vr = [1, 4, 5, 13, 14, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], $Vs = [4, 5, 15, 16, 18, 20, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"SPACE\": 4, \"NL\": 5, \"SD\": 6, \"document\": 7, \"line\": 8, \"statement\": 9, \"classDefStatement\": 10, \"cssClassStatement\": 11, \"idStatement\": 12, \"DESCR\": 13, \"-->\": 14, \"HIDE_EMPTY\": 15, \"scale\": 16, \"WIDTH\": 17, \"COMPOSIT_STATE\": 18, \"STRUCT_START\": 19, \"STRUCT_STOP\": 20, \"STATE_DESCR\": 21, \"AS\": 22, \"ID\": 23, \"FORK\": 24, \"JOIN\": 25, \"CHOICE\": 26, \"CONCURRENT\": 27, \"note\": 28, \"notePosition\": 29, \"NOTE_TEXT\": 30, \"direction\": 31, \"acc_title\": 32, \"acc_title_value\": 33, \"acc_descr\": 34, \"acc_descr_value\": 35, \"acc_descr_multiline_value\": 36, \"classDef\": 37, \"CLASSDEF_ID\": 38, \"CLASSDEF_STYLEOPTS\": 39, \"DEFAULT\": 40, \"class\": 41, \"CLASSENTITY_IDS\": 42, \"STYLECLASS\": 43, \"direction_tb\": 44, \"direction_bt\": 45, \"direction_rl\": 46, \"direction_lr\": 47, \"eol\": 48, \";\": 49, \"EDGE_STATE\": 50, \"STYLE_SEPARATOR\": 51, \"left_of\": 52, \"right_of\": 53, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"SPACE\", 5: \"NL\", 6: \"SD\", 13: \"DESCR\", 14: \"-->\", 15: \"HIDE_EMPTY\", 16: \"scale\", 17: \"WIDTH\", 18: \"COMPOSIT_STATE\", 19: \"STRUCT_START\", 20: \"STRUCT_STOP\", 21: \"STATE_DESCR\", 22: \"AS\", 23: \"ID\", 24: \"FORK\", 25: \"JOIN\", 26: \"CHOICE\", 27: \"CONCURRENT\", 28: \"note\", 30: \"NOTE_TEXT\", 32: \"acc_title\", 33: \"acc_title_value\", 34: \"acc_descr\", 35: \"acc_descr_value\", 36: \"acc_descr_multiline_value\", 37: \"classDef\", 38: \"CLASSDEF_ID\", 39: \"CLASSDEF_STYLEOPTS\", 40: \"DEFAULT\", 41: \"class\", 42: \"CLASSENTITY_IDS\", 43: \"STYLECLASS\", 44: \"direction_tb\", 45: \"direction_bt\", 46: \"direction_rl\", 47: \"direction_lr\", 49: \";\", 50: \"EDGE_STATE\", 51: \"STYLE_SEPARATOR\", 52: \"left_of\", 53: \"right_of\" },\n productions_: [0, [3, 2], [3, 2], [3, 2], [7, 0], [7, 2], [8, 2], [8, 1], [8, 1], [9, 1], [9, 1], [9, 1], [9, 2], [9, 3], [9, 4], [9, 1], [9, 2], [9, 1], [9, 4], [9, 3], [9, 6], [9, 1], [9, 1], [9, 1], [9, 1], [9, 4], [9, 4], [9, 1], [9, 2], [9, 2], [9, 1], [10, 3], [10, 3], [11, 3], [31, 1], [31, 1], [31, 1], [31, 1], [48, 1], [48, 1], [12, 1], [12, 1], [12, 3], [12, 3], [29, 1], [29, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 3:\n yy.setRootDoc($$[$0]);\n return $$[$0];\n case 4:\n this.$ = [];\n break;\n case 5:\n if ($$[$0] != \"nl\") {\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n }\n break;\n case 6:\n case 7:\n this.$ = $$[$0];\n break;\n case 8:\n this.$ = \"nl\";\n break;\n case 11:\n this.$ = $$[$0];\n break;\n case 12:\n const stateStmt = $$[$0 - 1];\n stateStmt.description = yy.trimColon($$[$0]);\n this.$ = stateStmt;\n break;\n case 13:\n this.$ = { stmt: \"relation\", state1: $$[$0 - 2], state2: $$[$0] };\n break;\n case 14:\n const relDescription = yy.trimColon($$[$0]);\n this.$ = { stmt: \"relation\", state1: $$[$0 - 3], state2: $$[$0 - 1], description: relDescription };\n break;\n case 18:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: \"\", doc: $$[$0 - 1] };\n break;\n case 19:\n var id = $$[$0];\n var description = $$[$0 - 2].trim();\n if ($$[$0].match(\":\")) {\n var parts = $$[$0].split(\":\");\n id = parts[0];\n description = [description, parts[1]];\n }\n this.$ = { stmt: \"state\", id, type: \"default\", description };\n break;\n case 20:\n this.$ = { stmt: \"state\", id: $$[$0 - 3], type: \"default\", description: $$[$0 - 5], doc: $$[$0 - 1] };\n break;\n case 21:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"fork\" };\n break;\n case 22:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"join\" };\n break;\n case 23:\n this.$ = { stmt: \"state\", id: $$[$0], type: \"choice\" };\n break;\n case 24:\n this.$ = { stmt: \"state\", id: yy.getDividerId(), type: \"divider\" };\n break;\n case 25:\n this.$ = { stmt: \"state\", id: $$[$0 - 1].trim(), note: { position: $$[$0 - 2].trim(), text: $$[$0].trim() } };\n break;\n case 28:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 29:\n case 30:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 31:\n case 32:\n this.$ = { stmt: \"classDef\", id: $$[$0 - 1].trim(), classes: $$[$0].trim() };\n break;\n case 33:\n this.$ = { stmt: \"applyClass\", id: $$[$0 - 1].trim(), styleClass: $$[$0].trim() };\n break;\n case 34:\n yy.setDirection(\"TB\");\n this.$ = { stmt: \"dir\", value: \"TB\" };\n break;\n case 35:\n yy.setDirection(\"BT\");\n this.$ = { stmt: \"dir\", value: \"BT\" };\n break;\n case 36:\n yy.setDirection(\"RL\");\n this.$ = { stmt: \"dir\", value: \"RL\" };\n break;\n case 37:\n yy.setDirection(\"LR\");\n this.$ = { stmt: \"dir\", value: \"LR\" };\n break;\n case 40:\n case 41:\n this.$ = { stmt: \"state\", id: $$[$0].trim(), type: \"default\", description: \"\" };\n break;\n case 42:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n case 43:\n this.$ = { stmt: \"state\", id: $$[$0 - 2].trim(), classes: [$$[$0].trim()], type: \"default\", description: \"\" };\n break;\n }\n },\n table: [{ 3: 1, 4: $V0, 5: $V1, 6: $V2 }, { 1: [3] }, { 3: 5, 4: $V0, 5: $V1, 6: $V2 }, { 3: 6, 4: $V0, 5: $V1, 6: $V2 }, o([1, 4, 5, 15, 16, 18, 21, 23, 24, 25, 26, 27, 28, 32, 34, 36, 37, 41, 44, 45, 46, 47, 50], $V3, { 7: 7 }), { 1: [2, 1] }, { 1: [2, 2] }, { 1: [2, 3], 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 5]), { 9: 36, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 7]), o($Vq, [2, 8]), o($Vq, [2, 9]), o($Vq, [2, 10]), o($Vq, [2, 11], { 13: [1, 37], 14: [1, 38] }), o($Vq, [2, 15]), { 17: [1, 39] }, o($Vq, [2, 17], { 19: [1, 40] }), { 22: [1, 41] }, o($Vq, [2, 21]), o($Vq, [2, 22]), o($Vq, [2, 23]), o($Vq, [2, 24]), { 29: 42, 30: [1, 43], 52: [1, 44], 53: [1, 45] }, o($Vq, [2, 27]), { 33: [1, 46] }, { 35: [1, 47] }, o($Vq, [2, 30]), { 38: [1, 48], 40: [1, 49] }, { 42: [1, 50] }, o($Vr, [2, 40], { 51: [1, 51] }), o($Vr, [2, 41], { 51: [1, 52] }), o($Vq, [2, 34]), o($Vq, [2, 35]), o($Vq, [2, 36]), o($Vq, [2, 37]), o($Vq, [2, 6]), o($Vq, [2, 12]), { 12: 53, 23: $Va, 50: $Vp }, o($Vq, [2, 16]), o($Vs, $V3, { 7: 54 }), { 23: [1, 55] }, { 23: [1, 56] }, { 22: [1, 57] }, { 23: [2, 44] }, { 23: [2, 45] }, o($Vq, [2, 28]), o($Vq, [2, 29]), { 39: [1, 58] }, { 39: [1, 59] }, { 43: [1, 60] }, { 23: [1, 61] }, { 23: [1, 62] }, o($Vq, [2, 13], { 13: [1, 63] }), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 20: [1, 64], 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 19], { 19: [1, 65] }), { 30: [1, 66] }, { 23: [1, 67] }, o($Vq, [2, 31]), o($Vq, [2, 32]), o($Vq, [2, 33]), o($Vr, [2, 42]), o($Vr, [2, 43]), o($Vq, [2, 14]), o($Vq, [2, 18]), o($Vs, $V3, { 7: 68 }), o($Vq, [2, 25]), o($Vq, [2, 26]), { 4: $V4, 5: $V5, 8: 8, 9: 10, 10: 12, 11: 13, 12: 14, 15: $V6, 16: $V7, 18: $V8, 20: [1, 69], 21: $V9, 23: $Va, 24: $Vb, 25: $Vc, 26: $Vd, 27: $Ve, 28: $Vf, 31: 24, 32: $Vg, 34: $Vh, 36: $Vi, 37: $Vj, 41: $Vk, 44: $Vl, 45: $Vm, 46: $Vn, 47: $Vo, 50: $Vp }, o($Vq, [2, 20])],\n defaultActions: { 5: [2, 1], 6: [2, 2], 44: [2, 44], 45: [2, 45] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n return 40;\n case 1:\n return 44;\n case 2:\n return 45;\n case 3:\n return 46;\n case 4:\n return 47;\n case 5:\n break;\n case 6:\n break;\n case 7:\n return 5;\n case 8:\n break;\n case 9:\n break;\n case 10:\n break;\n case 11:\n break;\n case 12:\n this.pushState(\"SCALE\");\n return 16;\n case 13:\n return 17;\n case 14:\n this.popState();\n break;\n case 15:\n this.begin(\"acc_title\");\n return 32;\n case 16:\n this.popState();\n return \"acc_title_value\";\n case 17:\n this.begin(\"acc_descr\");\n return 34;\n case 18:\n this.popState();\n return \"acc_descr_value\";\n case 19:\n this.begin(\"acc_descr_multiline\");\n break;\n case 20:\n this.popState();\n break;\n case 21:\n return \"acc_descr_multiline_value\";\n case 22:\n this.pushState(\"CLASSDEF\");\n return 37;\n case 23:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return \"DEFAULT_CLASSDEF_ID\";\n case 24:\n this.popState();\n this.pushState(\"CLASSDEFID\");\n return 38;\n case 25:\n this.popState();\n return 39;\n case 26:\n this.pushState(\"CLASS\");\n return 41;\n case 27:\n this.popState();\n this.pushState(\"CLASS_STYLE\");\n return 42;\n case 28:\n this.popState();\n return 43;\n case 29:\n this.pushState(\"SCALE\");\n return 16;\n case 30:\n return 17;\n case 31:\n this.popState();\n break;\n case 32:\n this.pushState(\"STATE\");\n break;\n case 33:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 24;\n case 34:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n case 35:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 26;\n case 36:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 24;\n case 37:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 25;\n case 38:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -10).trim();\n return 26;\n case 39:\n return 44;\n case 40:\n return 45;\n case 41:\n return 46;\n case 42:\n return 47;\n case 43:\n this.pushState(\"STATE_STRING\");\n break;\n case 44:\n this.pushState(\"STATE_ID\");\n return \"AS\";\n case 45:\n this.popState();\n return \"ID\";\n case 46:\n this.popState();\n break;\n case 47:\n return \"STATE_DESCR\";\n case 48:\n return 18;\n case 49:\n this.popState();\n break;\n case 50:\n this.popState();\n this.pushState(\"struct\");\n return 19;\n case 51:\n break;\n case 52:\n this.popState();\n return 20;\n case 53:\n break;\n case 54:\n this.begin(\"NOTE\");\n return 28;\n case 55:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 52;\n case 56:\n this.popState();\n this.pushState(\"NOTE_ID\");\n return 53;\n case 57:\n this.popState();\n this.pushState(\"FLOATING_NOTE\");\n break;\n case 58:\n this.popState();\n this.pushState(\"FLOATING_NOTE_ID\");\n return \"AS\";\n case 59:\n break;\n case 60:\n return \"NOTE_TEXT\";\n case 61:\n this.popState();\n return \"ID\";\n case 62:\n this.popState();\n this.pushState(\"NOTE_TEXT\");\n return 23;\n case 63:\n this.popState();\n yy_.yytext = yy_.yytext.substr(2).trim();\n return 30;\n case 64:\n this.popState();\n yy_.yytext = yy_.yytext.slice(0, -8).trim();\n return 30;\n case 65:\n return 6;\n case 66:\n return 6;\n case 67:\n return 15;\n case 68:\n return 50;\n case 69:\n return 23;\n case 70:\n yy_.yytext = yy_.yytext.trim();\n return 13;\n case 71:\n return 14;\n case 72:\n return 27;\n case 73:\n return 51;\n case 74:\n return 5;\n case 75:\n return \"INVALID\";\n }\n },\n rules: [/^(?:default\\b)/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:[\\s]+)/i, /^(?:((?!\\n)\\s)+)/i, /^(?:#[^\\n]*)/i, /^(?:%[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:classDef\\s+)/i, /^(?:DEFAULT\\s+)/i, /^(?:\\w+\\s+)/i, /^(?:[^\\n]*)/i, /^(?:class\\s+)/i, /^(?:(\\w+)+((,\\s*\\w+)*))/i, /^(?:[^\\n]*)/i, /^(?:scale\\s+)/i, /^(?:\\d+)/i, /^(?:\\s+width\\b)/i, /^(?:state\\s+)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*<>)/i, /^(?:.*\\[\\[fork\\]\\])/i, /^(?:.*\\[\\[join\\]\\])/i, /^(?:.*\\[\\[choice\\]\\])/i, /^(?:.*direction\\s+TB[^\\n]*)/i, /^(?:.*direction\\s+BT[^\\n]*)/i, /^(?:.*direction\\s+RL[^\\n]*)/i, /^(?:.*direction\\s+LR[^\\n]*)/i, /^(?:[\"])/i, /^(?:\\s*as\\s+)/i, /^(?:[^\\n\\{]*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n\\s\\{]+)/i, /^(?:\\n)/i, /^(?:\\{)/i, /^(?:%%(?!\\{)[^\\n]*)/i, /^(?:\\})/i, /^(?:[\\n])/i, /^(?:note\\s+)/i, /^(?:left of\\b)/i, /^(?:right of\\b)/i, /^(?:\")/i, /^(?:\\s*as\\s*)/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:[^\\n]*)/i, /^(?:\\s*[^:\\n\\s\\-]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:[\\s\\S]*?end note\\b)/i, /^(?:stateDiagram\\s+)/i, /^(?:stateDiagram-v2\\s+)/i, /^(?:hide empty description\\b)/i, /^(?:\\[\\*\\])/i, /^(?:[^:\\n\\s\\-\\{]+)/i, /^(?:\\s*:[^:\\n;]+)/i, /^(?:-->)/i, /^(?:--)/i, /^(?::::)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"LINE\": { \"rules\": [9, 10], \"inclusive\": false }, \"struct\": { \"rules\": [9, 10, 22, 26, 32, 39, 40, 41, 42, 51, 52, 53, 54, 68, 69, 70, 71, 72], \"inclusive\": false }, \"FLOATING_NOTE_ID\": { \"rules\": [61], \"inclusive\": false }, \"FLOATING_NOTE\": { \"rules\": [58, 59, 60], \"inclusive\": false }, \"NOTE_TEXT\": { \"rules\": [63, 64], \"inclusive\": false }, \"NOTE_ID\": { \"rules\": [62], \"inclusive\": false }, \"NOTE\": { \"rules\": [55, 56, 57], \"inclusive\": false }, \"CLASS_STYLE\": { \"rules\": [28], \"inclusive\": false }, \"CLASS\": { \"rules\": [27], \"inclusive\": false }, \"CLASSDEFID\": { \"rules\": [25], \"inclusive\": false }, \"CLASSDEF\": { \"rules\": [23, 24], \"inclusive\": false }, \"acc_descr_multiline\": { \"rules\": [20, 21], \"inclusive\": false }, \"acc_descr\": { \"rules\": [18], \"inclusive\": false }, \"acc_title\": { \"rules\": [16], \"inclusive\": false }, \"SCALE\": { \"rules\": [13, 14, 30, 31], \"inclusive\": false }, \"ALIAS\": { \"rules\": [], \"inclusive\": false }, \"STATE_ID\": { \"rules\": [45], \"inclusive\": false }, \"STATE_STRING\": { \"rules\": [46, 47], \"inclusive\": false }, \"FORK_STATE\": { \"rules\": [], \"inclusive\": false }, \"STATE\": { \"rules\": [9, 10, 33, 34, 35, 36, 37, 38, 43, 44, 48, 49, 50], \"inclusive\": false }, \"ID\": { \"rules\": [9, 10], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 15, 17, 19, 22, 26, 29, 32, 50, 54, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nconst DEFAULT_DIAGRAM_DIRECTION = \"LR\";\nconst DEFAULT_NESTED_DOC_DIR = \"TB\";\nconst STMT_STATE = \"state\";\nconst STMT_RELATION = \"relation\";\nconst STMT_CLASSDEF = \"classDef\";\nconst STMT_APPLYCLASS = \"applyClass\";\nconst DEFAULT_STATE_TYPE = \"default\";\nconst DIVIDER_TYPE = \"divider\";\nconst START_NODE = \"[*]\";\nconst START_TYPE = \"start\";\nconst END_NODE = START_NODE;\nconst END_TYPE = \"end\";\nconst COLOR_KEYWORD = \"color\";\nconst FILL_KEYWORD = \"fill\";\nconst BG_FILL = \"bgFill\";\nconst STYLECLASS_SEP = \",\";\nfunction newClassesList() {\n return {};\n}\nlet direction = DEFAULT_DIAGRAM_DIRECTION;\nlet rootDoc = [];\nlet classes = newClassesList();\nconst newDoc = () => {\n return {\n relations: [],\n states: {},\n documents: {}\n };\n};\nlet documents = {\n root: newDoc()\n};\nlet currentDocument = documents.root;\nlet startEndCount = 0;\nlet dividerCnt = 0;\nconst lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nconst relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n};\nconst clone = (o) => JSON.parse(JSON.stringify(o));\nconst setRootDoc = (o) => {\n log.info(\"Setting root doc\", o);\n rootDoc = o;\n};\nconst getRootDoc = () => rootDoc;\nconst docTranslator = (parent, node, first) => {\n if (node.stmt === STMT_RELATION) {\n docTranslator(parent, node.state1, true);\n docTranslator(parent, node.state2, false);\n } else {\n if (node.stmt === STMT_STATE) {\n if (node.id === \"[*]\") {\n node.id = first ? parent.id + \"_start\" : parent.id + \"_end\";\n node.start = first;\n } else {\n node.id = node.id.trim();\n }\n }\n if (node.doc) {\n const doc = [];\n let currentDoc = [];\n let i;\n for (i = 0; i < node.doc.length; i++) {\n if (node.doc[i].type === DIVIDER_TYPE) {\n const newNode = clone(node.doc[i]);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(node.doc[i]);\n }\n }\n if (doc.length > 0 && currentDoc.length > 0) {\n const newNode = {\n stmt: STMT_STATE,\n id: generateId(),\n type: \"divider\",\n doc: clone(currentDoc)\n };\n doc.push(clone(newNode));\n node.doc = doc;\n }\n node.doc.forEach((docNode) => docTranslator(node, docNode, true));\n }\n }\n};\nconst getRootDocV2 = () => {\n docTranslator({ id: \"root\" }, { id: \"root\", doc: rootDoc }, true);\n return { id: \"root\", doc: rootDoc };\n};\nconst extract = (_doc) => {\n let doc;\n if (_doc.doc) {\n doc = _doc.doc;\n } else {\n doc = _doc;\n }\n log.info(doc);\n clear(true);\n log.info(\"Extract\", doc);\n doc.forEach((item) => {\n switch (item.stmt) {\n case STMT_STATE:\n addState(\n item.id.trim(),\n item.type,\n item.doc,\n item.description,\n item.note,\n item.classes,\n item.styles,\n item.textStyles\n );\n break;\n case STMT_RELATION:\n addRelation(item.state1, item.state2, item.description);\n break;\n case STMT_CLASSDEF:\n addStyleClass(item.id.trim(), item.classes);\n break;\n case STMT_APPLYCLASS:\n setCssClass(item.id.trim(), item.styleClass);\n break;\n }\n });\n};\nconst addState = function(id, type = DEFAULT_STATE_TYPE, doc = null, descr = null, note = null, classes2 = null, styles2 = null, textStyles = null) {\n const trimmedId = id == null ? void 0 : id.trim();\n if (currentDocument.states[trimmedId] === void 0) {\n log.info(\"Adding state \", trimmedId, descr);\n currentDocument.states[trimmedId] = {\n id: trimmedId,\n descriptions: [],\n type,\n doc,\n note,\n classes: [],\n styles: [],\n textStyles: []\n };\n } else {\n if (!currentDocument.states[trimmedId].doc) {\n currentDocument.states[trimmedId].doc = doc;\n }\n if (!currentDocument.states[trimmedId].type) {\n currentDocument.states[trimmedId].type = type;\n }\n }\n if (descr) {\n log.info(\"Setting state description\", trimmedId, descr);\n if (typeof descr === \"string\") {\n addDescription(trimmedId, descr.trim());\n }\n if (typeof descr === \"object\") {\n descr.forEach((des) => addDescription(trimmedId, des.trim()));\n }\n }\n if (note) {\n currentDocument.states[trimmedId].note = note;\n currentDocument.states[trimmedId].note.text = common.sanitizeText(\n currentDocument.states[trimmedId].note.text,\n getConfig()\n );\n }\n if (classes2) {\n log.info(\"Setting state classes\", trimmedId, classes2);\n const classesList = typeof classes2 === \"string\" ? [classes2] : classes2;\n classesList.forEach((klass) => setCssClass(trimmedId, klass.trim()));\n }\n if (styles2) {\n log.info(\"Setting state styles\", trimmedId, styles2);\n const stylesList = typeof styles2 === \"string\" ? [styles2] : styles2;\n stylesList.forEach((style) => setStyle(trimmedId, style.trim()));\n }\n if (textStyles) {\n log.info(\"Setting state styles\", trimmedId, styles2);\n const textStylesList = typeof textStyles === \"string\" ? [textStyles] : textStyles;\n textStylesList.forEach((textStyle) => setTextStyle(trimmedId, textStyle.trim()));\n }\n};\nconst clear = function(saveCommon) {\n documents = {\n root: newDoc()\n };\n currentDocument = documents.root;\n startEndCount = 0;\n classes = newClassesList();\n if (!saveCommon) {\n clear$1();\n }\n};\nconst getState = function(id) {\n return currentDocument.states[id];\n};\nconst getStates = function() {\n return currentDocument.states;\n};\nconst logDocuments = function() {\n log.info(\"Documents = \", documents);\n};\nconst getRelations = function() {\n return currentDocument.relations;\n};\nfunction startIdIfNeeded(id = \"\") {\n let fixedId = id;\n if (id === START_NODE) {\n startEndCount++;\n fixedId = `${START_TYPE}${startEndCount}`;\n }\n return fixedId;\n}\nfunction startTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === START_NODE ? START_TYPE : type;\n}\nfunction endIdIfNeeded(id = \"\") {\n let fixedId = id;\n if (id === END_NODE) {\n startEndCount++;\n fixedId = `${END_TYPE}${startEndCount}`;\n }\n return fixedId;\n}\nfunction endTypeIfNeeded(id = \"\", type = DEFAULT_STATE_TYPE) {\n return id === END_NODE ? END_TYPE : type;\n}\nfunction addRelationObjs(item1, item2, relationTitle) {\n let id1 = startIdIfNeeded(item1.id.trim());\n let type1 = startTypeIfNeeded(item1.id.trim(), item1.type);\n let id2 = startIdIfNeeded(item2.id.trim());\n let type2 = startTypeIfNeeded(item2.id.trim(), item2.type);\n addState(\n id1,\n type1,\n item1.doc,\n item1.description,\n item1.note,\n item1.classes,\n item1.styles,\n item1.textStyles\n );\n addState(\n id2,\n type2,\n item2.doc,\n item2.description,\n item2.note,\n item2.classes,\n item2.styles,\n item2.textStyles\n );\n currentDocument.relations.push({\n id1,\n id2,\n relationTitle: common.sanitizeText(relationTitle, getConfig())\n });\n}\nconst addRelation = function(item1, item2, title) {\n if (typeof item1 === \"object\") {\n addRelationObjs(item1, item2, title);\n } else {\n const id1 = startIdIfNeeded(item1.trim());\n const type1 = startTypeIfNeeded(item1);\n const id2 = endIdIfNeeded(item2.trim());\n const type2 = endTypeIfNeeded(item2);\n addState(id1, type1);\n addState(id2, type2);\n currentDocument.relations.push({\n id1,\n id2,\n title: common.sanitizeText(title, getConfig())\n });\n }\n};\nconst addDescription = function(id, descr) {\n const theState = currentDocument.states[id];\n const _descr = descr.startsWith(\":\") ? descr.replace(\":\", \"\").trim() : descr;\n theState.descriptions.push(common.sanitizeText(_descr, getConfig()));\n};\nconst cleanupLabel = function(label) {\n if (label.substring(0, 1) === \":\") {\n return label.substr(2).trim();\n } else {\n return label.trim();\n }\n};\nconst getDividerId = () => {\n dividerCnt++;\n return \"divider-id-\" + dividerCnt;\n};\nconst addStyleClass = function(id, styleAttributes = \"\") {\n if (classes[id] === void 0) {\n classes[id] = { id, styles: [], textStyles: [] };\n }\n const foundClass = classes[id];\n if (styleAttributes !== void 0 && styleAttributes !== null) {\n styleAttributes.split(STYLECLASS_SEP).forEach((attrib) => {\n const fixedAttrib = attrib.replace(/([^;]*);/, \"$1\").trim();\n if (attrib.match(COLOR_KEYWORD)) {\n const newStyle1 = fixedAttrib.replace(FILL_KEYWORD, BG_FILL);\n const newStyle2 = newStyle1.replace(COLOR_KEYWORD, FILL_KEYWORD);\n foundClass.textStyles.push(newStyle2);\n }\n foundClass.styles.push(fixedAttrib);\n });\n }\n};\nconst getClasses = function() {\n return classes;\n};\nconst setCssClass = function(itemIds, cssClassName) {\n itemIds.split(\",\").forEach(function(id) {\n let foundState = getState(id);\n if (foundState === void 0) {\n const trimmedId = id.trim();\n addState(trimmedId);\n foundState = getState(trimmedId);\n }\n foundState.classes.push(cssClassName);\n });\n};\nconst setStyle = function(itemId, styleText) {\n const item = getState(itemId);\n if (item !== void 0) {\n item.textStyles.push(styleText);\n }\n};\nconst setTextStyle = function(itemId, cssClassName) {\n const item = getState(itemId);\n if (item !== void 0) {\n item.textStyles.push(cssClassName);\n }\n};\nconst getDirection = () => direction;\nconst setDirection = (dir) => {\n direction = dir;\n};\nconst trimColon = (str) => str && str[0] === \":\" ? str.substr(1).trim() : str.trim();\nconst db = {\n getConfig: () => getConfig().state,\n addState,\n clear,\n getState,\n getStates,\n getRelations,\n getClasses,\n getDirection,\n addRelation,\n getDividerId,\n setDirection,\n cleanupLabel,\n lineType,\n relationType,\n logDocuments,\n getRootDoc,\n setRootDoc,\n getRootDocV2,\n extract,\n trimColon,\n getAccTitle,\n setAccTitle,\n getAccDescription,\n setAccDescription,\n addStyleClass,\n setCssClass,\n addDescription,\n setDiagramTitle,\n getDiagramTitle\n};\nconst getStyles = (options) => `\ndefs #statediagram-barbEnd {\n fill: ${options.transitionColor};\n stroke: ${options.transitionColor};\n }\ng.stateGroup text {\n fill: ${options.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${options.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${options.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${options.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${options.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${options.noteBorderColor};\n fill: ${options.noteBkgColor};\n\n text {\n fill: ${options.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${options.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${options.transitionLabelColor || options.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${options.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${options.specialStateColor};\n stroke: ${options.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${options.innerEndBackground};\n stroke: ${options.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${options.compositeBackground || options.background};\n // stroke: ${options.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${options.stateBkg || options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${options.mainBkg};\n stroke: ${options.stateBorder || options.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${options.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${options.compositeTitleBackground};\n stroke: ${options.stateBorder || options.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${options.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${options.stateBorder || options.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${options.compositeBackground || options.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${options.altBackground ? options.altBackground : \"#efefef\"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${options.altBackground ? options.altBackground : \"#efefef\"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${options.noteBkgColor};\n stroke: ${options.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${options.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${options.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${options.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${options.lineColor};\n stroke: ${options.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`;\nconst styles = getStyles;\nexport {\n DEFAULT_STATE_TYPE as D,\n STMT_RELATION as S,\n DIVIDER_TYPE as a,\n STMT_STATE as b,\n DEFAULT_NESTED_DOC_DIR as c,\n db as d,\n parser$1 as p,\n styles as s\n};\n","import { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport { H as lineBreakRegex } from \"./mermaid-934d9bea.js\";\nconst drawRect = (element, rectData) => {\n const rectElement = element.append(\"rect\");\n rectElement.attr(\"x\", rectData.x);\n rectElement.attr(\"y\", rectData.y);\n rectElement.attr(\"fill\", rectData.fill);\n rectElement.attr(\"stroke\", rectData.stroke);\n rectElement.attr(\"width\", rectData.width);\n rectElement.attr(\"height\", rectData.height);\n rectData.rx !== void 0 && rectElement.attr(\"rx\", rectData.rx);\n rectData.ry !== void 0 && rectElement.attr(\"ry\", rectData.ry);\n if (rectData.attrs !== void 0) {\n for (const attrKey in rectData.attrs) {\n rectElement.attr(attrKey, rectData.attrs[attrKey]);\n }\n }\n rectData.class !== void 0 && rectElement.attr(\"class\", rectData.class);\n return rectElement;\n};\nconst drawBackgroundRect = (element, bounds) => {\n const rectData = {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n stroke: bounds.stroke,\n class: \"rect\"\n };\n const rectElement = drawRect(element, rectData);\n rectElement.lower();\n};\nconst drawText = (element, textData) => {\n const nText = textData.text.replace(lineBreakRegex, \" \");\n const textElem = element.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n textData.class !== void 0 && textElem.attr(\"class\", textData.class);\n const tspan = textElem.append(\"tspan\");\n tspan.attr(\"x\", textData.x + textData.textMargin * 2);\n tspan.text(nText);\n return textElem;\n};\nconst drawImage = (elem, x, y, link) => {\n const imageElement = elem.append(\"image\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", sanitizedLink);\n};\nconst drawEmbeddedImage = (element, x, y, link) => {\n const imageElement = element.append(\"use\");\n imageElement.attr(\"x\", x);\n imageElement.attr(\"y\", y);\n const sanitizedLink = sanitizeUrl(link);\n imageElement.attr(\"xlink:href\", `#${sanitizedLink}`);\n};\nconst getNoteRect = () => {\n const noteRectData = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n fill: \"#EDF2AE\",\n stroke: \"#666\",\n anchor: \"start\",\n rx: 0,\n ry: 0\n };\n return noteRectData;\n};\nconst getTextObj = () => {\n const testObject = {\n x: 0,\n y: 0,\n width: 100,\n height: 100,\n \"text-anchor\": \"start\",\n style: \"#666\",\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true\n };\n return testObject;\n};\nexport {\n drawBackgroundRect as a,\n drawEmbeddedImage as b,\n drawImage as c,\n drawRect as d,\n getTextObj as e,\n drawText as f,\n getNoteRect as g\n};\n","import { K as commonDb, t as clear$1, c as getConfig, l as log, o as setupGraphViewbox } from \"./mermaid-934d9bea.js\";\nimport { select, arc } from \"d3\";\nimport { isDark, lighten, darken } from \"khroma\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [6, 8, 10, 11, 12, 14, 16, 17, 20, 21], $V1 = [1, 9], $V2 = [1, 10], $V3 = [1, 11], $V4 = [1, 12], $V5 = [1, 13], $V6 = [1, 16], $V7 = [1, 17];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"timeline\": 4, \"document\": 5, \"EOF\": 6, \"line\": 7, \"SPACE\": 8, \"statement\": 9, \"NEWLINE\": 10, \"title\": 11, \"acc_title\": 12, \"acc_title_value\": 13, \"acc_descr\": 14, \"acc_descr_value\": 15, \"acc_descr_multiline_value\": 16, \"section\": 17, \"period_statement\": 18, \"event_statement\": 19, \"period\": 20, \"event\": 21, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 4: \"timeline\", 6: \"EOF\", 8: \"SPACE\", 10: \"NEWLINE\", 11: \"title\", 12: \"acc_title\", 13: \"acc_title_value\", 14: \"acc_descr\", 15: \"acc_descr_value\", 16: \"acc_descr_multiline_value\", 17: \"section\", 20: \"period\", 21: \"event\" },\n productions_: [0, [3, 3], [5, 0], [5, 2], [7, 2], [7, 1], [7, 1], [7, 1], [9, 1], [9, 2], [9, 2], [9, 1], [9, 1], [9, 1], [9, 1], [18, 1], [19, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n case 2:\n this.$ = [];\n break;\n case 3:\n $$[$0 - 1].push($$[$0]);\n this.$ = $$[$0 - 1];\n break;\n case 4:\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n case 7:\n this.$ = [];\n break;\n case 8:\n yy.getCommonDb().setDiagramTitle($$[$0].substr(6));\n this.$ = $$[$0].substr(6);\n break;\n case 9:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccTitle(this.$);\n break;\n case 10:\n case 11:\n this.$ = $$[$0].trim();\n yy.getCommonDb().setAccDescription(this.$);\n break;\n case 12:\n yy.addSection($$[$0].substr(8));\n this.$ = $$[$0].substr(8);\n break;\n case 15:\n yy.addTask($$[$0], 0, \"\");\n this.$ = $$[$0];\n break;\n case 16:\n yy.addEvent($$[$0].substr(2));\n this.$ = $$[$0];\n break;\n }\n },\n table: [{ 3: 1, 4: [1, 2] }, { 1: [3] }, o($V0, [2, 2], { 5: 3 }), { 6: [1, 4], 7: 5, 8: [1, 6], 9: 7, 10: [1, 8], 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o($V0, [2, 7], { 1: [2, 1] }), o($V0, [2, 3]), { 9: 18, 11: $V1, 12: $V2, 14: $V3, 16: $V4, 17: $V5, 18: 14, 19: 15, 20: $V6, 21: $V7 }, o($V0, [2, 5]), o($V0, [2, 6]), o($V0, [2, 8]), { 13: [1, 19] }, { 15: [1, 20] }, o($V0, [2, 11]), o($V0, [2, 12]), o($V0, [2, 13]), o($V0, [2, 14]), o($V0, [2, 15]), o($V0, [2, 16]), o($V0, [2, 4]), o($V0, [2, 9]), o($V0, [2, 10])],\n defaultActions: {},\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n return 10;\n case 3:\n break;\n case 4:\n break;\n case 5:\n return 4;\n case 6:\n return 11;\n case 7:\n this.begin(\"acc_title\");\n return 12;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.begin(\"acc_descr\");\n return 14;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.begin(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n return 17;\n case 15:\n return 21;\n case 16:\n return 20;\n case 17:\n return 6;\n case 18:\n return \"INVALID\";\n }\n },\n rules: [/^(?:%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:[\\n]+)/i, /^(?:\\s+)/i, /^(?:#[^\\n]*)/i, /^(?:timeline\\b)/i, /^(?:title\\s[^#\\n;]+)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:[\\}])/i, /^(?:[^\\}]*)/i, /^(?:section\\s[^#:\\n;]+)/i, /^(?::\\s[^#:\\n;]+)/i, /^(?:[^#:\\n;]+)/i, /^(?:$)/i, /^(?:.)/i],\n conditions: { \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nlet currentSection = \"\";\nlet currentTaskId = 0;\nconst sections = [];\nconst tasks = [];\nconst rawTasks = [];\nconst getCommonDb = () => commonDb;\nconst clear = function() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = \"\";\n rawTasks.length = 0;\n clear$1();\n};\nconst addSection = function(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nconst getSections = function() {\n return sections;\n};\nconst getTasks = function() {\n let allItemsProcessed = compileTasks();\n const maxDepth = 100;\n let iterationCount = 0;\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n tasks.push(...rawTasks);\n return tasks;\n};\nconst addTask = function(period, length, event) {\n const rawTask = {\n id: currentTaskId++,\n section: currentSection,\n type: currentSection,\n task: period,\n score: length ? length : 0,\n //if event is defined, then add it the events array\n events: event ? [event] : []\n };\n rawTasks.push(rawTask);\n};\nconst addEvent = function(event) {\n const currentTask = rawTasks.find((task) => task.id === currentTaskId - 1);\n currentTask.events.push(event);\n};\nconst addTaskOrg = function(descr) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\nconst compileTasks = function() {\n const compileTask = function(pos) {\n return rawTasks[pos].processed;\n };\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\nconst timelineDb = {\n clear,\n getCommonDb,\n addSection,\n getSections,\n getTasks,\n addTask,\n addTaskOrg,\n addEvent\n};\nconst db = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n addEvent,\n addSection,\n addTask,\n addTaskOrg,\n clear,\n default: timelineDb,\n getCommonDb,\n getSections,\n getTasks\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst MAX_SECTIONS = 12;\nconst drawRect = function(elem, rectData) {\n const rectElem = elem.append(\"rect\");\n rectElem.attr(\"x\", rectData.x);\n rectElem.attr(\"y\", rectData.y);\n rectElem.attr(\"fill\", rectData.fill);\n rectElem.attr(\"stroke\", rectData.stroke);\n rectElem.attr(\"width\", rectData.width);\n rectElem.attr(\"height\", rectData.height);\n rectElem.attr(\"rx\", rectData.rx);\n rectElem.attr(\"ry\", rectData.ry);\n if (rectData.class !== void 0) {\n rectElem.attr(\"class\", rectData.class);\n }\n return rectElem;\n};\nconst drawFace = function(element, faceData) {\n const radius = 15;\n const circleElement = element.append(\"circle\").attr(\"cx\", faceData.cx).attr(\"cy\", faceData.cy).attr(\"class\", \"face\").attr(\"r\", radius).attr(\"stroke-width\", 2).attr(\"overflow\", \"visible\");\n const face = element.append(\"g\");\n face.append(\"circle\").attr(\"cx\", faceData.cx - radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n face.append(\"circle\").attr(\"cx\", faceData.cx + radius / 3).attr(\"cy\", faceData.cy - radius / 3).attr(\"r\", 1.5).attr(\"stroke-width\", 2).attr(\"fill\", \"#666\").attr(\"stroke\", \"#666\");\n function smile(face2) {\n const arc$1 = arc().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 2) + \")\");\n }\n function sad(face2) {\n const arc$1 = arc().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2);\n face2.append(\"path\").attr(\"class\", \"mouth\").attr(\"d\", arc$1).attr(\"transform\", \"translate(\" + faceData.cx + \",\" + (faceData.cy + 7) + \")\");\n }\n function ambivalent(face2) {\n face2.append(\"line\").attr(\"class\", \"mouth\").attr(\"stroke\", 2).attr(\"x1\", faceData.cx - 5).attr(\"y1\", faceData.cy + 7).attr(\"x2\", faceData.cx + 5).attr(\"y2\", faceData.cy + 7).attr(\"class\", \"mouth\").attr(\"stroke-width\", \"1px\").attr(\"stroke\", \"#666\");\n }\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n return circleElement;\n};\nconst drawCircle = function(element, circleData) {\n const circleElement = element.append(\"circle\");\n circleElement.attr(\"cx\", circleData.cx);\n circleElement.attr(\"cy\", circleData.cy);\n circleElement.attr(\"class\", \"actor-\" + circleData.pos);\n circleElement.attr(\"fill\", circleData.fill);\n circleElement.attr(\"stroke\", circleData.stroke);\n circleElement.attr(\"r\", circleData.r);\n if (circleElement.class !== void 0) {\n circleElement.attr(\"class\", circleElement.class);\n }\n if (circleData.title !== void 0) {\n circleElement.append(\"title\").text(circleData.title);\n }\n return circleElement;\n};\nconst drawText = function(elem, textData) {\n const nText = textData.text.replace(//gi, \" \");\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.attr(\"class\", \"legend\");\n textElem.style(\"text-anchor\", textData.anchor);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.text(nText);\n return textElem;\n};\nconst drawLabel = function(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + \",\" + y + \" \" + (x + width) + \",\" + y + \" \" + (x + width) + \",\" + (y + height - cut) + \" \" + (x + width - cut * 1.2) + \",\" + (y + height) + \" \" + x + \",\" + (y + height);\n }\n const polygon = elem.append(\"polygon\");\n polygon.attr(\"points\", genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr(\"class\", \"labelBox\");\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\nconst drawSection = function(elem, section, conf) {\n const g = elem.append(\"g\");\n const rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"journey-section section-type-\" + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n _drawTextCandidateFunc(conf)(\n section.text,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"journey-section section-type-\" + section.num },\n conf,\n section.colour\n );\n};\nlet taskCount = -1;\nconst drawTask = function(elem, task, conf) {\n const center = task.x + conf.width / 2;\n const g = elem.append(\"g\");\n taskCount++;\n const maxHeight = 300 + 5 * 30;\n g.append(\"line\").attr(\"id\", \"task\" + taskCount).attr(\"x1\", center).attr(\"y1\", task.y).attr(\"x2\", center).attr(\"y2\", maxHeight).attr(\"class\", \"task-line\").attr(\"stroke-width\", \"1px\").attr(\"stroke-dasharray\", \"4 2\").attr(\"stroke\", \"#666\");\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n const rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = \"task task-type-\" + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n task.x + 14;\n _drawTextCandidateFunc(conf)(\n task.task,\n g,\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n { class: \"task\" },\n conf,\n task.colour\n );\n};\nconst drawBackgroundRect = function(elem, bounds) {\n const rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: \"rect\"\n });\n rectElem.lower();\n};\nconst getTextObj = function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n \"text-anchor\": \"start\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\nconst getNoteRect = function() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: \"start\",\n height: 100,\n rx: 0,\n ry: 0\n };\n};\nconst _drawTextCandidateFunc = function() {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y + height / 2 + 5).style(\"font-color\", colour).style(\"text-anchor\", \"middle\").text(content);\n _setTextAttrs(text, textAttrs);\n }\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n const { taskFontSize, taskFontFamily } = conf;\n const lines = content.split(//gi);\n for (let i = 0; i < lines.length; i++) {\n const dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n const text = g.append(\"text\").attr(\"x\", x + width / 2).attr(\"y\", y).attr(\"fill\", colour).style(\"text-anchor\", \"middle\").style(\"font-size\", taskFontSize).style(\"font-family\", taskFontFamily);\n text.append(\"tspan\").attr(\"x\", x + width / 2).attr(\"dy\", dy).text(lines[i]);\n text.attr(\"y\", y + height / 2).attr(\"dominant-baseline\", \"central\").attr(\"alignment-baseline\", \"central\");\n _setTextAttrs(text, textAttrs);\n }\n }\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n const body = g.append(\"switch\");\n const f = body.append(\"foreignObject\").attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"position\", \"fixed\");\n const text = f.append(\"xhtml:div\").style(\"display\", \"table\").style(\"height\", \"100%\").style(\"width\", \"100%\");\n text.append(\"div\").attr(\"class\", \"label\").style(\"display\", \"table-cell\").style(\"text-align\", \"center\").style(\"vertical-align\", \"middle\").text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n _setTextAttrs(text, textAttrs);\n }\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (const key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n return function(conf) {\n return conf.textPlacement === \"fo\" ? byFo : conf.textPlacement === \"old\" ? byText : byTspan;\n };\n}();\nconst initGraphics = function(graphics) {\n graphics.append(\"defs\").append(\"marker\").attr(\"id\", \"arrowhead\").attr(\"refX\", 5).attr(\"refY\", 2).attr(\"markerWidth\", 6).attr(\"markerHeight\", 4).attr(\"orient\", \"auto\").append(\"path\").attr(\"d\", \"M 0,0 V 4 L6,2 Z\");\n};\nfunction wrap(text, width) {\n text.each(function() {\n var text2 = select(this), words = text2.text().split(/(\\s+|
)/).reverse(), word, line = [], lineHeight = 1.1, y = text2.attr(\"y\"), dy = parseFloat(text2.attr(\"dy\")), tspan = text2.text(null).append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", dy + \"em\");\n for (let j = 0; j < words.length; j++) {\n word = words[words.length - 1 - j];\n line.push(word);\n tspan.text(line.join(\" \").trim());\n if (tspan.node().getComputedTextLength() > width || word === \"
\") {\n line.pop();\n tspan.text(line.join(\" \").trim());\n if (word === \"
\") {\n line = [\"\"];\n } else {\n line = [word];\n }\n tspan = text2.append(\"tspan\").attr(\"x\", 0).attr(\"y\", y).attr(\"dy\", lineHeight + \"em\").text(word);\n }\n }\n });\n}\nconst drawNode = function(elem, node, fullSection, conf) {\n const section = fullSection % MAX_SECTIONS - 1;\n const nodeElem = elem.append(\"g\");\n node.section = section;\n nodeElem.attr(\n \"class\",\n (node.class ? node.class + \" \" : \"\") + \"timeline-node \" + (\"section-\" + section)\n );\n const bkgElem = nodeElem.append(\"g\");\n const textElem = nodeElem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n node.height = bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n node.height = Math.max(node.height, node.maxHeight);\n node.width = node.width + 2 * node.padding;\n textElem.attr(\"transform\", \"translate(\" + node.width / 2 + \", \" + node.padding / 2 + \")\");\n defaultBkg(bkgElem, node, section);\n return node;\n};\nconst getVirtualNodeHeight = function(elem, node, conf) {\n const textElem = elem.append(\"g\");\n const txt = textElem.append(\"text\").text(node.descr).attr(\"dy\", \"1em\").attr(\"alignment-baseline\", \"middle\").attr(\"dominant-baseline\", \"middle\").attr(\"text-anchor\", \"middle\").call(wrap, node.width);\n const bbox = txt.node().getBBox();\n const fontSize = conf.fontSize && conf.fontSize.replace ? conf.fontSize.replace(\"px\", \"\") : conf.fontSize;\n textElem.remove();\n return bbox.height + fontSize * 1.1 * 0.5 + node.padding;\n};\nconst defaultBkg = function(elem, node, section) {\n const rd = 5;\n elem.append(\"path\").attr(\"id\", \"node-\" + node.id).attr(\"class\", \"node-bkg node-\" + node.type).attr(\n \"d\",\n `M0 ${node.height - rd} v${-node.height + 2 * rd} q0,-5 5,-5 h${node.width - 2 * rd} q5,0 5,5 v${node.height - rd} H0 Z`\n );\n elem.append(\"line\").attr(\"class\", \"node-line-\" + section).attr(\"x1\", 0).attr(\"y1\", node.height).attr(\"x2\", node.width).attr(\"y2\", node.height);\n};\nconst svgDraw = {\n drawRect,\n drawCircle,\n drawSection,\n drawText,\n drawLabel,\n drawTask,\n drawBackgroundRect,\n getTextObj,\n getNoteRect,\n initGraphics,\n drawNode,\n getVirtualNodeHeight\n};\nconst draw = function(text, id, version, diagObj) {\n var _a, _b;\n const conf = getConfig();\n const LEFT_MARGIN = conf.leftMargin ?? 50;\n log.debug(\"timeline\", diagObj.db);\n const securityLevel = conf.securityLevel;\n let sandboxElement;\n if (securityLevel === \"sandbox\") {\n sandboxElement = select(\"#i\" + id);\n }\n const root = securityLevel === \"sandbox\" ? select(sandboxElement.nodes()[0].contentDocument.body) : select(\"body\");\n const svg = root.select(\"#\" + id);\n svg.append(\"g\");\n const tasks2 = diagObj.db.getTasks();\n const title = diagObj.db.getCommonDb().getDiagramTitle();\n log.debug(\"task\", tasks2);\n svgDraw.initGraphics(svg);\n const sections2 = diagObj.db.getSections();\n log.debug(\"sections\", sections2);\n let maxSectionHeight = 0;\n let maxTaskHeight = 0;\n let depthY = 0;\n let sectionBeginY = 0;\n let masterX = 50 + LEFT_MARGIN;\n let masterY = 50;\n sectionBeginY = 50;\n let sectionNumber = 0;\n let hasSections = true;\n sections2.forEach(function(section) {\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 150,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n const sectionHeight = svgDraw.getVirtualNodeHeight(svg, sectionNode, conf);\n log.debug(\"sectionHeight before draw\", sectionHeight);\n maxSectionHeight = Math.max(maxSectionHeight, sectionHeight + 20);\n });\n let maxEventCount = 0;\n let maxEventLineLength = 0;\n log.debug(\"tasks.length\", tasks2.length);\n for (const [i, task] of tasks2.entries()) {\n const taskNode = {\n number: i,\n descr: task,\n section: task.section,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n const taskHeight = svgDraw.getVirtualNodeHeight(svg, taskNode, conf);\n log.debug(\"taskHeight before draw\", taskHeight);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight + 20);\n maxEventCount = Math.max(maxEventCount, task.events.length);\n let maxEventLineLengthTemp = 0;\n for (let j = 0; j < task.events.length; j++) {\n const event = task.events[j];\n const eventNode = {\n descr: event,\n section: task.section,\n number: task.section,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n maxEventLineLengthTemp += svgDraw.getVirtualNodeHeight(svg, eventNode, conf);\n }\n maxEventLineLength = Math.max(maxEventLineLength, maxEventLineLengthTemp);\n }\n log.debug(\"maxSectionHeight before draw\", maxSectionHeight);\n log.debug(\"maxTaskHeight before draw\", maxTaskHeight);\n if (sections2 && sections2.length > 0) {\n sections2.forEach((section) => {\n const tasksForSection = tasks2.filter((task) => task.section === section);\n const sectionNode = {\n number: sectionNumber,\n descr: section,\n section: sectionNumber,\n width: 200 * Math.max(tasksForSection.length, 1) - 50,\n padding: 20,\n maxHeight: maxSectionHeight\n };\n log.debug(\"sectionNode\", sectionNode);\n const sectionNodeWrapper = svg.append(\"g\");\n const node = svgDraw.drawNode(sectionNodeWrapper, sectionNode, sectionNumber, conf);\n log.debug(\"sectionNode output\", node);\n sectionNodeWrapper.attr(\"transform\", `translate(${masterX}, ${sectionBeginY})`);\n masterY += maxSectionHeight + 50;\n if (tasksForSection.length > 0) {\n drawTasks(\n svg,\n tasksForSection,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n false\n );\n }\n masterX += 200 * Math.max(tasksForSection.length, 1);\n masterY = sectionBeginY;\n sectionNumber++;\n });\n } else {\n hasSections = false;\n drawTasks(\n svg,\n tasks2,\n sectionNumber,\n masterX,\n masterY,\n maxTaskHeight,\n conf,\n maxEventCount,\n maxEventLineLength,\n maxSectionHeight,\n true\n );\n }\n const box = svg.node().getBBox();\n log.debug(\"bounds\", box);\n if (title) {\n svg.append(\"text\").text(title).attr(\"x\", box.width / 2 - LEFT_MARGIN).attr(\"font-size\", \"4ex\").attr(\"font-weight\", \"bold\").attr(\"y\", 20);\n }\n depthY = hasSections ? maxSectionHeight + maxTaskHeight + 150 : maxTaskHeight + 100;\n const lineWrapper = svg.append(\"g\").attr(\"class\", \"lineWrapper\");\n lineWrapper.append(\"line\").attr(\"x1\", LEFT_MARGIN).attr(\"y1\", depthY).attr(\"x2\", box.width + 3 * LEFT_MARGIN).attr(\"y2\", depthY).attr(\"stroke-width\", 4).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\");\n setupGraphViewbox(\n void 0,\n svg,\n ((_a = conf.timeline) == null ? void 0 : _a.padding) ?? 50,\n ((_b = conf.timeline) == null ? void 0 : _b.useMaxWidth) ?? false\n );\n};\nconst drawTasks = function(diagram2, tasks2, sectionColor, masterX, masterY, maxTaskHeight, conf, maxEventCount, maxEventLineLength, maxSectionHeight, isWithoutSections) {\n var _a;\n for (const task of tasks2) {\n const taskNode = {\n descr: task.task,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: maxTaskHeight\n };\n log.debug(\"taskNode\", taskNode);\n const taskWrapper = diagram2.append(\"g\").attr(\"class\", \"taskWrapper\");\n const node = svgDraw.drawNode(taskWrapper, taskNode, sectionColor, conf);\n const taskHeight = node.height;\n log.debug(\"taskHeight after draw\", taskHeight);\n taskWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n maxTaskHeight = Math.max(maxTaskHeight, taskHeight);\n if (task.events) {\n const lineWrapper = diagram2.append(\"g\").attr(\"class\", \"lineWrapper\");\n let lineLength = maxTaskHeight;\n masterY += 100;\n lineLength = lineLength + drawEvents(diagram2, task.events, sectionColor, masterX, masterY, conf);\n masterY -= 100;\n lineWrapper.append(\"line\").attr(\"x1\", masterX + 190 / 2).attr(\"y1\", masterY + maxTaskHeight).attr(\"x2\", masterX + 190 / 2).attr(\n \"y2\",\n masterY + maxTaskHeight + (isWithoutSections ? maxTaskHeight : maxSectionHeight) + maxEventLineLength + 120\n ).attr(\"stroke-width\", 2).attr(\"stroke\", \"black\").attr(\"marker-end\", \"url(#arrowhead)\").attr(\"stroke-dasharray\", \"5,5\");\n }\n masterX = masterX + 200;\n if (isWithoutSections && !((_a = conf.timeline) == null ? void 0 : _a.disableMulticolor)) {\n sectionColor++;\n }\n }\n masterY = masterY - 10;\n};\nconst drawEvents = function(diagram2, events, sectionColor, masterX, masterY, conf) {\n let maxEventHeight = 0;\n const eventBeginY = masterY;\n masterY = masterY + 100;\n for (const event of events) {\n const eventNode = {\n descr: event,\n section: sectionColor,\n number: sectionColor,\n width: 150,\n padding: 20,\n maxHeight: 50\n };\n log.debug(\"eventNode\", eventNode);\n const eventWrapper = diagram2.append(\"g\").attr(\"class\", \"eventWrapper\");\n const node = svgDraw.drawNode(eventWrapper, eventNode, sectionColor, conf);\n const eventHeight = node.height;\n maxEventHeight = maxEventHeight + eventHeight;\n eventWrapper.attr(\"transform\", `translate(${masterX}, ${masterY})`);\n masterY = masterY + 10 + eventHeight;\n }\n masterY = eventBeginY;\n return maxEventHeight;\n};\nconst renderer = {\n setConf: () => {\n },\n draw\n};\nconst genSections = (options) => {\n let sections2 = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n options[\"lineColor\" + i] = options[\"lineColor\" + i] || options[\"cScaleInv\" + i];\n if (isDark(options[\"lineColor\" + i])) {\n options[\"lineColor\" + i] = lighten(options[\"lineColor\" + i], 20);\n } else {\n options[\"lineColor\" + i] = darken(options[\"lineColor\" + i], 20);\n }\n }\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n const sw = \"\" + (17 - 3 * i);\n sections2 += `\n .section-${i - 1} rect, .section-${i - 1} path, .section-${i - 1} circle, .section-${i - 1} path {\n fill: ${options[\"cScale\" + i]};\n }\n .section-${i - 1} text {\n fill: ${options[\"cScaleLabel\" + i]};\n }\n .node-icon-${i - 1} {\n font-size: 40px;\n color: ${options[\"cScaleLabel\" + i]};\n }\n .section-edge-${i - 1}{\n stroke: ${options[\"cScale\" + i]};\n }\n .edge-depth-${i - 1}{\n stroke-width: ${sw};\n }\n .section-${i - 1} line {\n stroke: ${options[\"cScaleInv\" + i]} ;\n stroke-width: 3;\n }\n\n .lineWrapper line{\n stroke: ${options[\"cScaleLabel\" + i]} ;\n }\n\n .disabled, .disabled circle, .disabled text {\n fill: lightgray;\n }\n .disabled text {\n fill: #efefef;\n }\n `;\n }\n return sections2;\n};\nconst getStyles = (options) => `\n .edge {\n stroke-width: 3;\n }\n ${genSections(options)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${options.git0};\n }\n .section-root text {\n fill: ${options.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`;\nconst styles = getStyles;\nconst diagram = {\n db,\n renderer,\n parser: parser$1,\n styles\n};\nexport {\n diagram\n};\n","import { l as log, s as setAccTitle, g as getAccTitle, q as setDiagramTitle, r as getDiagramTitle, a as getAccDescription, b as setAccDescription, D as getThemeVariables, E as getConfig, B as cleanAndMerge, A as defaultConfig, t as clear$1, d as sanitizeText, z as selectSvgElement, i as configureSvgSize } from \"./mermaid-934d9bea.js\";\nimport { c as computeDimensionOfText } from \"./createText-aebacdfe.js\";\nimport { scaleBand, scaleLinear, line } from \"d3\";\nimport \"ts-dedent\";\nimport \"dayjs\";\nimport \"@braintree/sanitize-url\";\nimport \"dompurify\";\nimport \"khroma\";\nimport \"lodash-es/memoize.js\";\nimport \"lodash-es/merge.js\";\nimport \"stylis\";\nimport \"lodash-es/isEmpty.js\";\nimport \"mdast-util-from-markdown\";\nvar parser = function() {\n var o = function(k, v, o2, l) {\n for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)\n ;\n return o2;\n }, $V0 = [1, 10, 12, 14, 16, 18, 19, 21, 23], $V1 = [2, 6], $V2 = [1, 3], $V3 = [1, 5], $V4 = [1, 6], $V5 = [1, 7], $V6 = [1, 5, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $V7 = [1, 25], $V8 = [1, 26], $V9 = [1, 28], $Va = [1, 29], $Vb = [1, 30], $Vc = [1, 31], $Vd = [1, 32], $Ve = [1, 33], $Vf = [1, 34], $Vg = [1, 35], $Vh = [1, 36], $Vi = [1, 37], $Vj = [1, 43], $Vk = [1, 42], $Vl = [1, 47], $Vm = [1, 50], $Vn = [1, 10, 12, 14, 16, 18, 19, 21, 23, 34, 35, 36], $Vo = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36], $Vp = [1, 10, 12, 14, 16, 18, 19, 21, 23, 24, 26, 27, 28, 34, 35, 36, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], $Vq = [1, 64];\n var parser2 = {\n trace: function trace() {\n },\n yy: {},\n symbols_: { \"error\": 2, \"start\": 3, \"eol\": 4, \"XYCHART\": 5, \"chartConfig\": 6, \"document\": 7, \"CHART_ORIENTATION\": 8, \"statement\": 9, \"title\": 10, \"text\": 11, \"X_AXIS\": 12, \"parseXAxis\": 13, \"Y_AXIS\": 14, \"parseYAxis\": 15, \"LINE\": 16, \"plotData\": 17, \"BAR\": 18, \"acc_title\": 19, \"acc_title_value\": 20, \"acc_descr\": 21, \"acc_descr_value\": 22, \"acc_descr_multiline_value\": 23, \"SQUARE_BRACES_START\": 24, \"commaSeparatedNumbers\": 25, \"SQUARE_BRACES_END\": 26, \"NUMBER_WITH_DECIMAL\": 27, \"COMMA\": 28, \"xAxisData\": 29, \"bandData\": 30, \"ARROW_DELIMITER\": 31, \"commaSeparatedTexts\": 32, \"yAxisData\": 33, \"NEWLINE\": 34, \"SEMI\": 35, \"EOF\": 36, \"alphaNum\": 37, \"STR\": 38, \"MD_STR\": 39, \"alphaNumToken\": 40, \"AMP\": 41, \"NUM\": 42, \"ALPHA\": 43, \"PLUS\": 44, \"EQUALS\": 45, \"MULT\": 46, \"DOT\": 47, \"BRKT\": 48, \"MINUS\": 49, \"UNDERSCORE\": 50, \"$accept\": 0, \"$end\": 1 },\n terminals_: { 2: \"error\", 5: \"XYCHART\", 8: \"CHART_ORIENTATION\", 10: \"title\", 12: \"X_AXIS\", 14: \"Y_AXIS\", 16: \"LINE\", 18: \"BAR\", 19: \"acc_title\", 20: \"acc_title_value\", 21: \"acc_descr\", 22: \"acc_descr_value\", 23: \"acc_descr_multiline_value\", 24: \"SQUARE_BRACES_START\", 26: \"SQUARE_BRACES_END\", 27: \"NUMBER_WITH_DECIMAL\", 28: \"COMMA\", 31: \"ARROW_DELIMITER\", 34: \"NEWLINE\", 35: \"SEMI\", 36: \"EOF\", 38: \"STR\", 39: \"MD_STR\", 41: \"AMP\", 42: \"NUM\", 43: \"ALPHA\", 44: \"PLUS\", 45: \"EQUALS\", 46: \"MULT\", 47: \"DOT\", 48: \"BRKT\", 49: \"MINUS\", 50: \"UNDERSCORE\" },\n productions_: [0, [3, 2], [3, 3], [3, 2], [3, 1], [6, 1], [7, 0], [7, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 2], [9, 3], [9, 2], [9, 3], [9, 2], [9, 2], [9, 1], [17, 3], [25, 3], [25, 1], [13, 1], [13, 2], [13, 1], [29, 1], [29, 3], [30, 3], [32, 3], [32, 1], [15, 1], [15, 2], [15, 1], [33, 3], [4, 1], [4, 1], [4, 1], [11, 1], [11, 1], [11, 1], [37, 1], [37, 2], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1], [40, 1]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 5:\n yy.setOrientation($$[$0]);\n break;\n case 9:\n yy.setDiagramTitle($$[$0].text.trim());\n break;\n case 12:\n yy.setLineData({ text: \"\", type: \"text\" }, $$[$0]);\n break;\n case 13:\n yy.setLineData($$[$0 - 1], $$[$0]);\n break;\n case 14:\n yy.setBarData({ text: \"\", type: \"text\" }, $$[$0]);\n break;\n case 15:\n yy.setBarData($$[$0 - 1], $$[$0]);\n break;\n case 16:\n this.$ = $$[$0].trim();\n yy.setAccTitle(this.$);\n break;\n case 17:\n case 18:\n this.$ = $$[$0].trim();\n yy.setAccDescription(this.$);\n break;\n case 19:\n this.$ = $$[$0 - 1];\n break;\n case 20:\n this.$ = [Number($$[$0 - 2]), ...$$[$0]];\n break;\n case 21:\n this.$ = [Number($$[$0])];\n break;\n case 22:\n yy.setXAxisTitle($$[$0]);\n break;\n case 23:\n yy.setXAxisTitle($$[$0 - 1]);\n break;\n case 24:\n yy.setXAxisTitle({ type: \"text\", text: \"\" });\n break;\n case 25:\n yy.setXAxisBand($$[$0]);\n break;\n case 26:\n yy.setXAxisRangeData(Number($$[$0 - 2]), Number($$[$0]));\n break;\n case 27:\n this.$ = $$[$0 - 1];\n break;\n case 28:\n this.$ = [$$[$0 - 2], ...$$[$0]];\n break;\n case 29:\n this.$ = [$$[$0]];\n break;\n case 30:\n yy.setYAxisTitle($$[$0]);\n break;\n case 31:\n yy.setYAxisTitle($$[$0 - 1]);\n break;\n case 32:\n yy.setYAxisTitle({ type: \"text\", text: \"\" });\n break;\n case 33:\n yy.setYAxisRangeData(Number($$[$0 - 2]), Number($$[$0]));\n break;\n case 37:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 38:\n this.$ = { text: $$[$0], type: \"text\" };\n break;\n case 39:\n this.$ = { text: $$[$0], type: \"markdown\" };\n break;\n case 40:\n this.$ = $$[$0];\n break;\n case 41:\n this.$ = $$[$0 - 1] + \"\" + $$[$0];\n break;\n }\n },\n table: [o($V0, $V1, { 3: 1, 4: 2, 7: 4, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [3] }, o($V0, $V1, { 4: 2, 7: 4, 3: 8, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), o($V0, $V1, { 4: 2, 7: 4, 6: 9, 3: 10, 5: $V2, 8: [1, 11], 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 4], 9: 12, 10: [1, 13], 12: [1, 14], 14: [1, 15], 16: [1, 16], 18: [1, 17], 19: [1, 18], 21: [1, 19], 23: [1, 20] }, o($V6, [2, 34]), o($V6, [2, 35]), o($V6, [2, 36]), { 1: [2, 1] }, o($V0, $V1, { 4: 2, 7: 4, 3: 21, 5: $V2, 34: $V3, 35: $V4, 36: $V5 }), { 1: [2, 3] }, o($V6, [2, 5]), o($V0, [2, 7], { 4: 22, 34: $V3, 35: $V4, 36: $V5 }), { 11: 23, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 39, 13: 38, 24: $Vj, 27: $Vk, 29: 40, 30: 41, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 45, 15: 44, 27: $Vl, 33: 46, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 49, 17: 48, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 11: 52, 17: 51, 24: $Vm, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, { 20: [1, 53] }, { 22: [1, 54] }, o($Vn, [2, 18]), { 1: [2, 2] }, o($Vn, [2, 8]), o($Vn, [2, 9]), o($Vo, [2, 37], { 40: 55, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }), o($Vo, [2, 38]), o($Vo, [2, 39]), o($Vp, [2, 40]), o($Vp, [2, 42]), o($Vp, [2, 43]), o($Vp, [2, 44]), o($Vp, [2, 45]), o($Vp, [2, 46]), o($Vp, [2, 47]), o($Vp, [2, 48]), o($Vp, [2, 49]), o($Vp, [2, 50]), o($Vp, [2, 51]), o($Vn, [2, 10]), o($Vn, [2, 22], { 30: 41, 29: 56, 24: $Vj, 27: $Vk }), o($Vn, [2, 24]), o($Vn, [2, 25]), { 31: [1, 57] }, { 11: 59, 32: 58, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o($Vn, [2, 11]), o($Vn, [2, 30], { 33: 60, 27: $Vl }), o($Vn, [2, 32]), { 31: [1, 61] }, o($Vn, [2, 12]), { 17: 62, 24: $Vm }, { 25: 63, 27: $Vq }, o($Vn, [2, 14]), { 17: 65, 24: $Vm }, o($Vn, [2, 16]), o($Vn, [2, 17]), o($Vp, [2, 41]), o($Vn, [2, 23]), { 27: [1, 66] }, { 26: [1, 67] }, { 26: [2, 29], 28: [1, 68] }, o($Vn, [2, 31]), { 27: [1, 69] }, o($Vn, [2, 13]), { 26: [1, 70] }, { 26: [2, 21], 28: [1, 71] }, o($Vn, [2, 15]), o($Vn, [2, 26]), o($Vn, [2, 27]), { 11: 59, 32: 72, 37: 24, 38: $V7, 39: $V8, 40: 27, 41: $V9, 42: $Va, 43: $Vb, 44: $Vc, 45: $Vd, 46: $Ve, 47: $Vf, 48: $Vg, 49: $Vh, 50: $Vi }, o($Vn, [2, 33]), o($Vn, [2, 19]), { 25: 73, 27: $Vq }, { 26: [2, 28] }, { 26: [2, 20] }],\n defaultActions: { 8: [2, 1], 10: [2, 3], 21: [2, 2], 72: [2, 28], 73: [2, 20] },\n parseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n },\n parse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer2 = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer2.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer2;\n sharedState.yy.parser = this;\n if (typeof lexer2.yylloc == \"undefined\") {\n lexer2.yylloc = {};\n }\n var yyloc = lexer2.yylloc;\n lstack.push(yyloc);\n var ranges = lexer2.options && lexer2.options.ranges;\n if (typeof sharedState.yy.parseError === \"function\") {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer2.lex() || EOF;\n if (typeof token !== \"number\") {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n }\n if (lexer2.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + lexer2.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == EOF ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: lexer2.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer2.yylineno,\n loc: yyloc,\n expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer2.yytext);\n lstack.push(lexer2.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer2.yyleng;\n yytext = lexer2.yytext;\n yylineno = lexer2.yylineno;\n yyloc = lexer2.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n var lexer = function() {\n var lexer2 = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n // resets the lexer, sets new input\n setInput: function(input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = \"\";\n this.conditionStack = [\"INITIAL\"];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0, 0];\n }\n this.offset = 0;\n return this;\n },\n // consumes and returns one char from the input\n input: function() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n this._input = this._input.slice(1);\n return ch;\n },\n // unshifts one char (or a string) into the input\n unput: function(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n // When called from action, caches matched text and appends it on next action\n more: function() {\n this._more = true;\n return this;\n },\n // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\n reject: function() {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n return this;\n },\n // retain first n characters of the match\n less: function(n) {\n this.unput(this.match.slice(n));\n },\n // displays already matched input, i.e. for error messages\n pastInput: function() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? \"...\" : \"\") + past.substr(-20).replace(/\\n/g, \"\");\n },\n // displays upcoming input, i.e. for error messages\n upcomingInput: function() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? \"...\" : \"\")).replace(/\\n/g, \"\");\n },\n // displays the character position where the lexing error occurred, i.e. for error messages\n showPosition: function() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n // test the lexed token: return FALSE when not a match, otherwise return token\n test_match: function(match, indexed_rule) {\n var token, lines, backup;\n if (this.options.backtrack_lexer) {\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false;\n }\n return false;\n },\n // return next match in input\n next: function() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n var token, match, tempMatch, index;\n if (!this._more) {\n this.yytext = \"\";\n this.match = \"\";\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue;\n } else {\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError(\"Lexical error on line \" + (this.yylineno + 1) + \". Unrecognized text.\\n\" + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n // return next match that has a token\n lex: function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n // pop the previously active lexer condition state off the condition stack\n popState: function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n // produce the lexer rule set which is active for the currently active lexer condition state\n _currentRules: function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\n topState: function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n // alias for begin(condition)\n pushState: function pushState(condition) {\n this.begin(condition);\n },\n // return the number of states currently on the stack\n stateStackSize: function stateStackSize() {\n return this.conditionStack.length;\n },\n options: { \"case-insensitive\": true },\n performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n switch ($avoiding_name_collisions) {\n case 0:\n break;\n case 1:\n break;\n case 2:\n this.popState();\n return 34;\n case 3:\n this.popState();\n return 34;\n case 4:\n return 34;\n case 5:\n break;\n case 6:\n return 10;\n case 7:\n this.pushState(\"acc_title\");\n return 19;\n case 8:\n this.popState();\n return \"acc_title_value\";\n case 9:\n this.pushState(\"acc_descr\");\n return 21;\n case 10:\n this.popState();\n return \"acc_descr_value\";\n case 11:\n this.pushState(\"acc_descr_multiline\");\n break;\n case 12:\n this.popState();\n break;\n case 13:\n return \"acc_descr_multiline_value\";\n case 14:\n return 5;\n case 15:\n return 8;\n case 16:\n this.pushState(\"axis_data\");\n return \"X_AXIS\";\n case 17:\n this.pushState(\"axis_data\");\n return \"Y_AXIS\";\n case 18:\n this.pushState(\"axis_band_data\");\n return 24;\n case 19:\n return 31;\n case 20:\n this.pushState(\"data\");\n return 16;\n case 21:\n this.pushState(\"data\");\n return 18;\n case 22:\n this.pushState(\"data_inner\");\n return 24;\n case 23:\n return 27;\n case 24:\n this.popState();\n return 26;\n case 25:\n this.popState();\n break;\n case 26:\n this.pushState(\"string\");\n break;\n case 27:\n this.popState();\n break;\n case 28:\n return \"STR\";\n case 29:\n return 24;\n case 30:\n return 26;\n case 31:\n return 43;\n case 32:\n return \"COLON\";\n case 33:\n return 44;\n case 34:\n return 28;\n case 35:\n return 45;\n case 36:\n return 46;\n case 37:\n return 48;\n case 38:\n return 50;\n case 39:\n return 47;\n case 40:\n return 41;\n case 41:\n return 49;\n case 42:\n return 42;\n case 43:\n break;\n case 44:\n return 35;\n case 45:\n return 36;\n }\n },\n rules: [/^(?:%%(?!\\{)[^\\n]*)/i, /^(?:[^\\}]%%[^\\n]*)/i, /^(?:(\\r?\\n))/i, /^(?:(\\r?\\n))/i, /^(?:[\\n\\r]+)/i, /^(?:%%[^\\n]*)/i, /^(?:title\\b)/i, /^(?:accTitle\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*:\\s*)/i, /^(?:(?!\\n||)*[^\\n]*)/i, /^(?:accDescr\\s*\\{\\s*)/i, /^(?:\\{)/i, /^(?:[^\\}]*)/i, /^(?:xychart-beta\\b)/i, /^(?:(?:vertical|horizontal))/i, /^(?:x-axis\\b)/i, /^(?:y-axis\\b)/i, /^(?:\\[)/i, /^(?:-->)/i, /^(?:line\\b)/i, /^(?:bar\\b)/i, /^(?:\\[)/i, /^(?:[+-]?(?:\\d+(?:\\.\\d+)?|\\.\\d+))/i, /^(?:\\])/i, /^(?:(?:`\\) \\{ this\\.pushState\\(md_string\\); \\}\\n\\(\\?:\\(\\?!`\"\\)\\.\\)\\+ \\{ return MD_STR; \\}\\n\\(\\?:`))/i, /^(?:[\"])/i, /^(?:[\"])/i, /^(?:[^\"]*)/i, /^(?:\\[)/i, /^(?:\\])/i, /^(?:[A-Za-z]+)/i, /^(?::)/i, /^(?:\\+)/i, /^(?:,)/i, /^(?:=)/i, /^(?:\\*)/i, /^(?:#)/i, /^(?:[\\_])/i, /^(?:\\.)/i, /^(?:&)/i, /^(?:-)/i, /^(?:[0-9]+)/i, /^(?:\\s+)/i, /^(?:;)/i, /^(?:$)/i],\n conditions: { \"data_inner\": { \"rules\": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"data\": { \"rules\": [0, 1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 22, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"axis_band_data\": { \"rules\": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"axis_data\": { \"rules\": [0, 1, 2, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true }, \"acc_descr_multiline\": { \"rules\": [12, 13], \"inclusive\": false }, \"acc_descr\": { \"rules\": [10], \"inclusive\": false }, \"acc_title\": { \"rules\": [8], \"inclusive\": false }, \"title\": { \"rules\": [], \"inclusive\": false }, \"md_string\": { \"rules\": [], \"inclusive\": false }, \"string\": { \"rules\": [27, 28], \"inclusive\": false }, \"INITIAL\": { \"rules\": [0, 1, 4, 5, 6, 7, 9, 11, 14, 15, 16, 17, 20, 21, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45], \"inclusive\": true } }\n };\n return lexer2;\n }();\n parser2.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser2;\n parser2.Parser = Parser;\n return new Parser();\n}();\nparser.parser = parser;\nconst parser$1 = parser;\nfunction isBarPlot(data) {\n return data.type === \"bar\";\n}\nfunction isBandAxisData(data) {\n return data.type === \"band\";\n}\nfunction isLinearAxisData(data) {\n return data.type === \"linear\";\n}\nclass TextDimensionCalculatorWithFont {\n constructor(parentGroup) {\n this.parentGroup = parentGroup;\n }\n getMaxDimension(texts, fontSize) {\n if (!this.parentGroup) {\n return {\n width: texts.reduce((acc, cur) => Math.max(cur.length, acc), 0) * fontSize,\n height: fontSize\n };\n }\n const dimension = {\n width: 0,\n height: 0\n };\n const elem = this.parentGroup.append(\"g\").attr(\"visibility\", \"hidden\").attr(\"font-size\", fontSize);\n for (const t of texts) {\n const bbox = computeDimensionOfText(elem, 1, t);\n const width = bbox ? bbox.width : t.length * fontSize;\n const height = bbox ? bbox.height : fontSize;\n dimension.width = Math.max(dimension.width, width);\n dimension.height = Math.max(dimension.height, height);\n }\n elem.remove();\n return dimension;\n }\n}\nconst BAR_WIDTH_TO_TICK_WIDTH_RATIO = 0.7;\nconst MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL = 0.2;\nclass BaseAxis {\n constructor(axisConfig, title, textDimensionCalculator, axisThemeConfig) {\n this.axisConfig = axisConfig;\n this.title = title;\n this.textDimensionCalculator = textDimensionCalculator;\n this.axisThemeConfig = axisThemeConfig;\n this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };\n this.axisPosition = \"left\";\n this.showTitle = false;\n this.showLabel = false;\n this.showTick = false;\n this.showAxisLine = false;\n this.outerPadding = 0;\n this.titleTextHeight = 0;\n this.labelTextHeight = 0;\n this.range = [0, 10];\n this.boundingRect = { x: 0, y: 0, width: 0, height: 0 };\n this.axisPosition = \"left\";\n }\n setRange(range) {\n this.range = range;\n if (this.axisPosition === \"left\" || this.axisPosition === \"right\") {\n this.boundingRect.height = range[1] - range[0];\n } else {\n this.boundingRect.width = range[1] - range[0];\n }\n this.recalculateScale();\n }\n getRange() {\n return [this.range[0] + this.outerPadding, this.range[1] - this.outerPadding];\n }\n setAxisPosition(axisPosition) {\n this.axisPosition = axisPosition;\n this.setRange(this.range);\n }\n getTickDistance() {\n const range = this.getRange();\n return Math.abs(range[0] - range[1]) / this.getTickValues().length;\n }\n getAxisOuterPadding() {\n return this.outerPadding;\n }\n getLabelDimension() {\n return this.textDimensionCalculator.getMaxDimension(\n this.getTickValues().map((tick) => tick.toString()),\n this.axisConfig.labelFontSize\n );\n }\n recalculateOuterPaddingToDrawBar() {\n if (BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() > this.outerPadding * 2) {\n this.outerPadding = Math.floor(BAR_WIDTH_TO_TICK_WIDTH_RATIO * this.getTickDistance() / 2);\n }\n this.recalculateScale();\n }\n calculateSpaceIfDrawnHorizontally(availableSpace) {\n let availableHeight = availableSpace.height;\n if (this.axisConfig.showAxisLine && availableHeight > this.axisConfig.axisLineWidth) {\n availableHeight -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.width;\n this.outerPadding = Math.min(spaceRequired.width / 2, maxPadding);\n const heightRequired = spaceRequired.height + this.axisConfig.labelPadding * 2;\n this.labelTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableHeight >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableHeight -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const heightRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (heightRequired <= availableHeight) {\n availableHeight -= heightRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height - availableHeight;\n }\n calculateSpaceIfDrawnVertical(availableSpace) {\n let availableWidth = availableSpace.width;\n if (this.axisConfig.showAxisLine && availableWidth > this.axisConfig.axisLineWidth) {\n availableWidth -= this.axisConfig.axisLineWidth;\n this.showAxisLine = true;\n }\n if (this.axisConfig.showLabel) {\n const spaceRequired = this.getLabelDimension();\n const maxPadding = MAX_OUTER_PADDING_PERCENT_FOR_WRT_LABEL * availableSpace.height;\n this.outerPadding = Math.min(spaceRequired.height / 2, maxPadding);\n const widthRequired = spaceRequired.width + this.axisConfig.labelPadding * 2;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showLabel = true;\n }\n }\n if (this.axisConfig.showTick && availableWidth >= this.axisConfig.tickLength) {\n this.showTick = true;\n availableWidth -= this.axisConfig.tickLength;\n }\n if (this.axisConfig.showTitle && this.title) {\n const spaceRequired = this.textDimensionCalculator.getMaxDimension(\n [this.title],\n this.axisConfig.titleFontSize\n );\n const widthRequired = spaceRequired.height + this.axisConfig.titlePadding * 2;\n this.titleTextHeight = spaceRequired.height;\n if (widthRequired <= availableWidth) {\n availableWidth -= widthRequired;\n this.showTitle = true;\n }\n }\n this.boundingRect.width = availableSpace.width - availableWidth;\n this.boundingRect.height = availableSpace.height;\n }\n calculateSpace(availableSpace) {\n if (this.axisPosition === \"left\" || this.axisPosition === \"right\") {\n this.calculateSpaceIfDrawnVertical(availableSpace);\n } else {\n this.calculateSpaceIfDrawnHorizontally(availableSpace);\n }\n this.recalculateScale();\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height\n };\n }\n setBoundingBoxXY(point) {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n getDrawableElementsForLeftAxis() {\n const drawableElement = [];\n if (this.showAxisLine) {\n const x = this.boundingRect.x + this.boundingRect.width - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"left-axis\", \"axisl-line\"],\n data: [\n {\n path: `M ${x},${this.boundingRect.y} L ${x},${this.boundingRect.y + this.boundingRect.height} `,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth\n }\n ]\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"left-axis\", \"label\"],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.boundingRect.x + this.boundingRect.width - (this.showLabel ? this.axisConfig.labelPadding : 0) - (this.showTick ? this.axisConfig.tickLength : 0) - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n y: this.getScaleValue(tick),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: \"middle\",\n horizontalPos: \"right\"\n }))\n });\n }\n if (this.showTick) {\n const x = this.boundingRect.x + this.boundingRect.width - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"left-axis\", \"ticks\"],\n data: this.getTickValues().map((tick) => ({\n path: `M ${x},${this.getScaleValue(tick)} L ${x - this.axisConfig.tickLength},${this.getScaleValue(tick)}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth\n }))\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"left-axis\", \"title\"],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.axisConfig.titlePadding,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 270,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }\n ]\n });\n }\n return drawableElement;\n }\n getDrawableElementsForBottomAxis() {\n const drawableElement = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"bottom-axis\", \"axis-line\"],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${this.boundingRect.x + this.boundingRect.width},${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth\n }\n ]\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"bottom-axis\", \"label\"],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y: this.boundingRect.y + this.axisConfig.labelPadding + (this.showTick ? this.axisConfig.tickLength : 0) + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0),\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }))\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y + (this.showAxisLine ? this.axisConfig.axisLineWidth : 0);\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"bottom-axis\", \"ticks\"],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${y} L ${this.getScaleValue(tick)},${y + this.axisConfig.tickLength}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth\n }))\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"bottom-axis\", \"title\"],\n data: [\n {\n text: this.title,\n x: this.range[0] + (this.range[1] - this.range[0]) / 2,\n y: this.boundingRect.y + this.boundingRect.height - this.axisConfig.titlePadding - this.titleTextHeight,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }\n ]\n });\n }\n return drawableElement;\n }\n getDrawableElementsForTopAxis() {\n const drawableElement = [];\n if (this.showAxisLine) {\n const y = this.boundingRect.y + this.boundingRect.height - this.axisConfig.axisLineWidth / 2;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"top-axis\", \"axis-line\"],\n data: [\n {\n path: `M ${this.boundingRect.x},${y} L ${this.boundingRect.x + this.boundingRect.width},${y}`,\n strokeFill: this.axisThemeConfig.axisLineColor,\n strokeWidth: this.axisConfig.axisLineWidth\n }\n ]\n });\n }\n if (this.showLabel) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"top-axis\", \"label\"],\n data: this.getTickValues().map((tick) => ({\n text: tick.toString(),\n x: this.getScaleValue(tick),\n y: this.boundingRect.y + (this.showTitle ? this.titleTextHeight + this.axisConfig.titlePadding * 2 : 0) + this.axisConfig.labelPadding,\n fill: this.axisThemeConfig.labelColor,\n fontSize: this.axisConfig.labelFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }))\n });\n }\n if (this.showTick) {\n const y = this.boundingRect.y;\n drawableElement.push({\n type: \"path\",\n groupTexts: [\"top-axis\", \"ticks\"],\n data: this.getTickValues().map((tick) => ({\n path: `M ${this.getScaleValue(tick)},${y + this.boundingRect.height - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)} L ${this.getScaleValue(tick)},${y + this.boundingRect.height - this.axisConfig.tickLength - (this.showAxisLine ? this.axisConfig.axisLineWidth : 0)}`,\n strokeFill: this.axisThemeConfig.tickColor,\n strokeWidth: this.axisConfig.tickWidth\n }))\n });\n }\n if (this.showTitle) {\n drawableElement.push({\n type: \"text\",\n groupTexts: [\"top-axis\", \"title\"],\n data: [\n {\n text: this.title,\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.axisConfig.titlePadding,\n fill: this.axisThemeConfig.titleColor,\n fontSize: this.axisConfig.titleFontSize,\n rotation: 0,\n verticalPos: \"top\",\n horizontalPos: \"center\"\n }\n ]\n });\n }\n return drawableElement;\n }\n getDrawableElements() {\n if (this.axisPosition === \"left\") {\n return this.getDrawableElementsForLeftAxis();\n }\n if (this.axisPosition === \"right\") {\n throw Error(\"Drawing of right axis is not implemented\");\n }\n if (this.axisPosition === \"bottom\") {\n return this.getDrawableElementsForBottomAxis();\n }\n if (this.axisPosition === \"top\") {\n return this.getDrawableElementsForTopAxis();\n }\n return [];\n }\n}\nclass BandAxis extends BaseAxis {\n constructor(axisConfig, axisThemeConfig, categories, title, textDimensionCalculator) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.categories = categories;\n this.scale = scaleBand().domain(this.categories).range(this.getRange());\n }\n setRange(range) {\n super.setRange(range);\n }\n recalculateScale() {\n this.scale = scaleBand().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(0.5);\n log.trace(\"BandAxis axis final categories, range: \", this.categories, this.getRange());\n }\n getTickValues() {\n return this.categories;\n }\n getScaleValue(value) {\n return this.scale(value) || this.getRange()[0];\n }\n}\nclass LinearAxis extends BaseAxis {\n constructor(axisConfig, axisThemeConfig, domain, title, textDimensionCalculator) {\n super(axisConfig, title, textDimensionCalculator, axisThemeConfig);\n this.domain = domain;\n this.scale = scaleLinear().domain(this.domain).range(this.getRange());\n }\n getTickValues() {\n return this.scale.ticks();\n }\n recalculateScale() {\n const domain = [...this.domain];\n if (this.axisPosition === \"left\") {\n domain.reverse();\n }\n this.scale = scaleLinear().domain(domain).range(this.getRange());\n }\n getScaleValue(value) {\n return this.scale(value);\n }\n}\nfunction getAxis(data, axisConfig, axisThemeConfig, tmpSVGGroup2) {\n const textDimansionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2);\n if (isBandAxisData(data)) {\n return new BandAxis(\n axisConfig,\n axisThemeConfig,\n data.categories,\n data.title,\n textDimansionCalculator\n );\n }\n return new LinearAxis(\n axisConfig,\n axisThemeConfig,\n [data.min, data.max],\n data.title,\n textDimansionCalculator\n );\n}\nclass ChartTitle {\n constructor(textDimensionCalculator, chartConfig, chartData, chartThemeConfig) {\n this.textDimensionCalculator = textDimensionCalculator;\n this.chartConfig = chartConfig;\n this.chartData = chartData;\n this.chartThemeConfig = chartThemeConfig;\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n this.showChartTitle = false;\n }\n setBoundingBoxXY(point) {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace) {\n const titleDimension = this.textDimensionCalculator.getMaxDimension(\n [this.chartData.title],\n this.chartConfig.titleFontSize\n );\n const widthRequired = Math.max(titleDimension.width, availableSpace.width);\n const heightRequired = titleDimension.height + 2 * this.chartConfig.titlePadding;\n if (titleDimension.width <= widthRequired && titleDimension.height <= heightRequired && this.chartConfig.showTitle && this.chartData.title) {\n this.boundingRect.width = widthRequired;\n this.boundingRect.height = heightRequired;\n this.showChartTitle = true;\n }\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height\n };\n }\n getDrawableElements() {\n const drawableElem = [];\n if (this.showChartTitle) {\n drawableElem.push({\n groupTexts: [\"chart-title\"],\n type: \"text\",\n data: [\n {\n fontSize: this.chartConfig.titleFontSize,\n text: this.chartData.title,\n verticalPos: \"middle\",\n horizontalPos: \"center\",\n x: this.boundingRect.x + this.boundingRect.width / 2,\n y: this.boundingRect.y + this.boundingRect.height / 2,\n fill: this.chartThemeConfig.titleColor,\n rotation: 0\n }\n ]\n });\n }\n return drawableElem;\n }\n}\nfunction getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) {\n const textDimensionCalculator = new TextDimensionCalculatorWithFont(tmpSVGGroup2);\n return new ChartTitle(textDimensionCalculator, chartConfig, chartData, chartThemeConfig);\n}\nclass LinePlot {\n constructor(plotData, xAxis, yAxis, orientation, plotIndex2) {\n this.plotData = plotData;\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n this.orientation = orientation;\n this.plotIndex = plotIndex2;\n }\n getDrawableElement() {\n const finalData = this.plotData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1])\n ]);\n let path;\n if (this.orientation === \"horizontal\") {\n path = line().y((d) => d[0]).x((d) => d[1])(finalData);\n } else {\n path = line().x((d) => d[0]).y((d) => d[1])(finalData);\n }\n if (!path) {\n return [];\n }\n return [\n {\n groupTexts: [\"plot\", `line-plot-${this.plotIndex}`],\n type: \"path\",\n data: [\n {\n path,\n strokeFill: this.plotData.strokeFill,\n strokeWidth: this.plotData.strokeWidth\n }\n ]\n }\n ];\n }\n}\nclass BarPlot {\n constructor(barData, boundingRect, xAxis, yAxis, orientation, plotIndex2) {\n this.barData = barData;\n this.boundingRect = boundingRect;\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n this.orientation = orientation;\n this.plotIndex = plotIndex2;\n }\n getDrawableElement() {\n const finalData = this.barData.data.map((d) => [\n this.xAxis.getScaleValue(d[0]),\n this.yAxis.getScaleValue(d[1])\n ]);\n const barPaddingPercent = 0.05;\n const barWidth = Math.min(this.xAxis.getAxisOuterPadding() * 2, this.xAxis.getTickDistance()) * (1 - barPaddingPercent);\n const barWidthHalf = barWidth / 2;\n if (this.orientation === \"horizontal\") {\n return [\n {\n groupTexts: [\"plot\", `bar-plot-${this.plotIndex}`],\n type: \"rect\",\n data: finalData.map((data) => ({\n x: this.boundingRect.x,\n y: data[0] - barWidthHalf,\n height: barWidth,\n width: data[1] - this.boundingRect.x,\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill\n }))\n }\n ];\n }\n return [\n {\n groupTexts: [\"plot\", `bar-plot-${this.plotIndex}`],\n type: \"rect\",\n data: finalData.map((data) => ({\n x: data[0] - barWidthHalf,\n y: data[1],\n width: barWidth,\n height: this.boundingRect.y + this.boundingRect.height - data[1],\n fill: this.barData.fill,\n strokeWidth: 0,\n strokeFill: this.barData.fill\n }))\n }\n ];\n }\n}\nclass BasePlot {\n constructor(chartConfig, chartData, chartThemeConfig) {\n this.chartConfig = chartConfig;\n this.chartData = chartData;\n this.chartThemeConfig = chartThemeConfig;\n this.boundingRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n setAxes(xAxis, yAxis) {\n this.xAxis = xAxis;\n this.yAxis = yAxis;\n }\n setBoundingBoxXY(point) {\n this.boundingRect.x = point.x;\n this.boundingRect.y = point.y;\n }\n calculateSpace(availableSpace) {\n this.boundingRect.width = availableSpace.width;\n this.boundingRect.height = availableSpace.height;\n return {\n width: this.boundingRect.width,\n height: this.boundingRect.height\n };\n }\n getDrawableElements() {\n if (!(this.xAxis && this.yAxis)) {\n throw Error(\"Axes must be passed to render Plots\");\n }\n const drawableElem = [];\n for (const [i, plot] of this.chartData.plots.entries()) {\n switch (plot.type) {\n case \"line\":\n {\n const linePlot = new LinePlot(\n plot,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...linePlot.getDrawableElement());\n }\n break;\n case \"bar\":\n {\n const barPlot = new BarPlot(\n plot,\n this.boundingRect,\n this.xAxis,\n this.yAxis,\n this.chartConfig.chartOrientation,\n i\n );\n drawableElem.push(...barPlot.getDrawableElement());\n }\n break;\n }\n }\n return drawableElem;\n }\n}\nfunction getPlotComponent(chartConfig, chartData, chartThemeConfig) {\n return new BasePlot(chartConfig, chartData, chartThemeConfig);\n}\nclass Orchestrator {\n constructor(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2) {\n this.chartConfig = chartConfig;\n this.chartData = chartData;\n this.componentStore = {\n title: getChartTitleComponent(chartConfig, chartData, chartThemeConfig, tmpSVGGroup2),\n plot: getPlotComponent(chartConfig, chartData, chartThemeConfig),\n xAxis: getAxis(\n chartData.xAxis,\n chartConfig.xAxis,\n {\n titleColor: chartThemeConfig.xAxisTitleColor,\n labelColor: chartThemeConfig.xAxisLabelColor,\n tickColor: chartThemeConfig.xAxisTickColor,\n axisLineColor: chartThemeConfig.xAxisLineColor\n },\n tmpSVGGroup2\n ),\n yAxis: getAxis(\n chartData.yAxis,\n chartConfig.yAxis,\n {\n titleColor: chartThemeConfig.yAxisTitleColor,\n labelColor: chartThemeConfig.yAxisLabelColor,\n tickColor: chartThemeConfig.yAxisTickColor,\n axisLineColor: chartThemeConfig.yAxisLineColor\n },\n tmpSVGGroup2\n )\n };\n }\n calculateVerticalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100);\n let chartHeight = Math.floor(\n availableHeight * this.chartConfig.plotReservedSpacePercent / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight\n });\n plotY = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition(\"bottom\");\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n availableHeight -= spaceUsed.height;\n this.componentStore.yAxis.setAxisPosition(\"left\");\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n plotX = spaceUsed.width;\n availableWidth -= spaceUsed.width;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.xAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: plotX, y: plotY + chartHeight });\n this.componentStore.yAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n calculateHorizonatalSpace() {\n let availableWidth = this.chartConfig.width;\n let availableHeight = this.chartConfig.height;\n let titleYEnd = 0;\n let plotX = 0;\n let plotY = 0;\n let chartWidth = Math.floor(availableWidth * this.chartConfig.plotReservedSpacePercent / 100);\n let chartHeight = Math.floor(\n availableHeight * this.chartConfig.plotReservedSpacePercent / 100\n );\n let spaceUsed = this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n availableWidth -= spaceUsed.width;\n availableHeight -= spaceUsed.height;\n spaceUsed = this.componentStore.title.calculateSpace({\n width: this.chartConfig.width,\n height: availableHeight\n });\n titleYEnd = spaceUsed.height;\n availableHeight -= spaceUsed.height;\n this.componentStore.xAxis.setAxisPosition(\"left\");\n spaceUsed = this.componentStore.xAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n availableWidth -= spaceUsed.width;\n plotX = spaceUsed.width;\n this.componentStore.yAxis.setAxisPosition(\"top\");\n spaceUsed = this.componentStore.yAxis.calculateSpace({\n width: availableWidth,\n height: availableHeight\n });\n availableHeight -= spaceUsed.height;\n plotY = titleYEnd + spaceUsed.height;\n if (availableWidth > 0) {\n chartWidth += availableWidth;\n availableWidth = 0;\n }\n if (availableHeight > 0) {\n chartHeight += availableHeight;\n availableHeight = 0;\n }\n this.componentStore.plot.calculateSpace({\n width: chartWidth,\n height: chartHeight\n });\n this.componentStore.plot.setBoundingBoxXY({ x: plotX, y: plotY });\n this.componentStore.yAxis.setRange([plotX, plotX + chartWidth]);\n this.componentStore.yAxis.setBoundingBoxXY({ x: plotX, y: titleYEnd });\n this.componentStore.xAxis.setRange([plotY, plotY + chartHeight]);\n this.componentStore.xAxis.setBoundingBoxXY({ x: 0, y: plotY });\n if (this.chartData.plots.some((p) => isBarPlot(p))) {\n this.componentStore.xAxis.recalculateOuterPaddingToDrawBar();\n }\n }\n calculateSpace() {\n if (this.chartConfig.chartOrientation === \"horizontal\") {\n this.calculateHorizonatalSpace();\n } else {\n this.calculateVerticalSpace();\n }\n }\n getDrawableElement() {\n this.calculateSpace();\n const drawableElem = [];\n this.componentStore.plot.setAxes(this.componentStore.xAxis, this.componentStore.yAxis);\n for (const component of Object.values(this.componentStore)) {\n drawableElem.push(...component.getDrawableElements());\n }\n return drawableElem;\n }\n}\nclass XYChartBuilder {\n static build(config, chartData, chartThemeConfig, tmpSVGGroup2) {\n const orchestrator = new Orchestrator(config, chartData, chartThemeConfig, tmpSVGGroup2);\n return orchestrator.getDrawableElement();\n }\n}\nlet plotIndex = 0;\nlet tmpSVGGroup;\nlet xyChartConfig = getChartDefaultConfig();\nlet xyChartThemeConfig = getChartDefaultThemeConfig();\nlet xyChartData = getChartDefaultData();\nlet plotColorPalette = xyChartThemeConfig.plotColorPalette.split(\",\").map((color) => color.trim());\nlet hasSetXAxis = false;\nlet hasSetYAxis = false;\nfunction getChartDefaultThemeConfig() {\n const defaultThemeVariables = getThemeVariables();\n const config = getConfig();\n return cleanAndMerge(defaultThemeVariables.xyChart, config.themeVariables.xyChart);\n}\nfunction getChartDefaultConfig() {\n const config = getConfig();\n return cleanAndMerge(\n defaultConfig.xyChart,\n config.xyChart\n );\n}\nfunction getChartDefaultData() {\n return {\n yAxis: {\n type: \"linear\",\n title: \"\",\n min: Infinity,\n max: -Infinity\n },\n xAxis: {\n type: \"band\",\n title: \"\",\n categories: []\n },\n title: \"\",\n plots: []\n };\n}\nfunction textSanitizer(text) {\n const config = getConfig();\n return sanitizeText(text.trim(), config);\n}\nfunction setTmpSVGG(SVGG) {\n tmpSVGGroup = SVGG;\n}\nfunction setOrientation(orientation) {\n if (orientation === \"horizontal\") {\n xyChartConfig.chartOrientation = \"horizontal\";\n } else {\n xyChartConfig.chartOrientation = \"vertical\";\n }\n}\nfunction setXAxisTitle(title) {\n xyChartData.xAxis.title = textSanitizer(title.text);\n}\nfunction setXAxisRangeData(min, max) {\n xyChartData.xAxis = { type: \"linear\", title: xyChartData.xAxis.title, min, max };\n hasSetXAxis = true;\n}\nfunction setXAxisBand(categories) {\n xyChartData.xAxis = {\n type: \"band\",\n title: xyChartData.xAxis.title,\n categories: categories.map((c) => textSanitizer(c.text))\n };\n hasSetXAxis = true;\n}\nfunction setYAxisTitle(title) {\n xyChartData.yAxis.title = textSanitizer(title.text);\n}\nfunction setYAxisRangeData(min, max) {\n xyChartData.yAxis = { type: \"linear\", title: xyChartData.yAxis.title, min, max };\n hasSetYAxis = true;\n}\nfunction setYAxisRangeFromPlotData(data) {\n const minValue = Math.min(...data);\n const maxValue = Math.max(...data);\n const prevMinValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.yAxis) ? xyChartData.yAxis.max : -Infinity;\n xyChartData.yAxis = {\n type: \"linear\",\n title: xyChartData.yAxis.title,\n min: Math.min(prevMinValue, minValue),\n max: Math.max(prevMaxValue, maxValue)\n };\n}\nfunction transformDataWithoutCategory(data) {\n let retData = [];\n if (data.length === 0) {\n return retData;\n }\n if (!hasSetXAxis) {\n const prevMinValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.min : Infinity;\n const prevMaxValue = isLinearAxisData(xyChartData.xAxis) ? xyChartData.xAxis.max : -Infinity;\n setXAxisRangeData(Math.min(prevMinValue, 1), Math.max(prevMaxValue, data.length));\n }\n if (!hasSetYAxis) {\n setYAxisRangeFromPlotData(data);\n }\n if (isBandAxisData(xyChartData.xAxis)) {\n retData = xyChartData.xAxis.categories.map((c, i) => [c, data[i]]);\n }\n if (isLinearAxisData(xyChartData.xAxis)) {\n const min = xyChartData.xAxis.min;\n const max = xyChartData.xAxis.max;\n const step = (max - min + 1) / data.length;\n const categories = [];\n for (let i = min; i <= max; i += step) {\n categories.push(`${i}`);\n }\n retData = categories.map((c, i) => [c, data[i]]);\n }\n return retData;\n}\nfunction getPlotColorFromPalette(plotIndex2) {\n return plotColorPalette[plotIndex2 === 0 ? 0 : plotIndex2 % plotColorPalette.length];\n}\nfunction setLineData(title, data) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: \"line\",\n strokeFill: getPlotColorFromPalette(plotIndex),\n strokeWidth: 2,\n data: plotData\n });\n plotIndex++;\n}\nfunction setBarData(title, data) {\n const plotData = transformDataWithoutCategory(data);\n xyChartData.plots.push({\n type: \"bar\",\n fill: getPlotColorFromPalette(plotIndex),\n data: plotData\n });\n plotIndex++;\n}\nfunction getDrawableElem() {\n if (xyChartData.plots.length === 0) {\n throw Error(\"No Plot to render, please provide a plot with some data\");\n }\n xyChartData.title = getDiagramTitle();\n return XYChartBuilder.build(xyChartConfig, xyChartData, xyChartThemeConfig, tmpSVGGroup);\n}\nfunction getChartThemeConfig() {\n return xyChartThemeConfig;\n}\nfunction getChartConfig() {\n return xyChartConfig;\n}\nconst clear = function() {\n clear$1();\n plotIndex = 0;\n xyChartConfig = getChartDefaultConfig();\n xyChartData = getChartDefaultData();\n xyChartThemeConfig = getChartDefaultThemeConfig();\n plotColorPalette = xyChartThemeConfig.plotColorPalette.split(\",\").map((color) => color.trim());\n hasSetXAxis = false;\n hasSetYAxis = false;\n};\nconst db = {\n getDrawableElem,\n clear,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n getAccDescription,\n setAccDescription,\n setOrientation,\n setXAxisTitle,\n setXAxisRangeData,\n setXAxisBand,\n setYAxisTitle,\n setYAxisRangeData,\n setLineData,\n setBarData,\n setTmpSVGG,\n getChartThemeConfig,\n getChartConfig\n};\nconst draw = (txt, id, _version, diagObj) => {\n const db2 = diagObj.db;\n const themeConfig = db2.getChartThemeConfig();\n const chartConfig = db2.getChartConfig();\n function getDominantBaseLine(horizontalPos) {\n return horizontalPos === \"top\" ? \"text-before-edge\" : \"middle\";\n }\n function getTextAnchor(verticalPos) {\n return verticalPos === \"left\" ? \"start\" : verticalPos === \"right\" ? \"end\" : \"middle\";\n }\n function getTextTransformation(data) {\n return `translate(${data.x}, ${data.y}) rotate(${data.rotation || 0})`;\n }\n log.debug(\"Rendering xychart chart\\n\" + txt);\n const svg = selectSvgElement(id);\n const group = svg.append(\"g\").attr(\"class\", \"main\");\n const background = group.append(\"rect\").attr(\"width\", chartConfig.width).attr(\"height\", chartConfig.height).attr(\"class\", \"background\");\n configureSvgSize(svg, chartConfig.height, chartConfig.width, true);\n svg.attr(\"viewBox\", `0 0 ${chartConfig.width} ${chartConfig.height}`);\n background.attr(\"fill\", themeConfig.backgroundColor);\n db2.setTmpSVGG(svg.append(\"g\").attr(\"class\", \"mermaid-tmp-group\"));\n const shapes = db2.getDrawableElem();\n const groups = {};\n function getGroup(gList) {\n let elem = group;\n let prefix = \"\";\n for (const [i] of gList.entries()) {\n let parent = group;\n if (i > 0 && groups[prefix]) {\n parent = groups[prefix];\n }\n prefix += gList[i];\n elem = groups[prefix];\n if (!elem) {\n elem = groups[prefix] = parent.append(\"g\").attr(\"class\", gList[i]);\n }\n }\n return elem;\n }\n for (const shape of shapes) {\n if (shape.data.length === 0) {\n continue;\n }\n const shapeGroup = getGroup(shape.groupTexts);\n switch (shape.type) {\n case \"rect\":\n shapeGroup.selectAll(\"rect\").data(shape.data).enter().append(\"rect\").attr(\"x\", (data) => data.x).attr(\"y\", (data) => data.y).attr(\"width\", (data) => data.width).attr(\"height\", (data) => data.height).attr(\"fill\", (data) => data.fill).attr(\"stroke\", (data) => data.strokeFill).attr(\"stroke-width\", (data) => data.strokeWidth);\n break;\n case \"text\":\n shapeGroup.selectAll(\"text\").data(shape.data).enter().append(\"text\").attr(\"x\", 0).attr(\"y\", 0).attr(\"fill\", (data) => data.fill).attr(\"font-size\", (data) => data.fontSize).attr(\"dominant-baseline\", (data) => getDominantBaseLine(data.verticalPos)).attr(\"text-anchor\", (data) => getTextAnchor(data.horizontalPos)).attr(\"transform\", (data) => getTextTransformation(data)).text((data) => data.text);\n break;\n case \"path\":\n shapeGroup.selectAll(\"path\").data(shape.data).enter().append(\"path\").attr(\"d\", (data) => data.path).attr(\"fill\", (data) => data.fill ? data.fill : \"none\").attr(\"stroke\", (data) => data.strokeFill).attr(\"stroke-width\", (data) => data.strokeWidth);\n break;\n }\n }\n};\nconst renderer = {\n draw\n};\nconst diagram = {\n parser: parser$1,\n db,\n renderer\n};\nexport {\n diagram\n};\n"],"names":["parser","o","k","v","o2","l","length","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","$Va","$Vb","$Vc","$Vd","$Ve","$Vf","$Vg","$Vh","$Vi","$Vj","$Vk","$Vl","$Vm","$Vn","$Vo","$Vp","$Vq","$Vr","$Vs","$Vt","$Vu","$Vv","$Vw","$Vx","$Vy","$Vz","$VA","$VB","$VC","$VD","$VE","$VF","$VG","$VH","$VI","$VJ","$VK","$VL","$VM","$VN","$VO","$VP","$VQ","$VR","$VS","parser2","trace","yy","symbols_","terminals_","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","setDirection","setC4Type","setTitle","substring","this","$","setAccDescription","trim","splice","addPersonOrSystemBoundary","addContainerBoundary","addDeploymentNode","popBoundaryParseStack","addPersonOrSystem","addContainer","addComponent","addRel","updateElStyle","updateRelStyle","updateLayoutConfig","unshift","kv","table","defaultActions","parseError","str","hash","recoverable","error","Error","parse","input","self","stack","tstack","vstack","lstack","args","slice","call","arguments","lexer2","Object","create","lexer","sharedState","prototype","hasOwnProperty","setInput","yylloc","yyloc","push","ranges","options","lex","token","pop","Array","getPrototypeOf","symbol","state","action","r","p","len","newState","expected","yyval","errStr","showPosition","join","text","match","line","loc","first_line","last_line","first_column","last_column","range","apply","concat","EOF","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","lines","split","substr","oldLines","more","reject","backtrack_lexer","less","n","pastInput","past","replace","upcomingInput","next","pre","c2","test_match","indexed_rule","backup","matches","tempMatch","index","rules","_currentRules","i","flex","begin","condition","popState","conditions","topState","Math","abs","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","c","Parser","parser$1","c4ShapeArray","boundaryParseStack","currentBoundaryParse","parentBoundaryParse","boundarys","alias","label","type","tags","link","parentBoundary","rels","title","wrapEnabled","c4ShapeInRow$1","c4BoundaryInRow$1","c4Type","getC4ShapeArray","filter","personOrSystem","autoWrap","db","typeC4Shape","descr","sprite","old","find","personOrSystem2","key","value","entries","wrap","boundary","boundary2","techn","container","container2","component","component2","nodeType","from","to","rel","rel2","elementName","bgColor","fontColor","borderColor","shadowing","shape","legendText","legendSprite","element","textColor","lineColor","offsetX","offsetY","parseInt","c4ShapeInRowParam","c4BoundaryInRowParam","c4ShapeInRowValue","c4BoundaryInRowValue","values","setWrap","wrapSetting","getC4Shape","getC4ShapeKeys","keys","getBoundarys","getCurrentBoundaryParse","getParentBoundaryParse","getRels","getTitle","getC4Type","getC4ShapeInRow","getC4BoundaryInRow","setAccTitle","getAccTitle","getAccDescription","getConfig","c4","clear","LINETYPE","SOLID","DOTTED","NOTE","SOLID_CROSS","DOTTED_CROSS","SOLID_OPEN","DOTTED_OPEN","LOOP_START","LOOP_END","ALT_START","ALT_ELSE","ALT_END","OPT_START","OPT_END","ACTIVE_START","ACTIVE_END","PAR_START","PAR_AND","PAR_END","RECT_START","RECT_END","SOLID_POINT","DOTTED_POINT","ARROWTYPE","FILLED","OPEN","PLACEMENT","LEFTOF","RIGHTOF","OVER","txt","sanitizedText","sanitizeText","c4TypeParam","drawRect","elem","rectData","drawRect$1","drawImage","width","height","x","y","imageElem","append","attr","sanitizedLink","startsWith","sanitizeUrl","getC4ShapeFont","cnf","fontFamily","fontSize","fontWeight","_drawTextCandidateFunc","byText","content","g","textAttrs","_setTextAttrs","style","byTspan","conf2","common","lineBreakRegex","dy","byFo","s","toText","fromTextAttrsDict","textPlacement","svgDraw","boundaryElem","fillColor","strokeColor","attrsValue","fill","stroke","rx","ry","attrs","boundaryConf","boundaryFont","Y","c4Shape","_a","personImg","c4ShapeElem","rect","getNoteRect","replaceAll","c4ShapeFontConf","image","textFontConf","personFont","drawRels$1","rels2","relsElem","url","startPoint","endPoint","messageConf","messageFont","min","messageFontSize","max","marker","globalBoundaryMaxX","globalBoundaryMaxY","c4ShapeInRow","c4BoundaryInRow","conf","Bounds","constructor","diagObj","name","data","startx","stopx","starty","stopy","widthLimit","nextData","cnt","setConf","setData","updateVal","obj","val","fun","insert","_startx","margin","_stopx","_starty","_stopy","nextLinePaddingX","init","bumpLastMargin","assignWithDepth","personFontFamily","systemFontFamily","messageFontFamily","personFontSize","systemFontSize","personFontWeight","systemFontWeight","messageFontWeight","c4ShapeFont","boundaryFontFamily","boundaryFontSize","boundaryFontWeight","calcC4ShapeTextWH","textType","c4ShapeTextWrap","textConf","textLimitWidth","wrapLabel","textLines","calculateTextHeight","lineHeight","calculateTextWidth","drawBoundary","diagram2","bounds","c4ShapeMargin","boundaryTextWrap","boundaryLabelConf","drawC4ShapeArray","currentBounds","c4ShapeArray2","c4ShapeKeys","c4ShapeKey","c4ShapeTypeConf","c4ShapePadding","c4ShapeLabelConf","rectHeight","rectWidth","Point","getIntersectPoint","fromNode","x1","y1","x2","y2","fromCenterX","fromCenterY","dx","tanDYX","fromDYX","returnPoint","getIntersectPoints","endNode","endIntersectPoint","drawInsideBoundary","parentBoundaryAlias","parentBounds","currentBoundaries","currentBoundary","currentBoundaryTextWrap","currentBoundaryLabelConf","currentBoundaryDescrConf","_x","diagramMarginX","_y","diagramMarginY","currentPersonOrSystemArray","currentPersonOrSystemKeys","nextCurrentBoundarys","renderer","drawPersonOrSystemArray","draw","_text","id","_version","securityLevel","sandboxElement","select","root","nodes","contentDocument","body","db2","log","debug","JSON","stringify","screenBounds","screen","availWidth","title2","getC4ShapeObj","relTextWrap","relConf","points","drawRels","box","configureSvgSize","useMaxWidth","extraVertForTitle","diagram","styles","personBorder","personBkg","_ref","edgeCount","getClassTitleString","classDef","classTitleString","parseGenericTypes","addTspan","textEl","member","isFirst","displayText","cssStyle","getDisplayDetails","tSpan","padding","textHeight","classInfo","lookUpDomId","linkTarget","annotations","forEach","titleText2","classTitle","titleHeight","node","getBBox","membersLine","membersBox","methodsLine","members","dividerMargin","methods","method","classBox","cssClassStr","cssClasses","childNodes","setAttribute","tooltip","path","relation","getRelationType","relationType","AGGREGATION","EXTENSION","COMPOSITION","DEPENDENCY","LOLLIPOP","Number","isNaN","lineData","lineFunction","d","curve","curveBasis","svgPath","arrowMarkerAbsolute","window","location","protocol","host","pathname","search","lineType","type1","type2","p1_card_x","p1_card_y","p2_card_x","p2_card_y","labelPosition","utils","calcLabelPosition","cardinality_1_point","calcCardinalityPosition","cardinality_2_point","info","relationTitle1","relationTitle2","note","noteInfo","line2","noteBox","idCache","getGraphId","foundEntry","entry","class","graphlib","multigraph","setGraph","isMultiGraph","setDefaultEdgeLabel","classes","getClasses","setNode","getRelations","id1","id2","setEdge","getNotes","layout","edges","e","edge","w","svgBounds","vBox","addClasses","_id","parent","_vertex$label","_ref2","_b","vertex","styles2","vertexText","labelStyle","labelText","classData","domId","getTooltip","haveCallback","flowchart","setParent","getArrowMarker","_objectSpread","async","_getConfig$flowchart","_ref5","_ref6","_ref7","nodeSpacing","rankSpacing","compound","rankdir","getDirection","nodesep","ranksep","marginx","marginy","namespaces","getNamespaces","relations","notes","addNamespaces","edgeData","pattern","arrowhead","startLabelRight","endLabelLeft","arrowTypeStart","arrowTypeEnd","interpolateToCurve","curveLinear","getStylesFromArray","_ref4","arrowheadStyle","labelpos","htmlLabels","labelType","addRelations","startEdgeId","_ref3","noteData","edgeId","addNotes","svg","render","insertTitle","titleTopMargin","getDiagramTitle","setupGraphViewbox","diagramPadding","doc","document","labels","querySelectorAll","dim","createElementNS","insertBefore","firstChild","markdownToLines","markdown","preprocessedMarkdown","withoutMultipleNewlines","dedent","preprocessMarkdown","children","fromMarkdown","currentLine","processNode","parentType","undefined","textLine","word","contentNode","treeNode","splitWordToFitWidth","checkFit","splitWordToFitWidthRecursion","Intl","Segmenter","segment","map","usedChars","remainingChars","nextChar","rest","newWord","shift","splitLineToFitWidth","some","includes","splitLineToFitWidthRecursion","words","_words$shift","newLine","joiner","nextWord","lineWithNextWord","createTspan","textElement","lineIndex","computeWidthOfText","parentNode","testElement","testSpan","updateTextContentAndStyles","textLength","getComputedTextLength","remove","computeDimensionOfText","textDimension","getBoundingClientRect","tspan","wrappedLine","innerTspan","createText","el","isTitle","useHtmlLabels","isNode","addSvgBackground","htmlText","output","markdownToHTML","vertexNode","addBackground","fo","div","labelClass","dom","styleFn","html","bbox","addHtmlSpan","decodeEntities","svgLabel","structuredText","labelGroup","bkg","checkWidth","linesUnderWidth","preparedLine","createFormattedText","markers","extension","composition","aggregation","dependency","lollipop","point","circle","circle$1","cross","barb","insertMarkers$1","insertMarkers","markerArray","markerName","createLabel$1","createLabel","_vertexText","evaluate","addHtmlLabel","rows","isArray","row","setAttributeNS","textContent","appendChild","labelHelper","_classes","shapeSvg","textNode","wrappingWidth","halfPadding","dv","images","getElementsByTagName","noImgText","Promise","all","img","res","setupImage","display","flexDirection","bodyFontSize","getComputedStyle","enlargingFactor","setTimeout","complete","addEventListener","centerLabel","updateNodeBounds","insertPolygonShape","h","intersectEllipse","point2","cx","cy","px","py","det","sqrt","intersectLine","p1","p2","q1","q2","a1","a2","b1","b2","c1","r1","r2","r3","r4","denom","num","sameSign","intersectRect$1","intersectRect","sx","sy","intersect","ellipse","polygon","polyPoints","intersections","minX","POSITIVE_INFINITY","minY","left","top","intersect2","sort","q","pdx","pdy","distp","qdx","qdy","distq","formatClass","getClassesFromNode","otherClasses","question","questionElem","warn","applyNodePropertyBorders","rect2","borders","totalWidth","totalHeight","strokeDashArray","addBorder","skipBorder","forkJoin","dir","shapes","rhombus","props","propKeys","Set","delete","propKey","labelRect","rectWithTitle","innerLine","text2","flat","textRows","titleBox","choice","circle2","doublecircle","circleGroup","outerCircle","innerCircle","gap","stadium","hexagon","m","hex","rect_left_inv_arrow","lean_right","lean_left","trapezoid","inv_trapezoid","rect_right_inv_arrow","cylinder","pos","start","end","subroutine","fork","class_box","topLine","bottomLine","maxWidth","maxHeight","labelContainer","verticalPos","hasInterface","interfaceLabelText","interfaceLabel","interfaceBBox","classTitleLabel","classTitleBBox","classAttributes","parsedInfo","parsedText","lbl","classMethods","diffX2","diffX","memberBBox","nodeElems","insertNode","newEl","target","setNodeElem","clear$1","positionNode","diff","clusterNode","markerOffsets","arrow_point","calculateDeltaAndAngle","point1","pointTransformer","deltaX","deltaY","angle","atan","getLineFunctionsWithOffset","hasOwn","cos","sin","edgeLabels","terminalLabels","insertEdgeLabel","labelElement","edgeLabel","startLabelLeft","startLabelElement","startEdgeLabelLeft","inner","slBox","startLeft","setTerminalWidth","startEdgeLabelRight","startRight","endLabelElement","endEdgeLabelLeft","endLeft","endLabelRight","endEdgeLabelRight","endRight","positionEdgeLabel","paths","updatedPath","originalPath","calcTerminalLabelPosition","cutPathAtIntersect","_points","boundryNode","lastPointOutside","isInside","outsideNode","inter","intersection","outsidePoint","insidePoint","Q","R","pointPresent","insertEdge","clusterDb","diagramType","graph","pointsHasChanged","tail","head","toCluster","fromCluster","reverse","strokeClasses","thickness","byteToHex","toString","unsafeStringify","arr","uuid","REGEX","test","validate","TypeError","Uint8Array","f","z","ROTL","version","hashfunc","generateUUID","namespace","buf","_namespace","unescape","encodeURIComponent","bytes","charCodeAt","stringToBytes","set","err","DNS","URL","v35","K","H","msg","N","ceil","M","Uint32Array","j","pow","floor","W","t","a","b","T","addEntity","addRelationship","addAttributes","attributeType","attributeName","attributeKeyTypeList","attributeComment","cardA","relType","cardB","Cardinality","ZERO_OR_ONE","ZERO_OR_MORE","ONE_OR_MORE","ONLY_ONE","MD_PARENT","Identification","NON_IDENTIFYING","IDENTIFYING","erParser","entities","relationships","attributes","erDb","er","entityName","attribs","entity","getEntities","entA","rolA","entB","rSpec","entityA","roleA","entityB","relSpec","getRelationships","setDiagramTitle","ERMarkers","ONLY_ONE_START","ONLY_ONE_END","ZERO_OR_ONE_START","ZERO_OR_ONE_END","ONE_OR_MORE_START","ONE_OR_MORE_END","ZERO_OR_MORE_START","ZERO_OR_MORE_END","MD_PARENT_END","MD_PARENT_START","erMarkers","BAD_ID_CHARS_REGEXP","entityNameIds","Map","drawEntities","svgNode","entities2","firstOne","_entities2$entityName","entityId","prefix","simplifiedStr","strWithHyphen","v5","MERMAID_ERDIAGRAM_UUID","generateId","groupNode","textId","classed","entityWidth","entityHeight","drawAttributes","entityTextNode","heightPadding","entityPadding","widthPadding","attrFontSize","labelBBox","attributeNodes","hasKeyType","hasComment","maxTypeWidth","maxNameWidth","maxKeyWidth","maxCommentWidth","cumulativeHeight","attrNum","item","attrPrefix","nodeHeight","typeNode","nameNode","attributeNode","tn","nn","typeBBox","nameBBox","keyTypeNodeText","keyTypeNode","kn","keyTypeBBox","commentNode","cn","commentNodeBBox","widthPaddingFactor","bBox","minEntityWidth","minEntityHeight","spareColumnWidth","heightOffset","attribStyle","alignY","typeRect","nameXOffset","parseFloat","nameRect","keyTypeAndCommentXOffset","keyTypeRect","rectBBox","getEdgeName","relCnt","directed","layoutDirection","edgesep","firstEntity","relationships2","get","relationship","addRelationships","getTotalLength","labelPoint","getPointAtLength","labelId","drawRelationshipFromLayout","mainBkg","nodeBorder","attributeBackgroundColorOdd","attributeBackgroundColorEven","tertiaryColor","$VT","$VU","$VV","$VW","$VX","$VY","$VZ","$V_","$V$","$V01","$V11","$V21","$V31","$V41","$V51","$V61","$V71","$V81","$V91","$Va1","$Vb1","$Vc1","$Vd1","$Ve1","$Vf1","$Vg1","$Vh1","$Vi1","$Vj1","$Vk1","$Vl1","$Vm1","$Vn1","$Vo1","$Vp1","$Vq1","$Vr1","$Vs1","$Vt1","$Vu1","$Vv1","$Vw1","$Vx1","$Vy1","$Vz1","$VA1","$VB1","$VC1","addSubGraph","addLink","stmt","setClass","addVertex","fromEntries","inf","destructLink","addClass","setClickEvent","setTooltip","setLink","updateLink","updateLinkInterpolate","lex2","firstGraph","direction","vertexCounter","config","vertices","subGraphs","subGraphLookup","tooltips","subCount","firstGraphFlag","funs","veritceKeys","veritceKey","textObj","classes2","assign","addSingleLink","_start","_end","linkTextObj","positions","interp","defaultInterpolate","interpolate","defaultStyle","isSubstringInArray","ids","textStyles","newStyle","className","linkStr","formatUrl","functionName","functionArgs","argList","charAt","querySelector","runFunc","setClickFun","bindFunctions","getVertices","getEdges","setupToolTips","tooltipElem","_groups","selectAll","on","transition","duration","scrollX","right","scrollY","scrollTop","setGen","ver","list","_title","nodeList","nl","prims","boolean","number","string","objs","dir2","uniq","subGraph","makeUniq","getPosForId","secCount","posCrossRef","indexNodes2","result","count","posCount","childPos","getDepthFirstPos","indexNodes","getSubGraphs","_str","_startStr","dots","countChar","char","destructEndLink","startInfo","destructStartLink","exists","allSgs","sg","indexOf","allSubgraphs","flowDb","defaultConfig","freeze","defineProperty","__proto__","default","Symbol","toStringTag","flowRenderer","flowRendererV2","flowStyles","setConfig","elk","ELK","portPos","nodeDb","getNextPosition","position","edgeDirection","graphDirection","portPos2","TB","in","north","out","south","west","east","LR","RL","BT","TD","getNextPort","inPosition","outPosition","addEdges","labelsEl","defaultLabelStyle","linkIdCnt","defaultStyles","linkIdBase","linkId","linkNameStart","linkNameEnd","minlen","labelEl","source","sourceId","targetId","getEdgeStartEndPoint","startNode","sources","targets","orgWidth","orgHeight","layoutOptions","calcOffset","src","dest","parentLookupDb","ancestor","findCommonAncestor","treeData","parentById","visited","currentId","add","has","ancestorOffset","posX","posY","edgesEl","sections","segPoints","bendPoints","edgePath","edgeG","edgeWithLabel","addMarkersToEdge","insertChildren","nodeArray","childIds","childrenById","childId","drawNodes","relX","relY","subgraphsEl","depth","subgraphEl","labelCentering","labelData","labelNode","renderEl","vert","subG","subGraphsEl","subgraphs","subgraph","addSubGraphs","svgId","classStr","ports","radious","_shape","portConstraints","boundingBox","nodeEl","addVertices","nodeId","nodeTextColor","titleColor","arrowheadColor","edgeLabelBackground","clusterBkg","clusterBorder","border2","genSections","setWeekday","setDateFormat","enableInclusiveEndDates","TopAxis","setAxisFormat","setTickInterval","setExcludes","setIncludes","setTodayMarker","addSection","addTask","ganttParser","dayjs","dayjsIsoWeek","dayjsCustomParseFormat","dayjsAdvancedFormat","tickInterval","dateFormat","axisFormat","todayMarker","excludes","links","tasks","currentSection","displayMode","inclusiveEndDates","topAxis","weekday","lastOrder","isInvalidDate","date","dateFormat2","excludes2","includes2","format","isoWeekday","toLowerCase","checkTaskDates","task","manualEndTime","startTime","originalEndTime","Date","endTime","fixedEndTime","renderEndTime","fixTaskDates","toDate","invalid","getStartDate","prevTime","afterStatement","exec","latestEndingTask","findTaskById","dt","setHours","mDate","isValid","getTime","getFullYear","parseDuration","statement","NaN","getEndDate","inclusive","durationValue","durationUnit","newEndTime","taskCnt","parseId","idStr","lastTask","lastTaskID","rawTasks","taskDb","compileTasks","compileTask","raw","prevTask","prevTaskId","startData","processed","allProcessed","rawTask","pushFun","callbackFunction","ganttDb","gantt","getDateFormat","endDatesAreInclusive","enableTopAxis","topAxisEnabled","getAxisFormat","getTickInterval","getTodayMarker","setDisplayMode","getDisplayMode","getSections","getTasks","allItemsProcessed","iterationCount","section","taskInfo","dataStr","ds","getTaskTags","parseData","active","crit","milestone","order","addTaskOrg","newTask","description","endTimeData","compileData","getIncludes","getExcludes","_linkStr","open","getLinks","getWeekday","tags2","matchFound","regex","RegExp","mapWeekdayToTimeFunction","monday","timeMonday","tuesday","timeTuesday","wednesday","timeWednesday","thursday","timeThursday","friday","timeFriday","saturday","timeSaturday","sunday","timeSunday","getMaxIntersections","tasks2","orderOffset","timeline","Infinity","sorted","maxIntersections","getElementById","parentElement","offsetWidth","useWidth","taskArray","categories","checkUnique","categoryHeights","topPadding","categoryElements","category","categoryHeight","barHeight","barGap","timeScale","scaleTime","domain","rangeRound","leftPadding","rightPadding","taskA","taskB","pageWidth","pageHeight","scaleLinear","interpolateHcl","theGap","theTopPad","theSidePad","w2","h2","minTime","maxTime","excludeRanges","valueOf","enter","d2","gridLineStartPadding","renderEnd","drawExcludeDays","bottomXAxis","axisBottom","tickSize","tickFormat","timeFormat","resultTickInterval","every","interval","weekday2","ticks","timeMillisecond","timeSecond","timeMinute","timeHour","timeDay","timeMonth","topXAxis","axisTop","makeGrid","theArray","theBarHeight","theColorScale","uniqueTasks","numberSectionStyles","rectangles","links2","secNum","taskClass","startX","endX","textWidth","taskType","sandboxElement2","doc2","each","taskRect","taskText","oldParent","Link","createElement","drawRects","colorScale","prevGap","numOccurances","sectionFontSize","vertLabels","todayMarker2","todayG","today","todayLine","drawToday","makeGant","excludeBkgColor","sectionBkgColor","sectionBkgColor2","altSectionBkgColor","ganttFontSize","gridColor","todayLineColor","taskTextDarkColor","taskTextClickableColor","taskTextColor","taskBkgColor","taskBorderColor","taskTextOutsideColor","activeTaskBkgColor","activeTaskBorderColor","doneTaskBorderColor","doneTaskBkgColor","critBorderColor","critBkgColor","setOptions","checkout","branch","cherryPick","merge","commit","commitType","NORMAL","REVERSE","HIGHLIGHT","gitGraphParser","mainBranchName","gitGraph","mainBranchOrder","commits","branchesConfig","branches","curBranch","seq","getId","random","branch2","upsert","newVal","prettyPrintCommitHistory","commitArr","commit2","reduce","commit3","parents","newCommit","nextCommit","fn","recordMap","uniqBy","getCommitsArray","commitType$1","MERGE","CHERRY_PICK","gitGraphDb","rawOptString","message","getOptions","tag","otherBranch","custom_id","override_type","custom_tag","currentCommit","otherCommit","customType","customId","sourceCommit","sourceCommitBranch","_tag","prettyPrint","mainBranch","mainBranchOrder2","clear$2","getBranchesAsObjArray","branchConfig","getBranches","getCommits","getCurrentBranch","getHead","allCommitsDict","branchPos","commitPos","lanes","maxPos","drawText","drawCommits","commits2","modifyGraph","gitGraphConfig","gBullets","gLabels","typeClass","commitSymbolType","showCommitLabel","wrapper","labelBkg","rotateCommitLabel","r_x","r_y","hole","tagBbox","ly","findLane","candidate","lane","drawArrow","commit1","allCommits","overlappingCommits","hasOverlappingCommits","lineDef","arc","arc2","radius","colorClassNum","lineY","lineX","_gitGraphConfig$useMa","branches2","branchLabel","showBranches","drawBranches","adjustIndexForTheme","drawArrows","gArrows","options2","commitLabelFontSize","commitLabelColor","commitLabelBackground","tagLabelFontSize","tagLabelColor","tagLabelBackground","tagLabelBorder","primaryColor","descendants","isDescendant","ancenstorId","copy","clusterId","newGraph","rootId","data2","edgeInCluster","removeNode","extractDescendants","child","findNonClusterChild","getAnchorId","externalConnections","extractor","graphlibJson","hasChildren","clusterData","clusterGraph","sorter","rectBox","roundedWithTitle","innerRect","noteGroup","divider","clusterElems","recursiveRender","_elem","diagramtype","parentCluster","clusters","edgePaths","sortNodesByHierarchy","insertCluster","clear$3","adjustClustersAndEdges","removeEdge","specialId","edge1","structuredClone","edge2","setInfo","DEFAULT_INFO_DB","toggle","getInfo","selectSvgElement","journey","taskData","pieces","score","peeps","peopleList","people","getActors","tempActors","updateActors","faceColor","fillType0","fillType1","fillType2","fillType3","fillType4","fillType5","fillType6","fillType7","actor0","actor1","actor2","actor3","actor4","actor5","drawCircle","circleData","circleElement","textData","drawText$1","taskCount","colour","taskFontSize","taskFontFamily","center","faceData","face","face2","arc$1","startAngle","PI","endAngle","innerRadius","outerRadius","smile","sad","drawFace","xPos","person","actors","color","graphics","LEFT_MARGIN","leftMargin","sequenceItems","updateBounds","_self","boxMargin","bumpVerticalPos","bump","getVerticalPos","getBounds","fills","sectionFills","textColours","sectionColours","drawTasks","lastSection","taskPos","sectionNumber","taskInSectionCount","currentSection2","taskIndex","taskMargin","taskActors","acc","actorName","actorNames","actorPos","actorColours","yPos","textMargin","boxTextMargin","drawActorLegend","LEVELS","fatal","log$1","setLogLevel$1","level","numericLevel","console","bind","time","removeScript","DOMPurify","sanitize","sanitizeMore","config2","breakToPlaceholder","placeholderToBreak","sanitizeText$2","dompurifyConfig","FORBID_TAGS","String","inputSets","thisSet","previousSet","nextSet","shouldCombineSets","processSet","countOccurrence","prevCount","nextCount","tildeCount","hasStartingTilde","chars","first","last","lastIndexOf","common$1","getRows","sanitizeTextOrArray","hasBreaks","splitBreaks","getUrl","useAbsolute","getMax","_len","_key","newValues","getMin","_len2","_key2","mkBorder","col","darkMode","adjust","oldAttributeBackgroundColorOdd","oldAttributeBackgroundColorEven","Theme$4","background","noteBkgColor","noteTextColor","THEME_COLOR_LIMIT","updateColors","_c","_d","_e","_f","_g","_h","_i","_j","_k","primaryTextColor","secondaryColor","primaryBorderColor","secondaryBorderColor","tertiaryBorderColor","noteBorderColor","secondaryTextColor","invert","tertiaryTextColor","nodeBkg","defaultLinkColor","darken","actorBorder","actorBkg","actorTextColor","actorLineColor","labelBoxBkgColor","signalColor","signalTextColor","labelBoxBorderColor","labelTextColor","loopTextColor","activationBorderColor","activationBkgColor","sequenceNumberColor","lighten","taskTextLightColor","transitionColor","transitionLabelColor","stateLabelColor","stateBkg","labelBackgroundColor","compositeBackground","altBackground","compositeTitleBackground","compositeBorder","innerEndBackground","errorBkgColor","errorTextColor","specialStateColor","cScale0","cScale1","cScale2","cScale3","cScale4","cScale5","cScale6","cScale7","cScale8","cScale9","cScale10","cScale11","scaleLabelColor","multiplier","classText","pie1","pie2","pie3","pie4","pie5","pie6","pie7","pie8","pie9","pie10","pie11","pie12","pieTitleTextSize","pieTitleTextColor","pieSectionTextSize","pieSectionTextColor","pieLegendTextSize","pieLegendTextColor","pieStrokeColor","pieStrokeWidth","pieOuterStrokeWidth","pieOuterStrokeColor","pieOpacity","quadrant1Fill","quadrant2Fill","quadrant3Fill","quadrant4Fill","quadrant1TextFill","quadrant2TextFill","quadrant3TextFill","quadrant4TextFill","quadrantPointFill","isDark","quadrantPointTextFill","quadrantXAxisTextFill","quadrantYAxisTextFill","quadrantInternalBorderStrokeFill","quadrantExternalBorderStrokeFill","quadrantTitleFill","xyChart","backgroundColor","xAxisTitleColor","xAxisLabelColor","xAxisTickColor","xAxisLineColor","yAxisTitleColor","yAxisLabelColor","yAxisTickColor","yAxisLineColor","plotColorPalette","requirementBackground","requirementBorderColor","requirementBorderSize","requirementTextColor","relationColor","relationLabelBackground","relationLabelColor","git0","git1","git2","git3","git4","git5","git6","git7","gitInv0","gitInv1","gitInv2","gitInv3","gitInv4","gitInv5","gitInv6","gitInv7","branchLabelColor","gitBranchLabel0","gitBranchLabel1","gitBranchLabel2","gitBranchLabel3","gitBranchLabel4","gitBranchLabel5","gitBranchLabel6","gitBranchLabel7","tagBorder","calculate","overrides","Theme$3","secondBkg","mainContrastColor","darkTextColor","border1","rgba","labelBackground","labelColor","cScale12","Theme$2","cScaleLabel0","cScaleLabel3","getThemeVariables$2","userOverrides","theme2","Theme$1","Theme5","contrast","critical","stateBorder","pie0","theme","base","getThemeVariables","dark","forest","neutral","defaultConfigJson","deterministicIDSeed","themeCSS","themeVariables","sequence","noteFont","noteFontFamily","noteFontSize","noteFontWeight","actorFont","actorFontFamily","actorFontSize","actorFontWeight","external_personFont","external_personFontFamily","external_personFontSize","external_personFontWeight","systemFont","external_systemFont","external_systemFontFamily","external_systemFontSize","external_systemFontWeight","system_dbFont","system_dbFontFamily","system_dbFontSize","system_dbFontWeight","external_system_dbFont","external_system_dbFontFamily","external_system_dbFontSize","external_system_dbFontWeight","system_queueFont","system_queueFontFamily","system_queueFontSize","system_queueFontWeight","external_system_queueFont","external_system_queueFontFamily","external_system_queueFontSize","external_system_queueFontWeight","containerFont","containerFontFamily","containerFontSize","containerFontWeight","external_containerFont","external_containerFontFamily","external_containerFontSize","external_containerFontWeight","container_dbFont","container_dbFontFamily","container_dbFontSize","container_dbFontWeight","external_container_dbFont","external_container_dbFontFamily","external_container_dbFontSize","external_container_dbFontWeight","container_queueFont","container_queueFontFamily","container_queueFontSize","container_queueFontWeight","external_container_queueFont","external_container_queueFontFamily","external_container_queueFontSize","external_container_queueFontWeight","componentFont","componentFontFamily","componentFontSize","componentFontWeight","external_componentFont","external_componentFontFamily","external_componentFontSize","external_componentFontWeight","component_dbFont","component_dbFontFamily","component_dbFontSize","component_dbFontWeight","external_component_dbFont","external_component_dbFontFamily","external_component_dbFontSize","external_component_dbFontWeight","component_queueFont","component_queueFontFamily","component_queueFontSize","component_queueFontWeight","external_component_queueFont","external_component_queueFontFamily","external_component_queueFontSize","external_component_queueFontWeight","pie","requirement","sankey","keyify","configKeys","defaultConfig$2","sanitizeDirective","arg","cssMatchers","cssKey","sanitizeCss","str2","startCnt","endCnt","frontMatterRegex","directiveRegex","anyCommentRegex","UnknownDiagramError","super","detectors","detectType","detector","detector2","registerLazyLoadedDiagrams","_len3","diagrams2","_key3","loader","loader2","addDetector","dst","clobber","assignWithDepth$1","ZERO_WIDTH_SPACE","d3CurveTypes","curveBasisClosed","curveBasisOpen","curveBumpX","curveBumpY","curveBundle","curveCardinalClosed","curveCardinalOpen","curveCardinal","curveCatmullRomClosed","curveCatmullRomOpen","curveCatmullRom","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","directiveWithoutOpen","detectDirective","commentWithoutDirectives","lastIndex","type22","defaultCurve","_d3CurveTypes$curveNa","curveName","toUpperCase","distance","roundNumber","precision","factor","round","calculatePoint","distanceToTraverse","prevPoint","remainingDistance","vectorDistance","distanceRatio","characters","makeRandomHex","drawSimpleText","nText","_fontSizePx","parseFontSize","textElem","anchor","span","memoize","joinWith","completedLines","nextLine","wordLength","nextLineLength","hyphenatedStrings","remainingWord","breakString","Boolean","hyphenCharacter","character","currentCharacter","isLastLine","hyphenatedNextLine","calculateTextDimensions","fontFamilies","dims","fontFamily2","cHeight","valign","decoder","isDetailedError","fontSizeNumber","cleanAndMerge","defaultData","merge$1","detectInit","inits","results","init2","prop","totalDistance","traverseEdge","isRelationTypePresent","initialPosition","atan2","cardinalityPosition","terminalMarkerSize","arrPaths","fnName","_len4","params","_key4","entityDecode","escape","innerHTML","cssClass","InitIDGenerator","deterministic","seed","now","defaultConfig$1","configFromInitialize","siteConfig","directives","currentConfig","updateCurrentConfig","siteCfg","_directives","cfg","sumOfDirectives","tmpConfigFromInitialize","checkConfig","getSiteConfig","setConfig$1","getConfig$1","_siteConfig$secure","secure","reset","ConfigWarning","LAZY_LOAD_DEPRECATED","issuedWarnings","warning","lazyLoadedDiagrams","loadExternalDiagramsAtStartup","id$j","detector$j","defaultRenderer","id$i","flowchartV2","detector$i","id$g","git","id$f","id$e","id$c","quadrantChart","id$b","xychart","id$a","id$9","id$8","classDiagram","detector$8","id$7","classDiagramV2","detector$7","id$6","detector$6","id$5","stateV2","detector$5","id$4","svgElem","calculateSvgSizeAttrs","d3Elem","d3Attrs","setupGraphViewbox$1","sWidth","sHeight","themes","getStyles$1","getStyles","userStyles","diagramStyles","accTitle","diagramTitle","accDescription","sanitizeText$1","commonDb","setLogLevel","diagrams","registerDiagram","diagramTheme","injectUtils","getDiagram","DiagramNotFoundError","version2","errorRenderer","errorDiagram","id$3","flowchartElk","detector$3","id$2","id$1","mindmap","hasLoadedDiagrams","addDiagrams","trimStart","Diagram","metadata","detectError","getParser","getType","getDiagramFromText","interactionFunctions","addFunction","func","isNothing","subject","isObject","toArray","sequence2","repeat","cycle","isNegativeZero","NEGATIVE_INFINITY","extend","sourceKeys","formatError","exception2","compact","where","reason","mark","column","snippet","YAMLException$1","captureStackTrace","exception","getLine","buffer","lineStart","lineEnd","maxLineLength","maxHalfLength","padStart","maxLength","indent","linesBefore","linesAfter","re","lineStarts","lineEnds","foundLineNo","lineNoLength","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","kind","resolve","construct","instanceOf","predicate","represent","representName","multi","styleAliases","map2","compileStyleAliases","compileList","schema2","currentType","newIndex","previousType","previousIndex","Schema$1","definition","implicit","explicit","type$1","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","scalar","mapping","fallback","collectType","compileMap","failsafe","_null","object","canonical","lowercase","uppercase","camelcase","empty","bool","isHexCode","isOctCode","isDecCode","int","hasDigits","sign","binary","octal","decimal","hexadecimal","YAML_FLOAT_PATTERN","SCIENTIFIC_WITHOUT_DOT","float","json","core","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","timestamp","year","month","day","hour","minute","second","fraction","delta","UTC","setTime","toISOString","BASE64_MAP","code","idx","bitlen","tailbits","bits","_hasOwnProperty$3","_toString$2","omap","pair","pairKey","pairHasKey","objectKeys","_toString$1","pairs","_hasOwnProperty$2","_default","_hasOwnProperty$1","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","simpleEscapeCheck","simpleEscapeMap","State$1","filename","schema","onWarning","legacy","listener","implicitTypes","typeMap","lineIndent","firstTabInLine","documents","generateError","state2","throwError","throwWarning","directiveHandlers","YAML","major","minor","checkLineBreaks","TAG","handle","tagMap","decodeURIComponent","captureSegment","checkJson","_position","_length","_character","_result","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","startLine","startLineStart","startPos","configurable","enumerable","writable","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readBlockSequence","nodeIndent","_line","_anchor","detected","anchorMap","composeNode","readTagProperty","tagHandle","tagName","isVerbatim","isNamed","readAnchorProperty","parentIndent","nodeContext","allowToSeek","allowCompact","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","typeList","flowIndent","blockIndent","indentStatus","atNewLine","hasContent","following","_keyLine","_keyLineStart","_keyPos","atExplicitKey","readBlockMapping","_lineStart","_pos","terminator","isPair","isExplicitPair","isMapping","readNext","readFlowCollection","captureStart","folding","tmp","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockScalar","captureEnd","readSingleQuotedScalar","hexLength","hexResult","readDoubleQuotedScalar","readAlias","withinFlowCollection","hasPendingContent","_lineIndent","_kind","readPlainScalar","readDocument","directiveName","directiveArgs","documentStart","hasDirectives","loadDocuments","nullpos","JSON_SCHEMA","load","loadAll","iterator","processFrontmatter","_load","parsed","extractFrontMatter","preprocessDiagram","cleanedCode","cleanupText","frontMatterResult","directiveResult","_utils$detectInit","initDirective","wrapDirectives","directive","processDirectives","DOMPURIFY_TAGS","DOMPURIFY_ATTR","processAndSetConfigs","_processed$config","cssImportantStyles","createUserStyles","graphType","classDefs","userCSSstyles","cssStyles","altFontFamily","isEmpty","cssElements","classId","styleClassDef","cssElement","createCssStyles","allStyles","serialize","compile","appendDivSvgG","parentRoot","enclosingDivId","divStyle","svgXlink","enclosingDiv","sandboxedIframe","iFrameId","mermaidAPI","svgContainingElement","maxTextSize","idSelector","iFrameID","iFrameID_selector","enclosingDivID","enclosingDivID_selector","isSandboxed","isLooseSecurityLevel","iframe","removeExistingElements","divId","diag","parseEncounteredException","innerTxt","encodeEntities","diagramClassDefs","style1","a11yTitle","a11yDescr","setA11yDiagramInfo","a11yDesc","baseId","descId","titleId","addSVGa11yTitleDescription","addA11yInfo","svgCode","cleanedUpSvg","cleanUpSvgCode","svgElement","viewBox","baseVal","base64encodedSrc","btoa","putIntoIFrame","ADD_TAGS","ADD_ATTR","tmpElementSelector","parseOptions","suppressErrors","initialize","setSiteConfig","logLevel","updateSiteConfig","globalReset","handleError","errors","run","runThrowsErrors","mermaid","postRenderCallback","nodesToProcess","startOnLoad","idGenerator","deterministicIds","getAttribute","contentLoaded","catch","executionQueue","executionQueueRunning","executeQueue","performCall","rej","then","callback","runOptions","HTMLElement","registerExternalDiagrams","lazyLoad","failed","allSettled","status","loadRegisteredDiagrams","setParseErrorHandler","parseErrorHandler","getLogger","addNode","decorateNode","icon","DEFAULT","mindmapParser","elements","NO_BORDER","ROUNDED_RECT","RECT","CIRCLE","CLOUD","BANG","HEXAGON","setElementForId","type2Str","mindmapDb","maxNodeWidth","getParent","decoration","getMindmap","getNodeById","startStr","endStr","setErrorHandler","handler","fullSection","nodeElem","sectionClass","bkgElem","heightDiff","defaultBkg","roundedRectBkg","rectBkg","circleBkg","cloudBkg","bangBkg","hexagonBkg","addNodes","group","layoutMindmap","cytoscape","selector","layoutDimensions","quality","styleEnabled","animate","ready","coseBilkent","mm","edgesElem","nodesElem","_private","bodyBounds","rscratch","startY","midX","midY","endY","drawEdges","positionNodes","sw","setShowData","cleanupValue","DEFAULT_PIE_CONFIG","DEFAULT_PIE_DB","showData","getShowData","_outerStrokeWidth","globalConfig","pieConfig","LEGEND_RECT_SIZE","outerStrokeWidth","textPosition","arcGenerator","labelArcGenerator","sections2","arcs","pieData","d3Section","pie$1","createPieArcs","myGeneratedColors","scaleOrdinal","datum","sum","toFixed","centroid","legend","_datum","addPoint","setXAxisLeftText","setXAxisRightText","setYAxisBottomText","setYAxisTopText","setQuadrant1Text","setQuadrant2Text","setQuadrant3Text","setQuadrant4Text","defaultThemeVariables","textSanitizer","quadrantBuilder","getDefaultConfig","themeConfig","getDefaultThemeConfig","getDefaultData","titleText","quadrant1Text","quadrant2Text","quadrant3Text","quadrant4Text","xAxisLeftText","xAxisRightText","yAxisBottomText","yAxisTopText","_l","_m","_n","_o","_p","_q","_r","showXAxis","showYAxis","showTitle","chartHeight","chartWidth","titlePadding","titleFontSize","quadrantPadding","xAxisLabelPadding","yAxisLabelPadding","xAxisLabelFontSize","yAxisLabelFontSize","quadrantLabelFontSize","quadrantTextTopPadding","pointTextPadding","pointLabelFontSize","pointRadius","xAxisPosition","yAxisPosition","quadrantInternalBorderStrokeWidth","quadrantExternalBorderStrokeWidth","addPoints","setThemeConfig","calculateSpace","xAxisSpaceCalculation","xAxisSpace","bottom","yAxisSpaceCalculation","yAxisSpace","titleSpaceCalculation","titleSpace","quadrantLeft","quadrantTop","quadrantWidth","quadrantHeight","quadrantSpace","quadrantHalfWidth","quadrantHalfHeight","getAxisLabels","spaceData","drawXAxisLabelsInMiddle","drawYAxisLabelsInMiddle","axisLabels","horizontalPos","rotation","getQuadrants","quadrants","quadrant","getQuadrantPoints","xAxis","yAxis","getBorders","halfExternalBorderWidth","strokeFill","strokeWidth","build","calculatedSpace","borderLines","setWidth","setHeight","getQuadrantData","quadrantChartConfig","getDominantBaseLine","getTextAnchor","getTransformation","quadrantData","quadrantsGroup","borderGroup","dataPointGroup","titleGroup","dataPoints","addRequirement","setNewReqId","setNewReqText","setNewReqRisk","setNewReqVerifyMethod","RequirementType","REQUIREMENT","FUNCTIONAL_REQUIREMENT","INTERFACE_REQUIREMENT","PERFORMANCE_REQUIREMENT","PHYSICAL_REQUIREMENT","DESIGN_CONSTRAINT","RiskLevel","LOW_RISK","MED_RISK","HIGH_RISK","VerifyType","VERIFY_ANALYSIS","VERIFY_DEMONSTRATION","VERIFY_INSPECTION","VERIFY_TEST","addElement","setNewElementType","setNewElementDocRef","Relationships","CONTAINS","COPIES","DERIVES","SATISFIES","VERIFIES","REFINES","TRACES","latestRequirement","requirements","latestElement","req","risk","verifyMethod","getRequirements","docRef","getElements","ReqMarkers","ARROW","insertLineEndings","containsNode","line_height","newRectNode","rect_min_width","rect_min_height","newTitleNode","txts","rect_padding","textStr","totalY","titleNode","newBodyNode","yStart","currentRow","wrappedTxts","currentTextLen","firstPart","lastStr","elementString","addEdgeLabel","requirements2","elements2","drawReqs","reqs","reqName","rectNode","titleNodeInfo","drawElements","els","elName","adjustEntities","findOrCreateNode","nodesMap","SankeyLink","SankeyNode","ID","getNodes","getGraph","_Uid","_Uid2","href","Uid","alignmentsMap","sankeyLeft","sankeyRight","sankeyCenter","justify","sankeyJustify","defaultSankeyConfig","nodeAlignment","suffix","showValues","nodeAlign","nodeWidth","nodePadding","extent","sankey$1","colorScheme","schemeTableau10","uid","x0","y0","_ref8","linkColor","gradient","coloring","sankeyLinkHorizontal","originalParse","prepareTextForParsing","boxData","parseBoxData","boxText","sequenceIndex","sequenceIndexStep","sequenceVisible","signalType","AUTONUMBER","actor","loopText","parseMessage","optText","altText","parText","PAR_OVER_START","criticalText","CRITICAL_START","CRITICAL_END","breakText","BREAK_START","BREAK_END","optionText","CRITICAL_OPTION","placement","activate","prevActor","currentBox","lastCreated","lastDestroyed","createdActors","destroyedActors","boxes","messages","sequenceNumbersEnabled","addActor","assignedBox","properties","actorCnt","nextActor","actorKeys","addSignal","idFrom","idTo","messageType","part","activationCount","getActor","addNote","actors2","addLinks","actorId","insertLinks","addProperties","insertProperties","addDetails","details","param","step","visible","sep","addALink","addMessage","answer","enableSequenceNumbers","disableSequenceNumbers","showSequenceNumbers","getMessages","getCreatedActors","getDestroyedActors","getActorKeys","getActorProperty","getBoxes","CSS","supports","Option","hasAtLeastOneBox","hasAtLeastOneBoxWithTitle","addPopupInteraction","actorCnt2","popupMenuUpFunc","popupMenuDownFunc","popupId","pu","prevTextHeight","_textFontSize","_textFontSizePx","textElems","yfunc","dominantBaseline","alignmentBaseline","drawLabel","txtObject","cut","fixLifeLineHeights","actorKey","actorDOM","mirrorActors","drawBackgroundRect","bounds2","drawBackgroundRect$1","getTextObj","_actorFontSize","_actorFontSizePx","_drawMenuItemTextCandidateFunc","drawActor","isFooter","actorY","centerY","lower","actElem","getNoteRect$1","ACTOR_TYPE_WIDTH","drawActorTypeActor","boxpluslineGroup","cssclass","rectElem","iconSrc","drawEmbeddedImage","drawActorTypeParticipant","drawBox","textMaxHeight","drawPopup","minMenuWidth","forceMenus","displayValue","actorClass","menuWidth","linkY","linkElem","anchorElement","drawActivation","actorActivations2","anchored","drawLoop","loopModel","labelBoxHeight","labelBoxWidth","drawLoopLine","getTextObj$1","sectionTitles","sectionHeight","te","curr","insertArrowHead","insertArrowFilledHead","insertSequenceNumber","insertArrowCrossHead","insertDatabaseIcon","insertComputerIcon","insertClockIcon","popupMenu","popid","popdownMenu","activations","models","getHeight","loops","it","addBox","boxModel","actorModel","addLoop","msgModel","noteModel","lastActor","lastLoop","lastMessage","lastNote","updateFn","newActivation","actorRect","stackedSize","actorActivations","activationWidth","endActivation","lastActorActivationIdx","activation","createLoop","newLoop","endLoop","isLoopOverlap","overlap","addSectionToLoop","loop","saveVerticalPos","savedVerticalPos","resetVerticalPos","drawActors","drawActorsPopup","getRequiredPopupWidth","menuDimensions","activationBounds","actorObj","adjustLoopHeightForWrap","loopWidths","preMargin","postMargin","addLoopFn","heightAdjust","loopWidth","wrapPadding","textDims","totalOffset","requiredPopupWidth","textFont","labelWidth","calculateLoopBounds","messages2","_maxWidthPerActor","current","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","toAdd","enabled","shouldWrap","textDimensions","noteMargin","actorMargin","buildNoteModel","stk","fromLeft","fromRight","toLeft","toRight","isArrowToRight","isArrowToActivation","adjustValue","allBounds","boundedWidth","msgDims","fromBounds","toBounds","buildMessageModel","createdActors2","destroyedActors2","boxes2","hasBoxes","hasBoxTitles","maxMessageWidthPerActor","isNote","isMessage","wrappedMessage","messageWidth","getMaxMessageWidthPerActor","actorToMessageWidth","actDims","actorWidth2","actorWidth","maxBoxHeight","total","aKey","boxMsgDimensions","minWidth","missing","calculateActorMargins","hideUnusedParticipants","newActors","prevBox","prevWidth","prevMargin","addActorRenderingData","messagesToDraw","backgrounds","noteAlign","drawNote","activationData","activeEnd","lineStartY","_diagram","rightAngles","boundMessage","receiverAdjustment","adjustment","senderAdjustment","adjustCreatedDestroyedData","messageModel","messageAlign","drawMessage","box2","requiredBoxSize","boxHeight","bottomMarginAdj","boxWidth","idCache$1","drawDescrState","stateDef","descriptions","isSecond","isFirst2","descrLine","descrBox","addTitleAndBox","altBkg","pad","dblPad","orgBox","orgX","titleShift","titleWidth","graphBox","_drawLongText","tHeight","drawState","stateInfo","sizeUnit","drawStartState","miniPadding","drawEndState","drawForkJoinState","forkWidth","forkHeight","parentId","drawDivider","drawSimpleState","stateBox","transformationLog","renderDoc","domDocument","edgeFreeDoc","ranker","edgeLengthFactor","nodeSep","extract","states","getStates","keys2","sub","boxBounds","compositTitleSize","noteDef","nodeCount","fontSizeFactor","labelHeight","pWidth","pShift","titleRows","boundstmp","heightAdj","drawEdge","rootDoc","getRootDoc","svgWidth","SHAPE_STATE","SHAPE_STATE_WITH_DESC","CSS_DIAGRAM","CSS_DIAGRAM_STATE","CSS_EDGE","CSS_EDGE_NOTE_EDGE","CSS_DIAGRAM_NOTE","CSS_DIAGRAM_CLUSTER","CSS_DIAGRAM_CLUSTER_ALT","PARENT","DOMID_TYPE_SPACER","NOTE_ID","PARENT_ID","G_EDGE_STYLE","G_EDGE_ARROWHEADSTYLE","G_EDGE_LABELTYPE","G_EDGE_THICKNESS","graphItemCount","stateDomId","itemId","counter","typeSpacer","typeStr","setupNode","parsedItem","diagramStates","diagramDb","altFlag","dbInfoItem","DEFAULT_STATE_TYPE","newNode","getDir","DIVIDER_TYPE","nodeData","groupData","parentNodeId","arrowType","setupDoc","parentParsedItem","STMT_STATE","STMT_RELATION","state1","DEFAULT_NESTED_DOC_DIR","parsedItemDoc","diagramObj","getRootDocV2","addRelation","cleanupLabel","addClassesToNamespace","addNamespace","setCssClass","addMembers","setClassLabel","addAnnotation","addMember","LINE","DOTTED_LINE","visibilityValues","ClassMember","memberType","visibility","classifier","sanitizedInput","parseMember","parameters","returnType","parseClassifier","potentialClassifier","methodRegEx","detectedVisibility","lastChar","firstChar","MERMAID_DOM_ID_PREFIX","classCounter","namespaceCounter","functions","splitClassNameAndType","genericType","validatedClassName","theClass","memberString","endsWith","setClickFunc","_domId","elemId","getClass","annotation","classNames","getNamespace","removeChild","i2","linkNode","fade","opacity","channel","khroma","setRootDoc","stateStmt","trimColon","relDescription","parts","getDividerId","styleClass","START_NODE","START_TYPE","END_NODE","COLOR_KEYWORD","FILL_KEYWORD","currentDocument","startEndCount","dividerCnt","clone","docTranslator","currentDoc","docNode","addState","trimmedId","addDescription","des","klass","setStyle","textStyle","setTextStyle","saveCommon","getState","startIdIfNeeded","fixedId","startTypeIfNeeded","item1","item2","relationTitle","addRelationObjs","endIdIfNeeded","endTypeIfNeeded","theState","_descr","addStyleClass","styleAttributes","foundClass","attrib","fixedAttrib","newStyle2","itemIds","cssClassName","foundState","styleText","logDocuments","_doc","rectElement","attrKey","imageElement","getCommonDb","addEvent","currentTaskId","period","event","events","timelineDb","sectionColor","masterX","masterY","maxTaskHeight","maxEventCount","maxEventLineLength","maxSectionHeight","isWithoutSections","taskNode","taskWrapper","taskHeight","lineWrapper","lineLength","drawEvents","disableMulticolor","maxEventHeight","eventBeginY","eventNode","eventWrapper","eventHeight","_conf$leftMargin","depthY","sectionBeginY","hasSections","maxEventLineLengthTemp","tasksForSection","sectionNode","sectionNodeWrapper","setOrientation","setLineData","setBarData","setXAxisTitle","setXAxisBand","setXAxisRangeData","setYAxisTitle","setYAxisRangeData","isBarPlot","isBandAxisData","isLinearAxisData","TextDimensionCalculatorWithFont","parentGroup","getMaxDimension","texts","cur","dimension","BaseAxis","axisConfig","textDimensionCalculator","axisThemeConfig","boundingRect","axisPosition","showLabel","showTick","showAxisLine","outerPadding","titleTextHeight","labelTextHeight","setRange","recalculateScale","getRange","setAxisPosition","getTickDistance","getTickValues","getAxisOuterPadding","getLabelDimension","tick","labelFontSize","recalculateOuterPaddingToDrawBar","calculateSpaceIfDrawnHorizontally","availableSpace","availableHeight","axisLineWidth","spaceRequired","maxPadding","heightRequired","labelPadding","tickLength","calculateSpaceIfDrawnVertical","availableWidth","widthRequired","setBoundingBoxXY","getDrawableElementsForLeftAxis","drawableElement","groupTexts","axisLineColor","getScaleValue","tickColor","tickWidth","getDrawableElementsForBottomAxis","getDrawableElementsForTopAxis","getDrawableElements","BandAxis","scale","scaleBand","paddingInner","paddingOuter","align","LinearAxis","getAxis","tmpSVGGroup2","textDimansionCalculator","ChartTitle","chartConfig","chartData","chartThemeConfig","showChartTitle","titleDimension","drawableElem","getChartTitleComponent","LinePlot","plotData","orientation","plotIndex2","plotIndex","getDrawableElement","finalData","BarPlot","barData","barWidth","barWidthHalf","BasePlot","setAxes","plot","plots","linePlot","chartOrientation","barPlot","getPlotComponent","Orchestrator","componentStore","calculateVerticalSpace","plotX","plotY","plotReservedSpacePercent","spaceUsed","calculateHorizonatalSpace","titleYEnd","XYChartBuilder","tmpSVGGroup","xyChartConfig","getChartDefaultConfig","xyChartThemeConfig","getChartDefaultThemeConfig","xyChartData","getChartDefaultData","hasSetXAxis","hasSetYAxis","transformDataWithoutCategory","retData","prevMinValue","prevMaxValue","minValue","maxValue","setYAxisRangeFromPlotData","getPlotColorFromPalette","getDrawableElem","setTmpSVGG","SVGG","getChartThemeConfig","getChartConfig","getTextTransformation","groups","getGroup","gList","shapeGroup"],"sourceRoot":""}