@tecture/core 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/cli.js +329 -0
  2. package/dist/cli.js.map +1 -0
  3. package/dist/public/assets/_baseUniq-okA3yjMF.js +2 -0
  4. package/dist/public/assets/_baseUniq-okA3yjMF.js.map +1 -0
  5. package/dist/public/assets/arc-DuPQU9II.js +2 -0
  6. package/dist/public/assets/arc-DuPQU9II.js.map +1 -0
  7. package/dist/public/assets/architectureDiagram-Q4EWVU46-DaPqXmCT.js +37 -0
  8. package/dist/public/assets/architectureDiagram-Q4EWVU46-DaPqXmCT.js.map +1 -0
  9. package/dist/public/assets/blockDiagram-DXYQGD6D-md6nhFCg.js +133 -0
  10. package/dist/public/assets/blockDiagram-DXYQGD6D-md6nhFCg.js.map +1 -0
  11. package/dist/public/assets/c4Diagram-AHTNJAMY-BqpvwUhA.js +11 -0
  12. package/dist/public/assets/c4Diagram-AHTNJAMY-BqpvwUhA.js.map +1 -0
  13. package/dist/public/assets/channel-D36ns3ja.js +2 -0
  14. package/dist/public/assets/channel-D36ns3ja.js.map +1 -0
  15. package/dist/public/assets/chunk-4BX2VUAB-DdNxSoa7.js +2 -0
  16. package/dist/public/assets/chunk-4BX2VUAB-DdNxSoa7.js.map +1 -0
  17. package/dist/public/assets/chunk-4TB4RGXK-DJXPYtFh.js +207 -0
  18. package/dist/public/assets/chunk-4TB4RGXK-DJXPYtFh.js.map +1 -0
  19. package/dist/public/assets/chunk-55IACEB6-vKKCu02H.js +2 -0
  20. package/dist/public/assets/chunk-55IACEB6-vKKCu02H.js.map +1 -0
  21. package/dist/public/assets/chunk-EDXVE4YY-DSO0zPbn.js +2 -0
  22. package/dist/public/assets/chunk-EDXVE4YY-DSO0zPbn.js.map +1 -0
  23. package/dist/public/assets/chunk-FMBD7UC4-3jd6riTs.js +16 -0
  24. package/dist/public/assets/chunk-FMBD7UC4-3jd6riTs.js.map +1 -0
  25. package/dist/public/assets/chunk-OYMX7WX6-D_NOPBJM.js +232 -0
  26. package/dist/public/assets/chunk-OYMX7WX6-D_NOPBJM.js.map +1 -0
  27. package/dist/public/assets/chunk-QZHKN3VN-B1tO29hV.js +2 -0
  28. package/dist/public/assets/chunk-QZHKN3VN-B1tO29hV.js.map +1 -0
  29. package/dist/public/assets/chunk-YZCP3GAM-BG_8HFWq.js +2 -0
  30. package/dist/public/assets/chunk-YZCP3GAM-BG_8HFWq.js.map +1 -0
  31. package/dist/public/assets/classDiagram-6PBFFD2Q-D7ww4X1Q.js +2 -0
  32. package/dist/public/assets/classDiagram-6PBFFD2Q-D7ww4X1Q.js.map +1 -0
  33. package/dist/public/assets/classDiagram-v2-HSJHXN6E-D7ww4X1Q.js +2 -0
  34. package/dist/public/assets/classDiagram-v2-HSJHXN6E-D7ww4X1Q.js.map +1 -0
  35. package/dist/public/assets/clone-D2M0kYAb.js +2 -0
  36. package/dist/public/assets/clone-D2M0kYAb.js.map +1 -0
  37. package/dist/public/assets/cose-bilkent-S5V4N54A-Bh32q_Jn.js +2 -0
  38. package/dist/public/assets/cose-bilkent-S5V4N54A-Bh32q_Jn.js.map +1 -0
  39. package/dist/public/assets/cytoscape.esm-BiciSPf8.js +332 -0
  40. package/dist/public/assets/cytoscape.esm-BiciSPf8.js.map +1 -0
  41. package/dist/public/assets/dagre-KV5264BT-BQsA27kt.js +5 -0
  42. package/dist/public/assets/dagre-KV5264BT-BQsA27kt.js.map +1 -0
  43. package/dist/public/assets/defaultLocale-DX6XiGOO.js +2 -0
  44. package/dist/public/assets/defaultLocale-DX6XiGOO.js.map +1 -0
  45. package/dist/public/assets/diagram-5BDNPKRD-CXlbxFux.js +11 -0
  46. package/dist/public/assets/diagram-5BDNPKRD-CXlbxFux.js.map +1 -0
  47. package/dist/public/assets/diagram-G4DWMVQ6-v97zdUjT.js +25 -0
  48. package/dist/public/assets/diagram-G4DWMVQ6-v97zdUjT.js.map +1 -0
  49. package/dist/public/assets/diagram-MMDJMWI5-BpSFjs5q.js +44 -0
  50. package/dist/public/assets/diagram-MMDJMWI5-BpSFjs5q.js.map +1 -0
  51. package/dist/public/assets/diagram-TYMM5635-BJ1CmEhn.js +25 -0
  52. package/dist/public/assets/diagram-TYMM5635-BJ1CmEhn.js.map +1 -0
  53. package/dist/public/assets/erDiagram-SMLLAGMA-jo1OteBB.js +86 -0
  54. package/dist/public/assets/erDiagram-SMLLAGMA-jo1OteBB.js.map +1 -0
  55. package/dist/public/assets/flowDiagram-DWJPFMVM-CpWw31-x.js +163 -0
  56. package/dist/public/assets/flowDiagram-DWJPFMVM-CpWw31-x.js.map +1 -0
  57. package/dist/public/assets/ganttDiagram-T4ZO3ILL-BAQG-3w7.js +293 -0
  58. package/dist/public/assets/ganttDiagram-T4ZO3ILL-BAQG-3w7.js.map +1 -0
  59. package/dist/public/assets/gitGraphDiagram-UUTBAWPF-Cjvo4QRA.js +107 -0
  60. package/dist/public/assets/gitGraphDiagram-UUTBAWPF-Cjvo4QRA.js.map +1 -0
  61. package/dist/public/assets/graph-BdcxLlxf.js +2 -0
  62. package/dist/public/assets/graph-BdcxLlxf.js.map +1 -0
  63. package/dist/public/assets/index-C0IOfytS.css +1 -0
  64. package/dist/public/assets/index-Dmx3s87Z.js +131 -0
  65. package/dist/public/assets/index-Dmx3s87Z.js.map +1 -0
  66. package/dist/public/assets/infoDiagram-42DDH7IO-DA1DcHeu.js +3 -0
  67. package/dist/public/assets/infoDiagram-42DDH7IO-DA1DcHeu.js.map +1 -0
  68. package/dist/public/assets/init-Gi6I4Gst.js +2 -0
  69. package/dist/public/assets/init-Gi6I4Gst.js.map +1 -0
  70. package/dist/public/assets/ishikawaDiagram-UXIWVN3A-D1YXovdG.js +71 -0
  71. package/dist/public/assets/ishikawaDiagram-UXIWVN3A-D1YXovdG.js.map +1 -0
  72. package/dist/public/assets/journeyDiagram-VCZTEJTY-D7RwfkbB.js +140 -0
  73. package/dist/public/assets/journeyDiagram-VCZTEJTY-D7RwfkbB.js.map +1 -0
  74. package/dist/public/assets/kanban-definition-6JOO6SKY-oWRrVjFf.js +90 -0
  75. package/dist/public/assets/kanban-definition-6JOO6SKY-oWRrVjFf.js.map +1 -0
  76. package/dist/public/assets/katex-DkKDou_j.js +258 -0
  77. package/dist/public/assets/katex-DkKDou_j.js.map +1 -0
  78. package/dist/public/assets/layout-VSNdPB38.js +2 -0
  79. package/dist/public/assets/layout-VSNdPB38.js.map +1 -0
  80. package/dist/public/assets/linear-WEgy7Pbe.js +2 -0
  81. package/dist/public/assets/linear-WEgy7Pbe.js.map +1 -0
  82. package/dist/public/assets/mermaid.core-CFxQTXeR.js +310 -0
  83. package/dist/public/assets/mermaid.core-CFxQTXeR.js.map +1 -0
  84. package/dist/public/assets/min-Dl-Y_8tu.js +2 -0
  85. package/dist/public/assets/min-Dl-Y_8tu.js.map +1 -0
  86. package/dist/public/assets/mindmap-definition-QFDTVHPH-kZ-3Ardl.js +97 -0
  87. package/dist/public/assets/mindmap-definition-QFDTVHPH-kZ-3Ardl.js.map +1 -0
  88. package/dist/public/assets/ordinal-Cboi1Yqb.js +2 -0
  89. package/dist/public/assets/ordinal-Cboi1Yqb.js.map +1 -0
  90. package/dist/public/assets/pieDiagram-DEJITSTG-7o5Wm586.js +31 -0
  91. package/dist/public/assets/pieDiagram-DEJITSTG-7o5Wm586.js.map +1 -0
  92. package/dist/public/assets/quadrantDiagram-34T5L4WZ-Bo9bPFVq.js +8 -0
  93. package/dist/public/assets/quadrantDiagram-34T5L4WZ-Bo9bPFVq.js.map +1 -0
  94. package/dist/public/assets/requirementDiagram-MS252O5E-BrZ5IGrG.js +85 -0
  95. package/dist/public/assets/requirementDiagram-MS252O5E-BrZ5IGrG.js.map +1 -0
  96. package/dist/public/assets/sankeyDiagram-XADWPNL6-wkL-5GAq.js +11 -0
  97. package/dist/public/assets/sankeyDiagram-XADWPNL6-wkL-5GAq.js.map +1 -0
  98. package/dist/public/assets/sequenceDiagram-FGHM5R23-CYkyZnbF.js +158 -0
  99. package/dist/public/assets/sequenceDiagram-FGHM5R23-CYkyZnbF.js.map +1 -0
  100. package/dist/public/assets/stateDiagram-FHFEXIEX-DPHqUNS7.js +2 -0
  101. package/dist/public/assets/stateDiagram-FHFEXIEX-DPHqUNS7.js.map +1 -0
  102. package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-BnjLJswt.js +2 -0
  103. package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-BnjLJswt.js.map +1 -0
  104. package/dist/public/assets/timeline-definition-GMOUNBTQ-BwBJGy1k.js +121 -0
  105. package/dist/public/assets/timeline-definition-GMOUNBTQ-BwBJGy1k.js.map +1 -0
  106. package/dist/public/assets/vennDiagram-DHZGUBPP-BbljBoFJ.js +35 -0
  107. package/dist/public/assets/vennDiagram-DHZGUBPP-BbljBoFJ.js.map +1 -0
  108. package/dist/public/assets/wardley-RL74JXVD-CJqH0Jne.js +163 -0
  109. package/dist/public/assets/wardley-RL74JXVD-CJqH0Jne.js.map +1 -0
  110. package/dist/public/assets/wardleyDiagram-NUSXRM2D-2g2IHOZ1.js +21 -0
  111. package/dist/public/assets/wardleyDiagram-NUSXRM2D-2g2IHOZ1.js.map +1 -0
  112. package/dist/public/assets/xychartDiagram-5P7HB3ND-BBfP02_-.js +8 -0
  113. package/dist/public/assets/xychartDiagram-5P7HB3ND-BBfP02_-.js.map +1 -0
  114. package/dist/public/index.html +13 -0
  115. package/package.json +31 -0
@@ -0,0 +1,107 @@
1
+ import{p as he}from"./chunk-4BX2VUAB-DdNxSoa7.js";import{I as $e}from"./chunk-QZHKN3VN-B1tO29hV.js";import{p as fe,o as ge,s as ue,g as ye,a as xe,b as me,_ as $,C as Q,l as k,c as z,u as pe,D as be,y as we,j as L,E as ke,F as ve,G as Ee}from"./mermaid.core-CFxQTXeR.js";import{p as Ce}from"./wardley-RL74JXVD-CJqH0Jne.js";import{s as Be}from"./index-Dmx3s87Z.js";import"./min-Dl-Y_8tu.js";import"./_baseUniq-okA3yjMF.js";var p={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},Te=ve.gitGraph,D=$(()=>ke({...Te,...Q().gitGraph}),"getConfig"),i=new $e(()=>{const e=D(),r=e.mainBranchName,t=e.mainBranchOrder;return{mainBranchName:r,commits:new Map,head:null,branchConfig:new Map([[r,{name:r,order:t}]]),branches:new Map([[r,null]]),currBranch:r,direction:"LR",seq:0,options:{}}});function K(){return Ee({length:7})}$(K,"getID");function ae(e,r){const t=Object.create(null);return e.reduce((o,s)=>{const d=r(s);return t[d]||(t[d]=!0,o.push(s)),o},[])}$(ae,"uniqBy");var Le=$(function(e){i.records.direction=e},"setDirection"),Me=$(function(e){k.debug("options str",e),e=e==null?void 0:e.trim(),e=e||"{}";try{i.records.options=JSON.parse(e)}catch(r){k.error("error while parsing gitGraph options",r.message)}},"setOptions"),Re=$(function(){return i.records.options},"getOptions"),Ie=$(function(e){let r=e.msg,t=e.id;const o=e.type;let s=e.tags;k.info("commit",r,t,o,s),k.debug("Entering commit:",r,t,o,s);const d=D();t=L.sanitizeText(t,d),r=L.sanitizeText(r,d),s=s==null?void 0:s.map(a=>L.sanitizeText(a,d));const n={id:t||i.records.seq+"-"+K(),message:r,seq:i.records.seq++,type:o??p.NORMAL,tags:s??[],parents:i.records.head==null?[]:[i.records.head.id],branch:i.records.currBranch};i.records.head=n,k.info("main branch",d.mainBranchName),i.records.commits.has(n.id)&&k.warn(`Commit ID ${n.id} already exists`),i.records.commits.set(n.id,n),i.records.branches.set(i.records.currBranch,n.id),k.debug("in pushCommit "+n.id)},"commit"),Oe=$(function(e){let r=e.name;const t=e.order;if(r=L.sanitizeText(r,D()),i.records.branches.has(r))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${r}")`);i.records.branches.set(r,i.records.head!=null?i.records.head.id:null),i.records.branchConfig.set(r,{name:r,order:t}),ne(r),k.debug("in createBranch")},"branch"),_e=$(e=>{let r=e.branch,t=e.id;const o=e.type,s=e.tags,d=D();r=L.sanitizeText(r,d),t&&(t=L.sanitizeText(t,d));const n=i.records.branches.get(i.records.currBranch),a=i.records.branches.get(r),l=n?i.records.commits.get(n):void 0,h=a?i.records.commits.get(a):void 0;if(l&&h&&l.branch===r)throw new Error(`Cannot merge branch '${r}' into itself.`);if(i.records.currBranch===r){const c=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},c}if(l===void 0||!l){const c=new Error(`Incorrect usage of "merge". Current branch (${i.records.currBranch})has no commits`);throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["commit"]},c}if(!i.records.branches.has(r)){const c=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:[`branch ${r}`]},c}if(h===void 0||!h){const c=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:['"commit"']},c}if(l===h){const c=new Error('Incorrect usage of "merge". Both branches have same head');throw c.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},c}if(t&&i.records.commits.has(t)){const c=new Error('Incorrect usage of "merge". Commit with id:'+t+" already exists, use different custom id");throw c.hash={text:`merge ${r} ${t} ${o} ${s==null?void 0:s.join(" ")}`,token:`merge ${r} ${t} ${o} ${s==null?void 0:s.join(" ")}`,expected:[`merge ${r} ${t}_UNIQUE ${o} ${s==null?void 0:s.join(" ")}`]},c}const g=a||"",f={id:t||`${i.records.seq}-${K()}`,message:`merged branch ${r} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,g],branch:i.records.currBranch,type:p.MERGE,customType:o,customId:!!t,tags:s??[]};i.records.head=f,i.records.commits.set(f.id,f),i.records.branches.set(i.records.currBranch,f.id),k.debug(i.records.branches),k.debug("in mergeBranch")},"merge"),Ge=$(function(e){let r=e.id,t=e.targetId,o=e.tags,s=e.parent;k.debug("Entering cherryPick:",r,t,o);const d=D();if(r=L.sanitizeText(r,d),t=L.sanitizeText(t,d),o=o==null?void 0:o.map(l=>L.sanitizeText(l,d)),s=L.sanitizeText(s,d),!r||!i.records.commits.has(r)){const l=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw l.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},l}const n=i.records.commits.get(r);if(n===void 0||!n)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(s&&!(Array.isArray(n.parents)&&n.parents.includes(s)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");const a=n.branch;if(n.type===p.MERGE&&!s)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!t||!i.records.commits.has(t)){if(a===i.records.currBranch){const f=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw f.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},f}const l=i.records.branches.get(i.records.currBranch);if(l===void 0||!l){const f=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},f}const h=i.records.commits.get(l);if(h===void 0||!h){const f=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${r} ${t}`,token:`cherryPick ${r} ${t}`,expected:["cherry-pick abc"]},f}const g={id:i.records.seq+"-"+K(),message:`cherry-picked ${n==null?void 0:n.message} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,n.id],branch:i.records.currBranch,type:p.CHERRY_PICK,tags:o?o.filter(Boolean):[`cherry-pick:${n.id}${n.type===p.MERGE?`|parent:${s}`:""}`]};i.records.head=g,i.records.commits.set(g.id,g),i.records.branches.set(i.records.currBranch,g.id),k.debug(i.records.branches),k.debug("in cherryPick")}},"cherryPick"),ne=$(function(e){if(e=L.sanitizeText(e,D()),i.records.branches.has(e)){i.records.currBranch=e;const r=i.records.branches.get(i.records.currBranch);r===void 0||!r?i.records.head=null:i.records.head=i.records.commits.get(r)??null}else{const r=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw r.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},r}},"checkout");function X(e,r,t){const o=e.indexOf(r);o===-1?e.push(t):e.splice(o,1,t)}$(X,"upsert");function Z(e){const r=e.reduce((s,d)=>s.seq>d.seq?s:d,e[0]);let t="";e.forEach(function(s){s===r?t+=" *":t+=" |"});const o=[t,r.id,r.seq];for(const s in i.records.branches)i.records.branches.get(s)===r.id&&o.push(s);if(k.debug(o.join(" ")),r.parents&&r.parents.length==2&&r.parents[0]&&r.parents[1]){const s=i.records.commits.get(r.parents[0]);X(e,r,s),r.parents[1]&&e.push(i.records.commits.get(r.parents[1]))}else{if(r.parents.length==0)return;if(r.parents[0]){const s=i.records.commits.get(r.parents[0]);X(e,r,s)}}e=ae(e,s=>s.id),Z(e)}$(Z,"prettyPrintCommitHistory");var He=$(function(){k.debug(i.records.commits);const e=se()[0];Z([e])},"prettyPrint"),Se=$(function(){i.reset(),we()},"clear"),Ae=$(function(){return[...i.records.branchConfig.values()].map((r,t)=>r.order!==null&&r.order!==void 0?r:{...r,order:parseFloat(`0.${t}`)}).sort((r,t)=>(r.order??0)-(t.order??0)).map(({name:r})=>({name:r}))},"getBranchesAsObjArray"),De=$(function(){return i.records.branches},"getBranches"),Pe=$(function(){return i.records.commits},"getCommits"),se=$(function(){const e=[...i.records.commits.values()];return e.forEach(function(r){k.debug(r.id)}),e.sort((r,t)=>r.seq-t.seq),e},"getCommitsArray"),We=$(function(){return i.records.currBranch},"getCurrentBranch"),qe=$(function(){return i.records.direction},"getDirection"),Ne=$(function(){return i.records.head},"getHead"),oe={commitType:p,getConfig:D,setDirection:Le,setOptions:Me,getOptions:Re,commit:Ie,branch:Oe,merge:_e,cherryPick:Ge,checkout:ne,prettyPrint:He,clear:Se,getBranchesAsObjArray:Ae,getBranches:De,getCommits:Pe,getCommitsArray:se,getCurrentBranch:We,getDirection:qe,getHead:Ne,setAccTitle:me,getAccTitle:xe,getAccDescription:ye,setAccDescription:ue,setDiagramTitle:ge,getDiagramTitle:fe},Fe=$((e,r)=>{he(e,r),e.dir&&r.setDirection(e.dir);for(const t of e.statements)ze(t,r)},"populate"),ze=$((e,r)=>{const o={Commit:$(s=>r.commit(Ye(s)),"Commit"),Branch:$(s=>r.branch(je(s)),"Branch"),Merge:$(s=>r.merge(Ue(s)),"Merge"),Checkout:$(s=>r.checkout(Ke(s)),"Checkout"),CherryPicking:$(s=>r.cherryPick(Ve(s)),"CherryPicking")}[e.$type];o?o(e):k.error(`Unknown statement type: ${e.$type}`)},"parseStatement"),Ye=$(e=>({id:e.id,msg:e.message??"",type:e.type!==void 0?p[e.type]:p.NORMAL,tags:e.tags??void 0}),"parseCommit"),je=$(e=>({name:e.name,order:e.order??0}),"parseBranch"),Ue=$(e=>({branch:e.branch,id:e.id??"",type:e.type!==void 0?p[e.type]:void 0,tags:e.tags??void 0}),"parseMerge"),Ke=$(e=>e.branch,"parseCheckout"),Ve=$(e=>{var t;return{id:e.id,targetId:"",tags:((t=e.tags)==null?void 0:t.length)===0?void 0:e.tags,parent:e.parent}},"parseCherryPicking"),Xe={parse:$(async e=>{const r=await Ce("gitGraph",e);k.debug(r),Fe(r,oe)},"parse")},G=10,H=40,M=4,I=2,S=8,V=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),J=12,ee=new Set(["redux-color","redux-dark-color"]),Je=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),A=$((e,r,t=!1)=>t&&e>0?(e-1)%(r-1)+1:e%r,"calcColorIndex"),B=new Map,T=new Map,j=30,N=new Map,U=[],O=0,y="LR",Qe=$(()=>{B.clear(),T.clear(),N.clear(),O=0,U=[],y="LR"},"clear"),ce=$(e=>{const r=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof e=="string"?e.split(/\\n|\n|<br\s*\/?>/gi):e).forEach(o=>{const s=document.createElementNS("http://www.w3.org/2000/svg","tspan");s.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),s.setAttribute("dy","1em"),s.setAttribute("x","0"),s.setAttribute("class","row"),s.textContent=o.trim(),r.appendChild(s)}),r},"drawText"),ie=$(e=>{let r,t,o;return y==="BT"?(t=$((s,d)=>s<=d,"comparisonFunc"),o=1/0):(t=$((s,d)=>s>=d,"comparisonFunc"),o=0),e.forEach(s=>{var n,a;const d=y==="TB"||y=="BT"?(n=T.get(s))==null?void 0:n.y:(a=T.get(s))==null?void 0:a.x;d!==void 0&&t(d,o)&&(r=s,o=d)}),r},"findClosestParent"),Ze=$(e=>{let r="",t=1/0;return e.forEach(o=>{const s=T.get(o).y;s<=t&&(r=o,t=s)}),r||void 0},"findClosestParentBT"),er=$((e,r,t)=>{let o=t,s=t;const d=[];e.forEach(n=>{const a=r.get(n);if(!a)throw new Error(`Commit not found for key ${n}`);a.parents.length?(o=tr(a),s=Math.max(o,s)):d.push(a),ar(a,o)}),o=s,d.forEach(n=>{nr(n,o,t)}),e.forEach(n=>{const a=r.get(n);if(a!=null&&a.parents.length){const l=Ze(a.parents);o=T.get(l).y-H,o<=s&&(s=o);const h=B.get(a.branch).pos,g=o-G;T.set(a.id,{x:h,y:g})}})},"setParallelBTPos"),rr=$(e=>{var o;const r=ie(e.parents.filter(s=>s!==null));if(!r)throw new Error(`Closest parent not found for commit ${e.id}`);const t=(o=T.get(r))==null?void 0:o.y;if(t===void 0)throw new Error(`Closest parent position not found for commit ${e.id}`);return t},"findClosestParentPos"),tr=$(e=>rr(e)+H,"calculateCommitPosition"),ar=$((e,r)=>{const t=B.get(e.branch);if(!t)throw new Error(`Branch not found for commit ${e.id}`);const o=t.pos,s=r+G;return T.set(e.id,{x:o,y:s}),{x:o,y:s}},"setCommitPosition"),nr=$((e,r,t)=>{const o=B.get(e.branch);if(!o)throw new Error(`Branch not found for commit ${e.id}`);const s=r+t,d=o.pos;T.set(e.id,{x:d,y:s})},"setRootPosition"),sr=$((e,r,t,o,s,d)=>{const{theme:n}=z(),a=V.has(n??""),l=ee.has(n??""),h=Je.has(n??"");if(d===p.HIGHLIGHT)e.append("rect").attr("x",t.x-10+(a?3:0)).attr("y",t.y-10+(a?3:0)).attr("width",a?14:20).attr("height",a?14:20).attr("class",`commit ${r.id} commit-highlight${A(s,S,l)} ${o}-outer`),e.append("rect").attr("x",t.x-6+(a?2:0)).attr("y",t.y-6+(a?2:0)).attr("width",a?8:12).attr("height",a?8:12).attr("class",`commit ${r.id} commit${A(s,S,l)} ${o}-inner`);else if(d===p.CHERRY_PICK)e.append("circle").attr("cx",t.x).attr("cy",t.y).attr("r",a?7:10).attr("class",`commit ${r.id} ${o}`),e.append("circle").attr("cx",t.x-3).attr("cy",t.y+2).attr("r",a?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),e.append("circle").attr("cx",t.x+3).attr("cy",t.y+2).attr("r",a?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),e.append("line").attr("x1",t.x+3).attr("y1",t.y+1).attr("x2",t.x).attr("y2",t.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`),e.append("line").attr("x1",t.x-3).attr("y1",t.y+1).attr("x2",t.x).attr("y2",t.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${r.id} ${o}`);else{const g=e.append("circle");if(g.attr("cx",t.x),g.attr("cy",t.y),g.attr("r",a?7:10),g.attr("class",`commit ${r.id} commit${A(s,S,l)}`),d===p.MERGE){const f=e.append("circle");f.attr("cx",t.x),f.attr("cy",t.y),f.attr("r",a?5:6),f.attr("class",`commit ${o} ${r.id} commit${A(s,S,l)}`)}if(d===p.REVERSE){const f=e.append("path"),c=a?4:5;f.attr("d",`M ${t.x-c},${t.y-c}L${t.x+c},${t.y+c}M${t.x-c},${t.y+c}L${t.x+c},${t.y-c}`).attr("class",`commit ${o} ${r.id} commit${A(s,S,l)}`)}}},"drawCommitBullet"),or=$((e,r,t,o,s)=>{var d;if(r.type!==p.CHERRY_PICK&&(r.customId&&r.type===p.MERGE||r.type!==p.MERGE)&&s.showCommitLabel){const n=e.append("g"),a=n.insert("rect").attr("class","commit-label-bkg"),l=n.append("text").attr("x",o).attr("y",t.y+25).attr("class","commit-label").text(r.id),h=(d=l.node())==null?void 0:d.getBBox();if(h&&(a.attr("x",t.posWithOffset-h.width/2-I).attr("y",t.y+13.5).attr("width",h.width+2*I).attr("height",h.height+2*I),y==="TB"||y==="BT"?(a.attr("x",t.x-(h.width+4*M+5)).attr("y",t.y-12),l.attr("x",t.x-(h.width+4*M)).attr("y",t.y+h.height-12)):l.attr("x",t.posWithOffset-h.width/2),s.rotateCommitLabel))if(y==="TB"||y==="BT")l.attr("transform","rotate(-45, "+t.x+", "+t.y+")"),a.attr("transform","rotate(-45, "+t.x+", "+t.y+")");else{const g=-7.5-(h.width+10)/25*9.5,f=10+h.width/25*8.5;n.attr("transform","translate("+g+", "+f+") rotate(-45, "+o+", "+t.y+")")}}},"drawCommitLabel"),cr=$((e,r,t,o)=>{var s;if(r.tags.length>0){let d=0,n=0,a=0;const l=[];for(const h of r.tags.reverse()){const g=e.insert("polygon"),f=e.append("circle"),c=e.append("text").attr("y",t.y-16-d).attr("class","tag-label").text(h),x=(s=c.node())==null?void 0:s.getBBox();if(!x)throw new Error("Tag bbox not found");n=Math.max(n,x.width),a=Math.max(a,x.height),c.attr("x",t.posWithOffset-x.width/2),l.push({tag:c,hole:f,rect:g,yOffset:d}),d+=20}for(const{tag:h,hole:g,rect:f,yOffset:c}of l){const x=a/2,u=t.y-19.2-c;if(f.attr("class","tag-label-bkg").attr("points",`
2
+ ${o-n/2-M/2},${u+I}
3
+ ${o-n/2-M/2},${u-I}
4
+ ${t.posWithOffset-n/2-M},${u-x-I}
5
+ ${t.posWithOffset+n/2+M},${u-x-I}
6
+ ${t.posWithOffset+n/2+M},${u+x+I}
7
+ ${t.posWithOffset-n/2-M},${u+x+I}`),g.attr("cy",u).attr("cx",o-n/2+M/2).attr("r",1.5).attr("class","tag-hole"),y==="TB"||y==="BT"){const m=o+c;f.attr("class","tag-label-bkg").attr("points",`
8
+ ${t.x},${m+2}
9
+ ${t.x},${m-2}
10
+ ${t.x+G},${m-x-2}
11
+ ${t.x+G+n+4},${m-x-2}
12
+ ${t.x+G+n+4},${m+x+2}
13
+ ${t.x+G},${m+x+2}`).attr("transform","translate(12,12) rotate(45, "+t.x+","+o+")"),g.attr("cx",t.x+M/2).attr("cy",m).attr("transform","translate(12,12) rotate(45, "+t.x+","+o+")"),h.attr("x",t.x+5).attr("y",m+3).attr("transform","translate(14,14) rotate(45, "+t.x+","+o+")")}}}},"drawCommitTags"),ir=$(e=>{switch(e.customType??e.type){case p.NORMAL:return"commit-normal";case p.REVERSE:return"commit-reverse";case p.HIGHLIGHT:return"commit-highlight";case p.MERGE:return"commit-merge";case p.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),dr=$((e,r,t,o)=>{const s={x:0,y:0};if(e.parents.length>0){const d=ie(e.parents);if(d){const n=o.get(d)??s;return r==="TB"?n.y+H:r==="BT"?(o.get(e.id)??s).y-H:n.x+H}}else return r==="TB"?j:r==="BT"?(o.get(e.id)??s).y-H:0;return 0},"calculatePosition"),lr=$((e,r,t)=>{var l,h;const o=y==="BT"&&t?r:r+G,s=(l=B.get(e.branch))==null?void 0:l.pos,d=y==="TB"||y==="BT"?(h=B.get(e.branch))==null?void 0:h.pos:o;if(d===void 0||s===void 0)throw new Error(`Position were undefined for commit ${e.id}`);const n=V.has(z().theme??""),a=y==="TB"||y==="BT"?o:s+(n?J/2+1:-2);return{x:d,y:a,posWithOffset:o}},"getCommitPosition"),te=$((e,r,t,o)=>{const s=e.append("g").attr("class","commit-bullets"),d=e.append("g").attr("class","commit-labels");let n=y==="TB"||y==="BT"?j:0;const a=[...r.keys()],l=o.parallelCommits??!1,h=$((f,c)=>{var m,E;const x=(m=r.get(f))==null?void 0:m.seq,u=(E=r.get(c))==null?void 0:E.seq;return x!==void 0&&u!==void 0?x-u:0},"sortKeys");let g=a.sort(h);y==="BT"&&(l&&er(g,r,n),g=g.reverse()),g.forEach(f=>{var u;const c=r.get(f);if(!c)throw new Error(`Commit not found for key ${f}`);l&&(n=dr(c,y,n,T));const x=lr(c,n,l);if(t){const m=ir(c),E=c.customType??c.type,b=((u=B.get(c.branch))==null?void 0:u.index)??0;sr(s,c,x,m,b,E),or(d,c,x,n,o),cr(d,c,x,n)}y==="TB"||y==="BT"?T.set(c.id,{x:x.x,y:x.posWithOffset}):T.set(c.id,{x:x.posWithOffset,y:x.y}),n=y==="BT"&&l?n+H:n+H+G,n>O&&(O=n)})},"drawCommits"),hr=$((e,r,t,o,s)=>{const n=(y==="TB"||y==="BT"?t.x<o.x:t.y<o.y)?r.branch:e.branch,a=$(h=>h.branch===n,"isOnBranchToGetCurve"),l=$(h=>h.seq>e.seq&&h.seq<r.seq,"isBetweenCommits");return[...s.values()].some(h=>l(h)&&a(h))},"shouldRerouteArrow"),F=$((e,r,t=0)=>{const o=e+Math.abs(e-r)/2;if(t>5)return o;if(U.every(n=>Math.abs(n-o)>=10))return U.push(o),o;const d=Math.abs(e-r);return F(e,r-d/5,t+1)},"findLane"),$r=$((e,r,t,o)=>{var m,E,b,P,_;const{theme:s}=z(),d=ee.has(s??""),n=T.get(r.id),a=T.get(t.id);if(n===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${r.id} and ${t.id}`);const l=hr(r,t,n,a,o);let h="",g="",f=0,c=0,x=(m=B.get(t.branch))==null?void 0:m.index;t.type===p.MERGE&&r.id!==t.parents[0]&&(x=(E=B.get(r.branch))==null?void 0:E.index);let u;if(l){h="A 10 10, 0, 0, 0,",g="A 10 10, 0, 0, 1,",f=10,c=10;const v=n.y<a.y?F(n.y,a.y):F(a.y,n.y),w=n.x<a.x?F(n.x,a.x):F(a.x,n.x);y==="TB"?n.x<a.x?u=`M ${n.x} ${n.y} L ${w-f} ${n.y} ${g} ${w} ${n.y+c} L ${w} ${a.y-f} ${h} ${w+c} ${a.y} L ${a.x} ${a.y}`:(x=(b=B.get(r.branch))==null?void 0:b.index,u=`M ${n.x} ${n.y} L ${w+f} ${n.y} ${h} ${w} ${n.y+c} L ${w} ${a.y-f} ${g} ${w-c} ${a.y} L ${a.x} ${a.y}`):y==="BT"?n.x<a.x?u=`M ${n.x} ${n.y} L ${w-f} ${n.y} ${h} ${w} ${n.y-c} L ${w} ${a.y+f} ${g} ${w+c} ${a.y} L ${a.x} ${a.y}`:(x=(P=B.get(r.branch))==null?void 0:P.index,u=`M ${n.x} ${n.y} L ${w+f} ${n.y} ${g} ${w} ${n.y-c} L ${w} ${a.y+f} ${h} ${w-c} ${a.y} L ${a.x} ${a.y}`):n.y<a.y?u=`M ${n.x} ${n.y} L ${n.x} ${v-f} ${h} ${n.x+c} ${v} L ${a.x-f} ${v} ${g} ${a.x} ${v+c} L ${a.x} ${a.y}`:(x=(_=B.get(r.branch))==null?void 0:_.index,u=`M ${n.x} ${n.y} L ${n.x} ${v+f} ${g} ${n.x+c} ${v} L ${a.x-f} ${v} ${h} ${a.x} ${v-c} L ${a.x} ${a.y}`)}else h="A 20 20, 0, 0, 0,",g="A 20 20, 0, 0, 1,",f=20,c=20,y==="TB"?(n.x<a.x&&(t.type===p.MERGE&&r.id!==t.parents[0]?u=`M ${n.x} ${n.y} L ${n.x} ${a.y-f} ${h} ${n.x+c} ${a.y} L ${a.x} ${a.y}`:u=`M ${n.x} ${n.y} L ${a.x-f} ${n.y} ${g} ${a.x} ${n.y+c} L ${a.x} ${a.y}`),n.x>a.x&&(h="A 20 20, 0, 0, 0,",g="A 20 20, 0, 0, 1,",f=20,c=20,t.type===p.MERGE&&r.id!==t.parents[0]?u=`M ${n.x} ${n.y} L ${n.x} ${a.y-f} ${g} ${n.x-c} ${a.y} L ${a.x} ${a.y}`:u=`M ${n.x} ${n.y} L ${a.x+f} ${n.y} ${h} ${a.x} ${n.y+c} L ${a.x} ${a.y}`),n.x===a.x&&(u=`M ${n.x} ${n.y} L ${a.x} ${a.y}`)):y==="BT"?(n.x<a.x&&(t.type===p.MERGE&&r.id!==t.parents[0]?u=`M ${n.x} ${n.y} L ${n.x} ${a.y+f} ${g} ${n.x+c} ${a.y} L ${a.x} ${a.y}`:u=`M ${n.x} ${n.y} L ${a.x-f} ${n.y} ${h} ${a.x} ${n.y-c} L ${a.x} ${a.y}`),n.x>a.x&&(h="A 20 20, 0, 0, 0,",g="A 20 20, 0, 0, 1,",f=20,c=20,t.type===p.MERGE&&r.id!==t.parents[0]?u=`M ${n.x} ${n.y} L ${n.x} ${a.y+f} ${h} ${n.x-c} ${a.y} L ${a.x} ${a.y}`:u=`M ${n.x} ${n.y} L ${a.x+f} ${n.y} ${g} ${a.x} ${n.y-c} L ${a.x} ${a.y}`),n.x===a.x&&(u=`M ${n.x} ${n.y} L ${a.x} ${a.y}`)):(n.y<a.y&&(t.type===p.MERGE&&r.id!==t.parents[0]?u=`M ${n.x} ${n.y} L ${a.x-f} ${n.y} ${g} ${a.x} ${n.y+c} L ${a.x} ${a.y}`:u=`M ${n.x} ${n.y} L ${n.x} ${a.y-f} ${h} ${n.x+c} ${a.y} L ${a.x} ${a.y}`),n.y>a.y&&(t.type===p.MERGE&&r.id!==t.parents[0]?u=`M ${n.x} ${n.y} L ${a.x-f} ${n.y} ${h} ${a.x} ${n.y-c} L ${a.x} ${a.y}`:u=`M ${n.x} ${n.y} L ${n.x} ${a.y+f} ${g} ${n.x+c} ${a.y} L ${a.x} ${a.y}`),n.y===a.y&&(u=`M ${n.x} ${n.y} L ${a.x} ${a.y}`));if(u===void 0)throw new Error("Line definition not found");e.append("path").attr("d",u).attr("class","arrow arrow"+A(x,S,d))},"drawArrow"),fr=$((e,r)=>{const t=e.append("g").attr("class","commit-arrows");[...r.keys()].forEach(o=>{const s=r.get(o);s.parents&&s.parents.length>0&&s.parents.forEach(d=>{$r(t,r.get(d),s,r)})})},"drawArrows"),gr=$((e,r,t,o)=>{const{look:s,theme:d,themeVariables:n}=z(),{dropShadow:a,THEME_COLOR_LIMIT:l}=n,h=V.has(d??""),g=ee.has(d??""),f=e.append("g");r.forEach((c,x)=>{var re;const u=A(x,h?l:S,g),m=(re=B.get(c.name))==null?void 0:re.pos;if(m===void 0)throw new Error(`Position not found for branch ${c.name}`);const E=y==="TB"||y==="BT"?m:h?m+J/2+1:m-2,b=f.append("line");b.attr("x1",0),b.attr("y1",E),b.attr("x2",O),b.attr("y2",E),b.attr("class","branch branch"+u),y==="TB"?(b.attr("y1",j),b.attr("x1",m),b.attr("y2",O),b.attr("x2",m)):y==="BT"&&(b.attr("y1",O),b.attr("x1",m),b.attr("y2",j),b.attr("x2",m)),U.push(E);const P=c.name,_=ce(P),v=f.insert("rect"),R=f.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+u);R.node().appendChild(_);const C=_.getBBox(),q=h?0:4,Y=h?16:0,W=h?J:0;s==="neo"&&v.attr("data-look","neo"),v.attr("class","branchLabelBkg label"+u).attr("style",s==="neo"?`filter:${h?`url(#${o}-drop-shadow)`:a}`:"").attr("rx",q).attr("ry",q).attr("x",-C.width-4-(t.rotateCommitLabel===!0?30:0)).attr("y",-C.height/2+10).attr("width",C.width+18+Y).attr("height",C.height+4+W),R.attr("transform","translate("+(-C.width-14-(t.rotateCommitLabel===!0?30:0)+Y/2)+", "+(E-C.height/2-2)+")"),y==="TB"?(v.attr("x",m-C.width/2-10).attr("y",0),R.attr("transform","translate("+(m-C.width/2-5)+", 0)"),h&&(v.attr("transform",`translate(${-Y/2-3}, ${-W-10})`),R.attr("transform","translate("+(m-C.width/2-5)+", "+(-W*2+7)+")"))):y==="BT"?(v.attr("x",m-C.width/2-10).attr("y",O),R.attr("transform","translate("+(m-C.width/2-5)+", "+O+")"),h&&(v.attr("transform",`translate(${-Y/2-3}, ${W+10})`),R.attr("transform","translate("+(m-C.width/2-5)+", "+(O+W*2+4)+")"))):v.attr("transform","translate(-19, "+(E-12-W/2)+")")})},"drawBranches"),ur=$(function(e,r,t,o,s){return B.set(e,{pos:r,index:t}),r+=50+(s?40:0)+(y==="TB"||y==="BT"?o.width/2:0),r},"setBranchPosition"),yr=$(function(e,r,t,o){Qe(),k.debug("in gitgraph renderer",e+`
14
+ `,"id:",r,t);const s=o.db;if(!s.getConfig){k.error("getConfig method is not available on db");return}const d=s.getConfig(),n=d.rotateCommitLabel??!1;N=s.getCommits();const a=s.getBranchesAsObjArray();y=s.getDirection();const l=Be(`[id="${r}"]`),{look:h,theme:g,themeVariables:f}=z(),{useGradient:c,gradientStart:x,gradientStop:u,filterColor:m}=f;if(c){const b=l.append("defs").append("linearGradient").attr("id",r+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");b.append("stop").attr("offset","0%").attr("stop-color",x).attr("stop-opacity",1),b.append("stop").attr("offset","100%").attr("stop-color",u).attr("stop-opacity",1)}h==="neo"&&V.has(g??"")&&l.append("defs").append("filter").attr("id",r+"-drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",m);let E=0;a.forEach((b,P)=>{var q;const _=ce(b.name),v=l.append("g"),w=v.insert("g").attr("class","branchLabel"),R=w.insert("g").attr("class","label branch-label");(q=R.node())==null||q.appendChild(_);const C=_.getBBox();E=ur(b.name,E,P,C,n),R.remove(),w.remove(),v.remove()}),te(l,N,!1,d),d.showBranches&&gr(l,a,d,r),fr(l,N),te(l,N,!0,d),pe.insertTitle(l,"gitTitleText",d.titleTopMargin??0,s.getDiagramTitle()),be(void 0,l,d.diagramPadding,d.useMaxWidth)},"draw"),xr={draw:yr},de=8,le=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),mr=new Set(["redux-color","redux-dark-color"]),pr=new Set(["neo","neo-dark"]),br=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),wr=new Set(["redux","redux-dark","redux-color","redux-dark-color","neo","neo-dark"]),kr=$(e=>{const{svgId:r}=e;let t="";if(e.useGradient&&r)for(let o=0;o<e.THEME_COLOR_LIMIT;o++)t+=`
15
+ .label${o} { fill: ${e.mainBkg}; stroke: url(${r}-gradient); stroke-width: ${e.strokeWidth};}
16
+ `;return t},"genGitGraphGradient"),vr=$(e=>{const r=Q(),{theme:t,themeVariables:o}=r,{borderColorArray:s}=o,d=le.has(t);if(pr.has(t)){let n="";for(let a=0;a<e.THEME_COLOR_LIMIT;a++)if(a===0)n+=`
17
+ .branch-label${a} { fill: ${e.nodeBorder};}
18
+ .commit${a} { stroke: ${e.nodeBorder}; }
19
+ .commit-highlight${a} { stroke: ${e.nodeBorder}; fill: ${e.nodeBorder}; }
20
+ .arrow${a} { stroke: ${e.nodeBorder}; }
21
+ .commit-bullets { fill: ${e.nodeBorder}; }
22
+ .commit-cherry-pick${a} { stroke: ${e.nodeBorder}; }
23
+ ${kr(e)}`;else{const l=a%de;n+=`
24
+ .branch-label${a} { fill: ${e["gitBranchLabel"+l]}; }
25
+ .commit${a} { stroke: ${e["git"+l]}; fill: ${e["git"+l]}; }
26
+ .commit-highlight${a} { stroke: ${e["gitInv"+l]}; fill: ${e["gitInv"+l]}; }
27
+ .arrow${a} { stroke: ${e["git"+l]}; }
28
+ `}return n}else if(mr.has(t)){let n="";for(let a=0;a<e.THEME_COLOR_LIMIT;a++)if(a===0)n+=`
29
+ .branch-label${a} { fill: ${e.nodeBorder}; ${d?`font-weight:${e.noteFontWeight}`:""} }
30
+ .commit${a} { stroke: ${e.nodeBorder}; }
31
+ .commit-highlight${a} { stroke: ${e.nodeBorder}; fill: ${e.mainBkg}; }
32
+ .label${a} { fill: ${e.mainBkg}; stroke: ${e.nodeBorder}; stroke-width: ${e.strokeWidth}; ${d?`font-weight:${e.noteFontWeight}`:""} }
33
+ .arrow${a} { stroke: ${e.nodeBorder}; }
34
+ .commit-bullets { fill: ${e.nodeBorder}; }
35
+ `;else{const l=a%s.length;n+=`
36
+ .branch-label${a} { fill: ${e.nodeBorder}; ${d?`font-weight:${e.noteFontWeight}`:""} }
37
+ .commit${a} { stroke: ${s[l]}; fill: ${s[l]}; }
38
+ .commit-highlight${a} { stroke: ${s[l]}; fill: ${s[l]}; }
39
+ .label${a} { fill: ${br.has(t)?e.mainBkg:s[l]}; stroke: ${s[l]}; stroke-width: ${e.strokeWidth}; }
40
+ .arrow${a} { stroke: ${s[l]}; }
41
+ `}return n}else{let n="";for(let a=0;a<e.THEME_COLOR_LIMIT;a++)n+=`
42
+ .branch-label${a} { fill: ${e.nodeBorder}; ${d?`font-weight:${e.noteFontWeight}`:""} }
43
+ .commit${a} { stroke: ${e.nodeBorder}; }
44
+ .commit-highlight${a} { stroke: ${e.nodeBorder}; fill: ${e.nodeBorder}; }
45
+ .label${a} { fill: ${e.mainBkg}; stroke: ${e.nodeBorder}; stroke-width: ${e.strokeWidth}; ${d?`font-weight:${e.noteFontWeight}`:""}}
46
+ .arrow${a} { stroke: ${e.nodeBorder}; }
47
+ .commit-bullets { fill: ${e.nodeBorder}; }
48
+ .commit-cherry-pick${a} { stroke: ${e.nodeBorder}; }
49
+ `;return n}},"genColor"),Er=$(e=>`${Array.from({length:e.THEME_COLOR_LIMIT},(r,t)=>t).map(r=>{const t=r%de;return`
50
+ .branch-label${r} { fill: ${e["gitBranchLabel"+t]}; }
51
+ .commit${r} { stroke: ${e["git"+t]}; fill: ${e["git"+t]}; }
52
+ .commit-highlight${r} { stroke: ${e["gitInv"+t]}; fill: ${e["gitInv"+t]}; }
53
+ .label${r} { fill: ${e["git"+t]}; }
54
+ .arrow${r} { stroke: ${e["git"+t]}; }
55
+ `}).join(`
56
+ `)}`,"normalTheme"),Cr=$(e=>{const r=Q(),{theme:t}=r,o=wr.has(t);return`
57
+ .commit-id,
58
+ .commit-msg,
59
+ .branch-label {
60
+ fill: lightgrey;
61
+ color: lightgrey;
62
+ font-family: 'trebuchet ms', verdana, arial, sans-serif;
63
+ font-family: var(--mermaid-font-family);
64
+ }
65
+
66
+ ${o?vr(e):Er(e)}
67
+
68
+ .branch {
69
+ stroke-width: ${e.strokeWidth};
70
+ stroke: ${e.commitLineColor??e.lineColor};
71
+ stroke-dasharray: ${o?"4 2":"2"};
72
+ }
73
+ .commit-label { font-size: ${e.commitLabelFontSize}; fill: ${o?e.nodeBorder:e.commitLabelColor}; ${o?`font-weight:${e.noteFontWeight};`:""}}
74
+ .commit-label-bkg { font-size: ${e.commitLabelFontSize}; fill: ${o?"transparent":e.commitLabelBackground}; opacity: ${o?"":.5}; }
75
+ .tag-label { font-size: ${e.tagLabelFontSize}; fill: ${e.tagLabelColor};}
76
+ .tag-label-bkg { fill: ${o?e.mainBkg:e.tagLabelBackground}; stroke: ${o?e.nodeBorder:e.tagLabelBorder}; ${o?`filter:${e.dropShadow}`:""} }
77
+ .tag-hole { fill: ${e.textColor}; }
78
+
79
+ .commit-merge {
80
+ stroke: ${o?e.mainBkg:e.primaryColor};
81
+ fill: ${o?e.mainBkg:e.primaryColor};
82
+ }
83
+ .commit-reverse {
84
+ stroke: ${o?e.mainBkg:e.primaryColor};
85
+ fill: ${o?e.mainBkg:e.primaryColor};
86
+ stroke-width: ${o?e.strokeWidth:3};
87
+ }
88
+ .commit-highlight-outer {
89
+ }
90
+ .commit-highlight-inner {
91
+ stroke: ${o?e.mainBkg:e.primaryColor};
92
+ fill: ${o?e.mainBkg:e.primaryColor};
93
+ }
94
+
95
+ .arrow {
96
+ /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */
97
+ stroke-width: ${le.has(t)?e.strokeWidth:8};
98
+ stroke-linecap: round;
99
+ fill: none
100
+ }
101
+ .gitTitleText {
102
+ text-anchor: middle;
103
+ font-size: 18px;
104
+ fill: ${e.textColor};
105
+ }
106
+ `},"getStyles"),Br=Cr,Gr={parser:Xe,db:oe,renderer:xr,styles:Br};export{Gr as diagram};
107
+ //# sourceMappingURL=gitGraphDiagram-UUTBAWPF-Cjvo4QRA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitGraphDiagram-UUTBAWPF-Cjvo4QRA.js","sources":["../../../../node_modules/.pnpm/mermaid@11.14.0/node_modules/mermaid/dist/chunks/mermaid.core/gitGraphDiagram-UUTBAWPF.mjs"],"sourcesContent":["import {\n populateCommonDb\n} from \"./chunk-4BX2VUAB.mjs\";\nimport {\n ImperativeState\n} from \"./chunk-QZHKN3VN.mjs\";\nimport {\n cleanAndMerge,\n random,\n utils_default\n} from \"./chunk-5PVQY5BW.mjs\";\nimport {\n clear,\n common_default,\n defaultConfig_default,\n getAccDescription,\n getAccTitle,\n getConfig,\n getConfig2,\n getDiagramTitle,\n setAccDescription,\n setAccTitle,\n setDiagramTitle,\n setupGraphViewbox2 as setupGraphViewbox\n} from \"./chunk-ICPOFSXX.mjs\";\nimport {\n __name,\n log\n} from \"./chunk-AGHRB4JF.mjs\";\n\n// src/diagrams/git/gitGraphParser.ts\nimport { parse } from \"@mermaid-js/parser\";\n\n// src/diagrams/git/gitGraphTypes.ts\nvar commitType = {\n NORMAL: 0,\n REVERSE: 1,\n HIGHLIGHT: 2,\n MERGE: 3,\n CHERRY_PICK: 4\n};\n\n// src/diagrams/git/gitGraphAst.ts\nvar DEFAULT_GITGRAPH_CONFIG = defaultConfig_default.gitGraph;\nvar getConfig3 = /* @__PURE__ */ __name(() => {\n const config = cleanAndMerge({\n ...DEFAULT_GITGRAPH_CONFIG,\n ...getConfig().gitGraph\n });\n return config;\n}, \"getConfig\");\nvar state = new ImperativeState(() => {\n const config = getConfig3();\n const mainBranchName = config.mainBranchName;\n const mainBranchOrder = config.mainBranchOrder;\n return {\n mainBranchName,\n commits: /* @__PURE__ */ new Map(),\n head: null,\n branchConfig: /* @__PURE__ */ new Map([[mainBranchName, { name: mainBranchName, order: mainBranchOrder }]]),\n branches: /* @__PURE__ */ new Map([[mainBranchName, null]]),\n currBranch: mainBranchName,\n direction: \"LR\",\n seq: 0,\n options: {}\n };\n});\nfunction getID() {\n return random({ length: 7 });\n}\n__name(getID, \"getID\");\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}\n__name(uniqBy, \"uniqBy\");\nvar setDirection = /* @__PURE__ */ __name(function(dir2) {\n state.records.direction = dir2;\n}, \"setDirection\");\nvar setOptions = /* @__PURE__ */ __name(function(rawOptString) {\n log.debug(\"options str\", rawOptString);\n rawOptString = rawOptString?.trim();\n rawOptString = rawOptString || \"{}\";\n try {\n state.records.options = JSON.parse(rawOptString);\n } catch (e) {\n log.error(\"error while parsing gitGraph options\", e.message);\n }\n}, \"setOptions\");\nvar getOptions = /* @__PURE__ */ __name(function() {\n return state.records.options;\n}, \"getOptions\");\nvar commit = /* @__PURE__ */ __name(function(commitDB) {\n let msg = commitDB.msg;\n let id = commitDB.id;\n const type = commitDB.type;\n let tags = commitDB.tags;\n log.info(\"commit\", msg, id, type, tags);\n log.debug(\"Entering commit:\", msg, id, type, tags);\n const config = getConfig3();\n id = common_default.sanitizeText(id, config);\n msg = common_default.sanitizeText(msg, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n const newCommit = {\n id: id ? id : state.records.seq + \"-\" + getID(),\n message: msg,\n seq: state.records.seq++,\n type: type ?? commitType.NORMAL,\n tags: tags ?? [],\n parents: state.records.head == null ? [] : [state.records.head.id],\n branch: state.records.currBranch\n };\n state.records.head = newCommit;\n log.info(\"main branch\", config.mainBranchName);\n if (state.records.commits.has(newCommit.id)) {\n log.warn(`Commit ID ${newCommit.id} already exists`);\n }\n state.records.commits.set(newCommit.id, newCommit);\n state.records.branches.set(state.records.currBranch, newCommit.id);\n log.debug(\"in pushCommit \" + newCommit.id);\n}, \"commit\");\nvar branch = /* @__PURE__ */ __name(function(branchDB) {\n let name = branchDB.name;\n const order = branchDB.order;\n name = common_default.sanitizeText(name, getConfig3());\n if (state.records.branches.has(name)) {\n throw 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 }\n state.records.branches.set(name, state.records.head != null ? state.records.head.id : null);\n state.records.branchConfig.set(name, { name, order });\n checkout(name);\n log.debug(\"in createBranch\");\n}, \"branch\");\nvar merge = /* @__PURE__ */ __name((mergeDB) => {\n let otherBranch = mergeDB.branch;\n let customId = mergeDB.id;\n const overrideType = mergeDB.type;\n const customTags = mergeDB.tags;\n const config = getConfig3();\n otherBranch = common_default.sanitizeText(otherBranch, config);\n if (customId) {\n customId = common_default.sanitizeText(customId, config);\n }\n const currentBranchCheck = state.records.branches.get(state.records.currBranch);\n const otherBranchCheck = state.records.branches.get(otherBranch);\n const currentCommit = currentBranchCheck ? state.records.commits.get(currentBranchCheck) : void 0;\n const otherCommit = otherBranchCheck ? state.records.commits.get(otherBranchCheck) : void 0;\n if (currentCommit && otherCommit && currentCommit.branch === otherBranch) {\n throw new Error(`Cannot merge branch '${otherBranch}' into itself.`);\n }\n if (state.records.currBranch === otherBranch) {\n const 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 expected: [\"branch abc\"]\n };\n throw error;\n }\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"merge\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"commit\"]\n };\n throw error;\n }\n if (!state.records.branches.has(otherBranch)) {\n const 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 expected: [`branch ${otherBranch}`]\n };\n throw error;\n }\n if (otherCommit === void 0 || !otherCommit) {\n const 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 expected: ['\"commit\"']\n };\n throw error;\n }\n if (currentCommit === otherCommit) {\n const error = new Error('Incorrect usage of \"merge\". Both branches have same head');\n error.hash = {\n text: `merge ${otherBranch}`,\n token: `merge ${otherBranch}`,\n expected: [\"branch abc\"]\n };\n throw error;\n }\n if (customId && state.records.commits.has(customId)) {\n const error = new Error(\n 'Incorrect usage of \"merge\". Commit with id:' + customId + \" already exists, use different custom id\"\n );\n error.hash = {\n text: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n token: `merge ${otherBranch} ${customId} ${overrideType} ${customTags?.join(\" \")}`,\n expected: [\n `merge ${otherBranch} ${customId}_UNIQUE ${overrideType} ${customTags?.join(\" \")}`\n ]\n };\n throw error;\n }\n const verifiedBranch = otherBranchCheck ? otherBranchCheck : \"\";\n const commit2 = {\n id: customId || `${state.records.seq}-${getID()}`,\n message: `merged branch ${otherBranch} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, verifiedBranch],\n branch: state.records.currBranch,\n type: commitType.MERGE,\n customType: overrideType,\n customId: customId ? true : false,\n tags: customTags ?? []\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in mergeBranch\");\n}, \"merge\");\nvar cherryPick = /* @__PURE__ */ __name(function(cherryPickDB) {\n let sourceId = cherryPickDB.id;\n let targetId = cherryPickDB.targetId;\n let tags = cherryPickDB.tags;\n let parentCommitId = cherryPickDB.parent;\n log.debug(\"Entering cherryPick:\", sourceId, targetId, tags);\n const config = getConfig3();\n sourceId = common_default.sanitizeText(sourceId, config);\n targetId = common_default.sanitizeText(targetId, config);\n tags = tags?.map((tag) => common_default.sanitizeText(tag, config));\n parentCommitId = common_default.sanitizeText(parentCommitId, config);\n if (!sourceId || !state.records.commits.has(sourceId)) {\n const 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 expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const sourceCommit = state.records.commits.get(sourceId);\n if (sourceCommit === void 0 || !sourceCommit) {\n throw new Error('Incorrect usage of \"cherryPick\". Source commit id should exist and provided');\n }\n if (parentCommitId && !(Array.isArray(sourceCommit.parents) && sourceCommit.parents.includes(parentCommitId))) {\n const error = new Error(\n \"Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.\"\n );\n throw error;\n }\n const sourceCommitBranch = sourceCommit.branch;\n if (sourceCommit.type === commitType.MERGE && !parentCommitId) {\n const error = new Error(\n \"Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.\"\n );\n throw error;\n }\n if (!targetId || !state.records.commits.has(targetId)) {\n if (sourceCommitBranch === state.records.currBranch) {\n const 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 expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommitId = state.records.branches.get(state.records.currBranch);\n if (currentCommitId === void 0 || !currentCommitId) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const currentCommit = state.records.commits.get(currentCommitId);\n if (currentCommit === void 0 || !currentCommit) {\n const error = new Error(\n `Incorrect usage of \"cherry-pick\". Current branch (${state.records.currBranch})has no commits`\n );\n error.hash = {\n text: `cherryPick ${sourceId} ${targetId}`,\n token: `cherryPick ${sourceId} ${targetId}`,\n expected: [\"cherry-pick abc\"]\n };\n throw error;\n }\n const commit2 = {\n id: state.records.seq + \"-\" + getID(),\n message: `cherry-picked ${sourceCommit?.message} into ${state.records.currBranch}`,\n seq: state.records.seq++,\n parents: state.records.head == null ? [] : [state.records.head.id, sourceCommit.id],\n branch: state.records.currBranch,\n type: commitType.CHERRY_PICK,\n tags: tags ? tags.filter(Boolean) : [\n `cherry-pick:${sourceCommit.id}${sourceCommit.type === commitType.MERGE ? `|parent:${parentCommitId}` : \"\"}`\n ]\n };\n state.records.head = commit2;\n state.records.commits.set(commit2.id, commit2);\n state.records.branches.set(state.records.currBranch, commit2.id);\n log.debug(state.records.branches);\n log.debug(\"in cherryPick\");\n }\n}, \"cherryPick\");\nvar checkout = /* @__PURE__ */ __name(function(branch2) {\n branch2 = common_default.sanitizeText(branch2, getConfig3());\n if (!state.records.branches.has(branch2)) {\n const 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 expected: [`branch ${branch2}`]\n };\n throw error;\n } else {\n state.records.currBranch = branch2;\n const id = state.records.branches.get(state.records.currBranch);\n if (id === void 0 || !id) {\n state.records.head = null;\n } else {\n state.records.head = state.records.commits.get(id) ?? null;\n }\n }\n}, \"checkout\");\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}\n__name(upsert, \"upsert\");\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 (const branch2 in state.records.branches) {\n if (state.records.branches.get(branch2) === commit2.id) {\n label.push(branch2);\n }\n }\n log.debug(label.join(\" \"));\n if (commit2.parents && commit2.parents.length == 2 && commit2.parents[0] && commit2.parents[1]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n if (commit2.parents[1]) {\n commitArr.push(state.records.commits.get(commit2.parents[1]));\n }\n } else if (commit2.parents.length == 0) {\n return;\n } else {\n if (commit2.parents[0]) {\n const newCommit = state.records.commits.get(commit2.parents[0]);\n upsert(commitArr, commit2, newCommit);\n }\n }\n commitArr = uniqBy(commitArr, (c) => c.id);\n prettyPrintCommitHistory(commitArr);\n}\n__name(prettyPrintCommitHistory, \"prettyPrintCommitHistory\");\nvar prettyPrint = /* @__PURE__ */ __name(function() {\n log.debug(state.records.commits);\n const node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n}, \"prettyPrint\");\nvar clear2 = /* @__PURE__ */ __name(function() {\n state.reset();\n clear();\n}, \"clear\");\nvar getBranchesAsObjArray = /* @__PURE__ */ __name(function() {\n const branchesArray = [...state.records.branchConfig.values()].map((branchConfig, i) => {\n if (branchConfig.order !== null && branchConfig.order !== void 0) {\n return branchConfig;\n }\n return {\n ...branchConfig,\n order: parseFloat(`0.${i}`)\n };\n }).sort((a, b) => (a.order ?? 0) - (b.order ?? 0)).map(({ name }) => ({ name }));\n return branchesArray;\n}, \"getBranchesAsObjArray\");\nvar getBranches = /* @__PURE__ */ __name(function() {\n return state.records.branches;\n}, \"getBranches\");\nvar getCommits = /* @__PURE__ */ __name(function() {\n return state.records.commits;\n}, \"getCommits\");\nvar getCommitsArray = /* @__PURE__ */ __name(function() {\n const commitArr = [...state.records.commits.values()];\n commitArr.forEach(function(o) {\n log.debug(o.id);\n });\n commitArr.sort((a, b) => a.seq - b.seq);\n return commitArr;\n}, \"getCommitsArray\");\nvar getCurrentBranch = /* @__PURE__ */ __name(function() {\n return state.records.currBranch;\n}, \"getCurrentBranch\");\nvar getDirection = /* @__PURE__ */ __name(function() {\n return state.records.direction;\n}, \"getDirection\");\nvar getHead = /* @__PURE__ */ __name(function() {\n return state.records.head;\n}, \"getHead\");\nvar db = {\n commitType,\n getConfig: getConfig3,\n setDirection,\n setOptions,\n getOptions,\n commit,\n branch,\n merge,\n cherryPick,\n checkout,\n //reset,\n prettyPrint,\n clear: clear2,\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};\n\n// src/diagrams/git/gitGraphParser.ts\nvar populate = /* @__PURE__ */ __name((ast, db2) => {\n populateCommonDb(ast, db2);\n if (ast.dir) {\n db2.setDirection(ast.dir);\n }\n for (const statement of ast.statements) {\n parseStatement(statement, db2);\n }\n}, \"populate\");\nvar parseStatement = /* @__PURE__ */ __name((statement, db2) => {\n const parsers = {\n Commit: /* @__PURE__ */ __name((stmt) => db2.commit(parseCommit(stmt)), \"Commit\"),\n Branch: /* @__PURE__ */ __name((stmt) => db2.branch(parseBranch(stmt)), \"Branch\"),\n Merge: /* @__PURE__ */ __name((stmt) => db2.merge(parseMerge(stmt)), \"Merge\"),\n Checkout: /* @__PURE__ */ __name((stmt) => db2.checkout(parseCheckout(stmt)), \"Checkout\"),\n CherryPicking: /* @__PURE__ */ __name((stmt) => db2.cherryPick(parseCherryPicking(stmt)), \"CherryPicking\")\n };\n const parser2 = parsers[statement.$type];\n if (parser2) {\n parser2(statement);\n } else {\n log.error(`Unknown statement type: ${statement.$type}`);\n }\n}, \"parseStatement\");\nvar parseCommit = /* @__PURE__ */ __name((commit2) => {\n const commitDB = {\n id: commit2.id,\n msg: commit2.message ?? \"\",\n type: commit2.type !== void 0 ? commitType[commit2.type] : commitType.NORMAL,\n tags: commit2.tags ?? void 0\n };\n return commitDB;\n}, \"parseCommit\");\nvar parseBranch = /* @__PURE__ */ __name((branch2) => {\n const branchDB = {\n name: branch2.name,\n order: branch2.order ?? 0\n };\n return branchDB;\n}, \"parseBranch\");\nvar parseMerge = /* @__PURE__ */ __name((merge2) => {\n const mergeDB = {\n branch: merge2.branch,\n id: merge2.id ?? \"\",\n type: merge2.type !== void 0 ? commitType[merge2.type] : void 0,\n tags: merge2.tags ?? void 0\n };\n return mergeDB;\n}, \"parseMerge\");\nvar parseCheckout = /* @__PURE__ */ __name((checkout2) => {\n const branch2 = checkout2.branch;\n return branch2;\n}, \"parseCheckout\");\nvar parseCherryPicking = /* @__PURE__ */ __name((cherryPicking) => {\n const cherryPickDB = {\n id: cherryPicking.id,\n targetId: \"\",\n tags: cherryPicking.tags?.length === 0 ? void 0 : cherryPicking.tags,\n parent: cherryPicking.parent\n };\n return cherryPickDB;\n}, \"parseCherryPicking\");\nvar parser = {\n parse: /* @__PURE__ */ __name(async (input) => {\n const ast = await parse(\"gitGraph\", input);\n log.debug(ast);\n populate(ast, db);\n }, \"parse\")\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n const mockDB = {\n commitType,\n setDirection: vi.fn(),\n commit: vi.fn(),\n branch: vi.fn(),\n merge: vi.fn(),\n cherryPick: vi.fn(),\n checkout: vi.fn()\n };\n describe(\"GitGraph Parser\", () => {\n it(\"should parse a commit statement\", () => {\n const commit2 = {\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(commit2, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a branch statement\", () => {\n const branch2 = {\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n };\n parseStatement(branch2, mockDB);\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n });\n it(\"should parse a checkout statement\", () => {\n const checkout2 = {\n $type: \"Checkout\",\n branch: \"newBranch\"\n };\n parseStatement(checkout2, mockDB);\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n it(\"should parse a merge statement\", () => {\n const merge2 = {\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n };\n parseStatement(merge2, mockDB);\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n });\n it(\"should parse a cherry picking statement\", () => {\n const cherryPick2 = {\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n };\n parseStatement(cherryPick2, mockDB);\n expect(mockDB.cherryPick).toHaveBeenCalledWith({\n id: \"1\",\n targetId: \"\",\n parent: \"2\",\n tags: [\"tag1\", \"tag2\"]\n });\n });\n it(\"should parse a langium generated gitGraph ast\", () => {\n const dummy = {\n $type: \"GitGraph\",\n statements: [],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n const gitGraphAst = {\n $type: \"GitGraph\",\n statements: [\n {\n $container: dummy,\n $type: \"Commit\",\n id: \"1\",\n message: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Branch\",\n name: \"newBranch\",\n order: 1\n },\n {\n $container: dummy,\n $type: \"Merge\",\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: \"NORMAL\"\n },\n {\n $container: dummy,\n $type: \"Checkout\",\n branch: \"newBranch\"\n },\n {\n $container: dummy,\n $type: \"CherryPicking\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n parent: \"2\"\n }\n ],\n accDescr: \"\",\n accTitle: \"\",\n title: \"\"\n };\n populate(gitGraphAst, mockDB);\n expect(mockDB.commit).toHaveBeenCalledWith({\n id: \"1\",\n msg: \"test\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.branch).toHaveBeenCalledWith({ name: \"newBranch\", order: 1 });\n expect(mockDB.merge).toHaveBeenCalledWith({\n branch: \"newBranch\",\n id: \"1\",\n tags: [\"tag1\", \"tag2\"],\n type: 0\n });\n expect(mockDB.checkout).toHaveBeenCalledWith(\"newBranch\");\n });\n });\n}\n\n// src/diagrams/git/gitGraphRenderer.ts\nimport { select } from \"d3\";\nvar LAYOUT_OFFSET = 10;\nvar COMMIT_STEP = 40;\nvar PX = 4;\nvar PY = 2;\nvar THEME_COLOR_LIMIT = 8;\nvar REDUX_GEOMETRY_THEMES = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nvar REDUX_BRANCH_LABEL_PADDING_Y = 12;\nvar COLOR_THEMES = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar DARK_THEMES = /* @__PURE__ */ new Set([\"dark\", \"redux-dark\", \"redux-dark-color\", \"neo-dark\"]);\nvar calcColorIndex = /* @__PURE__ */ __name((rawIndex, limit, avoidDefaultColor = false) => {\n if (avoidDefaultColor && rawIndex > 0) {\n return (rawIndex - 1) % (limit - 1) + 1;\n }\n return rawIndex % limit;\n}, \"calcColorIndex\");\nvar branchPos = /* @__PURE__ */ new Map();\nvar commitPos = /* @__PURE__ */ new Map();\nvar defaultPos = 30;\nvar allCommitsDict = /* @__PURE__ */ new Map();\nvar lanes = [];\nvar maxPos = 0;\nvar dir = \"LR\";\nvar clear3 = /* @__PURE__ */ __name(() => {\n branchPos.clear();\n commitPos.clear();\n allCommitsDict.clear();\n maxPos = 0;\n lanes = [];\n dir = \"LR\";\n}, \"clear\");\nvar drawText = /* @__PURE__ */ __name((txt) => {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n const rows = typeof txt === \"string\" ? txt.split(/\\\\n|\\n|<br\\s*\\/?>/gi) : txt;\n rows.forEach((row) => {\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}, \"drawText\");\nvar findClosestParent = /* @__PURE__ */ __name((parents) => {\n let closestParent;\n let comparisonFunc;\n let targetPosition;\n if (dir === \"BT\") {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a <= b, \"comparisonFunc\");\n targetPosition = Infinity;\n } else {\n comparisonFunc = /* @__PURE__ */ __name((a, b) => a >= b, \"comparisonFunc\");\n targetPosition = 0;\n }\n parents.forEach((parent) => {\n const parentPosition = dir === \"TB\" || dir == \"BT\" ? commitPos.get(parent)?.y : commitPos.get(parent)?.x;\n if (parentPosition !== void 0 && comparisonFunc(parentPosition, targetPosition)) {\n closestParent = parent;\n targetPosition = parentPosition;\n }\n });\n return closestParent;\n}, \"findClosestParent\");\nvar findClosestParentBT = /* @__PURE__ */ __name((parents) => {\n let closestParent = \"\";\n let maxPosition = Infinity;\n parents.forEach((parent) => {\n const parentPosition = commitPos.get(parent).y;\n if (parentPosition <= maxPosition) {\n closestParent = parent;\n maxPosition = parentPosition;\n }\n });\n return closestParent || void 0;\n}, \"findClosestParentBT\");\nvar setParallelBTPos = /* @__PURE__ */ __name((sortedKeys, commits, defaultPos2) => {\n let curPos = defaultPos2;\n let maxPosition = defaultPos2;\n const roots = [];\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (commit2.parents.length) {\n curPos = calculateCommitPosition(commit2);\n maxPosition = Math.max(curPos, maxPosition);\n } else {\n roots.push(commit2);\n }\n setCommitPosition(commit2, curPos);\n });\n curPos = maxPosition;\n roots.forEach((commit2) => {\n setRootPosition(commit2, curPos, defaultPos2);\n });\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2?.parents.length) {\n const closestParent = findClosestParentBT(commit2.parents);\n curPos = commitPos.get(closestParent).y - COMMIT_STEP;\n if (curPos <= maxPosition) {\n maxPosition = curPos;\n }\n const x = branchPos.get(commit2.branch).pos;\n const y = curPos - LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n }\n });\n}, \"setParallelBTPos\");\nvar findClosestParentPos = /* @__PURE__ */ __name((commit2) => {\n const closestParent = findClosestParent(commit2.parents.filter((p) => p !== null));\n if (!closestParent) {\n throw new Error(`Closest parent not found for commit ${commit2.id}`);\n }\n const closestParentPos = commitPos.get(closestParent)?.y;\n if (closestParentPos === void 0) {\n throw new Error(`Closest parent position not found for commit ${commit2.id}`);\n }\n return closestParentPos;\n}, \"findClosestParentPos\");\nvar calculateCommitPosition = /* @__PURE__ */ __name((commit2) => {\n const closestParentPos = findClosestParentPos(commit2);\n return closestParentPos + COMMIT_STEP;\n}, \"calculateCommitPosition\");\nvar setCommitPosition = /* @__PURE__ */ __name((commit2, curPos) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const x = branch2.pos;\n const y = curPos + LAYOUT_OFFSET;\n commitPos.set(commit2.id, { x, y });\n return { x, y };\n}, \"setCommitPosition\");\nvar setRootPosition = /* @__PURE__ */ __name((commit2, curPos, defaultPos2) => {\n const branch2 = branchPos.get(commit2.branch);\n if (!branch2) {\n throw new Error(`Branch not found for commit ${commit2.id}`);\n }\n const y = curPos + defaultPos2;\n const x = branch2.pos;\n commitPos.set(commit2.id, { x, y });\n}, \"setRootPosition\");\nvar drawCommitBullet = /* @__PURE__ */ __name((gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType) => {\n const { theme } = getConfig2();\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? \"\");\n const useColorTheme = COLOR_THEMES.has(theme ?? \"\");\n const isDark = DARK_THEMES.has(theme ?? \"\");\n if (commitSymbolType === commitType.HIGHLIGHT) {\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 10 + (useReduxGeometry ? 3 : 0)).attr(\"y\", commitPosition.y - 10 + (useReduxGeometry ? 3 : 0)).attr(\"width\", useReduxGeometry ? 14 : 20).attr(\"height\", useReduxGeometry ? 14 : 20).attr(\n \"class\",\n `commit ${commit2.id} commit-highlight${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-outer`\n );\n gBullets.append(\"rect\").attr(\"x\", commitPosition.x - 6 + (useReduxGeometry ? 2 : 0)).attr(\"y\", commitPosition.y - 6 + (useReduxGeometry ? 2 : 0)).attr(\"width\", useReduxGeometry ? 8 : 12).attr(\"height\", useReduxGeometry ? 8 : 12).attr(\n \"class\",\n `commit ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)} ${typeClass}-inner`\n );\n } else if (commitSymbolType === commitType.CHERRY_PICK) {\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x).attr(\"cy\", commitPosition.y).attr(\"r\", useReduxGeometry ? 7 : 10).attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x - 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", useReduxGeometry ? 2.5 : 2.75).attr(\"fill\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"circle\").attr(\"cx\", commitPosition.x + 3).attr(\"cy\", commitPosition.y + 2).attr(\"r\", useReduxGeometry ? 2.5 : 2.75).attr(\"fill\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x + 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n gBullets.append(\"line\").attr(\"x1\", commitPosition.x - 3).attr(\"y1\", commitPosition.y + 1).attr(\"x2\", commitPosition.x).attr(\"y2\", commitPosition.y - 5).attr(\"stroke\", isDark ? \"#000000\" : \"#fff\").attr(\"class\", `commit ${commit2.id} ${typeClass}`);\n } else {\n const circle = gBullets.append(\"circle\");\n circle.attr(\"cx\", commitPosition.x);\n circle.attr(\"cy\", commitPosition.y);\n circle.attr(\"r\", useReduxGeometry ? 7 : 10);\n circle.attr(\n \"class\",\n `commit ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n if (commitSymbolType === commitType.MERGE) {\n const circle2 = gBullets.append(\"circle\");\n circle2.attr(\"cx\", commitPosition.x);\n circle2.attr(\"cy\", commitPosition.y);\n circle2.attr(\"r\", useReduxGeometry ? 5 : 6);\n circle2.attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n if (commitSymbolType === commitType.REVERSE) {\n const cross = gBullets.append(\"path\");\n const constValue = useReduxGeometry ? 4 : 5;\n cross.attr(\n \"d\",\n `M ${commitPosition.x - constValue},${commitPosition.y - constValue}L${commitPosition.x + constValue},${commitPosition.y + constValue}M${commitPosition.x - constValue},${commitPosition.y + constValue}L${commitPosition.x + constValue},${commitPosition.y - constValue}`\n ).attr(\n \"class\",\n `commit ${typeClass} ${commit2.id} commit${calcColorIndex(branchIndex, THEME_COLOR_LIMIT, useColorTheme)}`\n );\n }\n }\n}, \"drawCommitBullet\");\nvar drawCommitLabel = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos, gitGraphConfig) => {\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\", commitPosition.y + 25).attr(\"class\", \"commit-label\").text(commit2.id);\n const bbox = text.node()?.getBBox();\n if (bbox) {\n labelBkg.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2 - PY).attr(\"y\", commitPosition.y + 13.5).attr(\"width\", bbox.width + 2 * PY).attr(\"height\", bbox.height + 2 * PY);\n if (dir === \"TB\" || dir === \"BT\") {\n labelBkg.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX + 5)).attr(\"y\", commitPosition.y - 12);\n text.attr(\"x\", commitPosition.x - (bbox.width + 4 * PX)).attr(\"y\", commitPosition.y + bbox.height - 12);\n } else {\n text.attr(\"x\", commitPosition.posWithOffset - bbox.width / 2);\n }\n if (gitGraphConfig.rotateCommitLabel) {\n if (dir === \"TB\" || dir === \"BT\") {\n text.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n labelBkg.attr(\n \"transform\",\n \"rotate(-45, \" + commitPosition.x + \", \" + commitPosition.y + \")\"\n );\n } else {\n const r_x = -7.5 - (bbox.width + 10) / 25 * 9.5;\n const r_y = 10 + bbox.width / 25 * 8.5;\n wrapper.attr(\n \"transform\",\n \"translate(\" + r_x + \", \" + r_y + \") rotate(-45, \" + pos + \", \" + commitPosition.y + \")\"\n );\n }\n }\n }\n }\n}, \"drawCommitLabel\");\nvar drawCommitTags = /* @__PURE__ */ __name((gLabels, commit2, commitPosition, pos) => {\n if (commit2.tags.length > 0) {\n let yOffset = 0;\n let maxTagBboxWidth = 0;\n let maxTagBboxHeight = 0;\n const tagElements = [];\n for (const tagValue of commit2.tags.reverse()) {\n const rect = gLabels.insert(\"polygon\");\n const hole = gLabels.append(\"circle\");\n const tag = gLabels.append(\"text\").attr(\"y\", commitPosition.y - 16 - yOffset).attr(\"class\", \"tag-label\").text(tagValue);\n const tagBbox = tag.node()?.getBBox();\n if (!tagBbox) {\n throw new Error(\"Tag bbox not found\");\n }\n maxTagBboxWidth = Math.max(maxTagBboxWidth, tagBbox.width);\n maxTagBboxHeight = Math.max(maxTagBboxHeight, tagBbox.height);\n tag.attr(\"x\", commitPosition.posWithOffset - tagBbox.width / 2);\n tagElements.push({\n tag,\n hole,\n rect,\n yOffset\n });\n yOffset += 20;\n }\n for (const { tag, hole, rect, yOffset: yOffset2 } of tagElements) {\n const h2 = maxTagBboxHeight / 2;\n const ly = commitPosition.y - 19.2 - yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly + PY} \n ${pos - maxTagBboxWidth / 2 - PX / 2},${ly - PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly - h2 - PY}\n ${commitPosition.posWithOffset + maxTagBboxWidth / 2 + PX},${ly + h2 + PY}\n ${commitPosition.posWithOffset - maxTagBboxWidth / 2 - PX},${ly + h2 + PY}`\n );\n hole.attr(\"cy\", ly).attr(\"cx\", pos - maxTagBboxWidth / 2 + PX / 2).attr(\"r\", 1.5).attr(\"class\", \"tag-hole\");\n if (dir === \"TB\" || dir === \"BT\") {\n const yOrigin = pos + yOffset2;\n rect.attr(\"class\", \"tag-label-bkg\").attr(\n \"points\",\n `\n ${commitPosition.x},${yOrigin + 2}\n ${commitPosition.x},${yOrigin - 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin - h2 - 2}\n ${commitPosition.x + LAYOUT_OFFSET + maxTagBboxWidth + 4},${yOrigin + h2 + 2}\n ${commitPosition.x + LAYOUT_OFFSET},${yOrigin + h2 + 2}`\n ).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n hole.attr(\"cx\", commitPosition.x + PX / 2).attr(\"cy\", yOrigin).attr(\"transform\", \"translate(12,12) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n tag.attr(\"x\", commitPosition.x + 5).attr(\"y\", yOrigin + 3).attr(\"transform\", \"translate(14,14) rotate(45, \" + commitPosition.x + \",\" + pos + \")\");\n }\n }\n }\n}, \"drawCommitTags\");\nvar getCommitClassType = /* @__PURE__ */ __name((commit2) => {\n const commitSymbolType = commit2.customType ?? commit2.type;\n switch (commitSymbolType) {\n case commitType.NORMAL:\n return \"commit-normal\";\n case commitType.REVERSE:\n return \"commit-reverse\";\n case commitType.HIGHLIGHT:\n return \"commit-highlight\";\n case commitType.MERGE:\n return \"commit-merge\";\n case commitType.CHERRY_PICK:\n return \"commit-cherry-pick\";\n default:\n return \"commit-normal\";\n }\n}, \"getCommitClassType\");\nvar calculatePosition = /* @__PURE__ */ __name((commit2, dir2, pos, commitPos2) => {\n const defaultCommitPosition = { x: 0, y: 0 };\n if (commit2.parents.length > 0) {\n const closestParent = findClosestParent(commit2.parents);\n if (closestParent) {\n const parentPosition = commitPos2.get(closestParent) ?? defaultCommitPosition;\n if (dir2 === \"TB\") {\n return parentPosition.y + COMMIT_STEP;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return parentPosition.x + COMMIT_STEP;\n }\n }\n } else {\n if (dir2 === \"TB\") {\n return defaultPos;\n } else if (dir2 === \"BT\") {\n const currentPosition = commitPos2.get(commit2.id) ?? defaultCommitPosition;\n return currentPosition.y - COMMIT_STEP;\n } else {\n return 0;\n }\n }\n return 0;\n}, \"calculatePosition\");\nvar getCommitPosition = /* @__PURE__ */ __name((commit2, pos, isParallelCommits) => {\n const posWithOffset = dir === \"BT\" && isParallelCommits ? pos : pos + LAYOUT_OFFSET;\n const branchY = branchPos.get(commit2.branch)?.pos;\n const x = dir === \"TB\" || dir === \"BT\" ? branchPos.get(commit2.branch)?.pos : posWithOffset;\n if (x === void 0 || branchY === void 0) {\n throw new Error(`Position were undefined for commit ${commit2.id}`);\n }\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(getConfig2().theme ?? \"\");\n const y = dir === \"TB\" || dir === \"BT\" ? posWithOffset : branchY + (useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1 : -2);\n return { x, y, posWithOffset };\n}, \"getCommitPosition\");\nvar drawCommits = /* @__PURE__ */ __name((svg, commits, modifyGraph, gitGraphConfig) => {\n const gBullets = svg.append(\"g\").attr(\"class\", \"commit-bullets\");\n const gLabels = svg.append(\"g\").attr(\"class\", \"commit-labels\");\n let pos = dir === \"TB\" || dir === \"BT\" ? defaultPos : 0;\n const keys = [...commits.keys()];\n const isParallelCommits = gitGraphConfig.parallelCommits ?? false;\n const sortKeys = /* @__PURE__ */ __name((a, b) => {\n const seqA = commits.get(a)?.seq;\n const seqB = commits.get(b)?.seq;\n return seqA !== void 0 && seqB !== void 0 ? seqA - seqB : 0;\n }, \"sortKeys\");\n let sortedKeys = keys.sort(sortKeys);\n if (dir === \"BT\") {\n if (isParallelCommits) {\n setParallelBTPos(sortedKeys, commits, pos);\n }\n sortedKeys = sortedKeys.reverse();\n }\n sortedKeys.forEach((key) => {\n const commit2 = commits.get(key);\n if (!commit2) {\n throw new Error(`Commit not found for key ${key}`);\n }\n if (isParallelCommits) {\n pos = calculatePosition(commit2, dir, pos, commitPos);\n }\n const commitPosition = getCommitPosition(commit2, pos, isParallelCommits);\n if (modifyGraph) {\n const typeClass = getCommitClassType(commit2);\n const commitSymbolType = commit2.customType ?? commit2.type;\n const branchIndex = branchPos.get(commit2.branch)?.index ?? 0;\n drawCommitBullet(gBullets, commit2, commitPosition, typeClass, branchIndex, commitSymbolType);\n drawCommitLabel(gLabels, commit2, commitPosition, pos, gitGraphConfig);\n drawCommitTags(gLabels, commit2, commitPosition, pos);\n }\n if (dir === \"TB\" || dir === \"BT\") {\n commitPos.set(commit2.id, { x: commitPosition.x, y: commitPosition.posWithOffset });\n } else {\n commitPos.set(commit2.id, { x: commitPosition.posWithOffset, y: commitPosition.y });\n }\n pos = dir === \"BT\" && isParallelCommits ? pos + COMMIT_STEP : pos + COMMIT_STEP + LAYOUT_OFFSET;\n if (pos > maxPos) {\n maxPos = pos;\n }\n });\n}, \"drawCommits\");\nvar shouldRerouteArrow = /* @__PURE__ */ __name((commitA, commitB, p1, p2, allCommits) => {\n const commitBIsFurthest = dir === \"TB\" || dir === \"BT\" ? p1.x < p2.x : p1.y < p2.y;\n const branchToGetCurve = commitBIsFurthest ? commitB.branch : commitA.branch;\n const isOnBranchToGetCurve = /* @__PURE__ */ __name((x) => x.branch === branchToGetCurve, \"isOnBranchToGetCurve\");\n const isBetweenCommits = /* @__PURE__ */ __name((x) => x.seq > commitA.seq && x.seq < commitB.seq, \"isBetweenCommits\");\n return [...allCommits.values()].some((commitX) => {\n return isBetweenCommits(commitX) && isOnBranchToGetCurve(commitX);\n });\n}, \"shouldRerouteArrow\");\nvar findLane = /* @__PURE__ */ __name((y1, y2, depth = 0) => {\n const candidate = y1 + Math.abs(y1 - y2) / 2;\n if (depth > 5) {\n return candidate;\n }\n const 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}, \"findLane\");\nvar drawArrow = /* @__PURE__ */ __name((svg, commitA, commitB, allCommits) => {\n const { theme: arrowTheme } = getConfig2();\n const useColorTheme = COLOR_THEMES.has(arrowTheme ?? \"\");\n const p1 = commitPos.get(commitA.id);\n const p2 = commitPos.get(commitB.id);\n if (p1 === void 0 || p2 === void 0) {\n throw new Error(`Commit positions not found for commits ${commitA.id} and ${commitB.id}`);\n }\n const arrowNeedsRerouting = shouldRerouteArrow(commitA, commitB, p1, p2, allCommits);\n let arc = \"\";\n let arc2 = \"\";\n let radius = 0;\n let offset = 0;\n let colorClassNum = branchPos.get(commitB.branch)?.index;\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\n colorClassNum = branchPos.get(commitA.branch)?.index;\n }\n let lineDef;\n if (arrowNeedsRerouting) {\n arc = \"A 10 10, 0, 0, 0,\";\n arc2 = \"A 10 10, 0, 0, 1,\";\n radius = 10;\n offset = 10;\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 colorClassNum = branchPos.get(commitA.branch)?.index;\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 if (dir === \"BT\") {\n if (p1.x < p2.x) {\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 } else {\n colorClassNum = branchPos.get(commitA.branch)?.index;\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 }\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 colorClassNum = branchPos.get(commitA.branch)?.index;\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 arc = \"A 20 20, 0, 0, 0,\";\n arc2 = \"A 20 20, 0, 0, 1,\";\n radius = 20;\n offset = 20;\n if (dir === \"TB\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\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 } else {\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 }\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 if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\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 } else {\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 }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else if (dir === \"BT\") {\n if (p1.x < p2.x) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\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 } else {\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 }\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 if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\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 } else {\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 }\n if (p1.x === p2.x) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n } else {\n if (p1.y < p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\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 } else {\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 if (p1.y > p2.y) {\n if (commitB.type === commitType.MERGE && commitA.id !== commitB.parents[0]) {\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 } else {\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 }\n if (p1.y === p2.y) {\n lineDef = `M ${p1.x} ${p1.y} L ${p2.x} ${p2.y}`;\n }\n }\n }\n if (lineDef === void 0) {\n throw new Error(\"Line definition not found\");\n }\n svg.append(\"path\").attr(\"d\", lineDef).attr(\n \"class\",\n \"arrow arrow\" + calcColorIndex(colorClassNum, THEME_COLOR_LIMIT, useColorTheme)\n );\n}, \"drawArrow\");\nvar drawArrows = /* @__PURE__ */ __name((svg, commits) => {\n const gArrows = svg.append(\"g\").attr(\"class\", \"commit-arrows\");\n [...commits.keys()].forEach((key) => {\n const commit2 = commits.get(key);\n if (commit2.parents && commit2.parents.length > 0) {\n commit2.parents.forEach((parent) => {\n drawArrow(gArrows, commits.get(parent), commit2, commits);\n });\n }\n });\n}, \"drawArrows\");\nvar drawBranches = /* @__PURE__ */ __name((svg, branches, gitGraphConfig, id) => {\n const { look, theme, themeVariables } = getConfig2();\n const { dropShadow, THEME_COLOR_LIMIT: themeColorLimit } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES.has(theme ?? \"\");\n const useColorTheme = COLOR_THEMES.has(theme ?? \"\");\n const g = svg.append(\"g\");\n branches.forEach((branch2, index) => {\n const adjustIndexForTheme = calcColorIndex(\n index,\n useReduxGeometry ? themeColorLimit : THEME_COLOR_LIMIT,\n useColorTheme\n );\n const pos = branchPos.get(branch2.name)?.pos;\n if (pos === void 0) {\n throw new Error(`Position not found for branch ${branch2.name}`);\n }\n const spineY = dir === \"TB\" || dir === \"BT\" ? pos : useReduxGeometry ? pos + REDUX_BRANCH_LABEL_PADDING_Y / 2 + 1 : pos - 2;\n const line = g.append(\"line\");\n line.attr(\"x1\", 0);\n line.attr(\"y1\", spineY);\n line.attr(\"x2\", maxPos);\n line.attr(\"y2\", spineY);\n line.attr(\"class\", \"branch branch\" + adjustIndexForTheme);\n if (dir === \"TB\") {\n line.attr(\"y1\", defaultPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", maxPos);\n line.attr(\"x2\", pos);\n } else if (dir === \"BT\") {\n line.attr(\"y1\", maxPos);\n line.attr(\"x1\", pos);\n line.attr(\"y2\", defaultPos);\n line.attr(\"x2\", pos);\n }\n lanes.push(spineY);\n const 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 const bbox = labelElement.getBBox();\n const borderRadius = useReduxGeometry ? 0 : 4;\n const labelPaddingX = useReduxGeometry ? 16 : 0;\n const labelPaddingY = useReduxGeometry ? REDUX_BRANCH_LABEL_PADDING_Y : 0;\n if (look === \"neo\") {\n bkg.attr(\"data-look\", `neo`);\n }\n bkg.attr(\"class\", \"branchLabelBkg label\" + adjustIndexForTheme).attr(\n \"style\",\n look === \"neo\" ? `filter:${useReduxGeometry ? `url(#${id}-drop-shadow)` : dropShadow}` : \"\"\n ).attr(\"rx\", borderRadius).attr(\"ry\", borderRadius).attr(\"x\", -bbox.width - 4 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0)).attr(\"y\", -bbox.height / 2 + 10).attr(\"width\", bbox.width + 18 + labelPaddingX).attr(\"height\", bbox.height + 4 + labelPaddingY);\n label.attr(\n \"transform\",\n \"translate(\" + (-bbox.width - 14 - (gitGraphConfig.rotateCommitLabel === true ? 30 : 0) + labelPaddingX / 2) + \", \" + (spineY - bbox.height / 2 - 2) + \")\"\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 if (useReduxGeometry) {\n bkg.attr(\"transform\", `translate(${-labelPaddingX / 2 - 3}, ${-labelPaddingY - 10})`);\n label.attr(\n \"transform\",\n \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + (-labelPaddingY * 2 + 7) + \")\"\n );\n }\n } else if (dir === \"BT\") {\n bkg.attr(\"x\", pos - bbox.width / 2 - 10).attr(\"y\", maxPos);\n label.attr(\"transform\", \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + maxPos + \")\");\n if (useReduxGeometry) {\n bkg.attr(\"transform\", `translate(${-labelPaddingX / 2 - 3}, ${labelPaddingY + 10})`);\n label.attr(\n \"transform\",\n \"translate(\" + (pos - bbox.width / 2 - 5) + \", \" + (maxPos + labelPaddingY * 2 + 4) + \")\"\n );\n }\n } else {\n bkg.attr(\"transform\", \"translate(-19, \" + (spineY - 12 - labelPaddingY / 2) + \")\");\n }\n });\n}, \"drawBranches\");\nvar setBranchPosition = /* @__PURE__ */ __name(function(name, pos, index, bbox, rotateCommitLabel) {\n branchPos.set(name, { pos, index });\n pos += 50 + (rotateCommitLabel ? 40 : 0) + (dir === \"TB\" || dir === \"BT\" ? bbox.width / 2 : 0);\n return pos;\n}, \"setBranchPosition\");\nvar draw = /* @__PURE__ */ __name(function(txt, id, ver, diagObj) {\n clear3();\n log.debug(\"in gitgraph renderer\", txt + \"\\n\", \"id:\", id, ver);\n const db2 = diagObj.db;\n if (!db2.getConfig) {\n log.error(\"getConfig method is not available on db\");\n return;\n }\n const gitGraphConfig = db2.getConfig();\n const rotateCommitLabel = gitGraphConfig.rotateCommitLabel ?? false;\n allCommitsDict = db2.getCommits();\n const branches = db2.getBranchesAsObjArray();\n dir = db2.getDirection();\n const diagram2 = select(`[id=\"${id}\"]`);\n const { look, theme, themeVariables } = getConfig2();\n const { useGradient, gradientStart, gradientStop, filterColor } = themeVariables;\n if (useGradient) {\n const gradient = diagram2.append(\"defs\").append(\"linearGradient\").attr(\"id\", id + \"-gradient\").attr(\"gradientUnits\", \"objectBoundingBox\").attr(\"x1\", \"0%\").attr(\"y1\", \"0%\").attr(\"x2\", \"100%\").attr(\"y2\", \"0%\");\n gradient.append(\"stop\").attr(\"offset\", \"0%\").attr(\"stop-color\", gradientStart).attr(\"stop-opacity\", 1);\n gradient.append(\"stop\").attr(\"offset\", \"100%\").attr(\"stop-color\", gradientStop).attr(\"stop-opacity\", 1);\n }\n if (look === \"neo\" && REDUX_GEOMETRY_THEMES.has(theme ?? \"\")) {\n diagram2.append(\"defs\").append(\"filter\").attr(\"id\", id + \"-drop-shadow\").attr(\"height\", \"130%\").attr(\"width\", \"130%\").append(\"feDropShadow\").attr(\"dx\", \"4\").attr(\"dy\", \"4\").attr(\"stdDeviation\", 0).attr(\"flood-opacity\", \"0.06\").attr(\"flood-color\", filterColor);\n }\n let pos = 0;\n branches.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 const bbox = labelElement.getBBox();\n pos = setBranchPosition(branch2.name, pos, index, bbox, rotateCommitLabel);\n label.remove();\n branchLabel.remove();\n g.remove();\n });\n drawCommits(diagram2, allCommitsDict, false, gitGraphConfig);\n if (gitGraphConfig.showBranches) {\n drawBranches(diagram2, branches, gitGraphConfig, id);\n }\n drawArrows(diagram2, allCommitsDict);\n drawCommits(diagram2, allCommitsDict, true, gitGraphConfig);\n utils_default.insertTitle(\n diagram2,\n \"gitTitleText\",\n gitGraphConfig.titleTopMargin ?? 0,\n db2.getDiagramTitle()\n );\n setupGraphViewbox(void 0, diagram2, gitGraphConfig.diagramPadding, gitGraphConfig.useMaxWidth);\n}, \"draw\");\nvar gitGraphRenderer_default = {\n draw\n};\nif (void 0) {\n const { it, expect, describe } = void 0;\n describe(\"drawText\", () => {\n it(\"should drawText\", () => {\n const svgLabel = drawText(\"main\");\n expect(svgLabel).toBeDefined();\n expect(svgLabel.children[0].innerHTML).toBe(\"main\");\n });\n });\n describe(\"branchPosition\", () => {\n const bbox = {\n x: 0,\n y: 0,\n width: 10,\n height: 10,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n toJSON: /* @__PURE__ */ __name(() => \"\", \"toJSON\")\n };\n it(\"should setBranchPositions LR with two branches\", () => {\n dir = \"LR\";\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(90);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(180);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n it(\"should setBranchPositions TB with two branches\", () => {\n dir = \"TB\";\n bbox.width = 34.9921875;\n const pos = setBranchPosition(\"main\", 0, 0, bbox, true);\n expect(pos).toBe(107.49609375);\n expect(branchPos.get(\"main\")).toEqual({ pos: 0, index: 0 });\n bbox.width = 56.421875;\n const posNext = setBranchPosition(\"develop\", pos, 1, bbox, true);\n expect(posNext).toBe(225.70703125);\n expect(branchPos.get(\"develop\")).toEqual({ pos, index: 1 });\n });\n });\n describe(\"commitPosition\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"commitZero\",\n {\n id: \"ZERO\",\n message: \"\",\n seq: 0,\n type: commitType.NORMAL,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"commitA\",\n {\n id: \"A\",\n message: \"\",\n seq: 1,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitB\",\n {\n id: \"B\",\n message: \"\",\n seq: 2,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"A\"],\n branch: \"feature\"\n }\n ],\n [\n \"commitM\",\n {\n id: \"M\",\n message: \"merged branch feature into main\",\n seq: 3,\n type: commitType.MERGE,\n tags: [],\n parents: [\"ZERO\", \"B\"],\n branch: \"main\",\n customId: true\n }\n ],\n [\n \"commitC\",\n {\n id: \"C\",\n message: \"\",\n seq: 4,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"ZERO\"],\n branch: \"release\"\n }\n ],\n [\n \"commit5_8928ea0\",\n {\n id: \"5-8928ea0\",\n message: \"cherry-picked [object Object] into release\",\n seq: 5,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"C\", \"M\"],\n branch: \"release\"\n }\n ],\n [\n \"commitD\",\n {\n id: \"D\",\n message: \"\",\n seq: 6,\n type: commitType.NORMAL,\n tags: [],\n parents: [\"5-8928ea0\"],\n branch: \"release\"\n }\n ],\n [\n \"commit7_ed848ba\",\n {\n id: \"7-ed848ba\",\n message: \"cherry-picked [object Object] into release\",\n seq: 7,\n type: commitType.CHERRY_PICK,\n tags: [],\n parents: [\"D\", \"M\"],\n branch: \"release\"\n }\n ]\n ]);\n let pos = 0;\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"feature\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"release\", { pos: 224.03515625, index: 2 });\n describe(\"TB\", () => {\n pos = 30;\n dir = \"TB\";\n const expectedCommitPositionTB = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos, false);\n expect(position).toEqual(expectedCommitPositionTB.get(key));\n pos += 50;\n });\n });\n });\n describe(\"LR\", () => {\n let pos2 = 30;\n dir = \"LR\";\n const expectedCommitPositionLR = /* @__PURE__ */ new Map([\n [\"commitZero\", { x: 0, y: 40, posWithOffset: 40 }],\n [\"commitA\", { x: 107.49609375, y: 90, posWithOffset: 90 }],\n [\"commitB\", { x: 107.49609375, y: 140, posWithOffset: 140 }],\n [\"commitM\", { x: 0, y: 190, posWithOffset: 190 }],\n [\"commitC\", { x: 224.03515625, y: 240, posWithOffset: 240 }],\n [\"commit5_8928ea0\", { x: 224.03515625, y: 290, posWithOffset: 290 }],\n [\"commitD\", { x: 224.03515625, y: 340, posWithOffset: 340 }],\n [\"commit7_ed848ba\", { x: 224.03515625, y: 390, posWithOffset: 390 }]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct position for commit ${key}`, () => {\n const position = getCommitPosition(commit2, pos2, false);\n expect(position).toEqual(expectedCommitPositionLR.get(key));\n pos2 += 50;\n });\n });\n });\n describe(\"getCommitClassType\", () => {\n const expectedCommitClassType = /* @__PURE__ */ new Map([\n [\"commitZero\", \"commit-normal\"],\n [\"commitA\", \"commit-normal\"],\n [\"commitB\", \"commit-normal\"],\n [\"commitM\", \"commit-merge\"],\n [\"commitC\", \"commit-normal\"],\n [\"commit5_8928ea0\", \"commit-cherry-pick\"],\n [\"commitD\", \"commit-normal\"],\n [\"commit7_ed848ba\", \"commit-cherry-pick\"]\n ]);\n commits.forEach((commit2, key) => {\n it(`should give the correct class type for commit ${key}`, () => {\n const classType = getCommitClassType(commit2);\n expect(classType).toBe(expectedCommitClassType.get(key));\n });\n });\n });\n });\n describe(\"building BT parallel commit diagram\", () => {\n const commits = /* @__PURE__ */ new Map([\n [\n \"1-abcdefg\",\n {\n id: \"1-abcdefg\",\n message: \"\",\n seq: 0,\n type: 0,\n tags: [],\n parents: [],\n branch: \"main\"\n }\n ],\n [\n \"2-abcdefg\",\n {\n id: \"2-abcdefg\",\n message: \"\",\n seq: 1,\n type: 0,\n tags: [],\n parents: [\"1-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"3-abcdefg\",\n {\n id: \"3-abcdefg\",\n message: \"\",\n seq: 2,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"4-abcdefg\",\n {\n id: \"4-abcdefg\",\n message: \"\",\n seq: 3,\n type: 0,\n tags: [],\n parents: [\"3-abcdefg\"],\n branch: \"develop\"\n }\n ],\n [\n \"5-abcdefg\",\n {\n id: \"5-abcdefg\",\n message: \"\",\n seq: 4,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"6-abcdefg\",\n {\n id: \"6-abcdefg\",\n message: \"\",\n seq: 5,\n type: 0,\n tags: [],\n parents: [\"5-abcdefg\"],\n branch: \"feature\"\n }\n ],\n [\n \"7-abcdefg\",\n {\n id: \"7-abcdefg\",\n message: \"\",\n seq: 6,\n type: 0,\n tags: [],\n parents: [\"2-abcdefg\"],\n branch: \"main\"\n }\n ],\n [\n \"8-abcdefg\",\n {\n id: \"8-abcdefg\",\n message: \"\",\n seq: 7,\n type: 0,\n tags: [],\n parents: [\"7-abcdefg\"],\n branch: \"main\"\n }\n ]\n ]);\n const expectedCommitPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 40 }],\n [\"2-abcdefg\", { x: 0, y: 90 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 140 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 190 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 140 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 190 }],\n [\"7-abcdefg\", { x: 0, y: 140 }],\n [\"8-abcdefg\", { x: 0, y: 190 }]\n ]);\n const expectedCommitPositionAfterParallel = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", { x: 0, y: 210 }],\n [\"2-abcdefg\", { x: 0, y: 160 }],\n [\"3-abcdefg\", { x: 107.49609375, y: 110 }],\n [\"4-abcdefg\", { x: 107.49609375, y: 60 }],\n [\"5-abcdefg\", { x: 225.70703125, y: 110 }],\n [\"6-abcdefg\", { x: 225.70703125, y: 60 }],\n [\"7-abcdefg\", { x: 0, y: 110 }],\n [\"8-abcdefg\", { x: 0, y: 60 }]\n ]);\n const expectedCommitCurrentPosition = /* @__PURE__ */ new Map([\n [\"1-abcdefg\", 30],\n [\"2-abcdefg\", 80],\n [\"3-abcdefg\", 130],\n [\"4-abcdefg\", 180],\n [\"5-abcdefg\", 130],\n [\"6-abcdefg\", 180],\n [\"7-abcdefg\", 130],\n [\"8-abcdefg\", 180]\n ]);\n const sortedKeys = [...expectedCommitPosition.keys()];\n it(\"should get the correct commit position and current position\", () => {\n dir = \"BT\";\n let curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n commits.forEach((commit2, key) => {\n if (commit2.parents.length > 0) {\n curPos = calculateCommitPosition(commit2);\n }\n const position = setCommitPosition(commit2, curPos);\n expect(position).toEqual(expectedCommitPosition.get(key));\n expect(curPos).toEqual(expectedCommitCurrentPosition.get(key));\n });\n });\n it(\"should get the correct commit position after parallel commits\", () => {\n commitPos.clear();\n branchPos.clear();\n dir = \"BT\";\n const curPos = 30;\n commitPos.clear();\n branchPos.clear();\n branchPos.set(\"main\", { pos: 0, index: 0 });\n branchPos.set(\"develop\", { pos: 107.49609375, index: 1 });\n branchPos.set(\"feature\", { pos: 225.70703125, index: 2 });\n setParallelBTPos(sortedKeys, commits, curPos);\n sortedKeys.forEach((commit2) => {\n const position = commitPos.get(commit2);\n expect(position).toEqual(expectedCommitPositionAfterParallel.get(commit2));\n });\n });\n });\n it(\"add\", () => {\n commitPos.set(\"parent1\", { x: 1, y: 1 });\n commitPos.set(\"parent2\", { x: 2, y: 2 });\n commitPos.set(\"parent3\", { x: 3, y: 3 });\n dir = \"LR\";\n const parents = [\"parent1\", \"parent2\", \"parent3\"];\n const closestParent = findClosestParent(parents);\n expect(closestParent).toBe(\"parent3\");\n commitPos.clear();\n });\n}\n\n// src/diagrams/git/styles.js\nvar GIT_NAMED_COLOR_COUNT = 8;\nvar REDUX_GEOMETRY_THEMES2 = /* @__PURE__ */ new Set([\"redux\", \"redux-dark\", \"redux-color\", \"redux-dark-color\"]);\nvar COLOR_THEMES2 = /* @__PURE__ */ new Set([\"redux-color\", \"redux-dark-color\"]);\nvar NEO_THEMES = /* @__PURE__ */ new Set([\"neo\", \"neo-dark\"]);\nvar DARK_THEMES2 = /* @__PURE__ */ new Set([\"dark\", \"redux-dark\", \"redux-dark-color\", \"neo-dark\"]);\nvar NEO_COLOR_GEN_THEMES = /* @__PURE__ */ new Set([\n \"redux\",\n \"redux-dark\",\n \"redux-color\",\n \"redux-dark-color\",\n \"neo\",\n \"neo-dark\"\n]);\nvar genGitGraphGradient = /* @__PURE__ */ __name((options) => {\n const { svgId } = options;\n let sections = \"\";\n if (options.useGradient && svgId) {\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .label${i} { fill: ${options.mainBkg}; stroke: url(${svgId}-gradient); stroke-width: ${options.strokeWidth};}\n `;\n }\n }\n return sections;\n}, \"genGitGraphGradient\");\nvar genColor = /* @__PURE__ */ __name((options) => {\n const config = getConfig();\n const { theme, themeVariables } = config;\n const { borderColorArray } = themeVariables;\n const useReduxGeometry = REDUX_GEOMETRY_THEMES2.has(theme);\n if (NEO_THEMES.has(theme)) {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder};}\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n ${genGitGraphGradient(options)}`;\n } else {\n const ci = i % GIT_NAMED_COLOR_COUNT;\n sections += `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + ci]}; }\n .commit${i} { stroke: ${options[\"git\" + ci]}; fill: ${options[\"git\" + ci]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + ci]}; fill: ${options[\"gitInv\" + ci]}; }\n .arrow${i} { stroke: ${options[\"git\" + ci]}; }\n `;\n }\n }\n return sections;\n } else if (!COLOR_THEMES2.has(theme)) {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.nodeBorder}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"}}\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n .commit-cherry-pick${i} { stroke: ${options.nodeBorder}; }\n `;\n }\n return sections;\n } else {\n let sections = \"\";\n for (let i = 0; i < options.THEME_COLOR_LIMIT; i++) {\n if (i === 0) {\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${options.nodeBorder}; }\n .commit-highlight${i} { stroke: ${options.nodeBorder}; fill: ${options.mainBkg}; }\n .label${i} { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: ${options.strokeWidth}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .arrow${i} { stroke: ${options.nodeBorder}; }\n .commit-bullets { fill: ${options.nodeBorder}; }\n `;\n } else {\n const colorIndex = i % borderColorArray.length;\n sections += `\n .branch-label${i} { fill: ${options.nodeBorder}; ${useReduxGeometry ? `font-weight:${options.noteFontWeight}` : \"\"} }\n .commit${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .commit-highlight${i} { stroke: ${borderColorArray[colorIndex]}; fill: ${borderColorArray[colorIndex]}; }\n .label${i} { fill: ${DARK_THEMES2.has(theme) ? options.mainBkg : borderColorArray[colorIndex]}; stroke: ${borderColorArray[colorIndex]}; stroke-width: ${options.strokeWidth}; }\n .arrow${i} { stroke: ${borderColorArray[colorIndex]}; }\n `;\n }\n }\n return sections;\n }\n}, \"genColor\");\nvar normalTheme = /* @__PURE__ */ __name((options) => {\n return `${Array.from({ length: options.THEME_COLOR_LIMIT }, (_, i) => i).map((i) => {\n const ci = i % GIT_NAMED_COLOR_COUNT;\n return `\n .branch-label${i} { fill: ${options[\"gitBranchLabel\" + ci]}; }\n .commit${i} { stroke: ${options[\"git\" + ci]}; fill: ${options[\"git\" + ci]}; }\n .commit-highlight${i} { stroke: ${options[\"gitInv\" + ci]}; fill: ${options[\"gitInv\" + ci]}; }\n .label${i} { fill: ${options[\"git\" + ci]}; }\n .arrow${i} { stroke: ${options[\"git\" + ci]}; }\n `;\n }).join(\"\\n\")}`;\n}, \"normalTheme\");\nvar getStyles = /* @__PURE__ */ __name((options) => {\n const config = getConfig();\n const { theme } = config;\n const useNeoColorGen = NEO_COLOR_GEN_THEMES.has(theme);\n return `\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 \n ${useNeoColorGen ? genColor(options) : normalTheme(options)}\n\n .branch {\n stroke-width: ${options.strokeWidth};\n stroke: ${options.commitLineColor ?? options.lineColor};\n stroke-dasharray: ${useNeoColorGen ? \"4 2\" : \"2\"};\n }\n .commit-label { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? options.nodeBorder : options.commitLabelColor}; ${useNeoColorGen ? `font-weight:${options.noteFontWeight};` : \"\"}}\n .commit-label-bkg { font-size: ${options.commitLabelFontSize}; fill: ${useNeoColorGen ? \"transparent\" : options.commitLabelBackground}; opacity: ${useNeoColorGen ? \"\" : 0.5}; }\n .tag-label { font-size: ${options.tagLabelFontSize}; fill: ${options.tagLabelColor};}\n .tag-label-bkg { fill: ${useNeoColorGen ? options.mainBkg : options.tagLabelBackground}; stroke: ${useNeoColorGen ? options.nodeBorder : options.tagLabelBorder}; ${useNeoColorGen ? `filter:${options.dropShadow}` : \"\"} }\n .tag-hole { fill: ${options.textColor}; }\n\n .commit-merge {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n .commit-reverse {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n stroke-width: ${useNeoColorGen ? options.strokeWidth : 3};\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n fill: ${useNeoColorGen ? options.mainBkg : options.primaryColor};\n }\n\n .arrow {\n /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */\n stroke-width: ${REDUX_GEOMETRY_THEMES2.has(theme) ? options.strokeWidth : 8};\n stroke-linecap: round;\n fill: none\n }\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n }\n`;\n}, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/git/gitGraphDiagram.ts\nvar diagram = {\n parser,\n db,\n renderer: gitGraphRenderer_default,\n styles: styles_default\n};\nexport {\n diagram\n};\n"],"names":["commitType","DEFAULT_GITGRAPH_CONFIG","defaultConfig_default","getConfig3","__name","cleanAndMerge","getConfig","state","ImperativeState","config","mainBranchName","mainBranchOrder","getID","random","uniqBy","list","fn","recordMap","out","item","key","setDirection","dir2","setOptions","rawOptString","log","e","getOptions","commit","commitDB","msg","id","type","tags","common_default","tag","newCommit","branch","branchDB","name","order","checkout","merge","mergeDB","otherBranch","customId","overrideType","customTags","currentBranchCheck","otherBranchCheck","currentCommit","otherCommit","error","verifiedBranch","commit2","cherryPick","cherryPickDB","sourceId","targetId","parentCommitId","sourceCommit","sourceCommitBranch","currentCommitId","branch2","upsert","arr","newVal","index","prettyPrintCommitHistory","commitArr","commit3","line","c","label","prettyPrint","node","getCommitsArray","clear2","clear","getBranchesAsObjArray","branchConfig","i","a","b","getBranches","getCommits","o","getCurrentBranch","getDirection","getHead","db","setAccTitle","getAccTitle","getAccDescription","setAccDescription","setDiagramTitle","getDiagramTitle","populate","ast","db2","populateCommonDb","statement","parseStatement","parser2","stmt","parseCommit","parseBranch","parseMerge","parseCheckout","parseCherryPicking","merge2","checkout2","cherryPicking","_a","parser","input","parse","LAYOUT_OFFSET","COMMIT_STEP","PX","PY","THEME_COLOR_LIMIT","REDUX_GEOMETRY_THEMES","REDUX_BRANCH_LABEL_PADDING_Y","COLOR_THEMES","DARK_THEMES","calcColorIndex","rawIndex","limit","avoidDefaultColor","branchPos","commitPos","defaultPos","allCommitsDict","lanes","maxPos","dir","clear3","drawText","txt","svgLabel","row","tspan","findClosestParent","parents","closestParent","comparisonFunc","targetPosition","parent","parentPosition","_b","findClosestParentBT","maxPosition","setParallelBTPos","sortedKeys","commits","defaultPos2","curPos","roots","calculateCommitPosition","setCommitPosition","setRootPosition","x","y","findClosestParentPos","p","closestParentPos","drawCommitBullet","gBullets","commitPosition","typeClass","branchIndex","commitSymbolType","theme","getConfig2","useReduxGeometry","useColorTheme","isDark","circle","circle2","cross","constValue","drawCommitLabel","gLabels","pos","gitGraphConfig","wrapper","labelBkg","text","bbox","r_x","r_y","drawCommitTags","yOffset","maxTagBboxWidth","maxTagBboxHeight","tagElements","tagValue","rect","hole","tagBbox","yOffset2","h2","ly","yOrigin","getCommitClassType","calculatePosition","commitPos2","defaultCommitPosition","getCommitPosition","isParallelCommits","posWithOffset","branchY","drawCommits","svg","modifyGraph","keys","sortKeys","seqA","seqB","shouldRerouteArrow","commitA","commitB","p1","p2","allCommits","branchToGetCurve","isOnBranchToGetCurve","isBetweenCommits","commitX","findLane","y1","y2","depth","candidate","lane","diff","drawArrow","arrowTheme","arrowNeedsRerouting","arc","arc2","radius","offset","colorClassNum","lineDef","lineY","lineX","_c","_d","_e","drawArrows","gArrows","drawBranches","branches","look","themeVariables","dropShadow","themeColorLimit","g","adjustIndexForTheme","spineY","labelElement","bkg","borderRadius","labelPaddingX","labelPaddingY","setBranchPosition","rotateCommitLabel","draw","ver","diagObj","diagram2","select","useGradient","gradientStart","gradientStop","filterColor","gradient","branchLabel","utils_default","setupGraphViewbox","gitGraphRenderer_default","GIT_NAMED_COLOR_COUNT","REDUX_GEOMETRY_THEMES2","COLOR_THEMES2","NEO_THEMES","DARK_THEMES2","NEO_COLOR_GEN_THEMES","genGitGraphGradient","options","svgId","sections","genColor","borderColorArray","ci","colorIndex","normalTheme","_","getStyles","useNeoColorGen","styles_default","diagram"],"mappings":"saAkCA,IAAIA,EAAa,CACf,OAAQ,EACR,QAAS,EACT,UAAW,EACX,MAAO,EACP,YAAa,CACf,EAGIC,GAA0BC,GAAsB,SAChDC,EAA6BC,EAAO,IACvBC,GAAc,CAC3B,GAAGJ,GACH,GAAGK,EAAS,EAAG,QACnB,CAAG,EAEA,WAAW,EACVC,EAAQ,IAAIC,GAAgB,IAAM,CACpC,MAAMC,EAASN,EAAU,EACnBO,EAAiBD,EAAO,eACxBE,EAAkBF,EAAO,gBAC/B,MAAO,CACL,eAAAC,EACA,QAAyB,IAAI,IAC7B,KAAM,KACN,aAA8B,IAAI,IAAI,CAAC,CAACA,EAAgB,CAAE,KAAMA,EAAgB,MAAOC,CAAe,CAAE,CAAC,CAAC,EAC1G,SAA0B,IAAI,IAAI,CAAC,CAACD,EAAgB,IAAI,CAAC,CAAC,EAC1D,WAAYA,EACZ,UAAW,KACX,IAAK,EACL,QAAS,CAAA,CACb,CACA,CAAC,EACD,SAASE,GAAQ,CACf,OAAOC,GAAO,CAAE,OAAQ,EAAG,CAC7B,CACAT,EAAOQ,EAAO,OAAO,EACrB,SAASE,GAAOC,EAAMC,EAAI,CACxB,MAAMC,EAA4B,OAAO,OAAO,IAAI,EACpD,OAAOF,EAAK,OAAO,CAACG,EAAKC,IAAS,CAChC,MAAMC,EAAMJ,EAAGG,CAAI,EACnB,OAAKF,EAAUG,CAAG,IAChBH,EAAUG,CAAG,EAAI,GACjBF,EAAI,KAAKC,CAAI,GAERD,CACT,EAAG,CAAA,CAAE,CACP,CACAd,EAAOU,GAAQ,QAAQ,EACvB,IAAIO,GAA+BjB,EAAO,SAASkB,EAAM,CACvDf,EAAM,QAAQ,UAAYe,CAC5B,EAAG,cAAc,EACbC,GAA6BnB,EAAO,SAASoB,EAAc,CAC7DC,EAAI,MAAM,cAAeD,CAAY,EACrCA,EAAeA,GAAA,YAAAA,EAAc,OAC7BA,EAAeA,GAAgB,KAC/B,GAAI,CACFjB,EAAM,QAAQ,QAAU,KAAK,MAAMiB,CAAY,CACjD,OAASE,EAAG,CACVD,EAAI,MAAM,uCAAwCC,EAAE,OAAO,CAC7D,CACF,EAAG,YAAY,EACXC,GAA6BvB,EAAO,UAAW,CACjD,OAAOG,EAAM,QAAQ,OACvB,EAAG,YAAY,EACXqB,GAAyBxB,EAAO,SAASyB,EAAU,CACrD,IAAIC,EAAMD,EAAS,IACfE,EAAKF,EAAS,GAClB,MAAMG,EAAOH,EAAS,KACtB,IAAII,EAAOJ,EAAS,KACpBJ,EAAI,KAAK,SAAUK,EAAKC,EAAIC,EAAMC,CAAI,EACtCR,EAAI,MAAM,mBAAoBK,EAAKC,EAAIC,EAAMC,CAAI,EACjD,MAAMxB,EAASN,EAAU,EACzB4B,EAAKG,EAAe,aAAaH,EAAItB,CAAM,EAC3CqB,EAAMI,EAAe,aAAaJ,EAAKrB,CAAM,EAC7CwB,EAAOA,GAAA,YAAAA,EAAM,IAAKE,GAAQD,EAAe,aAAaC,EAAK1B,CAAM,GACjE,MAAM2B,EAAY,CAChB,GAAIL,GAAUxB,EAAM,QAAQ,IAAM,IAAMK,EAAK,EAC7C,QAASkB,EACT,IAAKvB,EAAM,QAAQ,MACnB,KAAMyB,GAAQhC,EAAW,OACzB,KAAMiC,GAAQ,CAAA,EACd,QAAS1B,EAAM,QAAQ,MAAQ,KAAO,GAAK,CAACA,EAAM,QAAQ,KAAK,EAAE,EACjE,OAAQA,EAAM,QAAQ,UAC1B,EACEA,EAAM,QAAQ,KAAO6B,EACrBX,EAAI,KAAK,cAAehB,EAAO,cAAc,EACzCF,EAAM,QAAQ,QAAQ,IAAI6B,EAAU,EAAE,GACxCX,EAAI,KAAK,aAAaW,EAAU,EAAE,iBAAiB,EAErD7B,EAAM,QAAQ,QAAQ,IAAI6B,EAAU,GAAIA,CAAS,EACjD7B,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,WAAY6B,EAAU,EAAE,EACjEX,EAAI,MAAM,iBAAmBW,EAAU,EAAE,CAC3C,EAAG,QAAQ,EACPC,GAAyBjC,EAAO,SAASkC,EAAU,CACrD,IAAIC,EAAOD,EAAS,KACpB,MAAME,EAAQF,EAAS,MAEvB,GADAC,EAAOL,EAAe,aAAaK,EAAMpC,EAAU,CAAE,EACjDI,EAAM,QAAQ,SAAS,IAAIgC,CAAI,EACjC,MAAM,IAAI,MACR,4HAA4HA,CAAI,IACtI,EAEEhC,EAAM,QAAQ,SAAS,IAAIgC,EAAMhC,EAAM,QAAQ,MAAQ,KAAOA,EAAM,QAAQ,KAAK,GAAK,IAAI,EAC1FA,EAAM,QAAQ,aAAa,IAAIgC,EAAM,CAAE,KAAAA,EAAM,MAAAC,EAAO,EACpDC,GAASF,CAAI,EACbd,EAAI,MAAM,iBAAiB,CAC7B,EAAG,QAAQ,EACPiB,GAAwBtC,EAAQuC,GAAY,CAC9C,IAAIC,EAAcD,EAAQ,OACtBE,EAAWF,EAAQ,GACvB,MAAMG,EAAeH,EAAQ,KACvBI,EAAaJ,EAAQ,KACrBlC,EAASN,EAAU,EACzByC,EAAcV,EAAe,aAAaU,EAAanC,CAAM,EACzDoC,IACFA,EAAWX,EAAe,aAAaW,EAAUpC,CAAM,GAEzD,MAAMuC,EAAqBzC,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,UAAU,EACxE0C,EAAmB1C,EAAM,QAAQ,SAAS,IAAIqC,CAAW,EACzDM,EAAgBF,EAAqBzC,EAAM,QAAQ,QAAQ,IAAIyC,CAAkB,EAAI,OACrFG,EAAcF,EAAmB1C,EAAM,QAAQ,QAAQ,IAAI0C,CAAgB,EAAI,OACrF,GAAIC,GAAiBC,GAAeD,EAAc,SAAWN,EAC3D,MAAM,IAAI,MAAM,wBAAwBA,CAAW,gBAAgB,EAErE,GAAIrC,EAAM,QAAQ,aAAeqC,EAAa,CAC5C,MAAMQ,EAAQ,IAAI,MAAM,6DAA6D,EACrF,MAAAA,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,YAAY,CAC7B,EACUQ,CACR,CACA,GAAIF,IAAkB,QAAU,CAACA,EAAe,CAC9C,MAAME,EAAQ,IAAI,MAChB,+CAA+C7C,EAAM,QAAQ,UAAU,iBAC7E,EACI,MAAA6C,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,QAAQ,CACzB,EACUQ,CACR,CACA,GAAI,CAAC7C,EAAM,QAAQ,SAAS,IAAIqC,CAAW,EAAG,CAC5C,MAAMQ,EAAQ,IAAI,MAChB,oDAAsDR,EAAc,kBAC1E,EACI,MAAAQ,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,UAAUA,CAAW,EAAE,CACxC,EACUQ,CACR,CACA,GAAID,IAAgB,QAAU,CAACA,EAAa,CAC1C,MAAMC,EAAQ,IAAI,MAChB,oDAAsDR,EAAc,kBAC1E,EACI,MAAAQ,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,UAAU,CAC3B,EACUQ,CACR,CACA,GAAIF,IAAkBC,EAAa,CACjC,MAAMC,EAAQ,IAAI,MAAM,0DAA0D,EAClF,MAAAA,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,GAC1B,MAAO,SAASA,CAAW,GAC3B,SAAU,CAAC,YAAY,CAC7B,EACUQ,CACR,CACA,GAAIP,GAAYtC,EAAM,QAAQ,QAAQ,IAAIsC,CAAQ,EAAG,CACnD,MAAMO,EAAQ,IAAI,MAChB,8CAAgDP,EAAW,0CACjE,EACI,MAAAO,EAAM,KAAO,CACX,KAAM,SAASR,CAAW,IAAIC,CAAQ,IAAIC,CAAY,IAAIC,GAAA,YAAAA,EAAY,KAAK,IAAI,GAC/E,MAAO,SAASH,CAAW,IAAIC,CAAQ,IAAIC,CAAY,IAAIC,GAAA,YAAAA,EAAY,KAAK,IAAI,GAChF,SAAU,CACR,SAASH,CAAW,IAAIC,CAAQ,WAAWC,CAAY,IAAIC,GAAA,YAAAA,EAAY,KAAK,IAAI,EACxF,CACA,EACUK,CACR,CACA,MAAMC,EAAiBJ,GAAsC,GACvDK,EAAU,CACd,GAAIT,GAAY,GAAGtC,EAAM,QAAQ,GAAG,IAAIK,EAAK,CAAE,GAC/C,QAAS,iBAAiBgC,CAAW,SAASrC,EAAM,QAAQ,UAAU,GACtE,IAAKA,EAAM,QAAQ,MACnB,QAASA,EAAM,QAAQ,MAAQ,KAAO,CAAA,EAAK,CAACA,EAAM,QAAQ,KAAK,GAAI8C,CAAc,EACjF,OAAQ9C,EAAM,QAAQ,WACtB,KAAMP,EAAW,MACjB,WAAY8C,EACZ,SAAU,EAAAD,EACV,KAAME,GAAc,CAAA,CACxB,EACExC,EAAM,QAAQ,KAAO+C,EACrB/C,EAAM,QAAQ,QAAQ,IAAI+C,EAAQ,GAAIA,CAAO,EAC7C/C,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,WAAY+C,EAAQ,EAAE,EAC/D7B,EAAI,MAAMlB,EAAM,QAAQ,QAAQ,EAChCkB,EAAI,MAAM,gBAAgB,CAC5B,EAAG,OAAO,EACN8B,GAA6BnD,EAAO,SAASoD,EAAc,CAC7D,IAAIC,EAAWD,EAAa,GACxBE,EAAWF,EAAa,SACxBvB,EAAOuB,EAAa,KACpBG,EAAiBH,EAAa,OAClC/B,EAAI,MAAM,uBAAwBgC,EAAUC,EAAUzB,CAAI,EAC1D,MAAMxB,EAASN,EAAU,EAKzB,GAJAsD,EAAWvB,EAAe,aAAauB,EAAUhD,CAAM,EACvDiD,EAAWxB,EAAe,aAAawB,EAAUjD,CAAM,EACvDwB,EAAOA,GAAA,YAAAA,EAAM,IAAKE,GAAQD,EAAe,aAAaC,EAAK1B,CAAM,GACjEkD,EAAiBzB,EAAe,aAAayB,EAAgBlD,CAAM,EAC/D,CAACgD,GAAY,CAAClD,EAAM,QAAQ,QAAQ,IAAIkD,CAAQ,EAAG,CACrD,MAAML,EAAQ,IAAI,MAChB,6EACN,EACI,MAAAA,EAAM,KAAO,CACX,KAAM,cAAcK,CAAQ,IAAIC,CAAQ,GACxC,MAAO,cAAcD,CAAQ,IAAIC,CAAQ,GACzC,SAAU,CAAC,iBAAiB,CAClC,EACUN,CACR,CACA,MAAMQ,EAAerD,EAAM,QAAQ,QAAQ,IAAIkD,CAAQ,EACvD,GAAIG,IAAiB,QAAU,CAACA,EAC9B,MAAM,IAAI,MAAM,6EAA6E,EAE/F,GAAID,GAAkB,EAAE,MAAM,QAAQC,EAAa,OAAO,GAAKA,EAAa,QAAQ,SAASD,CAAc,GAIzG,MAHc,IAAI,MAChB,wGACN,EAGE,MAAME,EAAqBD,EAAa,OACxC,GAAIA,EAAa,OAAS5D,EAAW,OAAS,CAAC2D,EAI7C,MAHc,IAAI,MAChB,uHACN,EAGE,GAAI,CAACD,GAAY,CAACnD,EAAM,QAAQ,QAAQ,IAAImD,CAAQ,EAAG,CACrD,GAAIG,IAAuBtD,EAAM,QAAQ,WAAY,CACnD,MAAM6C,EAAQ,IAAI,MAChB,6EACR,EACM,MAAAA,EAAM,KAAO,CACX,KAAM,cAAcK,CAAQ,IAAIC,CAAQ,GACxC,MAAO,cAAcD,CAAQ,IAAIC,CAAQ,GACzC,SAAU,CAAC,iBAAiB,CACpC,EACYN,CACR,CACA,MAAMU,EAAkBvD,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,UAAU,EAC3E,GAAIuD,IAAoB,QAAU,CAACA,EAAiB,CAClD,MAAMV,EAAQ,IAAI,MAChB,qDAAqD7C,EAAM,QAAQ,UAAU,iBACrF,EACM,MAAA6C,EAAM,KAAO,CACX,KAAM,cAAcK,CAAQ,IAAIC,CAAQ,GACxC,MAAO,cAAcD,CAAQ,IAAIC,CAAQ,GACzC,SAAU,CAAC,iBAAiB,CACpC,EACYN,CACR,CACA,MAAMF,EAAgB3C,EAAM,QAAQ,QAAQ,IAAIuD,CAAe,EAC/D,GAAIZ,IAAkB,QAAU,CAACA,EAAe,CAC9C,MAAME,EAAQ,IAAI,MAChB,qDAAqD7C,EAAM,QAAQ,UAAU,iBACrF,EACM,MAAA6C,EAAM,KAAO,CACX,KAAM,cAAcK,CAAQ,IAAIC,CAAQ,GACxC,MAAO,cAAcD,CAAQ,IAAIC,CAAQ,GACzC,SAAU,CAAC,iBAAiB,CACpC,EACYN,CACR,CACA,MAAME,EAAU,CACd,GAAI/C,EAAM,QAAQ,IAAM,IAAMK,EAAK,EACnC,QAAS,iBAAiBgD,GAAA,YAAAA,EAAc,OAAO,SAASrD,EAAM,QAAQ,UAAU,GAChF,IAAKA,EAAM,QAAQ,MACnB,QAASA,EAAM,QAAQ,MAAQ,KAAO,CAAA,EAAK,CAACA,EAAM,QAAQ,KAAK,GAAIqD,EAAa,EAAE,EAClF,OAAQrD,EAAM,QAAQ,WACtB,KAAMP,EAAW,YACjB,KAAMiC,EAAOA,EAAK,OAAO,OAAO,EAAI,CAClC,eAAe2B,EAAa,EAAE,GAAGA,EAAa,OAAS5D,EAAW,MAAQ,WAAW2D,CAAc,GAAK,EAAE,EAClH,CACA,EACIpD,EAAM,QAAQ,KAAO+C,EACrB/C,EAAM,QAAQ,QAAQ,IAAI+C,EAAQ,GAAIA,CAAO,EAC7C/C,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,WAAY+C,EAAQ,EAAE,EAC/D7B,EAAI,MAAMlB,EAAM,QAAQ,QAAQ,EAChCkB,EAAI,MAAM,eAAe,CAC3B,CACF,EAAG,YAAY,EACXgB,GAA2BrC,EAAO,SAAS2D,EAAS,CAEtD,GADAA,EAAU7B,EAAe,aAAa6B,EAAS5D,EAAU,CAAE,EACtDI,EAAM,QAAQ,SAAS,IAAIwD,CAAO,EAUhC,CACLxD,EAAM,QAAQ,WAAawD,EAC3B,MAAMhC,EAAKxB,EAAM,QAAQ,SAAS,IAAIA,EAAM,QAAQ,UAAU,EAC1DwB,IAAO,QAAU,CAACA,EACpBxB,EAAM,QAAQ,KAAO,KAErBA,EAAM,QAAQ,KAAOA,EAAM,QAAQ,QAAQ,IAAIwB,CAAE,GAAK,IAE1D,KAlB0C,CACxC,MAAMqB,EAAQ,IAAI,MAChB,+EAA+EW,CAAO,IAC5F,EACI,MAAAX,EAAM,KAAO,CACX,KAAM,YAAYW,CAAO,GACzB,MAAO,YAAYA,CAAO,GAC1B,SAAU,CAAC,UAAUA,CAAO,EAAE,CACpC,EACUX,CACR,CASF,EAAG,UAAU,EACb,SAASY,EAAOC,EAAK7C,EAAK8C,EAAQ,CAChC,MAAMC,EAAQF,EAAI,QAAQ7C,CAAG,EACzB+C,IAAU,GACZF,EAAI,KAAKC,CAAM,EAEfD,EAAI,OAAOE,EAAO,EAAGD,CAAM,CAE/B,CACA9D,EAAO4D,EAAQ,QAAQ,EACvB,SAASI,EAAyBC,EAAW,CAC3C,MAAMf,EAAUe,EAAU,OAAO,CAACnD,EAAKoD,IACjCpD,EAAI,IAAMoD,EAAQ,IACbpD,EAEFoD,EACND,EAAU,CAAC,CAAC,EACf,IAAIE,EAAO,GACXF,EAAU,QAAQ,SAASG,EAAG,CACxBA,IAAMlB,EACRiB,GAAQ,KAERA,GAAQ,IAEZ,CAAC,EACD,MAAME,EAAQ,CAACF,EAAMjB,EAAQ,GAAIA,EAAQ,GAAG,EAC5C,UAAWS,KAAWxD,EAAM,QAAQ,SAC9BA,EAAM,QAAQ,SAAS,IAAIwD,CAAO,IAAMT,EAAQ,IAClDmB,EAAM,KAAKV,CAAO,EAItB,GADAtC,EAAI,MAAMgD,EAAM,KAAK,GAAG,CAAC,EACrBnB,EAAQ,SAAWA,EAAQ,QAAQ,QAAU,GAAKA,EAAQ,QAAQ,CAAC,GAAKA,EAAQ,QAAQ,CAAC,EAAG,CAC9F,MAAMlB,EAAY7B,EAAM,QAAQ,QAAQ,IAAI+C,EAAQ,QAAQ,CAAC,CAAC,EAC9DU,EAAOK,EAAWf,EAASlB,CAAS,EAChCkB,EAAQ,QAAQ,CAAC,GACnBe,EAAU,KAAK9D,EAAM,QAAQ,QAAQ,IAAI+C,EAAQ,QAAQ,CAAC,CAAC,CAAC,CAEhE,KAAO,IAAIA,EAAQ,QAAQ,QAAU,EACnC,OAEA,GAAIA,EAAQ,QAAQ,CAAC,EAAG,CACtB,MAAMlB,EAAY7B,EAAM,QAAQ,QAAQ,IAAI+C,EAAQ,QAAQ,CAAC,CAAC,EAC9DU,EAAOK,EAAWf,EAASlB,CAAS,CACtC,EAEFiC,EAAYvD,GAAOuD,EAAYG,GAAMA,EAAE,EAAE,EACzCJ,EAAyBC,CAAS,CACpC,CACAjE,EAAOgE,EAA0B,0BAA0B,EAC3D,IAAIM,GAA8BtE,EAAO,UAAW,CAClDqB,EAAI,MAAMlB,EAAM,QAAQ,OAAO,EAC/B,MAAMoE,EAAOC,GAAe,EAAG,CAAC,EAChCR,EAAyB,CAACO,CAAI,CAAC,CACjC,EAAG,aAAa,EACZE,GAAyBzE,EAAO,UAAW,CAC7CG,EAAM,MAAK,EACXuE,GAAK,CACP,EAAG,OAAO,EACNC,GAAwC3E,EAAO,UAAW,CAU5D,MATsB,CAAC,GAAGG,EAAM,QAAQ,aAAa,OAAM,CAAE,EAAE,IAAI,CAACyE,EAAcC,IAC5ED,EAAa,QAAU,MAAQA,EAAa,QAAU,OACjDA,EAEF,CACL,GAAGA,EACH,MAAO,WAAW,KAAKC,CAAC,EAAE,CAChC,CACG,EAAE,KAAK,CAACC,EAAGC,KAAOD,EAAE,OAAS,IAAMC,EAAE,OAAS,EAAE,EAAE,IAAI,CAAC,CAAE,KAAA5C,MAAY,CAAE,KAAAA,CAAI,EAAG,CAEjF,EAAG,uBAAuB,EACtB6C,GAA8BhF,EAAO,UAAW,CAClD,OAAOG,EAAM,QAAQ,QACvB,EAAG,aAAa,EACZ8E,GAA6BjF,EAAO,UAAW,CACjD,OAAOG,EAAM,QAAQ,OACvB,EAAG,YAAY,EACXqE,GAAkCxE,EAAO,UAAW,CACtD,MAAMiE,EAAY,CAAC,GAAG9D,EAAM,QAAQ,QAAQ,QAAQ,EACpD,OAAA8D,EAAU,QAAQ,SAASiB,EAAG,CAC5B7D,EAAI,MAAM6D,EAAE,EAAE,CAChB,CAAC,EACDjB,EAAU,KAAK,CAACa,EAAGC,IAAMD,EAAE,IAAMC,EAAE,GAAG,EAC/Bd,CACT,EAAG,iBAAiB,EAChBkB,GAAmCnF,EAAO,UAAW,CACvD,OAAOG,EAAM,QAAQ,UACvB,EAAG,kBAAkB,EACjBiF,GAA+BpF,EAAO,UAAW,CACnD,OAAOG,EAAM,QAAQ,SACvB,EAAG,cAAc,EACbkF,GAA0BrF,EAAO,UAAW,CAC9C,OAAOG,EAAM,QAAQ,IACvB,EAAG,SAAS,EACRmF,GAAK,CACP,WAAA1F,EACA,UAAWG,EACX,aAAAkB,GACA,WAAAE,GACA,WAAAI,GACA,OAAAC,GACA,OAAAS,GACA,MAAAK,GACA,WAAAa,GACA,SAAAd,GAEA,YAAAiC,GACA,MAAOG,GACP,sBAAAE,GACA,YAAAK,GACA,WAAAC,GACA,gBAAAT,GACA,iBAAAW,GACA,aAAAC,GACA,QAAAC,GACA,YAAAE,GACA,YAAAC,GACA,kBAAAC,GACA,kBAAAC,GACA,gBAAAC,GACA,gBAAAC,EACF,EAGIC,GAA2B7F,EAAO,CAAC8F,EAAKC,IAAQ,CAClDC,GAAiBF,EAAKC,CAAG,EACrBD,EAAI,KACNC,EAAI,aAAaD,EAAI,GAAG,EAE1B,UAAWG,KAAaH,EAAI,WAC1BI,GAAeD,EAAWF,CAAG,CAEjC,EAAG,UAAU,EACTG,GAAiClG,EAAO,CAACiG,EAAWF,IAAQ,CAQ9D,MAAMI,EAPU,CACd,OAAwBnG,EAAQoG,GAASL,EAAI,OAAOM,GAAYD,CAAI,CAAC,EAAG,QAAQ,EAChF,OAAwBpG,EAAQoG,GAASL,EAAI,OAAOO,GAAYF,CAAI,CAAC,EAAG,QAAQ,EAChF,MAAuBpG,EAAQoG,GAASL,EAAI,MAAMQ,GAAWH,CAAI,CAAC,EAAG,OAAO,EAC5E,SAA0BpG,EAAQoG,GAASL,EAAI,SAASS,GAAcJ,CAAI,CAAC,EAAG,UAAU,EACxF,cAA+BpG,EAAQoG,GAASL,EAAI,WAAWU,GAAmBL,CAAI,CAAC,EAAG,eAAe,CAC7G,EAC0BH,EAAU,KAAK,EACnCE,EACFA,EAAQF,CAAS,EAEjB5E,EAAI,MAAM,2BAA2B4E,EAAU,KAAK,EAAE,CAE1D,EAAG,gBAAgB,EACfI,GAA8BrG,EAAQkD,IACvB,CACf,GAAIA,EAAQ,GACZ,IAAKA,EAAQ,SAAW,GACxB,KAAMA,EAAQ,OAAS,OAAStD,EAAWsD,EAAQ,IAAI,EAAItD,EAAW,OACtE,KAAMsD,EAAQ,MAAQ,MAC1B,GAEG,aAAa,EACZoD,GAA8BtG,EAAQ2D,IACvB,CACf,KAAMA,EAAQ,KACd,MAAOA,EAAQ,OAAS,CAC5B,GAEG,aAAa,EACZ4C,GAA6BvG,EAAQ0G,IACvB,CACd,OAAQA,EAAO,OACf,GAAIA,EAAO,IAAM,GACjB,KAAMA,EAAO,OAAS,OAAS9G,EAAW8G,EAAO,IAAI,EAAI,OACzD,KAAMA,EAAO,MAAQ,MACzB,GAEG,YAAY,EACXF,GAAgCxG,EAAQ2G,GAC1BA,EAAU,OAEzB,eAAe,EACdF,GAAqCzG,EAAQ4G,GAAkB,OAOjE,MANqB,CACnB,GAAIA,EAAc,GAClB,SAAU,GACV,OAAMC,EAAAD,EAAc,OAAd,YAAAC,EAAoB,UAAW,EAAI,OAASD,EAAc,KAChE,OAAQA,EAAc,MAC1B,CAEA,EAAG,oBAAoB,EACnBE,GAAS,CACX,MAAuB9G,EAAO,MAAO+G,GAAU,CAC7C,MAAMjB,EAAM,MAAMkB,GAAM,WAAYD,CAAK,EACzC1F,EAAI,MAAMyE,CAAG,EACbD,GAASC,EAAKR,EAAE,CAClB,EAAG,OAAO,CACZ,EAoJI2B,EAAgB,GAChBC,EAAc,GACdC,EAAK,EACLC,EAAK,EACLC,EAAoB,EACpBC,EAAwC,IAAI,IAAI,CAAC,QAAS,aAAc,cAAe,kBAAkB,CAAC,EAC1GC,EAA+B,GAC/BC,GAA+B,IAAI,IAAI,CAAC,cAAe,kBAAkB,CAAC,EAC1EC,GAA8B,IAAI,IAAI,CAAC,OAAQ,aAAc,mBAAoB,UAAU,CAAC,EAC5FC,EAAiC1H,EAAO,CAAC2H,EAAUC,EAAOC,EAAoB,KAC5EA,GAAqBF,EAAW,GAC1BA,EAAW,IAAMC,EAAQ,GAAK,EAEjCD,EAAWC,EACjB,gBAAgB,EACfE,EAA4B,IAAI,IAChCC,EAA4B,IAAI,IAChCC,EAAa,GACbC,EAAiC,IAAI,IACrCC,EAAQ,CAAA,EACRC,EAAS,EACTC,EAAM,KACNC,GAAyBrI,EAAO,IAAM,CACxC8H,EAAU,MAAK,EACfC,EAAU,MAAK,EACfE,EAAe,MAAK,EACpBE,EAAS,EACTD,EAAQ,CAAA,EACRE,EAAM,IACR,EAAG,OAAO,EACNE,GAA2BtI,EAAQuI,GAAQ,CAC7C,MAAMC,EAAW,SAAS,gBAAgB,6BAA8B,MAAM,EAE9E,OADa,OAAOD,GAAQ,SAAWA,EAAI,MAAM,qBAAqB,EAAIA,GACrE,QAASE,GAAQ,CACpB,MAAMC,EAAQ,SAAS,gBAAgB,6BAA8B,OAAO,EAC5EA,EAAM,eAAe,uCAAwC,YAAa,UAAU,EACpFA,EAAM,aAAa,KAAM,KAAK,EAC9BA,EAAM,aAAa,IAAK,GAAG,EAC3BA,EAAM,aAAa,QAAS,KAAK,EACjCA,EAAM,YAAcD,EAAI,KAAI,EAC5BD,EAAS,YAAYE,CAAK,CAC5B,CAAC,EACMF,CACT,EAAG,UAAU,EACTG,GAAoC3I,EAAQ4I,GAAY,CAC1D,IAAIC,EACAC,EACAC,EACJ,OAAIX,IAAQ,MACVU,EAAiC9I,EAAO,CAAC8E,EAAGC,IAAMD,GAAKC,EAAG,gBAAgB,EAC1EgE,EAAiB,MAEjBD,EAAiC9I,EAAO,CAAC8E,EAAGC,IAAMD,GAAKC,EAAG,gBAAgB,EAC1EgE,EAAiB,GAEnBH,EAAQ,QAASI,GAAW,SAC1B,MAAMC,EAAiBb,IAAQ,MAAQA,GAAO,MAAOvB,EAAAkB,EAAU,IAAIiB,CAAM,IAApB,YAAAnC,EAAuB,GAAIqC,EAAAnB,EAAU,IAAIiB,CAAM,IAApB,YAAAE,EAAuB,EACnGD,IAAmB,QAAUH,EAAeG,EAAgBF,CAAc,IAC5EF,EAAgBG,EAChBD,EAAiBE,EAErB,CAAC,EACMJ,CACT,EAAG,mBAAmB,EAClBM,GAAsCnJ,EAAQ4I,GAAY,CAC5D,IAAIC,EAAgB,GAChBO,EAAc,IAClB,OAAAR,EAAQ,QAASI,GAAW,CAC1B,MAAMC,EAAiBlB,EAAU,IAAIiB,CAAM,EAAE,EACzCC,GAAkBG,IACpBP,EAAgBG,EAChBI,EAAcH,EAElB,CAAC,EACMJ,GAAiB,MAC1B,EAAG,qBAAqB,EACpBQ,GAAmCrJ,EAAO,CAACsJ,EAAYC,EAASC,IAAgB,CAClF,IAAIC,EAASD,EACTJ,EAAcI,EAClB,MAAME,EAAQ,CAAA,EACdJ,EAAW,QAAStI,GAAQ,CAC1B,MAAMkC,EAAUqG,EAAQ,IAAIvI,CAAG,EAC/B,GAAI,CAACkC,EACH,MAAM,IAAI,MAAM,4BAA4BlC,CAAG,EAAE,EAE/CkC,EAAQ,QAAQ,QAClBuG,EAASE,GAAwBzG,CAAO,EACxCkG,EAAc,KAAK,IAAIK,EAAQL,CAAW,GAE1CM,EAAM,KAAKxG,CAAO,EAEpB0G,GAAkB1G,EAASuG,CAAM,CACnC,CAAC,EACDA,EAASL,EACTM,EAAM,QAASxG,GAAY,CACzB2G,GAAgB3G,EAASuG,EAAQD,CAAW,CAC9C,CAAC,EACDF,EAAW,QAAStI,GAAQ,CAC1B,MAAMkC,EAAUqG,EAAQ,IAAIvI,CAAG,EAC/B,GAAIkC,GAAA,MAAAA,EAAS,QAAQ,OAAQ,CAC3B,MAAM2F,EAAgBM,GAAoBjG,EAAQ,OAAO,EACzDuG,EAAS1B,EAAU,IAAIc,CAAa,EAAE,EAAI3B,EACtCuC,GAAUL,IACZA,EAAcK,GAEhB,MAAMK,EAAIhC,EAAU,IAAI5E,EAAQ,MAAM,EAAE,IAClC6G,EAAIN,EAASxC,EACnBc,EAAU,IAAI7E,EAAQ,GAAI,CAAE,EAAA4G,EAAG,EAAAC,EAAG,CACpC,CACF,CAAC,CACH,EAAG,kBAAkB,EACjBC,GAAuChK,EAAQkD,GAAY,OAC7D,MAAM2F,EAAgBF,GAAkBzF,EAAQ,QAAQ,OAAQ+G,GAAMA,IAAM,IAAI,CAAC,EACjF,GAAI,CAACpB,EACH,MAAM,IAAI,MAAM,uCAAuC3F,EAAQ,EAAE,EAAE,EAErE,MAAMgH,GAAmBrD,EAAAkB,EAAU,IAAIc,CAAa,IAA3B,YAAAhC,EAA8B,EACvD,GAAIqD,IAAqB,OACvB,MAAM,IAAI,MAAM,gDAAgDhH,EAAQ,EAAE,EAAE,EAE9E,OAAOgH,CACT,EAAG,sBAAsB,EACrBP,GAA0C3J,EAAQkD,GAC3B8G,GAAqB9G,CAAO,EAC3BgE,EACzB,yBAAyB,EACxB0C,GAAoC5J,EAAO,CAACkD,EAASuG,IAAW,CAClE,MAAM9F,EAAUmE,EAAU,IAAI5E,EAAQ,MAAM,EAC5C,GAAI,CAACS,EACH,MAAM,IAAI,MAAM,+BAA+BT,EAAQ,EAAE,EAAE,EAE7D,MAAM4G,EAAInG,EAAQ,IACZoG,EAAIN,EAASxC,EACnB,OAAAc,EAAU,IAAI7E,EAAQ,GAAI,CAAE,EAAA4G,EAAG,EAAAC,EAAG,EAC3B,CAAE,EAAAD,EAAG,EAAAC,CAAC,CACf,EAAG,mBAAmB,EAClBF,GAAkC7J,EAAO,CAACkD,EAASuG,EAAQD,IAAgB,CAC7E,MAAM7F,EAAUmE,EAAU,IAAI5E,EAAQ,MAAM,EAC5C,GAAI,CAACS,EACH,MAAM,IAAI,MAAM,+BAA+BT,EAAQ,EAAE,EAAE,EAE7D,MAAM6G,EAAIN,EAASD,EACbM,EAAInG,EAAQ,IAClBoE,EAAU,IAAI7E,EAAQ,GAAI,CAAE,EAAA4G,EAAG,EAAAC,EAAG,CACpC,EAAG,iBAAiB,EAChBI,GAAmCnK,EAAO,CAACoK,EAAUlH,EAASmH,EAAgBC,EAAWC,EAAaC,IAAqB,CAC7H,KAAM,CAAE,MAAAC,CAAK,EAAKC,EAAU,EACtBC,EAAmBrD,EAAsB,IAAImD,GAAS,EAAE,EACxDG,EAAgBpD,GAAa,IAAIiD,GAAS,EAAE,EAC5CI,EAASpD,GAAY,IAAIgD,GAAS,EAAE,EAC1C,GAAID,IAAqB5K,EAAW,UAClCwK,EAAS,OAAO,MAAM,EAAE,KAAK,IAAKC,EAAe,EAAI,IAAMM,EAAmB,EAAI,EAAE,EAAE,KAAK,IAAKN,EAAe,EAAI,IAAMM,EAAmB,EAAI,EAAE,EAAE,KAAK,QAASA,EAAmB,GAAK,EAAE,EAAE,KAAK,SAAUA,EAAmB,GAAK,EAAE,EAAE,KACvO,QACA,UAAUzH,EAAQ,EAAE,oBAAoBwE,EAAe6C,EAAalD,EAAmBuD,CAAa,CAAC,IAAIN,CAAS,QACxH,EACIF,EAAS,OAAO,MAAM,EAAE,KAAK,IAAKC,EAAe,EAAI,GAAKM,EAAmB,EAAI,EAAE,EAAE,KAAK,IAAKN,EAAe,EAAI,GAAKM,EAAmB,EAAI,EAAE,EAAE,KAAK,QAASA,EAAmB,EAAI,EAAE,EAAE,KAAK,SAAUA,EAAmB,EAAI,EAAE,EAAE,KACnO,QACA,UAAUzH,EAAQ,EAAE,UAAUwE,EAAe6C,EAAalD,EAAmBuD,CAAa,CAAC,IAAIN,CAAS,QAC9G,UACaE,IAAqB5K,EAAW,YACzCwK,EAAS,OAAO,QAAQ,EAAE,KAAK,KAAMC,EAAe,CAAC,EAAE,KAAK,KAAMA,EAAe,CAAC,EAAE,KAAK,IAAKM,EAAmB,EAAI,EAAE,EAAE,KAAK,QAAS,UAAUzH,EAAQ,EAAE,IAAIoH,CAAS,EAAE,EAC1KF,EAAS,OAAO,QAAQ,EAAE,KAAK,KAAMC,EAAe,EAAI,CAAC,EAAE,KAAK,KAAMA,EAAe,EAAI,CAAC,EAAE,KAAK,IAAKM,EAAmB,IAAM,IAAI,EAAE,KAAK,OAAQE,EAAS,UAAY,MAAM,EAAE,KAAK,QAAS,UAAU3H,EAAQ,EAAE,IAAIoH,CAAS,EAAE,EAChOF,EAAS,OAAO,QAAQ,EAAE,KAAK,KAAMC,EAAe,EAAI,CAAC,EAAE,KAAK,KAAMA,EAAe,EAAI,CAAC,EAAE,KAAK,IAAKM,EAAmB,IAAM,IAAI,EAAE,KAAK,OAAQE,EAAS,UAAY,MAAM,EAAE,KAAK,QAAS,UAAU3H,EAAQ,EAAE,IAAIoH,CAAS,EAAE,EAChOF,EAAS,OAAO,MAAM,EAAE,KAAK,KAAMC,EAAe,EAAI,CAAC,EAAE,KAAK,KAAMA,EAAe,EAAI,CAAC,EAAE,KAAK,KAAMA,EAAe,CAAC,EAAE,KAAK,KAAMA,EAAe,EAAI,CAAC,EAAE,KAAK,SAAUQ,EAAS,UAAY,MAAM,EAAE,KAAK,QAAS,UAAU3H,EAAQ,EAAE,IAAIoH,CAAS,EAAE,EACrPF,EAAS,OAAO,MAAM,EAAE,KAAK,KAAMC,EAAe,EAAI,CAAC,EAAE,KAAK,KAAMA,EAAe,EAAI,CAAC,EAAE,KAAK,KAAMA,EAAe,CAAC,EAAE,KAAK,KAAMA,EAAe,EAAI,CAAC,EAAE,KAAK,SAAUQ,EAAS,UAAY,MAAM,EAAE,KAAK,QAAS,UAAU3H,EAAQ,EAAE,IAAIoH,CAAS,EAAE,MAChP,CACL,MAAMQ,EAASV,EAAS,OAAO,QAAQ,EAQvC,GAPAU,EAAO,KAAK,KAAMT,EAAe,CAAC,EAClCS,EAAO,KAAK,KAAMT,EAAe,CAAC,EAClCS,EAAO,KAAK,IAAKH,EAAmB,EAAI,EAAE,EAC1CG,EAAO,KACL,QACA,UAAU5H,EAAQ,EAAE,UAAUwE,EAAe6C,EAAalD,EAAmBuD,CAAa,CAAC,EACjG,EACQJ,IAAqB5K,EAAW,MAAO,CACzC,MAAMmL,EAAUX,EAAS,OAAO,QAAQ,EACxCW,EAAQ,KAAK,KAAMV,EAAe,CAAC,EACnCU,EAAQ,KAAK,KAAMV,EAAe,CAAC,EACnCU,EAAQ,KAAK,IAAKJ,EAAmB,EAAI,CAAC,EAC1CI,EAAQ,KACN,QACA,UAAUT,CAAS,IAAIpH,EAAQ,EAAE,UAAUwE,EAAe6C,EAAalD,EAAmBuD,CAAa,CAAC,EAChH,CACI,CACA,GAAIJ,IAAqB5K,EAAW,QAAS,CAC3C,MAAMoL,EAAQZ,EAAS,OAAO,MAAM,EAC9Ba,EAAaN,EAAmB,EAAI,EAC1CK,EAAM,KACJ,IACA,KAAKX,EAAe,EAAIY,CAAU,IAAIZ,EAAe,EAAIY,CAAU,IAAIZ,EAAe,EAAIY,CAAU,IAAIZ,EAAe,EAAIY,CAAU,IAAIZ,EAAe,EAAIY,CAAU,IAAIZ,EAAe,EAAIY,CAAU,IAAIZ,EAAe,EAAIY,CAAU,IAAIZ,EAAe,EAAIY,CAAU,EACjR,EAAQ,KACA,QACA,UAAUX,CAAS,IAAIpH,EAAQ,EAAE,UAAUwE,EAAe6C,EAAalD,EAAmBuD,CAAa,CAAC,EAChH,CACI,CACF,CACF,EAAG,kBAAkB,EACjBM,GAAkClL,EAAO,CAACmL,EAASjI,EAASmH,EAAgBe,EAAKC,IAAmB,OACtG,GAAInI,EAAQ,OAAStD,EAAW,cAAgBsD,EAAQ,UAAYA,EAAQ,OAAStD,EAAW,OAASsD,EAAQ,OAAStD,EAAW,QAAUyL,EAAe,gBAAiB,CAC7K,MAAMC,EAAUH,EAAQ,OAAO,GAAG,EAC5BI,EAAWD,EAAQ,OAAO,MAAM,EAAE,KAAK,QAAS,kBAAkB,EAClEE,EAAOF,EAAQ,OAAO,MAAM,EAAE,KAAK,IAAKF,CAAG,EAAE,KAAK,IAAKf,EAAe,EAAI,EAAE,EAAE,KAAK,QAAS,cAAc,EAAE,KAAKnH,EAAQ,EAAE,EAC3HuI,GAAO5E,EAAA2E,EAAK,KAAI,IAAT,YAAA3E,EAAa,UAC1B,GAAI4E,IACFF,EAAS,KAAK,IAAKlB,EAAe,cAAgBoB,EAAK,MAAQ,EAAIrE,CAAE,EAAE,KAAK,IAAKiD,EAAe,EAAI,IAAI,EAAE,KAAK,QAASoB,EAAK,MAAQ,EAAIrE,CAAE,EAAE,KAAK,SAAUqE,EAAK,OAAS,EAAIrE,CAAE,EAC5KgB,IAAQ,MAAQA,IAAQ,MAC1BmD,EAAS,KAAK,IAAKlB,EAAe,GAAKoB,EAAK,MAAQ,EAAItE,EAAK,EAAE,EAAE,KAAK,IAAKkD,EAAe,EAAI,EAAE,EAChGmB,EAAK,KAAK,IAAKnB,EAAe,GAAKoB,EAAK,MAAQ,EAAItE,EAAG,EAAE,KAAK,IAAKkD,EAAe,EAAIoB,EAAK,OAAS,EAAE,GAEtGD,EAAK,KAAK,IAAKnB,EAAe,cAAgBoB,EAAK,MAAQ,CAAC,EAE1DJ,EAAe,mBACjB,GAAIjD,IAAQ,MAAQA,IAAQ,KAC1BoD,EAAK,KACH,YACA,eAAiBnB,EAAe,EAAI,KAAOA,EAAe,EAAI,GAC1E,EACUkB,EAAS,KACP,YACA,eAAiBlB,EAAe,EAAI,KAAOA,EAAe,EAAI,GAC1E,MACe,CACL,MAAMqB,EAAM,MAAQD,EAAK,MAAQ,IAAM,GAAK,IACtCE,EAAM,GAAKF,EAAK,MAAQ,GAAK,IACnCH,EAAQ,KACN,YACA,aAAeI,EAAM,KAAOC,EAAM,iBAAmBP,EAAM,KAAOf,EAAe,EAAI,GACjG,CACQ,CAGN,CACF,EAAG,iBAAiB,EAChBuB,GAAiC5L,EAAO,CAACmL,EAASjI,EAASmH,EAAgBe,IAAQ,OACrF,GAAIlI,EAAQ,KAAK,OAAS,EAAG,CAC3B,IAAI2I,EAAU,EACVC,EAAkB,EAClBC,EAAmB,EACvB,MAAMC,EAAc,CAAA,EACpB,UAAWC,KAAY/I,EAAQ,KAAK,QAAO,EAAI,CAC7C,MAAMgJ,EAAOf,EAAQ,OAAO,SAAS,EAC/BgB,EAAOhB,EAAQ,OAAO,QAAQ,EAC9BpJ,EAAMoJ,EAAQ,OAAO,MAAM,EAAE,KAAK,IAAKd,EAAe,EAAI,GAAKwB,CAAO,EAAE,KAAK,QAAS,WAAW,EAAE,KAAKI,CAAQ,EAChHG,GAAUvF,EAAA9E,EAAI,KAAI,IAAR,YAAA8E,EAAY,UAC5B,GAAI,CAACuF,EACH,MAAM,IAAI,MAAM,oBAAoB,EAEtCN,EAAkB,KAAK,IAAIA,EAAiBM,EAAQ,KAAK,EACzDL,EAAmB,KAAK,IAAIA,EAAkBK,EAAQ,MAAM,EAC5DrK,EAAI,KAAK,IAAKsI,EAAe,cAAgB+B,EAAQ,MAAQ,CAAC,EAC9DJ,EAAY,KAAK,CACf,IAAAjK,EACA,KAAAoK,EACA,KAAAD,EACA,QAAAL,CACR,CAAO,EACDA,GAAW,EACb,CACA,SAAW,CAAE,IAAA9J,EAAK,KAAAoK,EAAM,KAAAD,EAAM,QAASG,CAAQ,IAAML,EAAa,CAChE,MAAMM,EAAKP,EAAmB,EACxBQ,EAAKlC,EAAe,EAAI,KAAOgC,EAYrC,GAXAH,EAAK,KAAK,QAAS,eAAe,EAAE,KAClC,SACA;AAAA,QACAd,EAAMU,EAAkB,EAAI3E,EAAK,CAAC,IAAIoF,EAAKnF,CAAE;AAAA,QAC7CgE,EAAMU,EAAkB,EAAI3E,EAAK,CAAC,IAAIoF,EAAKnF,CAAE;AAAA,QAC7CiD,EAAe,cAAgByB,EAAkB,EAAI3E,CAAE,IAAIoF,EAAKD,EAAKlF,CAAE;AAAA,QACvEiD,EAAe,cAAgByB,EAAkB,EAAI3E,CAAE,IAAIoF,EAAKD,EAAKlF,CAAE;AAAA,QACvEiD,EAAe,cAAgByB,EAAkB,EAAI3E,CAAE,IAAIoF,EAAKD,EAAKlF,CAAE;AAAA,QACvEiD,EAAe,cAAgByB,EAAkB,EAAI3E,CAAE,IAAIoF,EAAKD,EAAKlF,CAAE,EAC/E,EACM+E,EAAK,KAAK,KAAMI,CAAE,EAAE,KAAK,KAAMnB,EAAMU,EAAkB,EAAI3E,EAAK,CAAC,EAAE,KAAK,IAAK,GAAG,EAAE,KAAK,QAAS,UAAU,EACtGiB,IAAQ,MAAQA,IAAQ,KAAM,CAChC,MAAMoE,EAAUpB,EAAMiB,EACtBH,EAAK,KAAK,QAAS,eAAe,EAAE,KAClC,SACA;AAAA,UACA7B,EAAe,CAAC,IAAImC,EAAU,CAAC;AAAA,UAC/BnC,EAAe,CAAC,IAAImC,EAAU,CAAC;AAAA,UAC/BnC,EAAe,EAAIpD,CAAa,IAAIuF,EAAUF,EAAK,CAAC;AAAA,UACpDjC,EAAe,EAAIpD,EAAgB6E,EAAkB,CAAC,IAAIU,EAAUF,EAAK,CAAC;AAAA,UAC1EjC,EAAe,EAAIpD,EAAgB6E,EAAkB,CAAC,IAAIU,EAAUF,EAAK,CAAC;AAAA,UAC1EjC,EAAe,EAAIpD,CAAa,IAAIuF,EAAUF,EAAK,CAAC,EAC9D,EAAU,KAAK,YAAa,+BAAiCjC,EAAe,EAAI,IAAMe,EAAM,GAAG,EACvFe,EAAK,KAAK,KAAM9B,EAAe,EAAIlD,EAAK,CAAC,EAAE,KAAK,KAAMqF,CAAO,EAAE,KAAK,YAAa,+BAAiCnC,EAAe,EAAI,IAAMe,EAAM,GAAG,EACpJrJ,EAAI,KAAK,IAAKsI,EAAe,EAAI,CAAC,EAAE,KAAK,IAAKmC,EAAU,CAAC,EAAE,KAAK,YAAa,+BAAiCnC,EAAe,EAAI,IAAMe,EAAM,GAAG,CAClJ,CACF,CACF,CACF,EAAG,gBAAgB,EACfqB,GAAqCzM,EAAQkD,GAAY,CAE3D,OADyBA,EAAQ,YAAcA,EAAQ,KAC/B,CACtB,KAAKtD,EAAW,OACd,MAAO,gBACT,KAAKA,EAAW,QACd,MAAO,iBACT,KAAKA,EAAW,UACd,MAAO,mBACT,KAAKA,EAAW,MACd,MAAO,eACT,KAAKA,EAAW,YACd,MAAO,qBACT,QACE,MAAO,eACb,CACA,EAAG,oBAAoB,EACnB8M,GAAoC1M,EAAO,CAACkD,EAAShC,EAAMkK,EAAKuB,IAAe,CACjF,MAAMC,EAAwB,CAAE,EAAG,EAAG,EAAG,CAAC,EAC1C,GAAI1J,EAAQ,QAAQ,OAAS,EAAG,CAC9B,MAAM2F,EAAgBF,GAAkBzF,EAAQ,OAAO,EACvD,GAAI2F,EAAe,CACjB,MAAMI,EAAiB0D,EAAW,IAAI9D,CAAa,GAAK+D,EACxD,OAAI1L,IAAS,KACJ+H,EAAe,EAAI/B,EACjBhG,IAAS,MACMyL,EAAW,IAAIzJ,EAAQ,EAAE,GAAK0J,GAC/B,EAAI1F,EAEpB+B,EAAe,EAAI/B,CAE9B,CACF,KACE,QAAIhG,IAAS,KACJ8G,EACE9G,IAAS,MACMyL,EAAW,IAAIzJ,EAAQ,EAAE,GAAK0J,GAC/B,EAAI1F,EAEpB,EAGX,MAAO,EACT,EAAG,mBAAmB,EAClB2F,GAAoC7M,EAAO,CAACkD,EAASkI,EAAK0B,IAAsB,SAClF,MAAMC,EAAgB3E,IAAQ,MAAQ0E,EAAoB1B,EAAMA,EAAMnE,EAChE+F,GAAUnG,EAAAiB,EAAU,IAAI5E,EAAQ,MAAM,IAA5B,YAAA2D,EAA+B,IACzCiD,EAAI1B,IAAQ,MAAQA,IAAQ,MAAOc,EAAApB,EAAU,IAAI5E,EAAQ,MAAM,IAA5B,YAAAgG,EAA+B,IAAM6D,EAC9E,GAAIjD,IAAM,QAAUkD,IAAY,OAC9B,MAAM,IAAI,MAAM,sCAAsC9J,EAAQ,EAAE,EAAE,EAEpE,MAAMyH,EAAmBrD,EAAsB,IAAIoD,EAAU,EAAG,OAAS,EAAE,EACrEX,EAAI3B,IAAQ,MAAQA,IAAQ,KAAO2E,EAAgBC,GAAWrC,EAAmBpD,EAA+B,EAAI,EAAI,IAC9H,MAAO,CAAE,EAAAuC,EAAG,EAAAC,EAAG,cAAAgD,CAAa,CAC9B,EAAG,mBAAmB,EAClBE,GAA8BjN,EAAO,CAACkN,EAAK3D,EAAS4D,EAAa9B,IAAmB,CACtF,MAAMjB,EAAW8C,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,gBAAgB,EACzD/B,EAAU+B,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,eAAe,EAC7D,IAAI9B,EAAMhD,IAAQ,MAAQA,IAAQ,KAAOJ,EAAa,EACtD,MAAMoF,EAAO,CAAC,GAAG7D,EAAQ,KAAI,CAAE,EACzBuD,EAAoBzB,EAAe,iBAAmB,GACtDgC,EAA2BrN,EAAO,CAAC8E,EAAGC,IAAM,SAChD,MAAMuI,GAAOzG,EAAA0C,EAAQ,IAAIzE,CAAC,IAAb,YAAA+B,EAAgB,IACvB0G,GAAOrE,EAAAK,EAAQ,IAAIxE,CAAC,IAAb,YAAAmE,EAAgB,IAC7B,OAAOoE,IAAS,QAAUC,IAAS,OAASD,EAAOC,EAAO,CAC5D,EAAG,UAAU,EACb,IAAIjE,EAAa8D,EAAK,KAAKC,CAAQ,EAC/BjF,IAAQ,OACN0E,GACFzD,GAAiBC,EAAYC,EAAS6B,CAAG,EAE3C9B,EAAaA,EAAW,QAAO,GAEjCA,EAAW,QAAStI,GAAQ,OAC1B,MAAMkC,EAAUqG,EAAQ,IAAIvI,CAAG,EAC/B,GAAI,CAACkC,EACH,MAAM,IAAI,MAAM,4BAA4BlC,CAAG,EAAE,EAE/C8L,IACF1B,EAAMsB,GAAkBxJ,EAASkF,EAAKgD,EAAKrD,CAAS,GAEtD,MAAMsC,EAAiBwC,GAAkB3J,EAASkI,EAAK0B,CAAiB,EACxE,GAAIK,EAAa,CACf,MAAM7C,EAAYmC,GAAmBvJ,CAAO,EACtCsH,EAAmBtH,EAAQ,YAAcA,EAAQ,KACjDqH,IAAc1D,EAAAiB,EAAU,IAAI5E,EAAQ,MAAM,IAA5B,YAAA2D,EAA+B,QAAS,EAC5DsD,GAAiBC,EAAUlH,EAASmH,EAAgBC,EAAWC,EAAaC,CAAgB,EAC5FU,GAAgBC,EAASjI,EAASmH,EAAgBe,EAAKC,CAAc,EACrEO,GAAeT,EAASjI,EAASmH,EAAgBe,CAAG,CACtD,CACIhD,IAAQ,MAAQA,IAAQ,KAC1BL,EAAU,IAAI7E,EAAQ,GAAI,CAAE,EAAGmH,EAAe,EAAG,EAAGA,EAAe,aAAa,CAAE,EAElFtC,EAAU,IAAI7E,EAAQ,GAAI,CAAE,EAAGmH,EAAe,cAAe,EAAGA,EAAe,CAAC,CAAE,EAEpFe,EAAMhD,IAAQ,MAAQ0E,EAAoB1B,EAAMlE,EAAckE,EAAMlE,EAAcD,EAC9EmE,EAAMjD,IACRA,EAASiD,EAEb,CAAC,CACH,EAAG,aAAa,EACZoC,GAAqCxN,EAAO,CAACyN,EAASC,EAASC,EAAIC,EAAIC,IAAe,CAExF,MAAMC,GADoB1F,IAAQ,MAAQA,IAAQ,KAAOuF,EAAG,EAAIC,EAAG,EAAID,EAAG,EAAIC,EAAG,GACpCF,EAAQ,OAASD,EAAQ,OAChEM,EAAuC/N,EAAQ8J,GAAMA,EAAE,SAAWgE,EAAkB,sBAAsB,EAC1GE,EAAmChO,EAAQ8J,GAAMA,EAAE,IAAM2D,EAAQ,KAAO3D,EAAE,IAAM4D,EAAQ,IAAK,kBAAkB,EACrH,MAAO,CAAC,GAAGG,EAAW,OAAM,CAAE,EAAE,KAAMI,GAC7BD,EAAiBC,CAAO,GAAKF,EAAqBE,CAAO,CACjE,CACH,EAAG,oBAAoB,EACnBC,EAA2BlO,EAAO,CAACmO,EAAIC,EAAIC,EAAQ,IAAM,CAC3D,MAAMC,EAAYH,EAAK,KAAK,IAAIA,EAAKC,CAAE,EAAI,EAC3C,GAAIC,EAAQ,EACV,OAAOC,EAGT,GADWpG,EAAM,MAAOqG,GAAS,KAAK,IAAIA,EAAOD,CAAS,GAAK,EAAE,EAE/D,OAAApG,EAAM,KAAKoG,CAAS,EACbA,EAET,MAAME,EAAO,KAAK,IAAIL,EAAKC,CAAE,EAC7B,OAAOF,EAASC,EAAIC,EAAKI,EAAO,EAAGH,EAAQ,CAAC,CAC9C,EAAG,UAAU,EACTI,GAA4BzO,EAAO,CAACkN,EAAKO,EAASC,EAASG,IAAe,eAC5E,KAAM,CAAE,MAAOa,CAAU,EAAKhE,EAAU,EAClCE,EAAgBpD,GAAa,IAAIkH,GAAc,EAAE,EACjDf,EAAK5F,EAAU,IAAI0F,EAAQ,EAAE,EAC7BG,EAAK7F,EAAU,IAAI2F,EAAQ,EAAE,EACnC,GAAIC,IAAO,QAAUC,IAAO,OAC1B,MAAM,IAAI,MAAM,0CAA0CH,EAAQ,EAAE,QAAQC,EAAQ,EAAE,EAAE,EAE1F,MAAMiB,EAAsBnB,GAAmBC,EAASC,EAASC,EAAIC,EAAIC,CAAU,EACnF,IAAIe,EAAM,GACNC,EAAO,GACPC,EAAS,EACTC,EAAS,EACTC,GAAgBnI,EAAAiB,EAAU,IAAI4F,EAAQ,MAAM,IAA5B,YAAA7G,EAA+B,MAC/C6G,EAAQ,OAAS9N,EAAW,OAAS6N,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,IACvEsB,GAAgB9F,EAAApB,EAAU,IAAI2F,EAAQ,MAAM,IAA5B,YAAAvE,EAA+B,OAEjD,IAAI+F,EACJ,GAAIN,EAAqB,CACvBC,EAAM,oBACNC,EAAO,oBACPC,EAAS,GACTC,EAAS,GACT,MAAMG,EAAQvB,EAAG,EAAIC,EAAG,EAAIM,EAASP,EAAG,EAAGC,EAAG,CAAC,EAAIM,EAASN,EAAG,EAAGD,EAAG,CAAC,EAChEwB,EAAQxB,EAAG,EAAIC,EAAG,EAAIM,EAASP,EAAG,EAAGC,EAAG,CAAC,EAAIM,EAASN,EAAG,EAAGD,EAAG,CAAC,EAClEvF,IAAQ,KACNuF,EAAG,EAAIC,EAAG,EACZqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMwB,EAAQL,CAAM,IAAInB,EAAG,CAAC,IAAIkB,CAAI,IAAIM,CAAK,IAAIxB,EAAG,EAAIoB,CAAM,MAAMI,CAAK,IAAIvB,EAAG,EAAIkB,CAAM,IAAIF,CAAG,IAAIO,EAAQJ,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAExKoB,GAAgBI,EAAAtH,EAAU,IAAI2F,EAAQ,MAAM,IAA5B,YAAA2B,EAA+B,MAC/CH,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMwB,EAAQL,CAAM,IAAInB,EAAG,CAAC,IAAIiB,CAAG,IAAIO,CAAK,IAAIxB,EAAG,EAAIoB,CAAM,MAAMI,CAAK,IAAIvB,EAAG,EAAIkB,CAAM,IAAID,CAAI,IAAIM,EAAQJ,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAEjKxF,IAAQ,KACbuF,EAAG,EAAIC,EAAG,EACZqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMwB,EAAQL,CAAM,IAAInB,EAAG,CAAC,IAAIiB,CAAG,IAAIO,CAAK,IAAIxB,EAAG,EAAIoB,CAAM,MAAMI,CAAK,IAAIvB,EAAG,EAAIkB,CAAM,IAAID,CAAI,IAAIM,EAAQJ,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAExKoB,GAAgBK,EAAAvH,EAAU,IAAI2F,EAAQ,MAAM,IAA5B,YAAA4B,EAA+B,MAC/CJ,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMwB,EAAQL,CAAM,IAAInB,EAAG,CAAC,IAAIkB,CAAI,IAAIM,CAAK,IAAIxB,EAAG,EAAIoB,CAAM,MAAMI,CAAK,IAAIvB,EAAG,EAAIkB,CAAM,IAAIF,CAAG,IAAIO,EAAQJ,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGtKD,EAAG,EAAIC,EAAG,EACZqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIuB,EAAQJ,CAAM,IAAIF,CAAG,IAAIjB,EAAG,EAAIoB,CAAM,IAAIG,CAAK,MAAMtB,EAAG,EAAIkB,CAAM,IAAII,CAAK,IAAIL,CAAI,IAAIjB,EAAG,CAAC,IAAIsB,EAAQH,CAAM,MAAMnB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAExKoB,GAAgBM,EAAAxH,EAAU,IAAI2F,EAAQ,MAAM,IAA5B,YAAA6B,EAA+B,MAC/CL,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIuB,EAAQJ,CAAM,IAAID,CAAI,IAAIlB,EAAG,EAAIoB,CAAM,IAAIG,CAAK,MAAMtB,EAAG,EAAIkB,CAAM,IAAII,CAAK,IAAIN,CAAG,IAAIhB,EAAG,CAAC,IAAIsB,EAAQH,CAAM,MAAMnB,EAAG,CAAC,IAAIA,EAAG,CAAC,GAG9K,MACEgB,EAAM,oBACNC,EAAO,oBACPC,EAAS,GACTC,EAAS,GACL3G,IAAQ,MACNuF,EAAG,EAAIC,EAAG,IACRF,EAAQ,OAAS9N,EAAW,OAAS6N,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEuB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIkB,CAAM,IAAIF,CAAG,IAAIjB,EAAG,EAAIoB,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,GAExGqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIkB,CAAM,IAAInB,EAAG,CAAC,IAAIkB,CAAI,IAAIjB,EAAG,CAAC,IAAID,EAAG,EAAIoB,CAAM,MAAMnB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGzGD,EAAG,EAAIC,EAAG,IACZgB,EAAM,oBACNC,EAAO,oBACPC,EAAS,GACTC,EAAS,GACLrB,EAAQ,OAAS9N,EAAW,OAAS6N,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEuB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIkB,CAAM,IAAID,CAAI,IAAIlB,EAAG,EAAIoB,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,GAEzGqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIkB,CAAM,IAAInB,EAAG,CAAC,IAAIiB,CAAG,IAAIhB,EAAG,CAAC,IAAID,EAAG,EAAIoB,CAAM,MAAMnB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGxGD,EAAG,IAAMC,EAAG,IACdqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,CAAC,IAAIA,EAAG,CAAC,KAEtCxF,IAAQ,MACbuF,EAAG,EAAIC,EAAG,IACRF,EAAQ,OAAS9N,EAAW,OAAS6N,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEuB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIkB,CAAM,IAAID,CAAI,IAAIlB,EAAG,EAAIoB,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,GAEzGqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIkB,CAAM,IAAInB,EAAG,CAAC,IAAIiB,CAAG,IAAIhB,EAAG,CAAC,IAAID,EAAG,EAAIoB,CAAM,MAAMnB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGxGD,EAAG,EAAIC,EAAG,IACZgB,EAAM,oBACNC,EAAO,oBACPC,EAAS,GACTC,EAAS,GACLrB,EAAQ,OAAS9N,EAAW,OAAS6N,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEuB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIkB,CAAM,IAAIF,CAAG,IAAIjB,EAAG,EAAIoB,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,GAExGqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIkB,CAAM,IAAInB,EAAG,CAAC,IAAIkB,CAAI,IAAIjB,EAAG,CAAC,IAAID,EAAG,EAAIoB,CAAM,MAAMnB,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGzGD,EAAG,IAAMC,EAAG,IACdqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,CAAC,IAAIA,EAAG,CAAC,MAG3CD,EAAG,EAAIC,EAAG,IACRF,EAAQ,OAAS9N,EAAW,OAAS6N,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEuB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIkB,CAAM,IAAInB,EAAG,CAAC,IAAIkB,CAAI,IAAIjB,EAAG,CAAC,IAAID,EAAG,EAAIoB,CAAM,MAAMnB,EAAG,CAAC,IAAIA,EAAG,CAAC,GAEzGqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIkB,CAAM,IAAIF,CAAG,IAAIjB,EAAG,EAAIoB,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGxGD,EAAG,EAAIC,EAAG,IACRF,EAAQ,OAAS9N,EAAW,OAAS6N,EAAQ,KAAOC,EAAQ,QAAQ,CAAC,EACvEuB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,EAAIkB,CAAM,IAAInB,EAAG,CAAC,IAAIiB,CAAG,IAAIhB,EAAG,CAAC,IAAID,EAAG,EAAIoB,CAAM,MAAMnB,EAAG,CAAC,IAAIA,EAAG,CAAC,GAExGqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIC,EAAG,EAAIkB,CAAM,IAAID,CAAI,IAAIlB,EAAG,EAAIoB,CAAM,IAAInB,EAAG,CAAC,MAAMA,EAAG,CAAC,IAAIA,EAAG,CAAC,IAGzGD,EAAG,IAAMC,EAAG,IACdqB,EAAU,KAAKtB,EAAG,CAAC,IAAIA,EAAG,CAAC,MAAMC,EAAG,CAAC,IAAIA,EAAG,CAAC,KAInD,GAAIqB,IAAY,OACd,MAAM,IAAI,MAAM,2BAA2B,EAE7C/B,EAAI,OAAO,MAAM,EAAE,KAAK,IAAK+B,CAAO,EAAE,KACpC,QACA,cAAgBvH,EAAesH,EAAe3H,EAAmBuD,CAAa,CAClF,CACA,EAAG,WAAW,EACV2E,GAA6BvP,EAAO,CAACkN,EAAK3D,IAAY,CACxD,MAAMiG,EAAUtC,EAAI,OAAO,GAAG,EAAE,KAAK,QAAS,eAAe,EAC7D,CAAC,GAAG3D,EAAQ,KAAI,CAAE,EAAE,QAASvI,GAAQ,CACnC,MAAMkC,EAAUqG,EAAQ,IAAIvI,CAAG,EAC3BkC,EAAQ,SAAWA,EAAQ,QAAQ,OAAS,GAC9CA,EAAQ,QAAQ,QAAS8F,GAAW,CAClCyF,GAAUe,EAASjG,EAAQ,IAAIP,CAAM,EAAG9F,EAASqG,CAAO,CAC1D,CAAC,CAEL,CAAC,CACH,EAAG,YAAY,EACXkG,GAA+BzP,EAAO,CAACkN,EAAKwC,EAAUrE,EAAgB1J,IAAO,CAC/E,KAAM,CAAE,KAAAgO,EAAM,MAAAlF,EAAO,eAAAmF,CAAc,EAAKlF,EAAU,EAC5C,CAAE,WAAAmF,EAAY,kBAAmBC,CAAe,EAAKF,EACrDjF,EAAmBrD,EAAsB,IAAImD,GAAS,EAAE,EACxDG,EAAgBpD,GAAa,IAAIiD,GAAS,EAAE,EAC5CsF,EAAI7C,EAAI,OAAO,GAAG,EACxBwC,EAAS,QAAQ,CAAC/L,EAASI,IAAU,QACnC,MAAMiM,EAAsBtI,EAC1B3D,EACA4G,EAAmBmF,EAAkBzI,EACrCuD,CACN,EACUQ,GAAMvE,GAAAiB,EAAU,IAAInE,EAAQ,IAAI,IAA1B,YAAAkD,GAA6B,IACzC,GAAIuE,IAAQ,OACV,MAAM,IAAI,MAAM,iCAAiCzH,EAAQ,IAAI,EAAE,EAEjE,MAAMsM,EAAS7H,IAAQ,MAAQA,IAAQ,KAAOgD,EAAMT,EAAmBS,EAAM7D,EAA+B,EAAI,EAAI6D,EAAM,EACpHjH,EAAO4L,EAAE,OAAO,MAAM,EAC5B5L,EAAK,KAAK,KAAM,CAAC,EACjBA,EAAK,KAAK,KAAM8L,CAAM,EACtB9L,EAAK,KAAK,KAAMgE,CAAM,EACtBhE,EAAK,KAAK,KAAM8L,CAAM,EACtB9L,EAAK,KAAK,QAAS,gBAAkB6L,CAAmB,EACpD5H,IAAQ,MACVjE,EAAK,KAAK,KAAM6D,CAAU,EAC1B7D,EAAK,KAAK,KAAMiH,CAAG,EACnBjH,EAAK,KAAK,KAAMgE,CAAM,EACtBhE,EAAK,KAAK,KAAMiH,CAAG,GACVhD,IAAQ,OACjBjE,EAAK,KAAK,KAAMgE,CAAM,EACtBhE,EAAK,KAAK,KAAMiH,CAAG,EACnBjH,EAAK,KAAK,KAAM6D,CAAU,EAC1B7D,EAAK,KAAK,KAAMiH,CAAG,GAErBlD,EAAM,KAAK+H,CAAM,EACjB,MAAM9N,EAAOwB,EAAQ,KACfuM,EAAe5H,GAASnG,CAAI,EAC5BgO,EAAMJ,EAAE,OAAO,MAAM,EAErB1L,EADc0L,EAAE,OAAO,GAAG,EAAE,KAAK,QAAS,aAAa,EACnC,OAAO,GAAG,EAAE,KAAK,QAAS,qBAAuBC,CAAmB,EAC9F3L,EAAM,KAAI,EAAG,YAAY6L,CAAY,EACrC,MAAMzE,EAAOyE,EAAa,QAAO,EAC3BE,EAAezF,EAAmB,EAAI,EACtC0F,EAAgB1F,EAAmB,GAAK,EACxC2F,EAAgB3F,EAAmBpD,EAA+B,EACpEoI,IAAS,OACXQ,EAAI,KAAK,YAAa,KAAK,EAE7BA,EAAI,KAAK,QAAS,uBAAyBH,CAAmB,EAAE,KAC9D,QACAL,IAAS,MAAQ,UAAUhF,EAAmB,QAAQhJ,CAAE,gBAAkBkO,CAAU,GAAK,EAC/F,EAAM,KAAK,KAAMO,CAAY,EAAE,KAAK,KAAMA,CAAY,EAAE,KAAK,IAAK,CAAC3E,EAAK,MAAQ,GAAKJ,EAAe,oBAAsB,GAAO,GAAK,EAAE,EAAE,KAAK,IAAK,CAACI,EAAK,OAAS,EAAI,EAAE,EAAE,KAAK,QAASA,EAAK,MAAQ,GAAK4E,CAAa,EAAE,KAAK,SAAU5E,EAAK,OAAS,EAAI6E,CAAa,EACpQjM,EAAM,KACJ,YACA,cAAgB,CAACoH,EAAK,MAAQ,IAAMJ,EAAe,oBAAsB,GAAO,GAAK,GAAKgF,EAAgB,GAAK,MAAQJ,EAASxE,EAAK,OAAS,EAAI,GAAK,GAC7J,EACQrD,IAAQ,MACV+H,EAAI,KAAK,IAAK/E,EAAMK,EAAK,MAAQ,EAAI,EAAE,EAAE,KAAK,IAAK,CAAC,EACpDpH,EAAM,KAAK,YAAa,cAAgB+G,EAAMK,EAAK,MAAQ,EAAI,GAAK,MAAM,EACtEd,IACFwF,EAAI,KAAK,YAAa,aAAa,CAACE,EAAgB,EAAI,CAAC,KAAK,CAACC,EAAgB,EAAE,GAAG,EACpFjM,EAAM,KACJ,YACA,cAAgB+G,EAAMK,EAAK,MAAQ,EAAI,GAAK,MAAQ,CAAC6E,EAAgB,EAAI,GAAK,GACxF,IAEelI,IAAQ,MACjB+H,EAAI,KAAK,IAAK/E,EAAMK,EAAK,MAAQ,EAAI,EAAE,EAAE,KAAK,IAAKtD,CAAM,EACzD9D,EAAM,KAAK,YAAa,cAAgB+G,EAAMK,EAAK,MAAQ,EAAI,GAAK,KAAOtD,EAAS,GAAG,EACnFwC,IACFwF,EAAI,KAAK,YAAa,aAAa,CAACE,EAAgB,EAAI,CAAC,KAAKC,EAAgB,EAAE,GAAG,EACnFjM,EAAM,KACJ,YACA,cAAgB+G,EAAMK,EAAK,MAAQ,EAAI,GAAK,MAAQtD,EAASmI,EAAgB,EAAI,GAAK,GAChG,IAGMH,EAAI,KAAK,YAAa,mBAAqBF,EAAS,GAAKK,EAAgB,GAAK,GAAG,CAErF,CAAC,CACH,EAAG,cAAc,EACbC,GAAoCvQ,EAAO,SAASmC,EAAMiJ,EAAKrH,EAAO0H,EAAM+E,EAAmB,CACjG,OAAA1I,EAAU,IAAI3F,EAAM,CAAE,IAAAiJ,EAAK,MAAArH,CAAK,CAAE,EAClCqH,GAAO,IAAMoF,EAAoB,GAAK,IAAMpI,IAAQ,MAAQA,IAAQ,KAAOqD,EAAK,MAAQ,EAAI,GACrFL,CACT,EAAG,mBAAmB,EAClBqF,GAAuBzQ,EAAO,SAASuI,EAAK5G,EAAI+O,EAAKC,EAAS,CAChEtI,GAAM,EACNhH,EAAI,MAAM,uBAAwBkH,EAAM;AAAA,EAAM,MAAO5G,EAAI+O,CAAG,EAC5D,MAAM3K,EAAM4K,EAAQ,GACpB,GAAI,CAAC5K,EAAI,UAAW,CAClB1E,EAAI,MAAM,yCAAyC,EACnD,MACF,CACA,MAAMgK,EAAiBtF,EAAI,UAAS,EAC9ByK,EAAoBnF,EAAe,mBAAqB,GAC9DpD,EAAiBlC,EAAI,WAAU,EAC/B,MAAM2J,EAAW3J,EAAI,sBAAqB,EAC1CqC,EAAMrC,EAAI,aAAY,EACtB,MAAM6K,EAAWC,GAAO,QAAQlP,CAAE,IAAI,EAChC,CAAE,KAAAgO,EAAM,MAAAlF,EAAO,eAAAmF,CAAc,EAAKlF,EAAU,EAC5C,CAAE,YAAAoG,EAAa,cAAAC,EAAe,aAAAC,EAAc,YAAAC,CAAW,EAAKrB,EAClE,GAAIkB,EAAa,CACf,MAAMI,EAAWN,EAAS,OAAO,MAAM,EAAE,OAAO,gBAAgB,EAAE,KAAK,KAAMjP,EAAK,WAAW,EAAE,KAAK,gBAAiB,mBAAmB,EAAE,KAAK,KAAM,IAAI,EAAE,KAAK,KAAM,IAAI,EAAE,KAAK,KAAM,MAAM,EAAE,KAAK,KAAM,IAAI,EAC9MuP,EAAS,OAAO,MAAM,EAAE,KAAK,SAAU,IAAI,EAAE,KAAK,aAAcH,CAAa,EAAE,KAAK,eAAgB,CAAC,EACrGG,EAAS,OAAO,MAAM,EAAE,KAAK,SAAU,MAAM,EAAE,KAAK,aAAcF,CAAY,EAAE,KAAK,eAAgB,CAAC,CACxG,CACIrB,IAAS,OAASrI,EAAsB,IAAImD,GAAS,EAAE,GACzDmG,EAAS,OAAO,MAAM,EAAE,OAAO,QAAQ,EAAE,KAAK,KAAMjP,EAAK,cAAc,EAAE,KAAK,SAAU,MAAM,EAAE,KAAK,QAAS,MAAM,EAAE,OAAO,cAAc,EAAE,KAAK,KAAM,GAAG,EAAE,KAAK,KAAM,GAAG,EAAE,KAAK,eAAgB,CAAC,EAAE,KAAK,gBAAiB,MAAM,EAAE,KAAK,cAAesP,CAAW,EAEpQ,IAAI7F,EAAM,EACVsE,EAAS,QAAQ,CAAC/L,EAASI,IAAU,OACnC,MAAMmM,EAAe5H,GAAS3E,EAAQ,IAAI,EACpCoM,EAAIa,EAAS,OAAO,GAAG,EACvBO,EAAcpB,EAAE,OAAO,GAAG,EAAE,KAAK,QAAS,aAAa,EACvD1L,EAAQ8M,EAAY,OAAO,GAAG,EAAE,KAAK,QAAS,oBAAoB,GACxEtK,EAAAxC,EAAM,KAAI,IAAV,MAAAwC,EAAc,YAAYqJ,GAC1B,MAAMzE,EAAOyE,EAAa,QAAO,EACjC9E,EAAMmF,GAAkB5M,EAAQ,KAAMyH,EAAKrH,EAAO0H,EAAM+E,CAAiB,EACzEnM,EAAM,OAAM,EACZ8M,EAAY,OAAM,EAClBpB,EAAE,OAAM,CACV,CAAC,EACD9C,GAAY2D,EAAU3I,EAAgB,GAAOoD,CAAc,EACvDA,EAAe,cACjBoE,GAAamB,EAAUlB,EAAUrE,EAAgB1J,CAAE,EAErD4N,GAAWqB,EAAU3I,CAAc,EACnCgF,GAAY2D,EAAU3I,EAAgB,GAAMoD,CAAc,EAC1D+F,GAAc,YACZR,EACA,eACAvF,EAAe,gBAAkB,EACjCtF,EAAI,gBAAe,CACvB,EACEsL,GAAkB,OAAQT,EAAUvF,EAAe,eAAgBA,EAAe,WAAW,CAC/F,EAAG,MAAM,EACLiG,GAA2B,CAC7B,KAAAb,EACF,EAiYIc,GAAwB,EACxBC,GAAyC,IAAI,IAAI,CAAC,QAAS,aAAc,cAAe,kBAAkB,CAAC,EAC3GC,GAAgC,IAAI,IAAI,CAAC,cAAe,kBAAkB,CAAC,EAC3EC,GAA6B,IAAI,IAAI,CAAC,MAAO,UAAU,CAAC,EACxDC,GAA+B,IAAI,IAAI,CAAC,OAAQ,aAAc,mBAAoB,UAAU,CAAC,EAC7FC,GAAuC,IAAI,IAAI,CACjD,QACA,aACA,cACA,mBACA,MACA,UACF,CAAC,EACGC,GAAsC7R,EAAQ8R,GAAY,CAC5D,KAAM,CAAE,MAAAC,CAAK,EAAKD,EAClB,IAAIE,EAAW,GACf,GAAIF,EAAQ,aAAeC,EACzB,QAASlN,EAAI,EAAGA,EAAIiN,EAAQ,kBAAmBjN,IAC7CmN,GAAY;AAAA,cACJnN,CAAC,aAAaiN,EAAQ,OAAO,iBAAiBC,CAAK,6BAA6BD,EAAQ,WAAW;AAAA,eAI/G,OAAOE,CACT,EAAG,qBAAqB,EACpBC,GAA2BjS,EAAQ8R,GAAY,CACjD,MAAMzR,EAASH,EAAS,EAClB,CAAE,MAAAuK,EAAO,eAAAmF,CAAc,EAAKvP,EAC5B,CAAE,iBAAA6R,CAAgB,EAAKtC,EACvBjF,EAAmB6G,GAAuB,IAAI/G,CAAK,EACzD,GAAIiH,GAAW,IAAIjH,CAAK,EAAG,CACzB,IAAIuH,EAAW,GACf,QAASnN,EAAI,EAAGA,EAAIiN,EAAQ,kBAAmBjN,IAC7C,GAAIA,IAAM,EACRmN,GAAY;AAAA,uBACGnN,CAAC,YAAYiN,EAAQ,UAAU;AAAA,iBACrCjN,CAAC,cAAciN,EAAQ,UAAU;AAAA,2BACvBjN,CAAC,cAAciN,EAAQ,UAAU,WAAWA,EAAQ,UAAU;AAAA,gBACzEjN,CAAC,cAAciN,EAAQ,UAAU;AAAA,kCACfA,EAAQ,UAAU;AAAA,6BACvBjN,CAAC,cAAciN,EAAQ,UAAU;AAAA,UACpDD,GAAoBC,CAAO,CAAC,OACzB,CACL,MAAMK,EAAKtN,EAAI0M,GACfS,GAAY;AAAA,uBACGnN,CAAC,YAAYiN,EAAQ,iBAAmBK,CAAE,CAAC;AAAA,iBACjDtN,CAAC,cAAciN,EAAQ,MAAQK,CAAE,CAAC,WAAWL,EAAQ,MAAQK,CAAE,CAAC;AAAA,2BACtDtN,CAAC,cAAciN,EAAQ,SAAWK,CAAE,CAAC,WAAWL,EAAQ,SAAWK,CAAE,CAAC;AAAA,gBACjFtN,CAAC,cAAciN,EAAQ,MAAQK,CAAE,CAAC;AAAA,SAE5C,CAEF,OAAOH,CACT,SAAYP,GAAc,IAAIhH,CAAK,EAc5B,CACL,IAAIuH,EAAW,GACf,QAASnN,EAAI,EAAGA,EAAIiN,EAAQ,kBAAmBjN,IAC7C,GAAIA,IAAM,EACRmN,GAAY;AAAA,uBACGnN,CAAC,YAAYiN,EAAQ,UAAU,KAAKnH,EAAmB,eAAemH,EAAQ,cAAc,GAAK,EAAE;AAAA,iBACzGjN,CAAC,cAAciN,EAAQ,UAAU;AAAA,2BACvBjN,CAAC,cAAciN,EAAQ,UAAU,WAAWA,EAAQ,OAAO;AAAA,gBACtEjN,CAAC,aAAaiN,EAAQ,OAAO,aAAaA,EAAQ,UAAU,mBAAmBA,EAAQ,WAAW,KAAKnH,EAAmB,eAAemH,EAAQ,cAAc,GAAK,EAAE;AAAA,gBACtKjN,CAAC,cAAciN,EAAQ,UAAU;AAAA,kCACfA,EAAQ,UAAU;AAAA,cAEvC,CACL,MAAMM,EAAavN,EAAIqN,EAAiB,OACxCF,GAAY;AAAA,uBACGnN,CAAC,YAAYiN,EAAQ,UAAU,KAAKnH,EAAmB,eAAemH,EAAQ,cAAc,GAAK,EAAE;AAAA,iBACzGjN,CAAC,cAAcqN,EAAiBE,CAAU,CAAC,WAAWF,EAAiBE,CAAU,CAAC;AAAA,2BACxEvN,CAAC,cAAcqN,EAAiBE,CAAU,CAAC,WAAWF,EAAiBE,CAAU,CAAC;AAAA,gBAC7FvN,CAAC,aAAa8M,GAAa,IAAIlH,CAAK,EAAIqH,EAAQ,QAAUI,EAAiBE,CAAU,CAAC,aAAaF,EAAiBE,CAAU,CAAC,oBAAoBN,EAAQ,WAAW;AAAA,gBACtKjN,CAAC,cAAcqN,EAAiBE,CAAU,CAAC;AAAA,SAErD,CAEF,OAAOJ,CACT,KAtCsC,CACpC,IAAIA,EAAW,GACf,QAASnN,EAAI,EAAGA,EAAIiN,EAAQ,kBAAmBjN,IAC7CmN,GAAY;AAAA,uBACKnN,CAAC,YAAYiN,EAAQ,UAAU,KAAKnH,EAAmB,eAAemH,EAAQ,cAAc,GAAK,EAAE;AAAA,iBACzGjN,CAAC,cAAciN,EAAQ,UAAU;AAAA,2BACvBjN,CAAC,cAAciN,EAAQ,UAAU,WAAWA,EAAQ,UAAU;AAAA,gBACzEjN,CAAC,aAAaiN,EAAQ,OAAO,aAAaA,EAAQ,UAAU,mBAAmBA,EAAQ,WAAW,KAAKnH,EAAmB,eAAemH,EAAQ,cAAc,GAAK,EAAE;AAAA,gBACtKjN,CAAC,cAAciN,EAAQ,UAAU;AAAA,kCACfA,EAAQ,UAAU;AAAA,6BACvBjN,CAAC,cAAciN,EAAQ,UAAU;AAAA,UAG1D,OAAOE,CACT,CAyBF,EAAG,UAAU,EACTK,GAA8BrS,EAAQ8R,GACjC,GAAG,MAAM,KAAK,CAAE,OAAQA,EAAQ,iBAAiB,EAAI,CAACQ,EAAGzN,IAAMA,CAAC,EAAE,IAAKA,GAAM,CAClF,MAAMsN,EAAKtN,EAAI0M,GACf,MAAO;AAAA,uBACY1M,CAAC,YAAYiN,EAAQ,iBAAmBK,CAAE,CAAC;AAAA,iBACjDtN,CAAC,cAAciN,EAAQ,MAAQK,CAAE,CAAC,WAAWL,EAAQ,MAAQK,CAAE,CAAC;AAAA,2BACtDtN,CAAC,cAAciN,EAAQ,SAAWK,CAAE,CAAC,WAAWL,EAAQ,SAAWK,CAAE,CAAC;AAAA,gBACjFtN,CAAC,aAAaiN,EAAQ,MAAQK,CAAE,CAAC;AAAA,gBACjCtN,CAAC,cAAciN,EAAQ,MAAQK,CAAE,CAAC;AAAA,SAEhD,CAAC,EAAE,KAAK;AAAA,CAAI,CAAC,GACZ,aAAa,EACZI,GAA4BvS,EAAQ8R,GAAY,CAClD,MAAMzR,EAASH,EAAS,EAClB,CAAE,MAAAuK,CAAK,EAAKpK,EACZmS,EAAiBZ,GAAqB,IAAInH,CAAK,EACrD,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUL+H,EAAiBP,GAASH,CAAO,EAAIO,GAAYP,CAAO,CAAC;AAAA;AAAA;AAAA,oBAGzCA,EAAQ,WAAW;AAAA,cACzBA,EAAQ,iBAAmBA,EAAQ,SAAS;AAAA,yBACjCU,EAAiB,MAAQ,GAAG;AAAA;AAAA,+BAEtBV,EAAQ,mBAAmB,WAAWU,EAAiBV,EAAQ,WAAaA,EAAQ,gBAAgB,KAAKU,EAAiB,eAAeV,EAAQ,cAAc,IAAM,EAAE;AAAA,mCACnKA,EAAQ,mBAAmB,WAAWU,EAAiB,cAAgBV,EAAQ,qBAAqB,cAAcU,EAAiB,GAAK,EAAG;AAAA,4BAClJV,EAAQ,gBAAgB,WAAWA,EAAQ,aAAa;AAAA,2BACzDU,EAAiBV,EAAQ,QAAUA,EAAQ,kBAAkB,aAAaU,EAAiBV,EAAQ,WAAaA,EAAQ,cAAc,KAAKU,EAAiB,UAAUV,EAAQ,UAAU,GAAK,EAAE;AAAA,sBACpMA,EAAQ,SAAS;AAAA;AAAA;AAAA,cAGzBU,EAAiBV,EAAQ,QAAUA,EAAQ,YAAY;AAAA,YACzDU,EAAiBV,EAAQ,QAAUA,EAAQ,YAAY;AAAA;AAAA;AAAA,cAGrDU,EAAiBV,EAAQ,QAAUA,EAAQ,YAAY;AAAA,YACzDU,EAAiBV,EAAQ,QAAUA,EAAQ,YAAY;AAAA,oBAC/CU,EAAiBV,EAAQ,YAAc,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,cAK9CU,EAAiBV,EAAQ,QAAUA,EAAQ,YAAY;AAAA,YACzDU,EAAiBV,EAAQ,QAAUA,EAAQ,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,oBAK/CN,GAAuB,IAAI/G,CAAK,EAAIqH,EAAQ,YAAc,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOnEA,EAAQ,SAAS;AAAA;AAAA,CAG7B,EAAG,WAAW,EACVW,GAAiBF,GAGjBG,GAAU,CACZ,OAAA5L,GACA,GAAAxB,GACA,SAAUgM,GACV,OAAQmB,EACV","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{aL as T,aM as C,aN as z,aO as R,aP as S,aQ as k,aR as V,aS as L,aT as K,aU as j,aV as ee,aW as te,aX as re,aY as se,aZ as ne,a_ as ie,aG as ae,a$ as oe,b0 as ue,b1 as he,b2 as y,b3 as $,b4 as v}from"./mermaid.core-CFxQTXeR.js";import{k as d,g as Y,s as de,e as ce,f as fe,h as ge,j as le,d as _e,l as be,b as pe,m,n as g,r as ye}from"./_baseUniq-okA3yjMF.js";function me(t,e){return t&&T(e,d(e),t)}function je(t,e){return t&&T(e,C(e),t)}function Te(t,e){return T(t,Y(t),e)}var Oe=Object.getOwnPropertySymbols,W=Oe?function(t){for(var e=[];t;)ce(e,Y(t)),t=z(t);return e}:de;function Ae(t,e){return T(t,W(t),e)}function Ee(t){return fe(t,C,W)}var Ce=Object.prototype,Le=Ce.hasOwnProperty;function we(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&Le.call(t,"index")&&(r.index=t.index,r.input=t.input),r}function Ne(t,e){var r=e?R(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var Pe=/\w*$/;function Fe(t){var e=new t.constructor(t.source,Pe.exec(t));return e.lastIndex=t.lastIndex,e}var I=S?S.prototype:void 0,D=I?I.valueOf:void 0;function Se(t){return D?Object(D.call(t)):{}}var $e="[object Boolean]",ve="[object Date]",Ie="[object Map]",De="[object Number]",Me="[object RegExp]",Ge="[object Set]",Ue="[object String]",xe="[object Symbol]",Be="[object ArrayBuffer]",Re="[object DataView]",Ve="[object Float32Array]",Ke="[object Float64Array]",Ye="[object Int8Array]",We="[object Int16Array]",qe="[object Int32Array]",He="[object Uint8Array]",Qe="[object Uint8ClampedArray]",Xe="[object Uint16Array]",Ze="[object Uint32Array]";function Je(t,e,r){var s=t.constructor;switch(e){case Be:return R(t);case $e:case ve:return new s(+t);case Re:return Ne(t,r);case Ve:case Ke:case Ye:case We:case qe:case He:case Qe:case Xe:case Ze:return k(t,r);case Ie:return new s;case De:case Ue:return new s(t);case Me:return Fe(t);case Ge:return new s;case xe:return Se(t)}}var ze="[object Map]";function ke(t){return V(t)&&L(t)==ze}var M=j&&j.isMap,et=M?K(M):ke,tt="[object Set]";function rt(t){return V(t)&&L(t)==tt}var G=j&&j.isSet,st=G?K(G):rt,nt=1,it=2,at=4,q="[object Arguments]",ot="[object Array]",ut="[object Boolean]",ht="[object Date]",dt="[object Error]",H="[object Function]",ct="[object GeneratorFunction]",ft="[object Map]",gt="[object Number]",Q="[object Object]",lt="[object RegExp]",_t="[object Set]",bt="[object String]",pt="[object Symbol]",yt="[object WeakMap]",mt="[object ArrayBuffer]",jt="[object DataView]",Tt="[object Float32Array]",Ot="[object Float64Array]",At="[object Int8Array]",Et="[object Int16Array]",Ct="[object Int32Array]",Lt="[object Uint8Array]",wt="[object Uint8ClampedArray]",Nt="[object Uint16Array]",Pt="[object Uint32Array]",o={};o[q]=o[ot]=o[mt]=o[jt]=o[ut]=o[ht]=o[Tt]=o[Ot]=o[At]=o[Et]=o[Ct]=o[ft]=o[gt]=o[Q]=o[lt]=o[_t]=o[bt]=o[pt]=o[Lt]=o[wt]=o[Nt]=o[Pt]=!0;o[dt]=o[H]=o[yt]=!1;function O(t,e,r,s,n,a){var i,u=e&nt,h=e&it,Z=e&at;if(i!==void 0)return i;if(!ee(t))return t;var w=ae(t);if(w){if(i=we(t),!u)return te(t,i)}else{var _=L(t),N=_==H||_==ct;if(re(t))return se(t,u);if(_==Q||_==q||N&&!n){if(i=h||N?{}:ne(t),!u)return h?Ae(t,je(i,t)):Te(t,me(i,t))}else{if(!o[_])return n?t:{};i=Je(t,_,u)}}a||(a=new ie);var P=a.get(t);if(P)return P;a.set(t,i),st(t)?t.forEach(function(c){i.add(O(c,e,r,c,t,a))}):et(t)&&t.forEach(function(c,f){i.set(f,O(c,e,r,f,t,a))});var J=Z?h?Ee:le:h?C:d,F=w?void 0:J(t);return ge(F||t,function(c,f){F&&(f=c,c=t[f]),oe(i,f,O(c,e,r,f,t,a))}),i}function Ft(t,e){return _e(e,function(r){return t[r]})}function A(t){return t==null?[]:Ft(t,d(t))}function b(t){return t===void 0}var St=ue(function(t){return be(pe(t,1,he,!0))}),$t="\0",l="\0",U="";class X{constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=y(void 0),this._defaultEdgeLabelFn=y(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[l]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return $(e)||(e=y(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return d(this._nodes)}sources(){var e=this;return m(this.nodes(),function(r){return v(e._in[r])})}sinks(){var e=this;return m(this.nodes(),function(r){return v(e._out[r])})}setNodes(e,r){var s=arguments,n=this;return g(e,function(a){s.length>1?n.setNode(a,r):n.setNode(a)}),this}setNode(e,r){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=l,this._children[e]={},this._children[l][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var r=s=>this.removeEdge(this._edgeObjs[s]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],g(this.children(e),s=>{this.setParent(s)}),delete this._children[e]),g(d(this._in[e]),r),delete this._in[e],delete this._preds[e],g(d(this._out[e]),r),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(b(r))r=l;else{r+="";for(var s=r;!b(s);s=this.parent(s))if(s===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==l)return r}}children(e){if(b(e)&&(e=l),this._isCompound){var r=this._children[e];if(r)return d(r)}else{if(e===l)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return d(r)}successors(e){var r=this._sucs[e];if(r)return d(r)}neighbors(e){var r=this.predecessors(e);if(r)return St(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var s=this;g(this._nodes,function(i,u){e(u)&&r.setNode(u,i)}),g(this._edgeObjs,function(i){r.hasNode(i.v)&&r.hasNode(i.w)&&r.setEdge(i,s.edge(i))});var n={};function a(i){var u=s.parent(i);return u===void 0||r.hasNode(u)?(n[i]=u,u):u in n?n[u]:a(u)}return this._isCompound&&g(r.nodes(),function(i){r.setParent(i,a(i))}),r}setDefaultEdgeLabel(e){return $(e)||(e=y(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return A(this._edgeObjs)}setPath(e,r){var s=this,n=arguments;return ye(e,function(a,i){return n.length>1?s.setEdge(a,i,r):s.setEdge(a,i),i}),this}setEdge(){var e,r,s,n,a=!1,i=arguments[0];typeof i=="object"&&i!==null&&"v"in i?(e=i.v,r=i.w,s=i.name,arguments.length===2&&(n=arguments[1],a=!0)):(e=i,r=arguments[1],s=arguments[3],arguments.length>2&&(n=arguments[2],a=!0)),e=""+e,r=""+r,b(s)||(s=""+s);var u=p(this._isDirected,e,r,s);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,u))return a&&(this._edgeLabels[u]=n),this;if(!b(s)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[u]=a?n:this._defaultEdgeLabelFn(e,r,s);var h=vt(this._isDirected,e,r,s);return e=h.v,r=h.w,Object.freeze(h),this._edgeObjs[u]=h,x(this._preds[r],e),x(this._sucs[e],r),this._in[r][u]=h,this._out[e][u]=h,this._edgeCount++,this}edge(e,r,s){var n=arguments.length===1?E(this._isDirected,arguments[0]):p(this._isDirected,e,r,s);return this._edgeLabels[n]}hasEdge(e,r,s){var n=arguments.length===1?E(this._isDirected,arguments[0]):p(this._isDirected,e,r,s);return Object.prototype.hasOwnProperty.call(this._edgeLabels,n)}removeEdge(e,r,s){var n=arguments.length===1?E(this._isDirected,arguments[0]):p(this._isDirected,e,r,s),a=this._edgeObjs[n];return a&&(e=a.v,r=a.w,delete this._edgeLabels[n],delete this._edgeObjs[n],B(this._preds[r],e),B(this._sucs[e],r),delete this._in[r][n],delete this._out[e][n],this._edgeCount--),this}inEdges(e,r){var s=this._in[e];if(s){var n=A(s);return r?m(n,function(a){return a.v===r}):n}}outEdges(e,r){var s=this._out[e];if(s){var n=A(s);return r?m(n,function(a){return a.w===r}):n}}nodeEdges(e,r){var s=this.inEdges(e,r);if(s)return s.concat(this.outEdges(e,r))}}X.prototype._nodeCount=0;X.prototype._edgeCount=0;function x(t,e){t[e]?t[e]++:t[e]=1}function B(t,e){--t[e]||delete t[e]}function p(t,e,r,s){var n=""+e,a=""+r;if(!t&&n>a){var i=n;n=a,a=i}return n+U+a+U+(b(s)?$t:s)}function vt(t,e,r,s){var n=""+e,a=""+r;if(!t&&n>a){var i=n;n=a,a=i}var u={v:n,w:a};return s&&(u.name=s),u}function E(t,e){return p(t,e.v,e.w,e.name)}export{X as G,O as b,b as i,A as v};
2
+ //# sourceMappingURL=graph-BdcxLlxf.js.map