@zombie-mermaid/svg-renderer 5.10.2 → 5.11.0
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.
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
|
|
|
5
5
|
font-display: swap;
|
|
6
6
|
src: url(data:font/woff2;base64,d09GMgABAAAAABZoAAwAAAAAMiwAABYWAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGjQGYACCfhEICtBIv3MLgmIAATYCJAOFNgQgBYREByAboCdFBDYOABG0i4mo4AwURYmYtNn/ZQI3hkD/MDOMAipCbeSAiA/e0E7k5P52NehVqIa1Ws5wnlXDxHfybGfD5bMhLn7xIYDX23j/Rz5CY5/kwkd/mG/3/6sFK7YCklopc4CZmEawA6YLdIro3fC0zX8HFmsX7m9GgjYleXDcEQeS59FHSSpYlHP+r/7NWDn/XLX7We5Hh/zcflRIYLtfFFHgaQRdxolEHFjGyf5+bqOug4dK5jpHFM9JLar//W2oPbmphNegKjf6hSubuicHd6XOxFTSwetPRm4TfrdSCA2AYZje1KaqotJySXs/aDjvWFNNY64WjJjzP5fan2JuSKqb2ptR+PyMnJA//yfZT3J3zcG6XMtJiXI3Kv9y2iHosZoE+jcCUkRqc3NErkLJGaEGz9fS2XtXZk5GIks1Mp9kfJRGbeib8Gmud13rHnRVHZZBeAZlqsIoJIOwipc5DyJWp2JEaq8NYpKrDGTj3jo1VvT022N4TQ/5qiHx95wgkAcAliRdkD41yC4zyDkbyIUYyKUsSCyLmCMf3l4AHE32rYkX64CRMZkgoM/hwHrSsUT/dwmozlotHaDzx3DzJ+goAC6l1EFTt29eXB04L82iCYlx85Y6bA9xSFnsozV3gNWvoFviuv853gNcm7TfDoedMe+A3faYdsQ2+1xup+0mnHTcCVPOgmRk5RXVrLdBiVJlylWoVK1Bk2YtWrXhaycgJDZrlyucNucGEhglNZyBkYmZjYOTi5tHSERUTI+4AYOSUrJmnLPXKfksSImS0nKqVisrttlGl9hkpQ6mGrXq1TmKhYeNg0ukUTc5KZiCDAKloqel08GK0ImkQQnw8gnyO6ZLv4RefdLCMiDKJSUAjwBoAdwA2YtiB/hDDwA4FV+0osA5WQmaaByUu1TZ7oKozVvRvimvwYFHN3aWx63vcmq+Kx0dIRNrY9cg08wcCxqIZZ3B0HmijHjBDgceRM2UYyWTaUzz2XIxn+3k82XEkroE2jQVAtVw9M5K23rHs/xJGrw7aINDe6oWNAzDrTE60YTmZv361HJAsIPKsOjcKq2qyGsUQhTd67852KOyvD2yzJjXNNMUqLPNZrsl6FKfuBmBklR4x+2lDhW1UQtK5JrkAvk+gXBqcwCCgCbYOTqEV6jTC6FBNbxG9oUb8jBLwiid8LObmCdblBBhTwBreN2c6CkvGOiu4g2Xp1PIKqn+y9fPoNgWVMQUPNTFN9Ubz5YHqdmPIRDe51TYgcCoW8sYulQGBQuok8lVwsNEdcEKLAKJW0jw1lPmti0ZTjSVELsq/GtNVJh8FmWUhF9CC/9+QjxB+A8vX6jWEcUeORZZSC9RO5+L41XEt3/BxhbhbTZ9ENQWWMpqW+n5GOZyFlIFRhwkYv2zdGexrYXUi5GkUiGLRaCIZEHRvZErT6U/mXySxKxm5AgsWTloiKRCF1EP5JzHgEmO0uQ6dWuZni+s7XyKLmydocAXEOwibZJ42fd5PgxS6mTIiYHvk54/J69SH+fLWp9GkN6zjfiws4p+Bwg3PbXFVN2PYDwTzgrGpyTU1gfaF4IrosGwHWAGQmaBhUBYYnVLOyun0CnQKMQoIGKg80bHHiIRsBM4LZIgg434M+YPAPGtsVFL4AK9wTJYIYqOrbyFADqnmtlIBElGhRt/0khQoEPSxSk8A+jZJFVypiRVKODi+wRDJQPRbOWeAOztcWGTTcd3HD5YPQRaUwJc+F8k2rpLnAOkRZAoxPFcph4HgOevdtmm/GKNEdUEwYKRTE8IDwNF3aYiOFxSjbeWIIL16u+38z9DjlJdYODsnRGg6ZZk7mStNGIsvUAd5JHhKuL7CvhSWLmy7Hrjp7YGFniM9XSt+Dcy9ooClHk3JC4SeNGJrZplh7Ka0BvNfAGQWWWrPQnIO0nPyD/WCm+TInDihZEPaCFxoshODj8Uc9XfFYSU4ICjxLenSJaox9rE8sUpx6NIh87YO/nplqsThu5iXoIguRCwjznR7t/0N/inpR4VP/5ZeSJFby5UK+mX3IVHdxMJrqlBJeXesPEtmGuwVuk1Z8YUyXzi9oh+yZvhtxU4d6RdkU912UGAn+jhgzo45YW6gSgDlXmFfa4vyWfsWZoMn8o903SYmPSwQyTz9MP8immCVnfsidOEd3DiFm59sxf81gh9xXTDyxOJJoHctABrJzQZfY9O4yZ9Egc+dL0q72olF1/G9DsorYtULawavt9xqSb3SSunWKnE8jVmos2YYDX9V+9xSvClQ/S6ESC4nDADX+j+pJDtuhPvDsijUnS2trhOVzqu0dWOFGYp+AUOH3FSI9gZqzr/VLITOVtKLWp05cpIeRpZ9vwIEfPATzCcTz0pLez2HSoXuO4PRanZFyL6EZgTM9cuwn+MXhfAPleGW1u/ZQ4IOlqfSUYHOyVJ1rfGK1ZbuyOcoMDxXy4IJlE5tFqYw159Wv7+VUGur2I+8X5QTUo2C9XIRYPUg8oti37ktNJOl6NY1+rS79kitpN1wFgn64L2pZn303lMhwr2mtfPd+vksTFFB/P25X4jmR5Aa3KiOVH3fVL1N7TuH8UWhAd2Y4j6tUcC0LidLnru4hgHTvm5zwvRQYcTFWX4awD1N19HMD37xoKGgPhVqnSk3hv8wO6ofqGIC5Tln0B6gkqmp3XFReoPgjvxNsagXZIYVMTJECgd7mXFcM1o8sjWIyzR6t5sqICgB/+U9bp8FudzrYXtcU2SuKaIX6t1/K4xMj9bVz9ZOs34YGBgjneBf0uFCPapx+6/ijnLc2iRd386TZ4Gd5MrXpitf16w4fK0GPhyr0SSYbcYd++hX41y64xt/nRfZPrKLVKlXCDA5NJh8ahCp5TKdHrFKOAzIpnBkD6kSAQOkgxSCKqEYaUS0SPKFaA6Fcx9R8Brz4vwkmtXFsd5G1HdajJOgi8gRId2HchYN9dgHCHw5h7SxgTioKpWJQ5hFG3IElbqO5S12LhNw8BrIQ0k+vMv/7HP0AciuatJw8UGoiHPQIJA7lbS8bOMlKoBm/Y+GGLgVOEqJHKI/P5u+tm+HCX+WkzlKOJrAuiSw8LD5I4DG6xkxIeHYpQK16GofpxURVRRbOsQ8OYoad85Seh84OGR7huIeCeYyJm79CTQ5aa9cBc8nVNuLm08fzt/aKs5OVjYkX9b2A2o3NYPk5fk6WhE3QnnMfSD5EY6i3kCNDNCqVRCmAhKqHHFRWaQgBGVAcQvVeRQnBKoN0z3yfWh1GDIm1xm04wWCQx30eyJBp1UIv9o78d1z/wjRVjsxsXtfwBv7pvY1mwoRA8mtr9lbD+M6+QIroX3AypHHTmu7OIK3DLPUF/4+Pm841IMFYmVCslxcM1C7Ma8ufzolqCjoaBFzyegkoR12Ucv/AXjHXIUwXUwLAwElbM3FvhyF7Bgu8Cn0Bvinx5CwlcIRoQ7d4lVuBRWacS7AJuRGBsMUXKTGkU6tNKWNvSBgQr1OnMMl/KdPo4c8XMEDgnFUyECAYbwGq5PpCp164gBY9dICiztujR9TT67CzQzYr3J4FpqrUyqkctgjczewFBiEHz/wKJr9Mcn1jiFwrWuJ4Z/8D24CL2ORau4lEPH89YX4BxtaRAzSYX4+vV5D15aanEtpjAml44WF9NRDGeChtdST3f3JN/ZxqL0rG3pd8JPB18b7h79YhvLYGBuG/sSLBW/92zXbPO9r/ttvHhvQ3yiajGwU7pWNXm2+udaSfAPwx72m/iths4mwY3NvUPtvxVTeeiAzRtJBByXuiO0tF3KMShNCpFpviXS0vYkuIOBdfoMeiul6jQ0yqoqHVUWTE/IuCqOVoty2jCLSzv34WCDsapKW2XDLJ1YM8odHtZws6Y9xnpTVaWv/qi5ur8+Yam0tjRPAgMDsciiUJzKUfPQKJQl5Ig12B845w/2J02Sf1Tz6r8lIlSDHEFQTTiD4T5HQsPMQDZKc1J1mFgM4+qjjyK4ChZjklqK5sxGwasDYG8dfLkAnba41OUMMtTvPxcI9lsRQp6FoNF5KkfFoahFVmkSKyiB44MWS/5Wz6v+AU0MdbdIHFWp2kN+oaLlmnOrJL+eR6krDcSwSBvqeeSgmohzTMlH2mdRXNITk2gsqNGCYTKIIqeZQTMjuCXbPdGNT3sQ6+ILfGjI1S7X4FIeyuqiitQZ4m0DKMOUuFyuxDHwzu55cj6Ddep158hzqDRzgbywG8wvkCfZtlYe5KYnTe2wPdjrz/qD/XbYJErSAm6WNdblXlNHd2y8EMHEY2JAaeCNLIdiBlhhDUZdaSqMIEqhGNWgfmAnn5i4jWS8eR8J3AvkKKJWye/KI/2FweFUFARz1NH48Yt9t+ffXxk/+2vvb2C0w2HDv3uYvERR46i6kQQylrmDpl7Jqtt0FRRmsASIWXGl7arq38tKf6u+Wr+6SsvWBV4WFe+6d0jBbC4MZzM94/FMOhIhIz7ew2YKWWAlhh5AQyosVZ0hhINWInW76kgSqW7kfuSxDl3QHr27SsK+m/1ZcesLlb9zZEoVMr5RplTLj2zgvVL3N/AsmLEUsQb7AgYeapFH6Asd/sPZVu64YcolNauzrnTd8HdA37kFPZAeseQHQn2kZc/32h8u89r+hd6I/gWSLCpOixjkqMMbC7Ap9tYhWK5C/WBDoTdCGikWxW3h9TZo0aKjG4blRoUu1OlsISJmhaeM2djSJqmTamfXzaybM0VsXuAtkbd7/XyFwtfW3imCUbeMnjN162QiT4ivlJIcxKiVSrU0qoRoEygxwc0VKjXiEhBWd5qVqjPkmZPUyQtNF1RltNJ5EjQxAqlk0E/5ZQpcJEZx2Y56GeZP9zODw6n5fzno+3MNCbADghE30yyaZNrAGrVAPUkNuiDSXLKNKZnU+5hh5DJ4YA0YN2CXAd7jm+9elui7IfGcqP65kn338sc2JYYWEi/qxN9eunQN4I4F4q0X6cHt1sx7bPZ74a3WQPEioCj+SAu5n5KMaEjQzEjoDEzQFWpXGmU6o9TlOpQHVeCfS1eWla4oHR552Upgkk9LnzrYffWll+26kgQO6890bbOzSabGYTmuQyhaaDgTjm5JhdrFGbX2yZeMJKhiRIeSQUqm0cgGKq/oEizmOx9qIQ/YbrvfXdA94OEFtyTB3Lx+lnFzbMOj9T/eSV0NmDin0CpTaaTPhKdJLvTwlmj/QLR1fKNaGHhCCvdoOLWRz69viyyIqx/lVmJdYmFYicOJHhi3YIRdoxEe7HSrwMP0nSVbqGdftUHToJmhiQukXQqNOYwto+9VuaQSgaOLo0ADPRCRcn0vvQTLukZxP3OPQHObWIUJBBQSi9QLhJGFftSil8kVFHi57BOBJxbE1WfJKoVfLAgrtXA8Dmu0cdo69bNRpZnBfKGW+RJzOJ3aF8BrZ4XcPg0XNJ9sPFpTc7RxMn/DNXchUH28z6m6sWq9EbZgjwS5kPb2clpiGC56b3PxZqOi/OP5j1u7Gbz09o08VI/DsB7HxuxjeKxdHFBK2JRNkA7I0G7C7TE1B/U+9gR/4SPfRH2pubc+f6S/A183Zhtb5+gYi2/ozcBslZKPFvhv3o56H56I7/bS++7bfAewsl5zYqHqhSDWtxHcqfOHpp8N7tp5XmUe6PtL+DcHaAq45TLzp8NXVJ56YeL8iQA9y/m/38obtZw388bWmf8H6WEnuspnPRnm85YcRIjJTuCJwAv9rm5HgXnVVepxLENksHF1Bc8wruxqJVrZUmlVqMdwfUFvYKYODzlh50LA359nJhKXXLVLYm6ol2h2bZAJ2cqtsIvV0pGFKtlbsTFiDH3YGpkWfeYwMHix/+bfiJMrThLgcP/yHfntZjBTTaAEgMOGjw0A3BU2xwqawdqZSV9hogeyU9xbHAXX6UuI3g4i1G0tnJJNkoXhbtBJsZc9/eeorsTSryd7ep1Fk8fuamVjL312d/6xFYUeTksb+tACWPK/PkI88oQxLISTO2v3dpVna2b3zs3VGjgT/okFml9gvltT8y6T9azf5LPfXW2YMzzzw0sVYDtO3Erc8oM/OWBDnYKjDStS28sLBceoW97uBjQUoZXe8WVFJwA0/+OwFpcyN5Vcu+jNFuH2IwvXwpMLAhbrndO226c7B6HMk42SNyfTEHixD9XrVmIrRw09A6TwhX0/Leqr2tgbFbWVWGVtxdyHvXtHkEexhhjEVKgrahauynL0P7aqBqgX7GO4esJl27nvxHh6YiK92myn9B0Opzar1xBoY2CGhtttboIKZ3pskUTaN2CoaWXNNQ+1nGGxzrZkm+fA20WuaMwlIdwBA31BgIu0AadJRLLbbBIXz9zC/I5V/+Tj/1CpyBW3zT0Y7rr8mk1kA5OQpPnY6NkKdoIv4d8I/u+/mboZPLirvLq8oqa8vKZiPf7PZAY076ruNCVkdTX5Rp1AOZWeifTPgMGp+ExwYAZ8PLVnxjozE+40WUygOSDEED6fVHhabisFZWVQaSmkfw/A/+4K28lscUVtBVbRWtxw9yQI0BvcrgfW85vaG9hIbxrcqljXNMj6vwcWw+zBz2wsAAEgBbZoIaAdyN2mueRG7ibN7O4k6y66qr6gL1p1PITcMBC43JLLkCWyRJa4lc5udQ2yWlbLalkt22SbbJNtrpBAcnOZ1h3IXaH55ELuEs3qribrGorXF4Qi/LgLuWAgMAcWXbwMtdQQpCLLjmR3IaBLqnYNrnfdFyU90iM90qMeApeMy7iMy7ibKnMsZfKIDxxpS07tCavnmlmDLnz8UGXcKxf/ZKMyDgCsD3qYl7yOfvc26Y5g58UkIhTtlO148ev1A513AGX/56Wupd8NdpPkO/CoWP/vwvaksloALEB117+hmCQGkTq1AvDYebvRyWDGDoCbeZO0sKeOLhn1BBRct9RYZ/Tnjm0SQ3WFJhVLJ0OWhEtG15AvfeV96FboOVoOXEmbhrL0YgABwKY3lrUQ+wOrZb8VraZ/CQD8fRkb4YXMPf9M/J+k/Re7oCwJbAAGBKAtR5ddN/GSvg0EZo2/S5aibHlU4Ev3sixThIC6rCfF0dayTKBTikwuatWlUBDqKxOJdhV4rKchqsWerYpKvJELJ3gm23HR5ZzFDkEqkEXeTDZq1ZalTkiqPQp7z9tESKXyji3a8pigMCoOBlBIVSo5XmeRl7jABHXUqgHu0wwasHGEvcjYx18KBB0YcSLpdnAIVtHKprIlYMlkFj1zVOK17VC4MssUjTbaaKP/CEAAeITuBQPAAvI+aA3/1QVzvyGPAYAPqK5bxUAkRKuyKazyaxUd6nxVHp6Jqnw2bbYAvg9wKCpLKS0obkCGyaABg8yMWpGiug3pE5TmEJWWEc8eV4XXKslyjIWZzfYbY4KGZA22OFqZVaXBFtxXKbG2PNUWaSUQeUxIo3tnVbdY1a2jaqfjc+opwTewM3BQb6uC3qSR2/m4bj2308YTjUsjrC0heuBb6CWkYT4hKlxDEXtMRpcPSss01myETbJeKXbf1y2emX8zG9ImbO7rx/Y5C/v2xxvRzeq3iuIBCAAA) format('woff2');
|
|
7
7
|
unicode-range: U+0020-007E, U+00A0, U+00C0-00FF;
|
|
8
|
-
}`;function D(t,n,r){return(0,e.measureTextWidth)(t,n,r)}function O(e,t){return e.length*t*.6}var k=`'JetBrains Mono'`,ee=`${k}, 'SF Mono', 'Fira Code', ui-monospace, monospace`,A={nodeLabel:13,edgeLabel:11,groupHeader:12};function j(e){return{nodeLabel:e?.nodeLabel??A.nodeLabel,edgeLabel:e?.edgeLabel??A.edgeLabel,groupHeader:e?.groupHeader??A.groupHeader}}var M={nodeLabel:500,edgeLabel:400,groupHeader:600},te=12,ne=12,N={horizontal:20,vertical:10,diamondExtra:24},P={outerBox:1,innerBox:.75,connector:1},F=`0.35em`,I={width:8,height:5};function L(t,n,r,i){return(0,e.buildStyleBlock)(t,n?{family:T,faceCss:E}:!1,r,i)}var R={font:`Inter`,padding:40,nodeSpacing:28,layerSpacing:48,mergeEdges:!0,thoroughness:3,fontSizes:A},re={flowchart:`DOWN`,state:`DOWN`,class:`DOWN`,er:`DOWN`,c4:`DOWN`};function ie(e,t){switch(e){case`LR`:return`RIGHT`;case`RL`:return`LEFT`;case`BT`:return`UP`;case`TD`:case`TB`:return`DOWN`;default:return t}}function ae(e){let t=typeof e==`number`?{top:e,left:e,bottom:e,right:e}:e;return`[top=${t.top},left=${t.left},bottom=${t.bottom},right=${t.right}]`}function oe(e){return{"elk.algorithm":`layered`,"elk.direction":e.direction,"elk.spacing.nodeNode":String(e.nodeSpacing),"elk.layered.spacing.nodeNodeBetweenLayers":String(e.layerSpacing),"elk.padding":ae(e.padding),"elk.edgeRouting":`ORTHOGONAL`}}function se(e,t,n){let r={id:e,width:t.width,height:t.height};return n!==void 0&&(r.labels=[{text:n}]),r}var ce={"elk.edgeLabels.inline":`true`,"elk.edgeLabels.placement":`CENTER`};function le(t,n){let r=(0,e.measureMultilineText)(t,n.fontSize,M.edgeLabel),i={text:t,width:r.width+8,height:r.height+6};return n.layoutOptions&&(i.layoutOptions={...n.layoutOptions}),i}function ue(e){let t={id:e.id,sources:[e.source],targets:[e.target]};return e.label&&(t.labels=[le(e.label,e.labelStyle)]),t}var de={"state-start":`FIRST`},fe={"elk.layered.cycleBreaking.strategy":`MODEL_ORDER`,"elk.layered.compaction.postCompaction.strategy":`NONE`};function pe(e){for(let t of e.nodes.values())if(t.shape===`state-start`||t.shape===`state-end`)return!0;return!1}var z={top:44,left:16,bottom:16,right:16},me={top:16,left:16,bottom:16,right:16};function he(e){let t=new Map;for(let n of e.edges){if(!n.label)continue;let e=`${n.source}\0${n.target}`,r=(t.get(e)??0)+1;if(r>=3)return!0;t.set(e,r)}return!1}var ge=new WeakMap;function _e(t,n){let r=ge.get(t);return r||(r=pe(t)||we(t.subgraphs)?new Set:(0,e.findBackEdgeIndexes)(t,n?.walkOrder,n?.feedbackEdges??(0,e.subgraphFeedbackEdges)(t)),ge.set(t,r)),r}function ve(e,t){for(let n=0;n<e.edges.length;n++){let r=e.edges[n];if(t.has(r.source)||t.has(r.target))return n}return 1/0}function ye(e){return ie(e,re.flowchart)}function be(e){return{...oe(e),"elk.spacing.edgeEdge":`12`,"elk.layered.spacing.edgeEdgeBetweenLayers":`12`,"elk.layered.spacing.edgeNodeBetweenLayers":`12`,"elk.layered.nodePlacement.bk.fixedAlignment":`BALANCED`,"elk.contentAlignment":`H_CENTER V_CENTER`}}function xe(e){return{fontSize:e.fontSizes.edgeLabel,layoutOptions:ce}}function Se(t,n,r,i){let a=(0,e.measureMultilineText)(n,i,M.nodeLabel),o=a.width+N.horizontal*2,s=a.height+N.vertical*2;if(r===`diamond`){let e=Math.max(o,s)+N.diamondExtra;o=e,s=e}if(r===`circle`||r===`doublecircle`){let e=Math.ceil(Math.sqrt(o*o+s*s))+8;o=r===`doublecircle`?e+12:e,s=o}return r===`hexagon`&&(o+=N.horizontal),(r===`trapezoid`||r===`trapezoid-alt`||r===`parallelogram`||r===`parallelogram-alt`)&&(o+=N.horizontal),r===`asymmetric`&&(o+=12),r===`cylinder`&&(s+=14),r===`state-start`||r===`state-end`||n===``&&r===`diamond`?{width:28,height:28}:n===``&&r===`fork-join`?{width:70,height:10}:(o=Math.max(o,60),s=Math.max(s,36),{width:o,height:s})}var Ce=` root`;function we(e){for(let t of e)if(t.direction!==void 0||we(t.children))return!0;return!1}function Te(e,t){for(let n of e.nodeIds)t.add(n);for(let n of e.children)Te(n,t)}function Ee(e){let t=new Map;function n(e,r){let i=[...r,e.id];t.set(e.id,i);for(let t of e.children)n(t,i)}for(let t of e)n(t,[]);return t}function De(e,t){let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n++;return n}function Oe(e,t,n){let r=t,i=new Set,a=new Set;for(let t of e.subgraphs)a.add(t.id),Ae(t,i,a);let o=je(e.subgraphs),s=Ee(e.subgraphs),c=e=>e?s.get(e)??[]:[],l=new Map;l.set(null,[]);let u=[];for(let t=0;t<e.edges.length;t++){let n=e.edges[t],r=o.get(n.source),i=o.get(n.target);if(r&&r===i){let e=l.get(r)??[];l.set(r,e),e.push({index:t,edge:n})}else!r&&!i?l.get(null).push({index:t,edge:n}):u.push({index:t,edge:n,srcChain:c(r),tgtChain:c(i)})}let d=we(e.subgraphs),f=[],p=[],m={...be({direction:ye(e.direction),nodeSpacing:r.nodeSpacing,layerSpacing:r.layerSpacing,padding:r.padding}),"elk.layered.thoroughness":String(R.thoroughness),"elk.layered.highDegreeNodes.treatment":`false`,"elk.layered.compaction.postCompaction.strategy":(e.subgraphs.length===0||he(e))&&!n?.forceNodeOrder?`NONE`:`LEFT_RIGHT_CONSTRAINT_LOCKING`,"elk.layered.considerModelOrder.strategy":`NODES_AND_EDGES`,...he(e)?{"elk.spacing.edgeEdge":`40`}:{},...n?.forceNodeOrder?{"elk.layered.crossingMinimization.forceNodeModelOrder":`true`}:{},...pe(e)?fe:{},"elk.layered.wrapping.strategy":`OFF`,"elk.hierarchyHandling":d?`SEPARATE`:`INCLUDE_CHILDREN`},h=new Map,g=new Map;function _(e,t){let n=h.get(e)??new Set;h.set(e,n),n.add(t)}function v(e,t){let n=g.get(e)??[];g.set(e,n),n.push(t)}if(d)for(let{index:e,edge:t,srcChain:n,tgtChain:i}of u){let a=De(n,i),o=t.source;if(n.length>a){for(let r=n.length-1;r>=a;r--){let i=n[r],a=`${i}_out_${e}`;_(i,a);let o=r===n.length-1?t.source:`${n[r+1]}_out_${e}`;v(i,{id:`e${e}_s${r}`,sources:[o],targets:[a]})}o=`${n[a]}_out_${e}`}let s=t.target;if(i.length>a){for(let n=a;n<=i.length-1;n++){let r=i[n],a=`${r}_in_${e}`;_(r,a);let o=n===i.length-1?t.target:`${i[n+1]}_in_${e}`;v(r,{id:`e${e}_t${n}`,sources:[a],targets:[o]})}s=`${i[a]}_in_${e}`}v(a>0?n[a-1]:Ce,ue({id:`e${e}`,source:o,target:s,label:t.label,labelStyle:xe(r)}))}for(let[t,o]of e.nodes)if(!i.has(t)&&!a.has(t)){let i=Se(t,o.label,o.shape,r.fontSizes.nodeLabel),a=n?.fixedWidths?.get(t);a!==void 0&&(i.width=a);let s=se(t,i,o.label),c=pe(e)?de[o.shape]:void 0;c!==void 0&&(s.layoutOptions={"elk.layered.layering.layerConstraint":c}),f.push(s)}let y=pe(e),b=f.length,x=y?e.subgraphs:[...e.subgraphs].reverse();for(let t of x)f.push(ke(t,e,r,l,h,g,e.direction));if(y&&e.subgraphs.length>0){let t=f.map((t,n)=>{if(n<b)return ve(e,new Set([t.id]));let r=e.subgraphs[n-b],i=ve(e,new Set([r.id]));if(i!==1/0)return i;let a=new Set;return Te(r,a),ve(e,a)}),n=f.map((e,t)=>t).sort((e,n)=>t[e]-t[n]||e-n).map(e=>f[e]);f.splice(0,f.length,...n)}let S=_e(e,n);for(let{index:e,edge:t}of l.get(null)){if(t.source===t.target||n?.detachedEdges?.has(e))continue;let i=ue({id:`e${e}`,source:S.has(e)?t.target:t.source,target:S.has(e)?t.source:t.target,label:t.label,labelStyle:xe(r)});n?.looseEdges?.has(e)&&(i.layoutOptions={...i.layoutOptions,"elk.layered.priority.straightness":`0`}),p.push(i)}if(d)for(let e of g.get(Ce)??[])p.push(e);else for(let{index:e,edge:t}of u)p.push(ue({id:`e${e}`,source:S.has(e)?t.target:t.source,target:S.has(e)?t.source:t.target,label:t.label,labelStyle:xe(r)}));return{id:`root`,layoutOptions:m,children:f,edges:p}}function ke(t,n,r,i,a,o,s){let c=t.direction!==void 0&&(0,e.subgraphDirectionIsHonored)(t,n)?t.direction:s,l=be({direction:ye(c),nodeSpacing:r.nodeSpacing,layerSpacing:r.layerSpacing,padding:t.region?me:z}),u,d=a.get(t.id);d&&d.size>0&&(u=[...d].map(e=>({id:e})));let f=[];for(let e of t.nodeIds){let t=n.nodes.get(e);if(t){let n=Se(e,t.label,t.shape,r.fontSizes.nodeLabel);f.push(se(e,n,t.label))}}let p=t.children.some(e=>e.region)?t.children:[...t.children].reverse();for(let e of p)f.push(ke(e,n,r,i,a,o,c));let m=[],h=i.get(t.id)??[],g=_e(n);for(let{index:e,edge:t}of h)t.source!==t.target&&m.push(ue({id:`e${e}`,source:g.has(e)?t.target:t.source,target:g.has(e)?t.source:t.target,label:t.label,labelStyle:xe(r)}));for(let e of o.get(t.id)??[])m.push(e);return{id:t.id,layoutOptions:l,labels:t.label?[{text:t.label}]:void 0,ports:u,children:f,edges:m}}function Ae(e,t,n){for(let n of e.nodeIds)t.add(n);for(let r of e.children)n.add(r.id),Ae(r,t,n)}function je(e){let t=new Map;function n(e){for(let n of e.nodeIds)t.set(n,e.id);for(let t of e.children)n(t)}for(let t of e)n(t);return t}function Me(e,t,n){if(e.length<2||t.shape===`rectangle`||t.shape===`rounded`||t.shape===`stadium`)return e;let r=[...e];if(t.shape===`diamond`){if(n)r[0]=Ne(e[0],e[1],t);else{let n=e.length-1;r[n]=Ne(e[n],e[n-1],t)}}if(t.shape===`asymmetric`){let i=n?0:e.length-1,a=e[i],o=t.height/2,s=Math.abs(a.y-(t.y+o));Math.abs(a.x-t.x)<.5&&s<o&&(r[i]={x:t.x+12*(1-s/o),y:a.y})}return r}function Ne(e,t,n){let r=n.x+n.width/2,i=n.y+n.height/2,a={x:r,y:n.y},o={x:n.x+n.width,y:i},s={x:r,y:n.y+n.height},c={x:n.x,y:i},l=e.x-t.x,u=e.y-t.y;if(Math.abs(l)<Math.abs(u)){let t=e.x;return u>0?t<=r?Fe(t,c,a)??a:Fe(t,a,o)??a:t<=r?Fe(t,s,c)??s:Fe(t,o,s)??s}{let t=e.y;return l>0?t<=i?Pe(t,a,c)??c:Pe(t,c,s)??c:t<=i?Pe(t,a,o)??o:Pe(t,o,s)??o}}function Pe(e,t,n){let r=n.y-t.y;if(Math.abs(r)<.001)return null;let i=(e-t.y)/r;return i<0||i>1?null:{x:t.x+i*(n.x-t.x),y:e}}function Fe(e,t,n){let r=n.x-t.x;if(Math.abs(r)<.001)return null;let i=(e-t.x)/r;return i<0||i>1?null:{x:e,y:t.y+i*(n.y-t.y)}}var Ie=12;function Le(e,t,n){if(e.length===0)return;let r=n===`LR`||n===`RL`,i=new Set;for(let e of t)i.add(`${e.source}:${e.target}`),i.add(`${e.target}:${e.source}`);let a=R.layerSpacing*.6,o=[...e].sort((e,t)=>r?e.x-t.x:e.y-t.y),s=[],c=[o[0]];for(let e=1;e<o.length;e++){let t=(r?o[e].x:o[e].y)-(r?o[e-1].x:o[e-1].y),n=c.some(t=>i.has(`${t.id}:${o[e].id}`));t<=a&&!n?c.push(o[e]):(s.push(c),c=[o[e]])}s.push(c);let l=new Map;for(let e of s){if(e.length<=1)continue;let t=e.map(e=>r?e.x:e.y),n=Math.min(...t),i=Math.max(...t);if(i-n<=1)continue;let a=(n+i)/2;for(let t of e){let e=a-(r?t.x:t.y);Math.abs(e)>.5&&(r?t.x=a:t.y=a,l.set(t.id,e))}}if(l.size===0)return;let u=r?`x`:`y`,d=(e,t,n,r)=>{let i=e[t],a=i[u];i[u]+=r;let[o,s,c]=[1,2,3].map(r=>e[t+r*n]);if(o[u]===a)o[u]+=r;else if(s&&c&&s[u]===o[u]){let e=Math.sign(o[u]-a),t=o[u]+e*Math.max(0,Ie-e*(o[u]-i[u]));e*(c[u]-t)>0&&(o[u]=s[u]=t)}};for(let e of t){let{points:t}=e;if(t.length<2)continue;let n=l.get(e.source),r=l.get(e.target);n!=null&&d(t,0,1,n),r!=null&&d(t,t.length-1,-1,r)}}var Re=.5;function ze(e,t,n){for(let r=0;r<e.length-1;r++){let i=e[r],a=e[r+1],o=Math.min(i.x,a.x),s=Math.max(i.x,a.x),c=Math.min(i.y,a.y),l=Math.max(i.y,a.y);for(let e of t){if(n.has(e.id))continue;let t=e.x+Re,r=e.x+e.width-Re,i=e.y+Re,a=e.y+e.height-Re;if(!(t>=r||i>=a)&&o<r&&s>t&&c<a&&l>i)return!1}}return!0}function Be(e,t,n){let r=[];for(let i of n)e>=i.x&&e<=i.x+i.width&&t>=i.y&&t<=i.y+i.height&&(r.push(i),r.push(...Be(e,t,i.children)));return r}function Ve(e,t,n,r,i){let a=i===`LR`,o=i===`RL`,s=i===`BT`,c=a||o,l=new Set(Be(t,n,r).map(e=>e.id)),u=Be(c?e:t,c?n:e,r).find(e=>!l.has(e.id));return u?a?u.x-12:o?u.x+u.width+12:s?u.y+u.height+12:u.y-12:e}var He=2;function Ue(e,t,n,r,i){for(let a of e){if(t.has(a)||a.source===a.target)continue;let e=a.source===n?a.points[0]:a.target===n?a.points[a.points.length-1]:void 0;if(e&&Math.abs((i?e.x:e.y)-r)<=He)return!0}return!1}function We(e,t,n,r){let i=new Map(t.map(e=>[e.id,e])),a=new Set,o=r===`LR`,s=r===`RL`,c=r===`BT`,l=o||s,u=new Map;for(let t of e){if(t.source===t.target)continue;let e=u.get(t.source)??[];u.set(t.source,e),e.push(t)}for(let[d,f]of u){if(f.length<2)continue;let u=f[0].style;if(f.some(e=>e.label||e.style!==u))continue;let p=i.get(d);if(!p)continue;let m=[];for(let e of f){let t=i.get(e.target);t&&(o?t.x>p.x+p.width:s?t.x+t.width<p.x:c?t.y+t.height<p.y:t.y>p.y+p.height)&&m.push({edge:e,node:t})}if(m.length<2)continue;let h=p.x+p.width/2,g=p.y+p.height/2;if(l){let i=o?p.x+p.width:p.x,s=g;if(Ue(e,new Set(m.map(e=>e.edge)),d,i,!0))continue;let c=i+((o?Math.min(...m.map(e=>e.node.x)):Math.max(...m.map(e=>e.node.x+e.node.width)))-i)/2;c=Ve(c,h,g,n,r);let l=[];for(let{edge:e,node:n}of m){let r=o?n.x:n.x+n.width,a=n.y+n.height/2,u=[{x:i,y:s},{x:c,y:s},{x:c,y:a},{x:r,y:a}];ze(u,t,new Set([d,n.id]))&&l.push({edge:e,points:u})}if(l.length<2)continue;for(let{edge:e,points:t}of l)e.points=t,a.add(e)}else{let i=h,o=c?p.y:p.y+p.height;if(Ue(e,new Set(m.map(e=>e.edge)),d,o,!1))continue;let s=o+((c?Math.max(...m.map(e=>e.node.y+e.node.height)):Math.min(...m.map(e=>e.node.y)))-o)/2;s=Ve(s,h,g,n,r);let l=[];for(let{edge:e,node:n}of m){let r=n.x+n.width/2,a=c?n.y+n.height:n.y,u=[{x:i,y:o},{x:i,y:s},{x:r,y:s},{x:r,y:a}];ze(u,t,new Set([d,n.id]))&&l.push({edge:e,points:u})}if(l.length<2)continue;for(let{edge:e,points:t}of l)e.points=t,a.add(e)}}let d=new Map;for(let t of e){if(a.has(t)||t.source===t.target)continue;let e=d.get(t.target)??[];d.set(t.target,e),e.push(t)}for(let[a,u]of d){if(u.length<2)continue;let d=u[0].style;if(u.some(e=>e.label||e.style!==d))continue;let f=i.get(a);if(!f)continue;let p=[];for(let e of u){let t=i.get(e.source);t&&(o?t.x+t.width<f.x:s?t.x>f.x+f.width:c?t.y>f.y+f.height:t.y+t.height<f.y)&&p.push({edge:e,node:t})}if(p.length<2)continue;let m=f.x+f.width/2,h=f.y+f.height/2;if(l){let i=o?f.x:f.x+f.width,s=h;if(Ue(e,new Set(p.map(e=>e.edge)),a,i,!0))continue;let c=o?Math.max(...p.map(e=>e.node.x+e.node.width)):Math.min(...p.map(e=>e.node.x)),l=c+(i-c)/2;l=Ve(l,m,h,n,r);let u=[];for(let{edge:e,node:n}of p){let r=o?n.x+n.width:n.x,c=n.y+n.height/2,d=[{x:r,y:c},{x:l,y:c},{x:l,y:s},{x:i,y:s}];ze(d,t,new Set([n.id,a]))&&u.push({edge:e,points:d})}if(u.length<2)continue;for(let{edge:e,points:t}of u)e.points=t}else{let i=m,o=c?f.y+f.height:f.y;if(Ue(e,new Set(p.map(e=>e.edge)),a,o,!1))continue;let s=c?Math.min(...p.map(e=>e.node.y)):Math.max(...p.map(e=>e.node.y+e.node.height)),l=s+(o-s)/2;l=Ve(l,m,h,n,r);let u=[];for(let{edge:e,node:n}of p){let r=n.x+n.width/2,s=[{x:r,y:c?n.y:n.y+n.height},{x:r,y:l},{x:i,y:l},{x:i,y:o}];ze(s,t,new Set([n.id,a]))&&u.push({edge:e,points:s})}if(u.length<2)continue;for(let{edge:e,points:t}of u)e.points=t}}}var Ge=1.5,Ke=.01;function qe(e){let t=e.map(e=>({...e})),n=0;for(;n+3<t.length;){let[e,r,i,a]=[t[n],t[n+1],t[n+2],t[n+3]],o=Math.abs(e.x-r.x)<Ke&&Math.abs(i.x-a.x)<Ke&&Math.abs(r.y-i.y)<Ke&&Math.abs(r.x-i.x)<=Ge&&Math.abs(r.x-i.x)>=Ke,s=Math.abs(e.y-r.y)<Ke&&Math.abs(i.y-a.y)<Ke&&Math.abs(r.x-i.x)<Ke&&Math.abs(r.y-i.y)<=Ge&&Math.abs(r.y-i.y)>=Ke;if(o){let r=(e.x+a.x)/2;t.splice(n,4,{x:r,y:e.y},{x:r,y:a.y})}else if(s){let r=(e.y+a.y)/2;t.splice(n,4,{x:e.x,y:r},{x:a.x,y:r})}else n++}return t}function Je(e,t=0,n=0){let r=[];if(!e.sections||e.sections.length===0)return r;let i=e.sections[0];if(r.push({x:i.startPoint.x+t,y:i.startPoint.y+n}),i.bendPoints)for(let e of i.bendPoints)r.push({x:e.x+t,y:e.y+n});return r.push({x:i.endPoint.x+t,y:i.endPoint.y+n}),r}function Ye(e,t=0,n=0){if(!e.labels||e.labels.length===0)return;let r=e.labels[0];if(r.x!=null&&r.y!=null)return{x:r.x+(r.width??0)/2+t,y:r.y+(r.height??0)/2+n}}var Xe=16,Ze=28,Qe=18,$e=28,et=10;function tt(e,t){let n=e.x+e.width,r=e.y+e.height/2,i=Math.min($e,e.height*.6)/2,a=Ze+t*Qe,o=[];for(let e=0;e<=Xe;e++){let t=Math.PI*e/Xe;o.push({x:n+a*Math.sin(t),y:r-i*Math.cos(t)})}return{points:o,labelPosition:{x:n+a+et,y:r}}}function nt(e,t,n){let r=new Map;for(let i=0;i<e.edges.length;i++){let a=e.edges[i];if(a.source!==a.target)continue;let o=t.get(a.source);if(!o)continue;let s=r.get(o.id)??0;r.set(o.id,s+1);let{points:c,labelPosition:l}=tt(o,s);n.push({source:a.source,target:a.target,label:a.label,style:a.style,hasArrowStart:a.hasArrowStart,hasArrowEnd:a.hasArrowEnd,points:c,labelPosition:a.label?l:void 0,inlineStyle:mt(i,e),id:a.id,animate:a.animate})}}function rt(e){let t=[];for(let n of e)t.push({x:n.x,y:n.y,right:n.x+n.width,bottom:n.y+n.height}),t.push(...rt(n.children));return t}function it(e,t,n=!1){let r=[],i=[],a=[],o=new Set;for(let e of t.subgraphs)pt(e,o);at(e,t,o,r,a,0,0);let s=rt(a);ct(e,t,i,0,0,s.length>0?{leftX:Math.min(...s.map(e=>e.x))-20,rightX:Math.max(...s.map(e=>e.right))+20}:void 0),Le(r,i,t.direction);let c=new Map(r.map(e=>[e.id,e]));nt(t,c,i),n&&We(i,r,a,t.direction);for(let e of i){e.points=qe(e.points);let t=c.get(e.source),n=c.get(e.target);t&&(e.points=Me(e.points,t,!0)),n&&(e.points=Me(e.points,n,!1))}let l=e.width??800,u=e.height??600,d=I.width,f=R.padding;for(let e of i){for(let t of e.points)l=Math.max(l,t.x+d+f),u=Math.max(u,t.y+d+f);e.labelPosition&&(l=Math.max(l,e.labelPosition.x+60+f),u=Math.max(u,e.labelPosition.y+20+f))}return{width:l,height:u,nodes:r,edges:i,groups:a}}function at(t,n,r,i,a,o,s){if(t.children)for(let c of t.children){let t=(c.x??0)+o,l=(c.y??0)+s,u=c.width??0,d=c.height??0;if(r.has(c.id)){let e=[];at(c,n,r,i,e,t,l);let o=ft(n.subgraphs,c.id);a.push({id:c.id,label:o?.label??``,x:t,y:l,width:u,height:d,children:e,...o?.region?{region:!0}:{}})}else{let o=n.nodes.get(c.id);if(o){let r=(0,e.resolveNodeStyle)(c.id,n),a=n.classAssignments.get(c.id);i.push({id:c.id,label:o.label,shape:o.shape,x:t,y:l,width:u,height:d,inlineStyle:r,className:a,interaction:n.interactions.get(c.id)})}c.children&&c.children.length>0&&at(c,n,r,i,a,t,l)}}}function ot(e){let t=/^e(\d+)$/.exec(e);if(t)return{edgeIndex:parseInt(t[1],10),role:`bridge`};let n=/^e(\d+)_([st])(\d+)$/.exec(e);if(n)return{edgeIndex:parseInt(n[1],10),role:n[2]===`s`?`source`:`target`,level:parseInt(n[3],10)}}function st(e){if(e.length===0)return{x:0,y:0};if(e.length===1)return e[0];let t=0;for(let n=1;n<e.length;n++){let r=e[n].x-e[n-1].x,i=e[n].y-e[n-1].y;t+=Math.sqrt(r*r+i*i)}let n=t/2;for(let t=1;t<e.length;t++){let r=e[t].x-e[t-1].x,i=e[t].y-e[t-1].y,a=Math.sqrt(r*r+i*i);if(n<=a){let o=n/a;return{x:e[t-1].x+o*r,y:e[t-1].y+o*i}}n-=a}return e[e.length-1]}function ct(e,t,n,r,i,a){let o=new Map;lt(e,o,0,0);let s=new Map;dt(e,s,0,0,o);let c=0;for(let[e,r]of s){let i=t.edges[e];if(!i)continue;let o=[],s=e=>{!e||e.points.length===0||(o.length>0?o.push(...e.points.slice(1)):o.push(...e.points))},l=[...r.sourceHops.keys()].sort((e,t)=>t-e);for(let e of l)s(r.sourceHops.get(e));s(r.bridge);let u=[...r.targetHops.keys()].sort((e,t)=>e-t);for(let e of u)s(r.targetHops.get(e));let d;i.label&&o.length>=2&&(d=r.bridge?.labelPosition??st(o));let f=ut(o,a,c);f!==o&&c++,i.label&&f!==o&&f.length>=2&&(d=st(f)),n.push({source:i.source,target:i.target,label:i.label,style:i.style,hasArrowStart:i.hasArrowStart,hasArrowEnd:i.hasArrowEnd,points:_e(t).has(e)?[...f].reverse():f,labelPosition:d,inlineStyle:mt(e,t),id:i.id,animate:i.animate})}}function lt(e,t,n,r){t.set(e.id,{x:n,y:r});for(let i of e.children??[]){let e=i.x??0,a=i.y??0;lt(i,t,n+e,r+a)}}function ut(e,t,n=0){if(e.length<2)return e;let r=!1;for(let t=1;t<e.length;t++){let n=Math.abs(e[t].x-e[t-1].x),i=Math.abs(e[t].y-e[t-1].y);if(n>1&&i>1){r=!0;break}}if(!r)return e;let i=[e[0]];for(let r=1;r<e.length;r++){let a=i[i.length-1],o=e[r],s=Math.abs(o.x-a.x),c=Math.abs(o.y-a.y);if(s>1&&c>1){if(t){let e=n%2==0,r=Math.floor(n/2)*12,s=e?t.rightX+r:t.leftX-r;i.push({x:s,y:a.y}),i.push({x:s,y:o.y})}else{let e=(a.y+o.y)/2;i.push({x:a.x,y:e}),i.push({x:o.x,y:e})}}i.push(o)}return i}function dt(e,t,n,r,i){if(e.edges)for(let a of e.edges){let e=ot(a.id);if(!e)continue;let{edgeIndex:o}=e,s=a.container,c=s?i.get(s):void 0,l=c?.x??n,u=c?.y??r,d=Je(a,l,u),f=Ye(a,l,u),p=t.get(o)??{sourceHops:new Map,targetHops:new Map};t.set(o,p);let m={edgeIndex:o,points:d,labelPosition:f};e.role===`bridge`?p.bridge=m:e.role===`source`?p.sourceHops.set(e.level,m):p.targetHops.set(e.level,m)}if(e.children)for(let a of e.children)dt(a,t,n+(a.x??0),r+(a.y??0),i)}function ft(e,t){for(let n of e){if(n.id===t)return n;let e=ft(n.children,t);if(e)return e}}function pt(e,t){t.add(e.id);for(let n of e.children)pt(n,t)}function mt(t,n){let r,i=n.linkStyles.get(`default`);i&&(r={...i});let a=n.linkStyles.get(t);return a&&(r=r?{...r,...a}:{...a}),r&&(0,e.dropInvalidColors)(r)}var ht=10,gt=14,_t=14,vt=10,yt=24,bt=400,xt=new Set([`rectangle`,`rounded`,`subroutine`]);function St(e){let t=e===`TD`||e===`TB`||e===`BT`,n=e===`BT`||e===`RL`?-1:1;return{span:e=>{let[r,i]=t?[e.y,e.y+e.height]:[e.x,e.x+e.width],a=n*r,o=n*i;return{a0:Math.min(a,o),a1:Math.max(a,o),c0:t?e.x:e.y,c1:t?e.x+e.width:e.y+e.height}},toPoint:({a:e,c:r})=>t?{x:r,y:n*e}:{x:n*e,y:r}}}function Ct(e,t,n){let r=Math.min(e.a,t.a),i=Math.max(e.a,t.a),a=Math.min(e.c,t.c),o=Math.max(e.c,t.c);return i>n.a0&&r<n.a1&&o>n.c0&&a<n.c1}var wt=(e,t)=>({a0:e.a0-t,a1:e.a1+t,c0:e.c0-t,c1:e.c1+t});function Tt(e,t){let n=e.span({x:t.x,y:t.y,width:0,height:0});return{a:n.a0,c:n.c0}}function Et(e,t,n){let r=e.c===t.c;for(let i=1;i<n.length;i++){let a=n[i-1],o=n[i];if(a.c===o.c===r){if(r){let n=Math.abs(e.c-a.c),r=Math.min(Math.max(e.a,t.a),Math.max(a.a,o.a))-Math.max(Math.min(e.a,t.a),Math.min(a.a,o.a));if(n<gt&&r>0)return!0}else{let n=Math.abs(e.a-a.a),r=Math.min(Math.max(e.c,t.c),Math.max(a.c,o.c))-Math.max(Math.min(e.c,t.c),Math.min(a.c,o.c));if(n<gt&&r>0)return!0}}}return!1}function Dt(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.a===n.a&&e.c===n.c||t.push(n)}for(let e=t.length-2;e>0;e--){let n=t[e-1],r=t[e],i=t[e+1];(n.a===r.a&&r.a===i.a||n.c===r.c&&r.c===i.c)&&t.splice(e,1)}return t}var Ot=e=>{let t=0;for(let n=1;n<e.length;n++)t+=Math.abs(e[n].a-e[n-1].a)+Math.abs(e[n].c-e[n-1].c);return t};function kt(e,t,n,r,i,a=[]){let o=St(i),s=o.span(e),c=o.span(t),l=s.a1<=c.a0,u=c.a1<=s.a0;if(!l&&!u)return;let d=o.span(r),f={a0:d.a0+vt,a1:d.a1-vt,c0:d.c0+vt,c1:d.c1-vt},p=a.map(e=>e.map(e=>Tt(o,e))),m=n.map(e=>wt(o.span(e),ht)),h=e=>(e.c0+e.c1)/2,g=e=>(e.a0+e.a1)/2,_=e=>xt.has(e.shape),v=e=>{for(let t of e)if(t.a<f.a0||t.a>f.a1||t.c<f.c0||t.c>f.c1)return!1;for(let t=1;t<e.length;t++){let n=e[t-1],r=e[t];if(n.a!==r.a&&n.c!==r.c||m.some(e=>Ct(n,r,e))||Ct(n,r,s)||Ct(n,r,c)||p.some(e=>Et(n,r,e)))return!1}return!0},y=new Set([h(s),h(c),f.c0,f.c1]);for(let e of m)y.add(e.c0-1),y.add(e.c1+1);for(let e of[s,c])y.add(e.c0-ht),y.add(e.c1+ht);let b=(e,t,n)=>_(e)?n>=t.c0+4&&n<=t.c1-4:Math.abs(n-h(t))<.5,x=[];if(l){let n=(c.a0-s.a1)/2,r=s.a1+Math.min(_t,n),i=c.a0-Math.min(_t,n);for(let n of y){b(e,s,n)&&b(t,c,n)&&x.push([{a:s.a1,c:n},{a:c.a0,c:n}]),x.push([{a:s.a1,c:h(s)},{a:r,c:h(s)},{a:r,c:n},{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}]),b(t,c,n)&&x.push([{a:s.a1,c:h(s)},{a:r,c:h(s)},{a:r,c:n},{a:c.a0,c:n}]),b(e,s,n)&&x.push([{a:s.a1,c:n},{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}]);let a=n>=s.c1?s.c1:n<=s.c0?s.c0:void 0;if(a!==void 0){let e=b(t,c,n)?[{a:c.a0,c:n}]:[{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}];x.push([{a:g(s),c:a},{a:g(s),c:n},...e])}}}else for(let t of y){let n=t>=c.c1?c.c1:t<=c.c0?c.c0:void 0;if(n===void 0)continue;b(e,s,t)&&x.push([{a:s.a0,c:t},{a:g(c),c:t},{a:g(c),c:n}]);let r=n===c.c1?s.c1:s.c0;x.push([{a:g(s),c:r},{a:g(s),c:t},{a:g(c),c:t},{a:g(c),c:n}])}let S,C=1/0;for(let t of x){let n=Dt(t);if(n.length<2||!v(n))continue;let r=e.shape===`diamond`&&n[0].a===s.a1?bt:0,i=Ot(n)+yt*(n.length-2)+r;i<C&&(S=n,C=i)}return S?.map(o.toPoint)}function At(e){let t={x:e[0].x,y:e[0].y},n=-1;for(let r=1;r<e.length;r++){let i=e[r-1],a=e[r],o=Math.abs(a.x-i.x)+Math.abs(a.y-i.y);o>n&&(n=o,t={x:(i.x+a.x)/2,y:(i.y+a.y)/2})}return t}var jt=`__zm_spine__`,Mt=8,Nt=6,Pt=12,Ft=4,It=4,Lt=.25,Rt=.02,zt=40,Bt=e=>e===`TD`||e===`TB`||e===`BT`,Vt=e=>e.startsWith(jt);function Ht(e){return e.flatMap(e=>[e,...Ht(e.children)])}function B(e){let t=new Set(e.nodeIds);for(let n of e.children)for(let e of B(n))t.add(e);return t}function Ut(e){if(e.subgraphs.length===0||pe(e)||we(e.subgraphs))return!1;for(let t of e.nodes.keys())if(Vt(t))return!1;for(let t of e.edges)if(!e.nodes.has(t.source)||!e.nodes.has(t.target))return!1;let t=Ht(e.subgraphs);return!t.some(t=>e.nodes.has(t.id))&&t.every(t=>[...B(t)].some(t=>e.nodes.has(t)))}function Wt(e,t){let n=Bt(t),r=e=>n?[e.y,e.y+e.height]:[e.x,e.x+e.width],i=[...e].sort((e,t)=>{let[n,i]=r(e),[a,o]=r(t);return(n+i)/2-(a+o)/2}),a=[];for(let e of i){let[t,n]=r(e),i=a[a.length-1];i&&t<i.end?(i.end=Math.min(i.end,n),i.ids.push(e.id)):a.push({end:n,ids:[e.id]})}(t===`BT`||t===`RL`)&&a.reverse();let o=new Map;return a.forEach((e,t)=>e.ids.forEach(e=>o.set(e,t))),o}function Gt(e,t,n){let r={ghosts:[],edges:[]};for(let i of e){let e=[...B(i)].filter(e=>t.has(e));if(e.length===0)continue;let a=e.map(e=>t.get(e)),o=Math.min(...a),s=Math.max(...a),c=new Map;for(let a=o;a<=s;a++){let o=e.filter(e=>t.get(e)===a).sort((e,t)=>n(e)-n(t));if(o.length>0)c.set(a,o[0]);else{let e=`${jt}${i.id}__${a}`;r.ghosts.push({id:e,subgraph:i.id}),c.set(a,e)}}for(let e=o;e<s;e++){let t=c.get(e),n=c.get(e+1);!Vt(t)&&!Vt(n)||r.edges.push({source:t,target:n,style:`invisible`,hasArrowStart:!1,hasArrowEnd:!1})}}return r}function Kt(e,t,n,r=()=>!1,i=()=>!1){let a=e=>{let n=[...B(e)].filter(e=>t.has(e)).map(e=>t.get(e));return n.length>0?[Math.min(...n),Math.max(...n)]:void 0},o=e=>{let t=[...B(e)].filter(e=>n.has(e)).map(e=>n.get(e));return t.reduce((e,t)=>e+t,0)/t.length},s=e.map(e=>({sg:e,at:a(e)})).filter(e=>!!e.at).sort((e,t)=>e.at[0]-t.at[0]),c=[],l=-1/0;for(let{sg:e,at:t}of s){let n=c[c.length-1];n&&t[0]<=l?(n.push(e),l=Math.max(l,t[1])):(c.push([e]),l=t[1])}for(let t of c){if(t.length<2||t.some((e,n)=>t.slice(n+1).some(t=>r(e,t))))continue;let a=t.some(e=>e.region)||t.some((e,n)=>t.slice(n+1).some(t=>i(e,t)))?-1:1,s=[...t].sort((t,n)=>a*(e.indexOf(n)-e.indexOf(t))),c=t.map(o).sort((e,t)=>e-t),l=s.map((e,t)=>c[t]-o(e));s.forEach((e,t)=>{for(let r of B(e))n.has(r)&&n.set(r,n.get(r)+l[t])})}for(let a of e)Kt(a.children,t,n,r,i)}function qt(e,t,n,r,i){let a=new Map(t);for(let t of r){let r=B(t);for(let e of i.get(t.id)??[])r.add(e);let o=[...r].filter(e=>a.has(e)),s=o.filter(e=>n.has(e));if(s.length===0)continue;let c=Math.min(...s.map(e=>n.get(e))),l=Math.max(...s.map(e=>n.get(e))),u=o.map(e=>a.get(e)),d=Math.min(...u),f=Math.max(...u),p=(d+f)/2,m=0;for(let t of e){if(r.has(t)||Vt(t))continue;let e=n.get(t);if(e===void 0||e<c||e>l)continue;m++;let i=a.get(t);a.set(t,i<=p?Math.min(i,d)-1-m*.001:Math.max(i,f)+1+m*.001)}}let o=new Map(e.map((e,t)=>[e,t]));return[...e].sort((e,t)=>a.get(e)-a.get(t)||o.get(e)-o.get(t))}var Jt=(e,t)=>t>=Math.min(...e)&&t<=Math.max(...e);function Yt(t,n,r){let i=t=>{let a=t.children.map(i),o=[...[...B(t)].flatMap(e=>{let t=n.get(e);return t?[t]:[]}),...a],s=t.region?me:z,c=Math.min(...o.map(e=>e.x))-s.left,l=Math.min(...o.map(e=>e.y))-s.top,u=Math.max(...o.map(e=>e.x+e.width))+s.right,d=Math.max(...o.map(e=>e.y+e.height))+s.bottom,f=t.region?0:(0,e.measureMultilineText)(t.label,r.groupHeader,M.groupHeader).width+24;return{id:t.id,label:t.label,x:c,y:l,width:Math.max(u-c,f),height:d-l,children:a,...t.region?{region:!0}:{}}};return t.map(i)}var Xt=e=>e.flatMap(e=>[e,...Xt(e.children)]);function Zt(e,t,n,r,i,a){let o=Bt(r),s=new Map(Ht(t).map(e=>[e.id,B(e)])),c=new Map,l=!1,u=[],d=e=>o?[e.x,e.x+e.width]:[e.y,e.y+e.height],f=e=>o?[e.y,e.y+e.height]:[e.x,e.x+e.width],p=([e,t],[n,r])=>Math.max(0,Math.min(t,r)-Math.max(e,n)),m=e=>({x:e.x-zt,y:e.y-zt,width:e.width+80,height:e.height+80}),h=(e,t)=>p(f(e),f(t))>0?p(d(e),d(t)):0,g=Xt(e),_=new Map(g.map(e=>[e,m(e)])),v=(e,t,n,r)=>{let i=p(d(e),d(t)),a=p(f(e),f(t));if(i<=0||a<=0)return;let s=i<=a,c=s===o,l=e=>c?e.x:e.y,m=e=>c?e.x+e.width:e.y+e.height,h=e=>(l(e)+m(e))/2,g=h(n)<=h(r)?n:r;u.push({axis:c?`x`:`y`,amount:s?i:a,after:m(g)})};for(let e of g){let t=s.get(e.id),r=[...t].filter(e=>a.has(e)).map(e=>a.get(e)),o=new Set(r);for(let[s,u]of n){if(t.has(s))continue;if(o.has(a.get(s))||!Jt(r,a.get(s))){v(_.get(e),u,e,u);continue}let n=h(_.get(e),u);n<=0||(i.has(e.id)?c.set(e.id,Math.max(c.get(e.id)??0,n)):l=!0)}}let y=(e,t)=>Xt(e.children).includes(t);for(let e=0;e<g.length;e++)for(let t=e+1;t<g.length;t++){let n=g[e],r=g[t];y(n,r)||y(r,n)||v(_.get(n),r,n,r)}return{penetration:c,stuck:l,requests:u}}function Qt(t,n,r){let i=[...t.nodes.keys()],a={...t,subgraphs:[]},o=(0,e.subgraphFeedbackEdges)(t),s=n(a,{feedbackEdges:o}),c=Wt(s.nodes,t.direction),l=Bt(t.direction),u=new Map(s.nodes.map(e=>[e.id,e])),d=e=>{let t=u.get(e);return l?t.x:t.y},f=Ht(t.subgraphs),p=Gt(f,c,d),m=new Map;for(let e of p.ghosts)m.set(e.subgraph,[...m.get(e.subgraph)??[],e.id]);let h=new Map(s.nodes.map(e=>[e.id,d(e.id)]));Kt(t.subgraphs,c,h,(e,n)=>{let r=B(e),i=B(n),a=(e,n)=>t.edges.some(t=>e.has(t.source)&&n.has(t.target));return a(r,i)&&a(i,r)},(n,r)=>(0,e.subgraphsTied)(t,n,r));for(let e of p.ghosts){let t=[...B(f.find(t=>t.id===e.subgraph))].filter(e=>h.has(e)).map(e=>h.get(e));h.set(e.id,t.reduce((e,t)=>e+t,0)/t.length)}let g=new Map(t.nodes);for(let e of p.ghosts)g.set(e.id,{id:e.id,label:` `,shape:`rectangle`});let _=qt([...g.keys()],h,c,f,m),v={...a,nodes:new Map(_.map(e=>[e,g.get(e)])),edges:[...t.edges,...p.edges]},y=new Set(p.edges.map((e,n)=>t.edges.length+n)),b=e=>{let a=new Map,s=new Map;for(let l=0;;l++){let u=new Map(p.ghosts.map(e=>[e.id,Mt+(a.get(e.subgraph)??0)])),d=n(v,{fixedWidths:u,looseEdges:y,detachedEdges:e,walkOrder:i,feedbackEdges:o,forceNodeOrder:!0}),h=new Map(d.nodes.filter(e=>!Vt(e.id)).map(e=>[e.id,e])),g=Yt(t.subgraphs,h,r),_=Zt(g,t.subgraphs,h,t.direction,new Set(m.keys()),c),{penetration:b,stuck:x}=_;if(x)return;if(b.size===0){for(let e=0;_.requests.length>0;e++){if(e===Pt)return;tn(_.requests.reduce((e,t)=>t.amount>e.amount?t:e),[...h.values()],d.edges),g=Yt(t.subgraphs,h,r),_=Zt(g,t.subgraphs,h,t.direction,new Set(m.keys()),c)}let n=en(t,e,h,g,f);return n&&an(d,[...h.values()],g,n,t.direction)}if(l===Nt)return;for(let[e,t]of b){let n=a.get(e)??0,r=s.get(e),i=r?(r.overlap-t)/(n-r.width):0,o=i>Rt?i:Lt;s.set(e,{width:n,overlap:t}),a.set(e,n+t/o+It)}}},x=$t(t,p,c,f);return(x.size>0?b(x):void 0)??b(new Set)}function $t(e,t,n,r){let i=r.map(e=>{let t=B(e);return{inside:t,layers:new Set([...t].filter(e=>n.has(e)).map(e=>n.get(e)))}}),a=e=>{let t=n.get(e.source),r=n.get(e.target);return t===void 0||r===void 0||e.source===e.target?!1:i.some(({inside:n,layers:i})=>n.has(e.source)&&n.has(e.target)&&Array.from({length:Math.max(0,Math.abs(r-t)-1)},(e,n)=>Math.min(t,r)+1+n).some(e=>!i.has(e)))},o=new Set;e.edges.forEach((e,t)=>{a(e)&&o.add(t)});let s=new Map,c=e=>{e.source!==e.target&&(s.set(e.source,(s.get(e.source)??0)+1),s.set(e.target,(s.get(e.target)??0)+1))};e.edges.forEach((e,t)=>{o.has(t)||c(e)}),t.edges.forEach(c);for(let t of[...o]){let n=e.edges[t];(!s.get(n.source)||!s.get(n.target))&&o.delete(t)}return o}function en(e,t,n,r,i){let a=new Map(Xt(r).map(e=>[e.id,e])),o=[];for(let r of t){let t=e.edges[r],s=n.get(t.source),c=n.get(t.target),l=i.filter(e=>{let n=B(e);return n.has(t.source)&&n.has(t.target)}).sort((e,t)=>B(e).size-B(t).size)[0],u=l&&a.get(l.id);if(!s||!c||!u)return;let d=kt(s,c,[...n.values()].filter(e=>e!==s&&e!==c),u,e.direction,o.map(e=>e.points));if(!d)return;o.push({source:t.source,target:t.target,label:t.label,style:t.style,hasArrowStart:t.hasArrowStart,hasArrowEnd:t.hasArrowEnd,points:d,labelPosition:t.label?At(d):void 0,inlineStyle:mt(r,e),id:t.id,animate:t.animate})}return o}function tn(e,t,n){let{axis:r,amount:i,after:a}=e,o=i+Ft,s=t.filter(e=>e[r]>=a),c=Math.min(...s.map(e=>e[r]));for(let e of s)e[r]+=o;let l=e=>{e[r]>=c&&(e[r]+=o)};for(let e of n)e.points.forEach(l),e.labelPosition&&l(e.labelPosition)}var nn=8;function rn(e,t,n,r){let i=Bt(r)?`y`:`x`,a=i===`x`?`y`:`x`,o=i===`x`?`width`:`height`,s=i===`x`?`height`:`width`;for(let{points:r}of e)for(let e=1;e<r.length-1;){let c=e;for(;c+1<r.length-1&&r[c+1][i]===r[e][i];)c++;let l=r.slice(e,c+1),u=l[0],d=Math.min(...l.map(e=>e[a])),f=Math.max(...l.map(e=>e[a])),p=r[e-1][i],m=r[c+1][i],h=n.flatMap(e=>[e[i],e[i]+e[o]].map(t=>({g:e,s:t}))).find(({g:e,s:t})=>Math.abs(u[i]-t)<nn&&f>e[a]&&d<e[a]+e[s]);if(h){let e=h.s+(u[i]>=h.s?nn:-8),n=(e-p)*(m-e)>0,r=t.every(t=>t[i]+t[o]<=e||t[i]>=e||t[a]+t[s]<=d||t[a]>=f);if(n&&r)for(let t of l)t[i]=e}e=c+1}}function an(e,t,n,r,i){let a=[...e.edges.filter(e=>!Vt(e.source)&&!Vt(e.target)),...r],o=Xt(n);rn(a,t,o,i);let s=[...t.map(e=>e.x),...o.map(e=>e.x),...a.flatMap(e=>e.points.map(e=>e.x))],c=[...t.map(e=>e.y),...o.map(e=>e.y),...a.flatMap(e=>e.points.map(e=>e.y))],l=R.padding-Math.min(...s),u=R.padding-Math.min(...c);for(let e of t)e.x+=l,e.y+=u;for(let e of o)e.x+=l,e.y+=u;for(let e of a){for(let t of e.points)t.x+=l,t.y+=u;e.labelPosition&&(e.labelPosition.x+=l,e.labelPosition.y+=u)}let d=0,f=0;for(let e of t)d=Math.max(d,e.x+e.width+R.padding),f=Math.max(f,e.y+e.height+R.padding);for(let e of o)d=Math.max(d,e.x+e.width+R.padding),f=Math.max(f,e.y+e.height+R.padding);for(let e of a){for(let t of e.points)d=Math.max(d,t.x+I.width+R.padding),f=Math.max(f,t.y+I.width+R.padding);e.labelPosition&&(d=Math.max(d,e.labelPosition.x+60+R.padding),f=Math.max(f,e.labelPosition.y+20+R.padding))}return{...e,nodes:t,edges:a,groups:n,width:d,height:f}}var on=12,sn=8,cn=4;function ln(t,n,r){let i=t.map(e=>({axis:e.axis,cross:e.cross,after:e.after??0,rank:0,real:!0})),a=t.map(()=>[]),o=t.map(()=>[]),s=n.flatMap((e,t)=>e.from===e.to?[]:[t]),c=(0,e.findBackEdges)(s.map(e=>({source:String(n[e].from),target:String(n[e].to)})),t.map((e,t)=>String(t))),l=s.map((e,t)=>{let r=n[e];return c.has(t)?{index:e,u:r.to,v:r.from,reversed:!0}:{index:e,u:r.from,v:r.to,reversed:!1}}),u=t.map(()=>[]),d=t.map(()=>0);for(let e of l)u[e.u].push(e.v),d[e.v]++;let f=d.flatMap((e,t)=>e===0?[t]:[]);for(let e=0;e<f.length;e++){let t=f[e];for(let e of u[t])i[e].rank=Math.max(i[e].rank,i[t].rank+2),--d[e]===0&&f.push(e)}let p=l.map(e=>{let t=(i[e.v].rank-i[e.u].rank)/2,r=i[e.u].rank+2*Math.floor(t/2)+1,s=n[e.index].label,c=[e.u];for(let t=i[e.u].rank+1;t<i[e.v].rank;t++){let e=i.length,n=t===r&&s!==void 0;i.push({axis:n?s.axis:0,cross:n?s.cross:0,after:0,rank:t,real:!1}),a.push([]),o.push([]),c.push(e)}c.push(e.v);for(let e=1;e<c.length;e++)o[c[e-1]].push(c[e]),a[c[e]].push(c[e-1]);return{chain:c,labelRank:r}}),m=i.map((e,t)=>t),h=e=>{let t=e;for(;m[t]!==t;)t=m[t]=m[m[t]];return t};for(let{chain:e}of p)for(let t of e)m[h(t)]=h(e[0]);let g=new Map;i.forEach((e,t)=>{let n=h(t);g.set(n,[...g.get(n)??[],t])});let _=i.map(()=>0),v=[],y=[];for(let e of g.values()){let t=un(e,i,a,o,r),n=1/0,s=-1/0;for(let r of e)_[r]=t.get(r),n=Math.min(n,_[r]-i[r].cross/2),s=Math.max(s,_[r]+i[r].cross/2+i[r].after);v.push({min:n,max:s}),y.push(e)}let b=0;y.forEach((e,t)=>{let n=b-v[t].min;for(let t of e)_[t]=_[t]+n;b+=v[t].max-v[t].min+r.nodeSep});let x=Math.max(0,b-r.nodeSep),S=i.reduce((e,t)=>Math.max(e,t.rank),0),C=Array(S+1).fill(0);for(let e of i)C[e.rank]=Math.max(C[e.rank],e.axis);let w=Array(S+1).fill(0);for(let e=1;e<=S;e++)w[e]=w[e-1]+C[e-1]+r.rankSep/2;let T=e=>w[i[e].rank]+C[i[e].rank]/2,E=n.map(()=>[]),D=n.map(()=>void 0);return l.forEach((e,t)=>{let{chain:r,labelRank:a}=p[t],o=r.slice(1,-1),s=o.map(e=>({axis:T(e),cross:_[e]}));if(E[e.index]=e.reversed?s.reverse():s,n[e.index].label){let t=o.find(e=>i[e].rank===a);D[e.index]={axis:T(t),cross:_[t]}}}),{nodes:t.map((e,t)=>({axis:w[i[t].rank]+(C[i[t].rank]-e.axis)/2,cross:_[t]-e.cross/2})),paths:E,labels:D,axisSize:w[S]+C[S],crossSize:x}}function un(e,t,n,r,i){let a=[],o=new Set,s=[...e].sort((e,n)=>t[e].rank-t[n].rank||e-n);for(let e of s){if(o.has(e))continue;let n=[{s:e,next:0}];for(o.add(e),(a[t[e].rank]??=[]).push(e);n.length>0;){let e=n[n.length-1],i=r[e.s][e.next++];i===void 0?n.pop():o.has(i)||(o.add(i),(a[t[i].rank]??=[]).push(i),n.push({s:i,next:0}))}}let c=a.filter(e=>e!==void 0),l=new Map,u=()=>c.forEach(e=>e.forEach((e,t)=>l.set(e,t))),d=()=>{let e=0;for(let t=0;t+1<c.length;t++){let n=c[t].flatMap(e=>r[e].map(t=>[l.get(e),l.get(t)]));for(let t=0;t<n.length;t++)for(let r=t+1;r<n.length;r++){let[i,a]=n[t],[o,s]=n[r];(i-o)*(a-s)<0&&e++}}return e};u();let f=c.map(e=>[...e]),p=d();for(let e=0;e<sn&&p>0;e++){let t=e%2==0,i=c.map((e,t)=>t);t||i.reverse();for(let e of i){let i=t?n:r,a=e=>{let t=i[e];return t.length===0?l.get(e):t.reduce((e,t)=>e+l.get(t),0)/t.length},o=new Map(c[e].map(e=>[e,a(e)]));c[e].sort((e,t)=>o.get(e)-o.get(t)||l.get(e)-l.get(t)),c[e].forEach((e,t)=>l.set(e,t))}let a=d();a<p&&(p=a,f=c.map(e=>[...e]))}f.forEach((e,t)=>c[t]=e);let m=new Map,h=(e,n)=>(t[e].cross+t[n].cross)/2+t[e].after+(t[e].real&&t[n].real?i.nodeSep:Math.min(i.nodeSep,on)),g=(e,t)=>{let n=e.slice(1).map((t,n)=>h(e[n],t)),r=[0];n.forEach((e,t)=>r.push(r[t]+e)),dn(e.map((e,n)=>{let i=(t[e]??[]).filter(e=>m.has(e));return(i.length===0?m.get(e)??0:i.reduce((e,t)=>e+m.get(t),0)/i.length)-r[n]})).forEach((t,n)=>m.set(e[n],t+r[n]))};for(let e of c)g(e,[]);for(let e=0;e<cn;e++){for(let e=1;e<c.length;e++)g(c[e],n);for(let e=c.length-2;e>=0;e--)g(c[e],r)}return m}function dn(e){let t=[];for(let n of e)for(t.push({sum:n,count:1});t.length>1;){let e=t[t.length-1],n=t[t.length-2];if(n.sum/n.count<=e.sum/e.count)break;t.splice(-2,2,{sum:n.sum+e.sum,count:n.count+e.count})}return t.flatMap(e=>Array(e.count).fill(e.sum/e.count))}var fn=28,pn=18,mn=10,hn=32;function gn(t,n={}){let r={...R,...n,fontSizes:j(n.fontSizes)},i=t.direction===`TB`||t.direction===`TD`||t.direction===`BT`,a=t.direction===`BT`||t.direction===`RL`,o=new Map,s=new Map,c=(e,t)=>{o.set(e.id,e),t!==void 0&&s.set(e.id,t);for(let t of e.nodeIds)s.has(t)||s.set(t,e.id);for(let t of e.children)c(t,e.id)};t.subgraphs.forEach(e=>c(e));let l=[...t.nodes.keys()].filter(e=>!o.has(e)),u=new Map(l.map((e,t)=>[e,t])),d=e=>Math.min(...e.nodeIds.map(e=>u.get(e)??1/0),...e.children.map(d)),f=e=>{let t=o.get(e);return t?d(t):u.get(e)??1/0},p=e=>[...l.filter(t=>s.get(t)===e),...(e===void 0?t.subgraphs:o.get(e).children).map(e=>e.id)].map((e,t)=>({id:e,i:t})).sort((e,t)=>f(e.id)-f(t.id)||e.i-t.i).map(e=>e.id),m=e=>{let t=[e];for(let n=s.get(e);n!==void 0;n=s.get(n))t.unshift(n);return t},h=n=>{let a=t.edges[n].label;if(!a)return;let o=(0,e.measureMultilineText)(a,r.fontSizes.edgeLabel,M.edgeLabel),s=o.width+8,c=o.height+6;return i?{axis:c,cross:s}:{axis:s,cross:c}},g=new Map,_=new Map;t.edges.forEach((e,t)=>{if(e.source===e.target){_.set(e.source,[..._.get(e.source)??[],t]);return}let n=m(e.source),r=m(e.target),i=0;for(;n[i]!==void 0&&n[i]===r[i];)i++;if(i>=n.length||i>=r.length)return;let a=i===0?``:n[i-1];g.set(a,[...g.get(a)??[],{index:t,from:n[i],to:r[i]}])});let v=i?a?{axisStart:z.bottom,axisEnd:z.top,crossStart:z.left,crossEnd:z.right}:{axisStart:z.top,axisEnd:z.bottom,crossStart:z.left,crossEnd:z.right}:{axisStart:a?z.right:z.left,axisEnd:a?z.left:z.right,crossStart:z.top,crossEnd:z.bottom},y=(e,t)=>i?{aSize:t,cSize:e}:{aSize:e,cSize:t},b=new Map;for(let e of l){let n=t.nodes.get(e),i=Se(e,n.label,n.shape,r.fontSizes.nodeLabel);b.set(e,y(i.width,i.height))}let x=e=>{let t=_.get(e);if(!i||!t)return 0;let n=Math.max(0,...t.map(e=>(h(e)?.cross??-10)+mn));return fn+(t.length-1)*pn+n},S=t=>{let n=p(t),a=new Map,s=new Map,c=new Map;for(let t of n){let n=o.get(t);if(!n){s.set(t,b.get(t));continue}let l=S(t);a.set(t,l);let u=(0,e.measureMultilineText)(n.label,r.fontSizes.groupHeader,M.groupHeader).width,d=l.axisSize+v.axisStart+v.axisEnd,f=l.crossSize+v.crossStart+v.crossEnd,p=i?0:u+hn,m=i?u+hn:0,h=Math.max(0,p-d),g=Math.max(0,m-f);d+=h,f+=g,s.set(t,{aSize:d,cSize:f}),c.set(t,{axis:v.axisStart+h/2,cross:v.crossStart+g/2})}let l=new Map(n.map((e,t)=>[e,t])),u=g.get(t??``)??[],d=ln(n.map(e=>({axis:s.get(e).aSize,cross:s.get(e).cSize,after:x(e)})),u.map(e=>({from:l.get(e.from),to:l.get(e.to),label:h(e.index)})),{nodeSep:r.nodeSpacing,rankSep:r.layerSpacing}),f=new Map;return u.forEach((e,t)=>f.set(e.index,{mids:d.paths[t],label:d.labels[t]})),{members:n,at:new Map(n.map((e,t)=>[e,d.nodes[t]])),sizes:s,inset:{axis:0,cross:0},axisSize:d.axisSize,crossSize:d.crossSize,routes:f,inner:new Map([...a].map(([e,t])=>[e,{...t,inset:c.get(e)}]))}},C=S(void 0),w=new Map,T=new Map,E=(e,t,n)=>{for(let[r,i]of e.routes)T.set(r,{mids:i.mids.map(e=>({axis:e.axis+t,cross:e.cross+n})),label:i.label&&{axis:i.label.axis+t,cross:i.label.cross+n}});let r=[];for(let i of e.members){let a=e.at.get(i),s=e.sizes.get(i),c={axis:t+a.axis,cross:n+a.cross,...s};w.set(i,c);let l=e.inner.get(i);if(l){let e=o.get(i),t=E(l,c.axis+l.inset.axis,c.cross+l.inset.cross);r.push({id:i,label:e.label,x:0,y:0,width:0,height:0,children:t,...e.region?{region:!0}:{}})}}return r},D=E(C,0,0),O=r.padding,k=C.axisSize,ee=e=>{let t=a?k-e.axis:e.axis;return i?{x:e.cross+O,y:t+O}:{x:t+O,y:e.cross+O}},A=e=>{let t=a?k-e.axis-e.aSize:e.axis;return i?{x:e.cross+O,y:t+O,width:e.cSize,height:e.aSize}:{x:t+O,y:e.cross+O,width:e.aSize,height:e.cSize}},te=e=>{for(let t of e)Object.assign(t,A(w.get(t.id))),te(t.children)};te(D);let ne=l.map(n=>{let r=t.nodes.get(n);return{id:n,label:r.label,shape:r.shape,...A(w.get(n)),inlineStyle:(0,e.resolveNodeStyle)(n,t),className:t.classAssignments.get(n),interaction:t.interactions.get(n)}}),N=new Map(ne.map(e=>[e.id,e])),P=[];t.edges.forEach((e,n)=>{let r=T.get(n);if(!r)return;let i=w.get(e.source),a=w.get(e.target),o=i.axis>a.axis,[s,c]=o?[a,i]:[i,a],l=[{axis:s.axis+s.aSize,cross:s.cross+s.cSize/2},...o?[...r.mids].reverse():r.mids,{axis:c.axis,cross:c.cross+c.cSize/2}],u=[l[0]];for(let e of l.slice(1)){let t=u[u.length-1];if(t.cross!==e.cross){let n=(t.axis+e.axis)/2;u.push({axis:n,cross:t.cross},{axis:n,cross:e.cross})}u.push(e)}let d=qe(_n(u.map(ee)));o&&d.reverse();let f=N.get(e.source),p=N.get(e.target);f&&(d=Me(d,f,!0)),p&&(d=Me(d,p,!1)),P.push({source:e.source,target:e.target,label:e.label,style:e.style,hasArrowStart:e.hasArrowStart,hasArrowEnd:e.hasArrowEnd,points:d,labelPosition:r.label&&ee(r.label),inlineStyle:mt(n,t),id:e.id,animate:e.animate})}),nt(t,N,P);let F=(i?C.crossSize:C.axisSize)+O*2,L=(i?C.axisSize:C.crossSize)+O*2;for(let e of P){for(let t of e.points)F=Math.max(F,t.x+I.width+O),L=Math.max(L,t.y+I.width+O);e.labelPosition&&(F=Math.max(F,e.labelPosition.x+60+O),L=Math.max(L,e.labelPosition.y+20+O))}return{width:F,height:L,nodes:ne,edges:P,groups:D}}function _n(e){return e.filter((t,n)=>{let r=e[n-1],i=e[n+1];return!r||!i||!(r.x===t.x&&t.x===i.x||r.y===t.y&&t.y===i.y)})}function vn(e,t={}){return yn(e,t)}function yn(e,t,n){let r={...R,...t,fontSizes:j(t.fontSizes)};return it(w(Oe(e,r,n),t.layoutCache),e,r.mergeEdges)}function bn(t,n={}){let r=(0,e.withoutOwnClusterEdges)(t);if(n.layout===`simple`&&!pe(r))return gn(r,n);if(n.layout!==void 0&&n.layout!==`elk`&&n.layout!==`simple`)throw Error(`zombie-mermaid: unknown layout ${JSON.stringify(n.layout)}; use 'elk' or 'simple'.`);if(Ut(r)){let e=Qt(r,(e,t)=>yn(e,n,t),j(n.fontSizes));if(e)return e}return vn(r,n)}function xn(e,t={}){return Oe(e,{...R,...t,fontSizes:j(t.fontSizes)})}var Sn=12,Cn=2;function wn(e){return e.flatMap(e=>[e,...wn(e.children)])}function Tn(t,n){let r=n.groupHeader+16;return wn(t).filter(e=>e.label!==``).map(t=>{let i=(0,e.measureMultilineText)(t.label,n.groupHeader,M.groupHeader);return{x:t.x+Sn-Cn,y:t.y+r/2-i.height/2-Cn,width:i.width+4,height:i.height+4}})}function En(e,t,n){let r=t.x-e.x,i=t.y-e.y,a=[-r,r,-i,i],o=[e.x-n.x,n.x+n.width-e.x,e.y-n.y,n.y+n.height-e.y],s=0,c=1;for(let e=0;e<4;e++){let t=a[e],n=o[e];if(t===0){if(n<0)return!1}else{let e=n/t;if(t<0?s=Math.max(s,e):c=Math.min(c,e),s>c)return!1}}return!0}function Dn(e){return{x:e.x+Cn,y:e.y+Cn,width:e.width-4,height:e.height-4}}function On(e,t){let n=e.points,r=t.map(Dn);for(let e=0;e+1<n.length;e++)if(r.some(t=>En(n[e],n[e+1],t)))return!0;return!1}function kn(e){let t=2166136261;for(let n of e.map(e=>`${e.x},${e.y},${e.width},${e.height}`).join(`;`))t=Math.imul(t^n.charCodeAt(0),16777619);return(t>>>0).toString(36)}function An(e,t,n){let r=`zm-title-gap-${kn(e)}`;return{id:r,markup:` <mask id="${r}" maskUnits="userSpaceOnUse" x="0" y="0" width="${t}" height="${n}">\n <rect x="0" y="0" width="${t}" height="${n}" fill="#fff" />\n${e.map(e=>` <rect x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" fill="#000" />`).join(`
|
|
8
|
+
}`;function D(t,n,r){return(0,e.measureTextWidth)(t,n,r)}function O(e,t){return e.length*t*.6}var k=`'JetBrains Mono'`,ee=`${k}, 'SF Mono', 'Fira Code', ui-monospace, monospace`,A={nodeLabel:13,edgeLabel:11,groupHeader:12};function j(e){return{nodeLabel:e?.nodeLabel??A.nodeLabel,edgeLabel:e?.edgeLabel??A.edgeLabel,groupHeader:e?.groupHeader??A.groupHeader}}var M={nodeLabel:500,edgeLabel:400,groupHeader:600},te=12,ne=12,N={horizontal:20,vertical:10,diamondExtra:24},P={outerBox:1,innerBox:.75,connector:1},F=`0.35em`,I={width:8,height:5};function L(t,n,r,i){return(0,e.buildStyleBlock)(t,n?{family:T,faceCss:E}:!1,r,i)}var R={font:`Inter`,padding:40,nodeSpacing:28,layerSpacing:48,mergeEdges:!0,thoroughness:3,fontSizes:A},re={flowchart:`DOWN`,state:`DOWN`,class:`DOWN`,er:`DOWN`,c4:`DOWN`};function ie(e,t){switch(e){case`LR`:return`RIGHT`;case`RL`:return`LEFT`;case`BT`:return`UP`;case`TD`:case`TB`:return`DOWN`;default:return t}}function ae(e){let t=typeof e==`number`?{top:e,left:e,bottom:e,right:e}:e;return`[top=${t.top},left=${t.left},bottom=${t.bottom},right=${t.right}]`}function oe(e){return{"elk.algorithm":`layered`,"elk.direction":e.direction,"elk.spacing.nodeNode":String(e.nodeSpacing),"elk.layered.spacing.nodeNodeBetweenLayers":String(e.layerSpacing),"elk.padding":ae(e.padding),"elk.edgeRouting":`ORTHOGONAL`}}function se(e,t,n){let r={id:e,width:t.width,height:t.height};return n!==void 0&&(r.labels=[{text:n}]),r}var ce={"elk.edgeLabels.inline":`true`,"elk.edgeLabels.placement":`CENTER`};function le(t,n){let r=(0,e.measureMultilineText)(t,n.fontSize,M.edgeLabel),i={text:t,width:r.width+8,height:r.height+6};return n.layoutOptions&&(i.layoutOptions={...n.layoutOptions}),i}function ue(e){let t={id:e.id,sources:[e.source],targets:[e.target]};return e.label&&(t.labels=[le(e.label,e.labelStyle)]),t}var de={"state-start":`FIRST`},fe={"elk.layered.cycleBreaking.strategy":`MODEL_ORDER`,"elk.layered.compaction.postCompaction.strategy":`NONE`};function pe(e){for(let t of e.nodes.values())if(t.shape===`state-start`||t.shape===`state-end`)return!0;return!1}var z={top:44,left:16,bottom:16,right:16},me={top:16,left:16,bottom:16,right:16};function he(e){let t=new Map;for(let n of e.edges){if(!n.label)continue;let e=`${n.source}\0${n.target}`,r=(t.get(e)??0)+1;if(r>=3)return!0;t.set(e,r)}return!1}var ge=new WeakMap;function _e(t,n){let r=ge.get(t);return r||(r=pe(t)||we(t.subgraphs)?new Set:(0,e.findBackEdgeIndexes)(t,n?.walkOrder,n?.feedbackEdges??(0,e.subgraphFeedbackEdges)(t)),ge.set(t,r)),r}function ve(e,t){for(let n=0;n<e.edges.length;n++){let r=e.edges[n];if(t.has(r.source)||t.has(r.target))return n}return 1/0}function ye(e){return ie(e,re.flowchart)}function be(e){return{...oe(e),"elk.spacing.edgeEdge":`12`,"elk.layered.spacing.edgeEdgeBetweenLayers":`12`,"elk.layered.spacing.edgeNodeBetweenLayers":`12`,"elk.layered.nodePlacement.bk.fixedAlignment":`BALANCED`,"elk.contentAlignment":`H_CENTER V_CENTER`}}function xe(e){return{fontSize:e.fontSizes.edgeLabel,layoutOptions:ce}}function Se(t,n,r,i){let a=(0,e.measureMultilineText)(n,i,M.nodeLabel),o=a.width+N.horizontal*2,s=a.height+N.vertical*2;if(r===`diamond`){let e=Math.max(o,s)+N.diamondExtra;o=e,s=e}if(r===`circle`||r===`doublecircle`){let e=Math.ceil(Math.sqrt(o*o+s*s))+8;o=r===`doublecircle`?e+12:e,s=o}return r===`hexagon`&&(o+=N.horizontal),(r===`trapezoid`||r===`trapezoid-alt`||r===`parallelogram`||r===`parallelogram-alt`)&&(o+=N.horizontal),r===`asymmetric`&&(o+=12),r===`cylinder`&&(s+=14),r===`state-start`||r===`state-end`||n===``&&r===`diamond`?{width:28,height:28}:n===``&&r===`fork-join`?{width:70,height:10}:(o=Math.max(o,60),s=Math.max(s,36),{width:o,height:s})}var Ce=` root`;function we(e){for(let t of e)if(t.direction!==void 0||we(t.children))return!0;return!1}function Te(e,t){for(let n of e.nodeIds)t.add(n);for(let n of e.children)Te(n,t)}function Ee(e){let t=new Map;function n(e,r){let i=[...r,e.id];t.set(e.id,i);for(let t of e.children)n(t,i)}for(let t of e)n(t,[]);return t}function De(e,t){let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n++;return n}function Oe(e,t,n){let r=t,i=new Set,a=new Set;for(let t of e.subgraphs)a.add(t.id),Ae(t,i,a);let o=je(e.subgraphs),s=Ee(e.subgraphs),c=e=>e?s.get(e)??[]:[],l=new Map;l.set(null,[]);let u=[];for(let t=0;t<e.edges.length;t++){let n=e.edges[t],r=o.get(n.source),i=o.get(n.target);if(r&&r===i){let e=l.get(r)??[];l.set(r,e),e.push({index:t,edge:n})}else!r&&!i?l.get(null).push({index:t,edge:n}):u.push({index:t,edge:n,srcChain:c(r),tgtChain:c(i)})}let d=we(e.subgraphs),f=[],p=[],m={...be({direction:ye(e.direction),nodeSpacing:r.nodeSpacing,layerSpacing:r.layerSpacing,padding:r.padding}),"elk.layered.thoroughness":String(R.thoroughness),"elk.layered.highDegreeNodes.treatment":`false`,"elk.layered.compaction.postCompaction.strategy":(e.subgraphs.length===0||he(e))&&!n?.forceNodeOrder?`NONE`:`LEFT_RIGHT_CONSTRAINT_LOCKING`,"elk.layered.considerModelOrder.strategy":`NODES_AND_EDGES`,...he(e)?{"elk.spacing.edgeEdge":`40`}:{},...n?.forceNodeOrder?{"elk.layered.crossingMinimization.forceNodeModelOrder":`true`}:{},...pe(e)?fe:{},"elk.layered.wrapping.strategy":`OFF`,"elk.hierarchyHandling":d?`SEPARATE`:`INCLUDE_CHILDREN`},h=new Map,g=new Map;function _(e,t){let n=h.get(e)??new Set;h.set(e,n),n.add(t)}function v(e,t){let n=g.get(e)??[];g.set(e,n),n.push(t)}if(d)for(let{index:e,edge:t,srcChain:n,tgtChain:i}of u){let a=De(n,i),o=t.source;if(n.length>a){for(let r=n.length-1;r>=a;r--){let i=n[r],a=`${i}_out_${e}`;_(i,a);let o=r===n.length-1?t.source:`${n[r+1]}_out_${e}`;v(i,{id:`e${e}_s${r}`,sources:[o],targets:[a]})}o=`${n[a]}_out_${e}`}let s=t.target;if(i.length>a){for(let n=a;n<=i.length-1;n++){let r=i[n],a=`${r}_in_${e}`;_(r,a);let o=n===i.length-1?t.target:`${i[n+1]}_in_${e}`;v(r,{id:`e${e}_t${n}`,sources:[a],targets:[o]})}s=`${i[a]}_in_${e}`}v(a>0?n[a-1]:Ce,ue({id:`e${e}`,source:o,target:s,label:t.label,labelStyle:xe(r)}))}for(let[t,o]of e.nodes)if(!i.has(t)&&!a.has(t)){let i=Se(t,o.label,o.shape,r.fontSizes.nodeLabel),a=n?.fixedWidths?.get(t);a!==void 0&&(i.width=a);let s=se(t,i,o.label),c=pe(e)?de[o.shape]:void 0;c!==void 0&&(s.layoutOptions={"elk.layered.layering.layerConstraint":c}),f.push(s)}let y=pe(e),b=f.length,x=y?e.subgraphs:[...e.subgraphs].reverse();for(let t of x)f.push(ke(t,e,r,l,h,g,e.direction));if(y&&e.subgraphs.length>0){let t=f.map((t,n)=>{if(n<b)return ve(e,new Set([t.id]));let r=e.subgraphs[n-b],i=ve(e,new Set([r.id]));if(i!==1/0)return i;let a=new Set;return Te(r,a),ve(e,a)}),n=f.map((e,t)=>t).sort((e,n)=>t[e]-t[n]||e-n).map(e=>f[e]);f.splice(0,f.length,...n)}let S=_e(e,n),C=n?.feedbackEdges,w=l.get(null),T=C?.size?[...w.filter(e=>C.has(e.index)),...w.filter(e=>!C.has(e.index))]:w;for(let{index:e,edge:t}of T){if(t.source===t.target||n?.detachedEdges?.has(e))continue;let i=ue({id:`e${e}`,source:S.has(e)?t.target:t.source,target:S.has(e)?t.source:t.target,label:t.label,labelStyle:xe(r)});n?.looseEdges?.has(e)&&(i.layoutOptions={...i.layoutOptions,"elk.layered.priority.straightness":`0`}),p.push(i)}if(d)for(let e of g.get(Ce)??[])p.push(e);else for(let{index:e,edge:t}of u)p.push(ue({id:`e${e}`,source:S.has(e)?t.target:t.source,target:S.has(e)?t.source:t.target,label:t.label,labelStyle:xe(r)}));return{id:`root`,layoutOptions:m,children:f,edges:p}}function ke(t,n,r,i,a,o,s){let c=t.direction!==void 0&&(0,e.subgraphDirectionIsHonored)(t,n)?t.direction:s,l=be({direction:ye(c),nodeSpacing:r.nodeSpacing,layerSpacing:r.layerSpacing,padding:t.region?me:z}),u,d=a.get(t.id);d&&d.size>0&&(u=[...d].map(e=>({id:e})));let f=[];for(let e of t.nodeIds){let t=n.nodes.get(e);if(t){let n=Se(e,t.label,t.shape,r.fontSizes.nodeLabel);f.push(se(e,n,t.label))}}let p=t.children.some(e=>e.region)?t.children:[...t.children].reverse();for(let e of p)f.push(ke(e,n,r,i,a,o,c));let m=[],h=i.get(t.id)??[],g=_e(n);for(let{index:e,edge:t}of h)t.source!==t.target&&m.push(ue({id:`e${e}`,source:g.has(e)?t.target:t.source,target:g.has(e)?t.source:t.target,label:t.label,labelStyle:xe(r)}));for(let e of o.get(t.id)??[])m.push(e);return{id:t.id,layoutOptions:l,labels:t.label?[{text:t.label}]:void 0,ports:u,children:f,edges:m}}function Ae(e,t,n){for(let n of e.nodeIds)t.add(n);for(let r of e.children)n.add(r.id),Ae(r,t,n)}function je(e){let t=new Map;function n(e){for(let n of e.nodeIds)t.set(n,e.id);for(let t of e.children)n(t)}for(let t of e)n(t);return t}function Me(e,t,n){if(e.length<2||t.shape===`rectangle`||t.shape===`rounded`||t.shape===`stadium`)return e;let r=[...e];if(t.shape===`diamond`){if(n)r[0]=Ne(e[0],e[1],t);else{let n=e.length-1;r[n]=Ne(e[n],e[n-1],t)}}if(t.shape===`asymmetric`){let i=n?0:e.length-1,a=e[i],o=t.height/2,s=Math.abs(a.y-(t.y+o));Math.abs(a.x-t.x)<.5&&s<o&&(r[i]={x:t.x+12*(1-s/o),y:a.y})}return r}function Ne(e,t,n){let r=n.x+n.width/2,i=n.y+n.height/2,a={x:r,y:n.y},o={x:n.x+n.width,y:i},s={x:r,y:n.y+n.height},c={x:n.x,y:i},l=e.x-t.x,u=e.y-t.y;if(Math.abs(l)<Math.abs(u)){let t=e.x;return u>0?t<=r?Fe(t,c,a)??a:Fe(t,a,o)??a:t<=r?Fe(t,s,c)??s:Fe(t,o,s)??s}{let t=e.y;return l>0?t<=i?Pe(t,a,c)??c:Pe(t,c,s)??c:t<=i?Pe(t,a,o)??o:Pe(t,o,s)??o}}function Pe(e,t,n){let r=n.y-t.y;if(Math.abs(r)<.001)return null;let i=(e-t.y)/r;return i<0||i>1?null:{x:t.x+i*(n.x-t.x),y:e}}function Fe(e,t,n){let r=n.x-t.x;if(Math.abs(r)<.001)return null;let i=(e-t.x)/r;return i<0||i>1?null:{x:e,y:t.y+i*(n.y-t.y)}}var Ie=12;function Le(e,t,n){if(e.length===0)return;let r=n===`LR`||n===`RL`,i=new Set;for(let e of t)i.add(`${e.source}:${e.target}`),i.add(`${e.target}:${e.source}`);let a=R.layerSpacing*.6,o=[...e].sort((e,t)=>r?e.x-t.x:e.y-t.y),s=[],c=[o[0]];for(let e=1;e<o.length;e++){let t=(r?o[e].x:o[e].y)-(r?o[e-1].x:o[e-1].y),n=c.some(t=>i.has(`${t.id}:${o[e].id}`));t<=a&&!n?c.push(o[e]):(s.push(c),c=[o[e]])}s.push(c);let l=new Map;for(let e of s){if(e.length<=1)continue;let t=e.map(e=>r?e.x:e.y),n=Math.min(...t),i=Math.max(...t);if(i-n<=1)continue;let a=(n+i)/2;for(let t of e){let e=a-(r?t.x:t.y);Math.abs(e)>.5&&(r?t.x=a:t.y=a,l.set(t.id,e))}}if(l.size===0)return;let u=r?`x`:`y`,d=(e,t,n,r)=>{let i=e[t],a=i[u];i[u]+=r;let[o,s,c]=[1,2,3].map(r=>e[t+r*n]);if(o[u]===a)o[u]+=r;else if(s&&c&&s[u]===o[u]){let e=Math.sign(o[u]-a),t=o[u]+e*Math.max(0,Ie-e*(o[u]-i[u]));e*(c[u]-t)>0&&(o[u]=s[u]=t)}};for(let e of t){let{points:t}=e;if(t.length<2)continue;let n=l.get(e.source),r=l.get(e.target);n!=null&&d(t,0,1,n),r!=null&&d(t,t.length-1,-1,r)}}var Re=.5;function ze(e,t,n){for(let r=0;r<e.length-1;r++){let i=e[r],a=e[r+1],o=Math.min(i.x,a.x),s=Math.max(i.x,a.x),c=Math.min(i.y,a.y),l=Math.max(i.y,a.y);for(let e of t){if(n.has(e.id))continue;let t=e.x+Re,r=e.x+e.width-Re,i=e.y+Re,a=e.y+e.height-Re;if(!(t>=r||i>=a)&&o<r&&s>t&&c<a&&l>i)return!1}}return!0}function Be(e,t,n){let r=[];for(let i of n)e>=i.x&&e<=i.x+i.width&&t>=i.y&&t<=i.y+i.height&&(r.push(i),r.push(...Be(e,t,i.children)));return r}function Ve(e,t,n,r,i){let a=i===`LR`,o=i===`RL`,s=i===`BT`,c=a||o,l=new Set(Be(t,n,r).map(e=>e.id)),u=Be(c?e:t,c?n:e,r).find(e=>!l.has(e.id));return u?a?u.x-12:o?u.x+u.width+12:s?u.y+u.height+12:u.y-12:e}var He=2;function Ue(e,t,n,r,i){for(let a of e){if(t.has(a)||a.source===a.target)continue;let e=a.source===n?a.points[0]:a.target===n?a.points[a.points.length-1]:void 0;if(e&&Math.abs((i?e.x:e.y)-r)<=He)return!0}return!1}function We(e,t,n,r){let i=new Map(t.map(e=>[e.id,e])),a=new Set,o=r===`LR`,s=r===`RL`,c=r===`BT`,l=o||s,u=new Map;for(let t of e){if(t.source===t.target)continue;let e=u.get(t.source)??[];u.set(t.source,e),e.push(t)}for(let[d,f]of u){if(f.length<2)continue;let u=f[0].style;if(f.some(e=>e.label||e.style!==u))continue;let p=i.get(d);if(!p)continue;let m=[];for(let e of f){let t=i.get(e.target);t&&(o?t.x>p.x+p.width:s?t.x+t.width<p.x:c?t.y+t.height<p.y:t.y>p.y+p.height)&&m.push({edge:e,node:t})}if(m.length<2)continue;let h=p.x+p.width/2,g=p.y+p.height/2;if(l){let i=o?p.x+p.width:p.x,s=g;if(Ue(e,new Set(m.map(e=>e.edge)),d,i,!0))continue;let c=i+((o?Math.min(...m.map(e=>e.node.x)):Math.max(...m.map(e=>e.node.x+e.node.width)))-i)/2;c=Ve(c,h,g,n,r);let l=[];for(let{edge:e,node:n}of m){let r=o?n.x:n.x+n.width,a=n.y+n.height/2,u=[{x:i,y:s},{x:c,y:s},{x:c,y:a},{x:r,y:a}];ze(u,t,new Set([d,n.id]))&&l.push({edge:e,points:u})}if(l.length<2)continue;for(let{edge:e,points:t}of l)e.points=t,a.add(e)}else{let i=h,o=c?p.y:p.y+p.height;if(Ue(e,new Set(m.map(e=>e.edge)),d,o,!1))continue;let s=o+((c?Math.max(...m.map(e=>e.node.y+e.node.height)):Math.min(...m.map(e=>e.node.y)))-o)/2;s=Ve(s,h,g,n,r);let l=[];for(let{edge:e,node:n}of m){let r=n.x+n.width/2,a=c?n.y+n.height:n.y,u=[{x:i,y:o},{x:i,y:s},{x:r,y:s},{x:r,y:a}];ze(u,t,new Set([d,n.id]))&&l.push({edge:e,points:u})}if(l.length<2)continue;for(let{edge:e,points:t}of l)e.points=t,a.add(e)}}let d=new Map;for(let t of e){if(a.has(t)||t.source===t.target)continue;let e=d.get(t.target)??[];d.set(t.target,e),e.push(t)}for(let[a,u]of d){if(u.length<2)continue;let d=u[0].style;if(u.some(e=>e.label||e.style!==d))continue;let f=i.get(a);if(!f)continue;let p=[];for(let e of u){let t=i.get(e.source);t&&(o?t.x+t.width<f.x:s?t.x>f.x+f.width:c?t.y>f.y+f.height:t.y+t.height<f.y)&&p.push({edge:e,node:t})}if(p.length<2)continue;let m=f.x+f.width/2,h=f.y+f.height/2;if(l){let i=o?f.x:f.x+f.width,s=h;if(Ue(e,new Set(p.map(e=>e.edge)),a,i,!0))continue;let c=o?Math.max(...p.map(e=>e.node.x+e.node.width)):Math.min(...p.map(e=>e.node.x)),l=c+(i-c)/2;l=Ve(l,m,h,n,r);let u=[];for(let{edge:e,node:n}of p){let r=o?n.x+n.width:n.x,c=n.y+n.height/2,d=[{x:r,y:c},{x:l,y:c},{x:l,y:s},{x:i,y:s}];ze(d,t,new Set([n.id,a]))&&u.push({edge:e,points:d})}if(u.length<2)continue;for(let{edge:e,points:t}of u)e.points=t}else{let i=m,o=c?f.y+f.height:f.y;if(Ue(e,new Set(p.map(e=>e.edge)),a,o,!1))continue;let s=c?Math.min(...p.map(e=>e.node.y)):Math.max(...p.map(e=>e.node.y+e.node.height)),l=s+(o-s)/2;l=Ve(l,m,h,n,r);let u=[];for(let{edge:e,node:n}of p){let r=n.x+n.width/2,s=[{x:r,y:c?n.y:n.y+n.height},{x:r,y:l},{x:i,y:l},{x:i,y:o}];ze(s,t,new Set([n.id,a]))&&u.push({edge:e,points:s})}if(u.length<2)continue;for(let{edge:e,points:t}of u)e.points=t}}}var Ge=1.5,Ke=.01;function qe(e){let t=e.map(e=>({...e})),n=0;for(;n+3<t.length;){let[e,r,i,a]=[t[n],t[n+1],t[n+2],t[n+3]],o=Math.abs(e.x-r.x)<Ke&&Math.abs(i.x-a.x)<Ke&&Math.abs(r.y-i.y)<Ke&&Math.abs(r.x-i.x)<=Ge&&Math.abs(r.x-i.x)>=Ke,s=Math.abs(e.y-r.y)<Ke&&Math.abs(i.y-a.y)<Ke&&Math.abs(r.x-i.x)<Ke&&Math.abs(r.y-i.y)<=Ge&&Math.abs(r.y-i.y)>=Ke;if(o){let r=(e.x+a.x)/2;t.splice(n,4,{x:r,y:e.y},{x:r,y:a.y})}else if(s){let r=(e.y+a.y)/2;t.splice(n,4,{x:e.x,y:r},{x:a.x,y:r})}else n++}return t}function Je(e,t=0,n=0){let r=[];if(!e.sections||e.sections.length===0)return r;let i=e.sections[0];if(r.push({x:i.startPoint.x+t,y:i.startPoint.y+n}),i.bendPoints)for(let e of i.bendPoints)r.push({x:e.x+t,y:e.y+n});return r.push({x:i.endPoint.x+t,y:i.endPoint.y+n}),r}function Ye(e,t=0,n=0){if(!e.labels||e.labels.length===0)return;let r=e.labels[0];if(r.x!=null&&r.y!=null)return{x:r.x+(r.width??0)/2+t,y:r.y+(r.height??0)/2+n}}var Xe=16,Ze=28,Qe=18,$e=28,et=10;function tt(e,t){let n=e.x+e.width,r=e.y+e.height/2,i=Math.min($e,e.height*.6)/2,a=Ze+t*Qe,o=[];for(let e=0;e<=Xe;e++){let t=Math.PI*e/Xe;o.push({x:n+a*Math.sin(t),y:r-i*Math.cos(t)})}return{points:o,labelPosition:{x:n+a+et,y:r}}}function nt(e,t,n){let r=new Map;for(let i=0;i<e.edges.length;i++){let a=e.edges[i];if(a.source!==a.target)continue;let o=t.get(a.source);if(!o)continue;let s=r.get(o.id)??0;r.set(o.id,s+1);let{points:c,labelPosition:l}=tt(o,s);n.push({source:a.source,target:a.target,label:a.label,style:a.style,hasArrowStart:a.hasArrowStart,hasArrowEnd:a.hasArrowEnd,points:c,labelPosition:a.label?l:void 0,inlineStyle:mt(i,e),id:a.id,animate:a.animate})}}function rt(e){let t=[];for(let n of e)t.push({x:n.x,y:n.y,right:n.x+n.width,bottom:n.y+n.height}),t.push(...rt(n.children));return t}function it(e,t,n=!1){let r=[],i=[],a=[],o=new Set;for(let e of t.subgraphs)pt(e,o);at(e,t,o,r,a,0,0);let s=rt(a);ct(e,t,i,0,0,s.length>0?{leftX:Math.min(...s.map(e=>e.x))-20,rightX:Math.max(...s.map(e=>e.right))+20}:void 0),Le(r,i,t.direction);let c=new Map(r.map(e=>[e.id,e]));nt(t,c,i),n&&We(i,r,a,t.direction);for(let e of i){e.points=qe(e.points);let t=c.get(e.source),n=c.get(e.target);t&&(e.points=Me(e.points,t,!0)),n&&(e.points=Me(e.points,n,!1))}let l=e.width??800,u=e.height??600,d=I.width,f=R.padding;for(let e of i){for(let t of e.points)l=Math.max(l,t.x+d+f),u=Math.max(u,t.y+d+f);e.labelPosition&&(l=Math.max(l,e.labelPosition.x+60+f),u=Math.max(u,e.labelPosition.y+20+f))}return{width:l,height:u,nodes:r,edges:i,groups:a}}function at(t,n,r,i,a,o,s){if(t.children)for(let c of t.children){let t=(c.x??0)+o,l=(c.y??0)+s,u=c.width??0,d=c.height??0;if(r.has(c.id)){let e=[];at(c,n,r,i,e,t,l);let o=ft(n.subgraphs,c.id);a.push({id:c.id,label:o?.label??``,x:t,y:l,width:u,height:d,children:e,...o?.region?{region:!0}:{}})}else{let o=n.nodes.get(c.id);if(o){let r=(0,e.resolveNodeStyle)(c.id,n),a=n.classAssignments.get(c.id);i.push({id:c.id,label:o.label,shape:o.shape,x:t,y:l,width:u,height:d,inlineStyle:r,className:a,interaction:n.interactions.get(c.id)})}c.children&&c.children.length>0&&at(c,n,r,i,a,t,l)}}}function ot(e){let t=/^e(\d+)$/.exec(e);if(t)return{edgeIndex:parseInt(t[1],10),role:`bridge`};let n=/^e(\d+)_([st])(\d+)$/.exec(e);if(n)return{edgeIndex:parseInt(n[1],10),role:n[2]===`s`?`source`:`target`,level:parseInt(n[3],10)}}function st(e){if(e.length===0)return{x:0,y:0};if(e.length===1)return e[0];let t=0;for(let n=1;n<e.length;n++){let r=e[n].x-e[n-1].x,i=e[n].y-e[n-1].y;t+=Math.sqrt(r*r+i*i)}let n=t/2;for(let t=1;t<e.length;t++){let r=e[t].x-e[t-1].x,i=e[t].y-e[t-1].y,a=Math.sqrt(r*r+i*i);if(n<=a){let o=n/a;return{x:e[t-1].x+o*r,y:e[t-1].y+o*i}}n-=a}return e[e.length-1]}function ct(e,t,n,r,i,a){let o=new Map;lt(e,o,0,0);let s=new Map;dt(e,s,0,0,o);let c=0;for(let[e,r]of s){let i=t.edges[e];if(!i)continue;let o=[],s=e=>{!e||e.points.length===0||(o.length>0?o.push(...e.points.slice(1)):o.push(...e.points))},l=[...r.sourceHops.keys()].sort((e,t)=>t-e);for(let e of l)s(r.sourceHops.get(e));s(r.bridge);let u=[...r.targetHops.keys()].sort((e,t)=>e-t);for(let e of u)s(r.targetHops.get(e));let d;i.label&&o.length>=2&&(d=r.bridge?.labelPosition??st(o));let f=ut(o,a,c);f!==o&&c++,i.label&&f!==o&&f.length>=2&&(d=st(f)),n.push({source:i.source,target:i.target,label:i.label,style:i.style,hasArrowStart:i.hasArrowStart,hasArrowEnd:i.hasArrowEnd,points:_e(t).has(e)?[...f].reverse():f,labelPosition:d,inlineStyle:mt(e,t),id:i.id,animate:i.animate})}}function lt(e,t,n,r){t.set(e.id,{x:n,y:r});for(let i of e.children??[]){let e=i.x??0,a=i.y??0;lt(i,t,n+e,r+a)}}function ut(e,t,n=0){if(e.length<2)return e;let r=!1;for(let t=1;t<e.length;t++){let n=Math.abs(e[t].x-e[t-1].x),i=Math.abs(e[t].y-e[t-1].y);if(n>1&&i>1){r=!0;break}}if(!r)return e;let i=[e[0]];for(let r=1;r<e.length;r++){let a=i[i.length-1],o=e[r],s=Math.abs(o.x-a.x),c=Math.abs(o.y-a.y);if(s>1&&c>1){if(t){let e=n%2==0,r=Math.floor(n/2)*12,s=e?t.rightX+r:t.leftX-r;i.push({x:s,y:a.y}),i.push({x:s,y:o.y})}else{let e=(a.y+o.y)/2;i.push({x:a.x,y:e}),i.push({x:o.x,y:e})}}i.push(o)}return i}function dt(e,t,n,r,i){if(e.edges)for(let a of e.edges){let e=ot(a.id);if(!e)continue;let{edgeIndex:o}=e,s=a.container,c=s?i.get(s):void 0,l=c?.x??n,u=c?.y??r,d=Je(a,l,u),f=Ye(a,l,u),p=t.get(o)??{sourceHops:new Map,targetHops:new Map};t.set(o,p);let m={edgeIndex:o,points:d,labelPosition:f};e.role===`bridge`?p.bridge=m:e.role===`source`?p.sourceHops.set(e.level,m):p.targetHops.set(e.level,m)}if(e.children)for(let a of e.children)dt(a,t,n+(a.x??0),r+(a.y??0),i)}function ft(e,t){for(let n of e){if(n.id===t)return n;let e=ft(n.children,t);if(e)return e}}function pt(e,t){t.add(e.id);for(let n of e.children)pt(n,t)}function mt(t,n){let r,i=n.linkStyles.get(`default`);i&&(r={...i});let a=n.linkStyles.get(t);return a&&(r=r?{...r,...a}:{...a}),r&&(0,e.dropInvalidColors)(r)}var ht=10,gt=14,_t=14,vt=10,yt=24,bt=400,xt=new Set([`rectangle`,`rounded`,`subroutine`]);function St(e){let t=e===`TD`||e===`TB`||e===`BT`,n=e===`BT`||e===`RL`?-1:1;return{span:e=>{let[r,i]=t?[e.y,e.y+e.height]:[e.x,e.x+e.width],a=n*r,o=n*i;return{a0:Math.min(a,o),a1:Math.max(a,o),c0:t?e.x:e.y,c1:t?e.x+e.width:e.y+e.height}},toPoint:({a:e,c:r})=>t?{x:r,y:n*e}:{x:n*e,y:r}}}function Ct(e,t,n){let r=Math.min(e.a,t.a),i=Math.max(e.a,t.a),a=Math.min(e.c,t.c),o=Math.max(e.c,t.c);return i>n.a0&&r<n.a1&&o>n.c0&&a<n.c1}var wt=(e,t)=>({a0:e.a0-t,a1:e.a1+t,c0:e.c0-t,c1:e.c1+t});function Tt(e,t){let n=e.span({x:t.x,y:t.y,width:0,height:0});return{a:n.a0,c:n.c0}}function Et(e,t,n){let r=e.c===t.c;for(let i=1;i<n.length;i++){let a=n[i-1],o=n[i];if(a.c===o.c===r){if(r){let n=Math.abs(e.c-a.c),r=Math.min(Math.max(e.a,t.a),Math.max(a.a,o.a))-Math.max(Math.min(e.a,t.a),Math.min(a.a,o.a));if(n<gt&&r>0)return!0}else{let n=Math.abs(e.a-a.a),r=Math.min(Math.max(e.c,t.c),Math.max(a.c,o.c))-Math.max(Math.min(e.c,t.c),Math.min(a.c,o.c));if(n<gt&&r>0)return!0}}}return!1}function Dt(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.a===n.a&&e.c===n.c||t.push(n)}for(let e=t.length-2;e>0;e--){let n=t[e-1],r=t[e],i=t[e+1];(n.a===r.a&&r.a===i.a||n.c===r.c&&r.c===i.c)&&t.splice(e,1)}return t}var Ot=e=>{let t=0;for(let n=1;n<e.length;n++)t+=Math.abs(e[n].a-e[n-1].a)+Math.abs(e[n].c-e[n-1].c);return t};function kt(e,t,n,r,i,a=[]){let o=St(i),s=o.span(e),c=o.span(t),l=s.a1<=c.a0,u=c.a1<=s.a0;if(!l&&!u)return;let d=o.span(r),f={a0:d.a0+vt,a1:d.a1-vt,c0:d.c0+vt,c1:d.c1-vt},p=a.map(e=>e.map(e=>Tt(o,e))),m=n.map(e=>wt(o.span(e),ht)),h=e=>(e.c0+e.c1)/2,g=e=>(e.a0+e.a1)/2,_=e=>xt.has(e.shape),v=e=>{for(let t of e)if(t.a<f.a0||t.a>f.a1||t.c<f.c0||t.c>f.c1)return!1;for(let t=1;t<e.length;t++){let n=e[t-1],r=e[t];if(n.a!==r.a&&n.c!==r.c||m.some(e=>Ct(n,r,e))||Ct(n,r,s)||Ct(n,r,c)||p.some(e=>Et(n,r,e)))return!1}return!0},y=new Set([h(s),h(c),f.c0,f.c1]);for(let e of m)y.add(e.c0-1),y.add(e.c1+1);for(let e of[s,c])y.add(e.c0-ht),y.add(e.c1+ht);let b=(e,t,n)=>_(e)?n>=t.c0+4&&n<=t.c1-4:Math.abs(n-h(t))<.5,x=[];if(l){let n=(c.a0-s.a1)/2,r=s.a1+Math.min(_t,n),i=c.a0-Math.min(_t,n);for(let n of y){b(e,s,n)&&b(t,c,n)&&x.push([{a:s.a1,c:n},{a:c.a0,c:n}]),x.push([{a:s.a1,c:h(s)},{a:r,c:h(s)},{a:r,c:n},{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}]),b(t,c,n)&&x.push([{a:s.a1,c:h(s)},{a:r,c:h(s)},{a:r,c:n},{a:c.a0,c:n}]),b(e,s,n)&&x.push([{a:s.a1,c:n},{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}]);let a=n>=s.c1?s.c1:n<=s.c0?s.c0:void 0;if(a!==void 0){let e=b(t,c,n)?[{a:c.a0,c:n}]:[{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}];x.push([{a:g(s),c:a},{a:g(s),c:n},...e])}}}else for(let t of y){let n=t>=c.c1?c.c1:t<=c.c0?c.c0:void 0;if(n===void 0)continue;b(e,s,t)&&x.push([{a:s.a0,c:t},{a:g(c),c:t},{a:g(c),c:n}]);let r=n===c.c1?s.c1:s.c0;x.push([{a:g(s),c:r},{a:g(s),c:t},{a:g(c),c:t},{a:g(c),c:n}])}let S,C=1/0;for(let t of x){let n=Dt(t);if(n.length<2||!v(n))continue;let r=e.shape===`diamond`&&n[0].a===s.a1?bt:0,i=Ot(n)+yt*(n.length-2)+r;i<C&&(S=n,C=i)}return S?.map(o.toPoint)}function At(e){let t={x:e[0].x,y:e[0].y},n=-1;for(let r=1;r<e.length;r++){let i=e[r-1],a=e[r],o=Math.abs(a.x-i.x)+Math.abs(a.y-i.y);o>n&&(n=o,t={x:(i.x+a.x)/2,y:(i.y+a.y)/2})}return t}var jt=`__zm_spine__`,Mt=8,Nt=6,Pt=12,Ft=4,It=4,Lt=.25,Rt=.02,zt=40,Bt=e=>e===`TD`||e===`TB`||e===`BT`,Vt=e=>e.startsWith(jt);function Ht(e){return e.flatMap(e=>[e,...Ht(e.children)])}function B(e){let t=new Set(e.nodeIds);for(let n of e.children)for(let e of B(n))t.add(e);return t}function Ut(e){if(e.subgraphs.length===0||pe(e)||we(e.subgraphs))return!1;for(let t of e.nodes.keys())if(Vt(t))return!1;for(let t of e.edges)if(!e.nodes.has(t.source)||!e.nodes.has(t.target))return!1;let t=Ht(e.subgraphs);return!t.some(t=>e.nodes.has(t.id))&&t.every(t=>[...B(t)].some(t=>e.nodes.has(t)))}function Wt(e,t){let n=Bt(t),r=e=>n?[e.y,e.y+e.height]:[e.x,e.x+e.width],i=[...e].sort((e,t)=>{let[n,i]=r(e),[a,o]=r(t);return(n+i)/2-(a+o)/2}),a=[];for(let e of i){let[t,n]=r(e),i=a[a.length-1];i&&t<i.end?(i.end=Math.min(i.end,n),i.ids.push(e.id)):a.push({end:n,ids:[e.id]})}(t===`BT`||t===`RL`)&&a.reverse();let o=new Map;return a.forEach((e,t)=>e.ids.forEach(e=>o.set(e,t))),o}function Gt(e,t,n){let r={ghosts:[],edges:[]};for(let i of e){let e=[...B(i)].filter(e=>t.has(e));if(e.length===0)continue;let a=e.map(e=>t.get(e)),o=Math.min(...a),s=Math.max(...a),c=new Map;for(let a=o;a<=s;a++){let o=e.filter(e=>t.get(e)===a).sort((e,t)=>n(e)-n(t));if(o.length>0)c.set(a,o[0]);else{let e=`${jt}${i.id}__${a}`;r.ghosts.push({id:e,subgraph:i.id}),c.set(a,e)}}for(let e=o;e<s;e++){let t=c.get(e),n=c.get(e+1);!Vt(t)&&!Vt(n)||r.edges.push({source:t,target:n,style:`invisible`,hasArrowStart:!1,hasArrowEnd:!1})}}return r}function Kt(e,t,n,r=()=>!1,i=()=>!1){let a=e=>{let n=[...B(e)].filter(e=>t.has(e)).map(e=>t.get(e));return n.length>0?[Math.min(...n),Math.max(...n)]:void 0},o=e=>{let t=[...B(e)].filter(e=>n.has(e)).map(e=>n.get(e));return t.reduce((e,t)=>e+t,0)/t.length},s=e.map(e=>({sg:e,at:a(e)})).filter(e=>!!e.at).sort((e,t)=>e.at[0]-t.at[0]),c=[],l=-1/0;for(let{sg:e,at:t}of s){let n=c[c.length-1];n&&t[0]<=l?(n.push(e),l=Math.max(l,t[1])):(c.push([e]),l=t[1])}for(let t of c){if(t.length<2||t.some((e,n)=>t.slice(n+1).some(t=>r(e,t))))continue;let a=t.some(e=>e.region)||t.some((e,n)=>t.slice(n+1).some(t=>i(e,t)))?-1:1,s=[...t].sort((t,n)=>a*(e.indexOf(n)-e.indexOf(t))),c=t.map(o).sort((e,t)=>e-t),l=s.map((e,t)=>c[t]-o(e));s.forEach((e,t)=>{for(let r of B(e))n.has(r)&&n.set(r,n.get(r)+l[t])})}for(let a of e)Kt(a.children,t,n,r,i)}function qt(e,t,n,r,i){let a=new Map(t);for(let t of r){let r=B(t);for(let e of i.get(t.id)??[])r.add(e);let o=[...r].filter(e=>a.has(e)),s=o.filter(e=>n.has(e));if(s.length===0)continue;let c=Math.min(...s.map(e=>n.get(e))),l=Math.max(...s.map(e=>n.get(e))),u=o.map(e=>a.get(e)),d=Math.min(...u),f=Math.max(...u),p=(d+f)/2,m=0;for(let t of e){if(r.has(t)||Vt(t))continue;let e=n.get(t);if(e===void 0||e<c||e>l)continue;m++;let i=a.get(t);a.set(t,i<=p?Math.min(i,d)-1-m*.001:Math.max(i,f)+1+m*.001)}}let o=new Map(e.map((e,t)=>[e,t]));return[...e].sort((e,t)=>a.get(e)-a.get(t)||o.get(e)-o.get(t))}var Jt=(e,t)=>t>=Math.min(...e)&&t<=Math.max(...e);function Yt(t,n,r){let i=t=>{let a=t.children.map(i),o=[...[...B(t)].flatMap(e=>{let t=n.get(e);return t?[t]:[]}),...a],s=t.region?me:z,c=Math.min(...o.map(e=>e.x))-s.left,l=Math.min(...o.map(e=>e.y))-s.top,u=Math.max(...o.map(e=>e.x+e.width))+s.right,d=Math.max(...o.map(e=>e.y+e.height))+s.bottom,f=t.region?0:(0,e.measureMultilineText)(t.label,r.groupHeader,M.groupHeader).width+24;return{id:t.id,label:t.label,x:c,y:l,width:Math.max(u-c,f),height:d-l,children:a,...t.region?{region:!0}:{}}};return t.map(i)}var Xt=e=>e.flatMap(e=>[e,...Xt(e.children)]);function Zt(e,t,n,r,i,a){let o=Bt(r),s=new Map(Ht(t).map(e=>[e.id,B(e)])),c=new Map,l=!1,u=[],d=e=>o?[e.x,e.x+e.width]:[e.y,e.y+e.height],f=e=>o?[e.y,e.y+e.height]:[e.x,e.x+e.width],p=([e,t],[n,r])=>Math.max(0,Math.min(t,r)-Math.max(e,n)),m=e=>({x:e.x-zt,y:e.y-zt,width:e.width+80,height:e.height+80}),h=(e,t)=>p(f(e),f(t))>0?p(d(e),d(t)):0,g=Xt(e),_=new Map(g.map(e=>[e,m(e)])),v=(e,t,n,r)=>{let i=p(d(e),d(t)),a=p(f(e),f(t));if(i<=0||a<=0)return;let s=i<=a,c=s===o,l=e=>c?e.x:e.y,m=e=>c?e.x+e.width:e.y+e.height,h=e=>(l(e)+m(e))/2,g=h(n)<=h(r)?n:r;u.push({axis:c?`x`:`y`,amount:s?i:a,after:m(g)})};for(let e of g){let t=s.get(e.id),r=[...t].filter(e=>a.has(e)).map(e=>a.get(e)),o=new Set(r);for(let[s,u]of n){if(t.has(s))continue;if(o.has(a.get(s))||!Jt(r,a.get(s))){v(_.get(e),u,e,u);continue}let n=h(_.get(e),u);n<=0||(i.has(e.id)?c.set(e.id,Math.max(c.get(e.id)??0,n)):l=!0)}}let y=(e,t)=>Xt(e.children).includes(t);for(let e=0;e<g.length;e++)for(let t=e+1;t<g.length;t++){let n=g[e],r=g[t];y(n,r)||y(r,n)||v(_.get(n),r,n,r)}return{penetration:c,stuck:l,requests:u}}function Qt(t,n,r){let i=[...t.nodes.keys()],a={...t,subgraphs:[]},o=(0,e.subgraphFeedbackEdges)(t),s=n(a,{feedbackEdges:o}),c=Wt(s.nodes,t.direction),l=Bt(t.direction),u=new Map(s.nodes.map(e=>[e.id,e])),d=e=>{let t=u.get(e);return l?t.x:t.y},f=Ht(t.subgraphs),p=Gt(f,c,d),m=new Map;for(let e of p.ghosts)m.set(e.subgraph,[...m.get(e.subgraph)??[],e.id]);let h=new Map(s.nodes.map(e=>[e.id,d(e.id)]));Kt(t.subgraphs,c,h,(e,n)=>{let r=B(e),i=B(n),a=(e,n)=>t.edges.some(t=>e.has(t.source)&&n.has(t.target));return a(r,i)&&a(i,r)},(n,r)=>(0,e.subgraphsTied)(t,n,r));for(let e of p.ghosts){let t=[...B(f.find(t=>t.id===e.subgraph))].filter(e=>h.has(e)).map(e=>h.get(e));h.set(e.id,t.reduce((e,t)=>e+t,0)/t.length)}let g=new Map(t.nodes);for(let e of p.ghosts)g.set(e.id,{id:e.id,label:` `,shape:`rectangle`});let _=qt([...g.keys()],h,c,f,m),v={...a,nodes:new Map(_.map(e=>[e,g.get(e)])),edges:[...t.edges,...p.edges]},y=new Set(p.edges.map((e,n)=>t.edges.length+n)),b=e=>{let a=new Map,s=new Map;for(let l=0;;l++){let u=new Map(p.ghosts.map(e=>[e.id,Mt+(a.get(e.subgraph)??0)])),d=n(v,{fixedWidths:u,looseEdges:y,detachedEdges:e,walkOrder:i,feedbackEdges:o,forceNodeOrder:!0}),h=new Map(d.nodes.filter(e=>!Vt(e.id)).map(e=>[e.id,e])),g=Yt(t.subgraphs,h,r),_=Zt(g,t.subgraphs,h,t.direction,new Set(m.keys()),c),{penetration:b,stuck:x}=_;if(x)return;if(b.size===0){for(let e=0;_.requests.length>0;e++){if(e===Pt)return;tn(_.requests.reduce((e,t)=>t.amount>e.amount?t:e),[...h.values()],d.edges),g=Yt(t.subgraphs,h,r),_=Zt(g,t.subgraphs,h,t.direction,new Set(m.keys()),c)}let n=en(t,e,h,g,f);return n&&an(d,[...h.values()],g,n,t.direction)}if(l===Nt)return;for(let[e,t]of b){let n=a.get(e)??0,r=s.get(e),i=r?(r.overlap-t)/(n-r.width):0,o=i>Rt?i:Lt;s.set(e,{width:n,overlap:t}),a.set(e,n+t/o+It)}}},x=$t(t,p,c,f);return(x.size>0?b(x):void 0)??b(new Set)}function $t(e,t,n,r){let i=r.map(e=>{let t=B(e);return{inside:t,layers:new Set([...t].filter(e=>n.has(e)).map(e=>n.get(e)))}}),a=e=>{let t=n.get(e.source),r=n.get(e.target);return t===void 0||r===void 0||e.source===e.target?!1:i.some(({inside:n,layers:i})=>n.has(e.source)&&n.has(e.target)&&Array.from({length:Math.max(0,Math.abs(r-t)-1)},(e,n)=>Math.min(t,r)+1+n).some(e=>!i.has(e)))},o=new Set;e.edges.forEach((e,t)=>{a(e)&&o.add(t)});let s=new Map,c=e=>{e.source!==e.target&&(s.set(e.source,(s.get(e.source)??0)+1),s.set(e.target,(s.get(e.target)??0)+1))};e.edges.forEach((e,t)=>{o.has(t)||c(e)}),t.edges.forEach(c);for(let t of[...o]){let n=e.edges[t];(!s.get(n.source)||!s.get(n.target))&&o.delete(t)}return o}function en(e,t,n,r,i){let a=new Map(Xt(r).map(e=>[e.id,e])),o=[];for(let r of t){let t=e.edges[r],s=n.get(t.source),c=n.get(t.target),l=i.filter(e=>{let n=B(e);return n.has(t.source)&&n.has(t.target)}).sort((e,t)=>B(e).size-B(t).size)[0],u=l&&a.get(l.id);if(!s||!c||!u)return;let d=kt(s,c,[...n.values()].filter(e=>e!==s&&e!==c),u,e.direction,o.map(e=>e.points));if(!d)return;o.push({source:t.source,target:t.target,label:t.label,style:t.style,hasArrowStart:t.hasArrowStart,hasArrowEnd:t.hasArrowEnd,points:d,labelPosition:t.label?At(d):void 0,inlineStyle:mt(r,e),id:t.id,animate:t.animate})}return o}function tn(e,t,n){let{axis:r,amount:i,after:a}=e,o=i+Ft,s=t.filter(e=>e[r]>=a),c=Math.min(...s.map(e=>e[r]));for(let e of s)e[r]+=o;let l=e=>{e[r]>=c&&(e[r]+=o)};for(let e of n)e.points.forEach(l),e.labelPosition&&l(e.labelPosition)}var nn=8;function rn(e,t,n,r){let i=Bt(r)?`y`:`x`,a=i===`x`?`y`:`x`,o=i===`x`?`width`:`height`,s=i===`x`?`height`:`width`;for(let{points:r}of e)for(let e=1;e<r.length-1;){let c=e;for(;c+1<r.length-1&&r[c+1][i]===r[e][i];)c++;let l=r.slice(e,c+1),u=l[0],d=Math.min(...l.map(e=>e[a])),f=Math.max(...l.map(e=>e[a])),p=r[e-1][i],m=r[c+1][i],h=n.flatMap(e=>[e[i],e[i]+e[o]].map(t=>({g:e,s:t}))).find(({g:e,s:t})=>Math.abs(u[i]-t)<nn&&f>e[a]&&d<e[a]+e[s]);if(h){let e=h.s+(u[i]>=h.s?nn:-8),n=(e-p)*(m-e)>0,r=t.every(t=>t[i]+t[o]<=e||t[i]>=e||t[a]+t[s]<=d||t[a]>=f);if(n&&r)for(let t of l)t[i]=e}e=c+1}}function an(e,t,n,r,i){let a=[...e.edges.filter(e=>!Vt(e.source)&&!Vt(e.target)),...r],o=Xt(n);rn(a,t,o,i);let s=[...t.map(e=>e.x),...o.map(e=>e.x),...a.flatMap(e=>e.points.map(e=>e.x))],c=[...t.map(e=>e.y),...o.map(e=>e.y),...a.flatMap(e=>e.points.map(e=>e.y))],l=R.padding-Math.min(...s),u=R.padding-Math.min(...c);for(let e of t)e.x+=l,e.y+=u;for(let e of o)e.x+=l,e.y+=u;for(let e of a){for(let t of e.points)t.x+=l,t.y+=u;e.labelPosition&&(e.labelPosition.x+=l,e.labelPosition.y+=u)}let d=0,f=0;for(let e of t)d=Math.max(d,e.x+e.width+R.padding),f=Math.max(f,e.y+e.height+R.padding);for(let e of o)d=Math.max(d,e.x+e.width+R.padding),f=Math.max(f,e.y+e.height+R.padding);for(let e of a){for(let t of e.points)d=Math.max(d,t.x+I.width+R.padding),f=Math.max(f,t.y+I.width+R.padding);e.labelPosition&&(d=Math.max(d,e.labelPosition.x+60+R.padding),f=Math.max(f,e.labelPosition.y+20+R.padding))}return{...e,nodes:t,edges:a,groups:n,width:d,height:f}}var on=12,sn=8,cn=4;function ln(t,n,r){let i=t.map(e=>({axis:e.axis,cross:e.cross,after:e.after??0,rank:0,real:!0})),a=t.map(()=>[]),o=t.map(()=>[]),s=n.flatMap((e,t)=>e.from===e.to?[]:[t]),c=(0,e.findBackEdges)(s.map(e=>({source:String(n[e].from),target:String(n[e].to)})),t.map((e,t)=>String(t))),l=s.map((e,t)=>{let r=n[e];return c.has(t)?{index:e,u:r.to,v:r.from,reversed:!0}:{index:e,u:r.from,v:r.to,reversed:!1}}),u=t.map(()=>[]),d=t.map(()=>0);for(let e of l)u[e.u].push(e.v),d[e.v]++;let f=d.flatMap((e,t)=>e===0?[t]:[]);for(let e=0;e<f.length;e++){let t=f[e];for(let e of u[t])i[e].rank=Math.max(i[e].rank,i[t].rank+2),--d[e]===0&&f.push(e)}let p=l.map(e=>{let t=(i[e.v].rank-i[e.u].rank)/2,r=i[e.u].rank+2*Math.floor(t/2)+1,s=n[e.index].label,c=[e.u];for(let t=i[e.u].rank+1;t<i[e.v].rank;t++){let e=i.length,n=t===r&&s!==void 0;i.push({axis:n?s.axis:0,cross:n?s.cross:0,after:0,rank:t,real:!1}),a.push([]),o.push([]),c.push(e)}c.push(e.v);for(let e=1;e<c.length;e++)o[c[e-1]].push(c[e]),a[c[e]].push(c[e-1]);return{chain:c,labelRank:r}}),m=i.map((e,t)=>t),h=e=>{let t=e;for(;m[t]!==t;)t=m[t]=m[m[t]];return t};for(let{chain:e}of p)for(let t of e)m[h(t)]=h(e[0]);let g=new Map;i.forEach((e,t)=>{let n=h(t);g.set(n,[...g.get(n)??[],t])});let _=i.map(()=>0),v=[],y=[];for(let e of g.values()){let t=un(e,i,a,o,r),n=1/0,s=-1/0;for(let r of e)_[r]=t.get(r),n=Math.min(n,_[r]-i[r].cross/2),s=Math.max(s,_[r]+i[r].cross/2+i[r].after);v.push({min:n,max:s}),y.push(e)}let b=0;y.forEach((e,t)=>{let n=b-v[t].min;for(let t of e)_[t]=_[t]+n;b+=v[t].max-v[t].min+r.nodeSep});let x=Math.max(0,b-r.nodeSep),S=i.reduce((e,t)=>Math.max(e,t.rank),0),C=Array(S+1).fill(0);for(let e of i)C[e.rank]=Math.max(C[e.rank],e.axis);let w=Array(S+1).fill(0);for(let e=1;e<=S;e++)w[e]=w[e-1]+C[e-1]+r.rankSep/2;let T=e=>w[i[e].rank]+C[i[e].rank]/2,E=n.map(()=>[]),D=n.map(()=>void 0);return l.forEach((e,t)=>{let{chain:r,labelRank:a}=p[t],o=r.slice(1,-1),s=o.map(e=>({axis:T(e),cross:_[e]}));if(E[e.index]=e.reversed?s.reverse():s,n[e.index].label){let t=o.find(e=>i[e].rank===a);D[e.index]={axis:T(t),cross:_[t]}}}),{nodes:t.map((e,t)=>({axis:w[i[t].rank]+(C[i[t].rank]-e.axis)/2,cross:_[t]-e.cross/2})),paths:E,labels:D,axisSize:w[S]+C[S],crossSize:x}}function un(e,t,n,r,i){let a=[],o=new Set,s=[...e].sort((e,n)=>t[e].rank-t[n].rank||e-n);for(let e of s){if(o.has(e))continue;let n=[{s:e,next:0}];for(o.add(e),(a[t[e].rank]??=[]).push(e);n.length>0;){let e=n[n.length-1],i=r[e.s][e.next++];i===void 0?n.pop():o.has(i)||(o.add(i),(a[t[i].rank]??=[]).push(i),n.push({s:i,next:0}))}}let c=a.filter(e=>e!==void 0),l=new Map,u=()=>c.forEach(e=>e.forEach((e,t)=>l.set(e,t))),d=()=>{let e=0;for(let t=0;t+1<c.length;t++){let n=c[t].flatMap(e=>r[e].map(t=>[l.get(e),l.get(t)]));for(let t=0;t<n.length;t++)for(let r=t+1;r<n.length;r++){let[i,a]=n[t],[o,s]=n[r];(i-o)*(a-s)<0&&e++}}return e};u();let f=c.map(e=>[...e]),p=d();for(let e=0;e<sn&&p>0;e++){let t=e%2==0,i=c.map((e,t)=>t);t||i.reverse();for(let e of i){let i=t?n:r,a=e=>{let t=i[e];return t.length===0?l.get(e):t.reduce((e,t)=>e+l.get(t),0)/t.length},o=new Map(c[e].map(e=>[e,a(e)]));c[e].sort((e,t)=>o.get(e)-o.get(t)||l.get(e)-l.get(t)),c[e].forEach((e,t)=>l.set(e,t))}let a=d();a<p&&(p=a,f=c.map(e=>[...e]))}f.forEach((e,t)=>c[t]=e);let m=new Map,h=(e,n)=>(t[e].cross+t[n].cross)/2+t[e].after+(t[e].real&&t[n].real?i.nodeSep:Math.min(i.nodeSep,on)),g=(e,t)=>{let n=e.slice(1).map((t,n)=>h(e[n],t)),r=[0];n.forEach((e,t)=>r.push(r[t]+e)),dn(e.map((e,n)=>{let i=(t[e]??[]).filter(e=>m.has(e));return(i.length===0?m.get(e)??0:i.reduce((e,t)=>e+m.get(t),0)/i.length)-r[n]})).forEach((t,n)=>m.set(e[n],t+r[n]))};for(let e of c)g(e,[]);for(let e=0;e<cn;e++){for(let e=1;e<c.length;e++)g(c[e],n);for(let e=c.length-2;e>=0;e--)g(c[e],r)}return m}function dn(e){let t=[];for(let n of e)for(t.push({sum:n,count:1});t.length>1;){let e=t[t.length-1],n=t[t.length-2];if(n.sum/n.count<=e.sum/e.count)break;t.splice(-2,2,{sum:n.sum+e.sum,count:n.count+e.count})}return t.flatMap(e=>Array(e.count).fill(e.sum/e.count))}var fn=28,pn=18,mn=10,hn=32;function gn(t,n={}){let r={...R,...n,fontSizes:j(n.fontSizes)},i=t.direction===`TB`||t.direction===`TD`||t.direction===`BT`,a=t.direction===`BT`||t.direction===`RL`,o=new Map,s=new Map,c=(e,t)=>{o.set(e.id,e),t!==void 0&&s.set(e.id,t);for(let t of e.nodeIds)s.has(t)||s.set(t,e.id);for(let t of e.children)c(t,e.id)};t.subgraphs.forEach(e=>c(e));let l=[...t.nodes.keys()].filter(e=>!o.has(e)),u=new Map(l.map((e,t)=>[e,t])),d=e=>Math.min(...e.nodeIds.map(e=>u.get(e)??1/0),...e.children.map(d)),f=e=>{let t=o.get(e);return t?d(t):u.get(e)??1/0},p=e=>[...l.filter(t=>s.get(t)===e),...(e===void 0?t.subgraphs:o.get(e).children).map(e=>e.id)].map((e,t)=>({id:e,i:t})).sort((e,t)=>f(e.id)-f(t.id)||e.i-t.i).map(e=>e.id),m=e=>{let t=[e];for(let n=s.get(e);n!==void 0;n=s.get(n))t.unshift(n);return t},h=n=>{let a=t.edges[n].label;if(!a)return;let o=(0,e.measureMultilineText)(a,r.fontSizes.edgeLabel,M.edgeLabel),s=o.width+8,c=o.height+6;return i?{axis:c,cross:s}:{axis:s,cross:c}},g=new Map,_=new Map;t.edges.forEach((e,t)=>{if(e.source===e.target){_.set(e.source,[..._.get(e.source)??[],t]);return}let n=m(e.source),r=m(e.target),i=0;for(;n[i]!==void 0&&n[i]===r[i];)i++;if(i>=n.length||i>=r.length)return;let a=i===0?``:n[i-1];g.set(a,[...g.get(a)??[],{index:t,from:n[i],to:r[i]}])});let v=i?a?{axisStart:z.bottom,axisEnd:z.top,crossStart:z.left,crossEnd:z.right}:{axisStart:z.top,axisEnd:z.bottom,crossStart:z.left,crossEnd:z.right}:{axisStart:a?z.right:z.left,axisEnd:a?z.left:z.right,crossStart:z.top,crossEnd:z.bottom},y=(e,t)=>i?{aSize:t,cSize:e}:{aSize:e,cSize:t},b=new Map;for(let e of l){let n=t.nodes.get(e),i=Se(e,n.label,n.shape,r.fontSizes.nodeLabel);b.set(e,y(i.width,i.height))}let x=e=>{let t=_.get(e);if(!i||!t)return 0;let n=Math.max(0,...t.map(e=>(h(e)?.cross??-10)+mn));return fn+(t.length-1)*pn+n},S=t=>{let n=p(t),a=new Map,s=new Map,c=new Map;for(let t of n){let n=o.get(t);if(!n){s.set(t,b.get(t));continue}let l=S(t);a.set(t,l);let u=(0,e.measureMultilineText)(n.label,r.fontSizes.groupHeader,M.groupHeader).width,d=l.axisSize+v.axisStart+v.axisEnd,f=l.crossSize+v.crossStart+v.crossEnd,p=i?0:u+hn,m=i?u+hn:0,h=Math.max(0,p-d),g=Math.max(0,m-f);d+=h,f+=g,s.set(t,{aSize:d,cSize:f}),c.set(t,{axis:v.axisStart+h/2,cross:v.crossStart+g/2})}let l=new Map(n.map((e,t)=>[e,t])),u=g.get(t??``)??[],d=ln(n.map(e=>({axis:s.get(e).aSize,cross:s.get(e).cSize,after:x(e)})),u.map(e=>({from:l.get(e.from),to:l.get(e.to),label:h(e.index)})),{nodeSep:r.nodeSpacing,rankSep:r.layerSpacing}),f=new Map;return u.forEach((e,t)=>f.set(e.index,{mids:d.paths[t],label:d.labels[t]})),{members:n,at:new Map(n.map((e,t)=>[e,d.nodes[t]])),sizes:s,inset:{axis:0,cross:0},axisSize:d.axisSize,crossSize:d.crossSize,routes:f,inner:new Map([...a].map(([e,t])=>[e,{...t,inset:c.get(e)}]))}},C=S(void 0),w=new Map,T=new Map,E=(e,t,n)=>{for(let[r,i]of e.routes)T.set(r,{mids:i.mids.map(e=>({axis:e.axis+t,cross:e.cross+n})),label:i.label&&{axis:i.label.axis+t,cross:i.label.cross+n}});let r=[];for(let i of e.members){let a=e.at.get(i),s=e.sizes.get(i),c={axis:t+a.axis,cross:n+a.cross,...s};w.set(i,c);let l=e.inner.get(i);if(l){let e=o.get(i),t=E(l,c.axis+l.inset.axis,c.cross+l.inset.cross);r.push({id:i,label:e.label,x:0,y:0,width:0,height:0,children:t,...e.region?{region:!0}:{}})}}return r},D=E(C,0,0),O=r.padding,k=C.axisSize,ee=e=>{let t=a?k-e.axis:e.axis;return i?{x:e.cross+O,y:t+O}:{x:t+O,y:e.cross+O}},A=e=>{let t=a?k-e.axis-e.aSize:e.axis;return i?{x:e.cross+O,y:t+O,width:e.cSize,height:e.aSize}:{x:t+O,y:e.cross+O,width:e.aSize,height:e.cSize}},te=e=>{for(let t of e)Object.assign(t,A(w.get(t.id))),te(t.children)};te(D);let ne=l.map(n=>{let r=t.nodes.get(n);return{id:n,label:r.label,shape:r.shape,...A(w.get(n)),inlineStyle:(0,e.resolveNodeStyle)(n,t),className:t.classAssignments.get(n),interaction:t.interactions.get(n)}}),N=new Map(ne.map(e=>[e.id,e])),P=[];t.edges.forEach((e,n)=>{let r=T.get(n);if(!r)return;let i=w.get(e.source),a=w.get(e.target),o=i.axis>a.axis,[s,c]=o?[a,i]:[i,a],l=[{axis:s.axis+s.aSize,cross:s.cross+s.cSize/2},...o?[...r.mids].reverse():r.mids,{axis:c.axis,cross:c.cross+c.cSize/2}],u=[l[0]];for(let e of l.slice(1)){let t=u[u.length-1];if(t.cross!==e.cross){let n=(t.axis+e.axis)/2;u.push({axis:n,cross:t.cross},{axis:n,cross:e.cross})}u.push(e)}let d=qe(_n(u.map(ee)));o&&d.reverse();let f=N.get(e.source),p=N.get(e.target);f&&(d=Me(d,f,!0)),p&&(d=Me(d,p,!1)),P.push({source:e.source,target:e.target,label:e.label,style:e.style,hasArrowStart:e.hasArrowStart,hasArrowEnd:e.hasArrowEnd,points:d,labelPosition:r.label&&ee(r.label),inlineStyle:mt(n,t),id:e.id,animate:e.animate})}),nt(t,N,P);let F=(i?C.crossSize:C.axisSize)+O*2,L=(i?C.axisSize:C.crossSize)+O*2;for(let e of P){for(let t of e.points)F=Math.max(F,t.x+I.width+O),L=Math.max(L,t.y+I.width+O);e.labelPosition&&(F=Math.max(F,e.labelPosition.x+60+O),L=Math.max(L,e.labelPosition.y+20+O))}return{width:F,height:L,nodes:ne,edges:P,groups:D}}function _n(e){return e.filter((t,n)=>{let r=e[n-1],i=e[n+1];return!r||!i||!(r.x===t.x&&t.x===i.x||r.y===t.y&&t.y===i.y)})}function vn(e,t={}){return yn(e,t)}function yn(e,t,n){let r={...R,...t,fontSizes:j(t.fontSizes)};return it(w(Oe(e,r,n),t.layoutCache),e,r.mergeEdges)}function bn(t,n={}){let r=(0,e.withoutOwnClusterEdges)(t);if(n.layout===`simple`&&!pe(r))return gn(r,n);if(n.layout!==void 0&&n.layout!==`elk`&&n.layout!==`simple`)throw Error(`zombie-mermaid: unknown layout ${JSON.stringify(n.layout)}; use 'elk' or 'simple'.`);if(Ut(r)){let e=Qt(r,(e,t)=>yn(e,n,t),j(n.fontSizes));if(e)return e}return vn(r,n)}function xn(e,t={}){return Oe(e,{...R,...t,fontSizes:j(t.fontSizes)})}var Sn=12,Cn=2;function wn(e){return e.flatMap(e=>[e,...wn(e.children)])}function Tn(t,n){let r=n.groupHeader+16;return wn(t).filter(e=>e.label!==``).map(t=>{let i=(0,e.measureMultilineText)(t.label,n.groupHeader,M.groupHeader);return{x:t.x+Sn-Cn,y:t.y+r/2-i.height/2-Cn,width:i.width+4,height:i.height+4}})}function En(e,t,n){let r=t.x-e.x,i=t.y-e.y,a=[-r,r,-i,i],o=[e.x-n.x,n.x+n.width-e.x,e.y-n.y,n.y+n.height-e.y],s=0,c=1;for(let e=0;e<4;e++){let t=a[e],n=o[e];if(t===0){if(n<0)return!1}else{let e=n/t;if(t<0?s=Math.max(s,e):c=Math.min(c,e),s>c)return!1}}return!0}function Dn(e){return{x:e.x+Cn,y:e.y+Cn,width:e.width-4,height:e.height-4}}function On(e,t){let n=e.points,r=t.map(Dn);for(let e=0;e+1<n.length;e++)if(r.some(t=>En(n[e],n[e+1],t)))return!0;return!1}function kn(e){let t=2166136261;for(let n of e.map(e=>`${e.x},${e.y},${e.width},${e.height}`).join(`;`))t=Math.imul(t^n.charCodeAt(0),16777619);return(t>>>0).toString(36)}function An(e,t,n){let r=`zm-title-gap-${kn(e)}`;return{id:r,markup:` <mask id="${r}" maskUnits="userSpaceOnUse" x="0" y="0" width="${t}" height="${n}">\n <rect x="0" y="0" width="${t}" height="${n}" fill="#fff" />\n${e.map(e=>` <rect x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" fill="#000" />`).join(`
|
|
9
9
|
`)}\n </mask>`}}function jn(t,n,r=`Inter`,i=!1,a=A,o=`linear`,s,c=!0,l=!0,u,d,f={}){let p=[],m=l&&t.nodes.some(t=>!!(0,e.safeHref)(t.interaction?.href));p.push(Or((0,e.svgOpenTag)(t.width,t.height,n,i,u,d,m,f.styleAttribute,f.description),s)),p.push((0,e.buildStyleBlock)(r,!1,f.nonce,f.bodyFont)),c&&t.edges.some(e=>e.animate)&&p.push(Mn(f.nonce)),p.push(`<defs>`),p.push(Nn());let h=new Set;for(let e of t.edges)e.inlineStyle?.stroke&&h.add(e.inlineStyle.stroke);for(let e of h)p.push(Pn(e));let g=Tn(t.groups,a),_=new Set(t.edges.filter(e=>On(e,g))),v;if(_.size>0){let e=An(g,t.width,t.height);v=e.id,p.push(e.markup)}p.push(`</defs>`);for(let e of t.groups)p.push(Ln(e,r,a));for(let e of t.edges)p.push(Rn(e,o,c,_.has(e)?v:void 0));for(let e of t.edges)e.label&&p.push(Bn(e,r,a));for(let e of t.nodes)p.push(Wn(e,r,a,l));return p.push(`</svg>`),p.join(`
|
|
10
10
|
`)}function Mn(t){return[(0,e.styleOpenTag)(t),` @keyframes zm-edge-dash { to { stroke-dashoffset: -28; } }`,` .edge-animated { animation: zm-edge-dash 1s linear infinite; }`,` @media (prefers-reduced-motion: reduce) {`,` .edge-animated { animation: none; }`,` }`,`</style>`].join(`
|
|
11
11
|
`)}function Nn(){return Fn(`var(--_arrow)`,``)}function Pn(t){return Fn((0,e.escapeAttr)(t),e.f`-${In(t)}`)}function Fn(t,n){let r=I.width,i=I.height,a=r-1,o=e.f`fill="${t}" stroke="${t}" stroke-width="0.75" stroke-linejoin="round"`,s=e.f`<polygon points="0 0, ${r} ${i/2}, 0 ${i}" ${o} />`,c=(t,n)=>e.f` <marker id="${t}" markerWidth="${r}" markerHeight="${i}" refX="${a}" refY="${i/2}" orient="${n}">`+e.f`\n ${s}`+`
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import{DEFAULTS as e,applyThemeVariables as t,buildStyleBlock as n,checkGraphSiz
|
|
|
5
5
|
font-display: swap;
|
|
6
6
|
src: url(data:font/woff2;base64,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) format('woff2');
|
|
7
7
|
unicode-range: U+0020-007E, U+00A0, U+00C0-00FF;
|
|
8
|
-
}`;function I(e,t,n){return v(e,t,n)}function He(e,t){return e.length*t*.6}var Ue=`'JetBrains Mono'`,We=`${Ue}, 'SF Mono', 'Fira Code', ui-monospace, monospace`,Ge={nodeLabel:13,edgeLabel:11,groupHeader:12};function Ke(e){return{nodeLabel:e?.nodeLabel??Ge.nodeLabel,edgeLabel:e?.edgeLabel??Ge.edgeLabel,groupHeader:e?.groupHeader??Ge.groupHeader}}var L={nodeLabel:500,edgeLabel:400,groupHeader:600},qe=12,Je=12,Ye={horizontal:20,vertical:10,diamondExtra:24},R={outerBox:1,innerBox:.75,connector:1},z=`0.35em`,Xe={width:8,height:5};function Ze(e,t,r,i){return n(e,t?{family:Be,faceCss:Ve}:!1,r,i)}var B={font:`Inter`,padding:40,nodeSpacing:28,layerSpacing:48,mergeEdges:!0,thoroughness:3,fontSizes:Ge},Qe={flowchart:`DOWN`,state:`DOWN`,class:`DOWN`,er:`DOWN`,c4:`DOWN`};function $e(e,t){switch(e){case`LR`:return`RIGHT`;case`RL`:return`LEFT`;case`BT`:return`UP`;case`TD`:case`TB`:return`DOWN`;default:return t}}function et(e){let t=typeof e==`number`?{top:e,left:e,bottom:e,right:e}:e;return`[top=${t.top},left=${t.left},bottom=${t.bottom},right=${t.right}]`}function tt(e){return{"elk.algorithm":`layered`,"elk.direction":e.direction,"elk.spacing.nodeNode":String(e.nodeSpacing),"elk.layered.spacing.nodeNodeBetweenLayers":String(e.layerSpacing),"elk.padding":et(e.padding),"elk.edgeRouting":`ORTHOGONAL`}}function nt(e,t,n){let r={id:e,width:t.width,height:t.height};return n!==void 0&&(r.labels=[{text:n}]),r}var rt={"elk.edgeLabels.inline":`true`,"elk.edgeLabels.placement":`CENTER`};function it(e,t){let n=_(e,t.fontSize,L.edgeLabel),r={text:e,width:n.width+8,height:n.height+6};return t.layoutOptions&&(r.layoutOptions={...t.layoutOptions}),r}function at(e){let t={id:e.id,sources:[e.source],targets:[e.target]};return e.label&&(t.labels=[it(e.label,e.labelStyle)]),t}var ot={"state-start":`FIRST`},st={"elk.layered.cycleBreaking.strategy":`MODEL_ORDER`,"elk.layered.compaction.postCompaction.strategy":`NONE`};function ct(e){for(let t of e.nodes.values())if(t.shape===`state-start`||t.shape===`state-end`)return!0;return!1}var V={top:44,left:16,bottom:16,right:16},lt={top:16,left:16,bottom:16,right:16};function ut(e){let t=new Map;for(let n of e.edges){if(!n.label)continue;let e=`${n.source}\0${n.target}`,r=(t.get(e)??0)+1;if(r>=3)return!0;t.set(e,r)}return!1}var dt=new WeakMap;function ft(e,t){let n=dt.get(e);return n||(n=ct(e)||yt(e.subgraphs)?new Set:f(e,t?.walkOrder,t?.feedbackEdges??j(e)),dt.set(e,n)),n}function pt(e,t){for(let n=0;n<e.edges.length;n++){let r=e.edges[n];if(t.has(r.source)||t.has(r.target))return n}return 1/0}function mt(e){return $e(e,Qe.flowchart)}function ht(e){return{...tt(e),"elk.spacing.edgeEdge":`12`,"elk.layered.spacing.edgeEdgeBetweenLayers":`12`,"elk.layered.spacing.edgeNodeBetweenLayers":`12`,"elk.layered.nodePlacement.bk.fixedAlignment":`BALANCED`,"elk.contentAlignment":`H_CENTER V_CENTER`}}function gt(e){return{fontSize:e.fontSizes.edgeLabel,layoutOptions:rt}}function _t(e,t,n,r){let i=_(t,r,L.nodeLabel),a=i.width+Ye.horizontal*2,o=i.height+Ye.vertical*2;if(n===`diamond`){let e=Math.max(a,o)+Ye.diamondExtra;a=e,o=e}if(n===`circle`||n===`doublecircle`){let e=Math.ceil(Math.sqrt(a*a+o*o))+8;a=n===`doublecircle`?e+12:e,o=a}return n===`hexagon`&&(a+=Ye.horizontal),(n===`trapezoid`||n===`trapezoid-alt`||n===`parallelogram`||n===`parallelogram-alt`)&&(a+=Ye.horizontal),n===`asymmetric`&&(a+=12),n===`cylinder`&&(o+=14),n===`state-start`||n===`state-end`||t===``&&n===`diamond`?{width:28,height:28}:t===``&&n===`fork-join`?{width:70,height:10}:(a=Math.max(a,60),o=Math.max(o,36),{width:a,height:o})}var vt=` root`;function yt(e){for(let t of e)if(t.direction!==void 0||yt(t.children))return!0;return!1}function bt(e,t){for(let n of e.nodeIds)t.add(n);for(let n of e.children)bt(n,t)}function xt(e){let t=new Map;function n(e,r){let i=[...r,e.id];t.set(e.id,i);for(let t of e.children)n(t,i)}for(let t of e)n(t,[]);return t}function St(e,t){let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n++;return n}function Ct(e,t,n){let r=t,i=new Set,a=new Set;for(let t of e.subgraphs)a.add(t.id),Tt(t,i,a);let o=Et(e.subgraphs),s=xt(e.subgraphs),c=e=>e?s.get(e)??[]:[],l=new Map;l.set(null,[]);let u=[];for(let t=0;t<e.edges.length;t++){let n=e.edges[t],r=o.get(n.source),i=o.get(n.target);if(r&&r===i){let e=l.get(r)??[];l.set(r,e),e.push({index:t,edge:n})}else!r&&!i?l.get(null).push({index:t,edge:n}):u.push({index:t,edge:n,srcChain:c(r),tgtChain:c(i)})}let d=yt(e.subgraphs),f=[],p=[],m={...ht({direction:mt(e.direction),nodeSpacing:r.nodeSpacing,layerSpacing:r.layerSpacing,padding:r.padding}),"elk.layered.thoroughness":String(B.thoroughness),"elk.layered.highDegreeNodes.treatment":`false`,"elk.layered.compaction.postCompaction.strategy":(e.subgraphs.length===0||ut(e))&&!n?.forceNodeOrder?`NONE`:`LEFT_RIGHT_CONSTRAINT_LOCKING`,"elk.layered.considerModelOrder.strategy":`NODES_AND_EDGES`,...ut(e)?{"elk.spacing.edgeEdge":`40`}:{},...n?.forceNodeOrder?{"elk.layered.crossingMinimization.forceNodeModelOrder":`true`}:{},...ct(e)?st:{},"elk.layered.wrapping.strategy":`OFF`,"elk.hierarchyHandling":d?`SEPARATE`:`INCLUDE_CHILDREN`},h=new Map,g=new Map;function _(e,t){let n=h.get(e)??new Set;h.set(e,n),n.add(t)}function v(e,t){let n=g.get(e)??[];g.set(e,n),n.push(t)}if(d)for(let{index:e,edge:t,srcChain:n,tgtChain:i}of u){let a=St(n,i),o=t.source;if(n.length>a){for(let r=n.length-1;r>=a;r--){let i=n[r],a=`${i}_out_${e}`;_(i,a);let o=r===n.length-1?t.source:`${n[r+1]}_out_${e}`;v(i,{id:`e${e}_s${r}`,sources:[o],targets:[a]})}o=`${n[a]}_out_${e}`}let s=t.target;if(i.length>a){for(let n=a;n<=i.length-1;n++){let r=i[n],a=`${r}_in_${e}`;_(r,a);let o=n===i.length-1?t.target:`${i[n+1]}_in_${e}`;v(r,{id:`e${e}_t${n}`,sources:[a],targets:[o]})}s=`${i[a]}_in_${e}`}v(a>0?n[a-1]:vt,at({id:`e${e}`,source:o,target:s,label:t.label,labelStyle:gt(r)}))}for(let[t,o]of e.nodes)if(!i.has(t)&&!a.has(t)){let i=_t(t,o.label,o.shape,r.fontSizes.nodeLabel),a=n?.fixedWidths?.get(t);a!==void 0&&(i.width=a);let s=nt(t,i,o.label),c=ct(e)?ot[o.shape]:void 0;c!==void 0&&(s.layoutOptions={"elk.layered.layering.layerConstraint":c}),f.push(s)}let y=ct(e),b=f.length,x=y?e.subgraphs:[...e.subgraphs].reverse();for(let t of x)f.push(wt(t,e,r,l,h,g,e.direction));if(y&&e.subgraphs.length>0){let t=f.map((t,n)=>{if(n<b)return pt(e,new Set([t.id]));let r=e.subgraphs[n-b],i=pt(e,new Set([r.id]));if(i!==1/0)return i;let a=new Set;return bt(r,a),pt(e,a)}),n=f.map((e,t)=>t).sort((e,n)=>t[e]-t[n]||e-n).map(e=>f[e]);f.splice(0,f.length,...n)}let S=ft(e,n);for(let{index:e,edge:t}of l.get(null)){if(t.source===t.target||n?.detachedEdges?.has(e))continue;let i=at({id:`e${e}`,source:S.has(e)?t.target:t.source,target:S.has(e)?t.source:t.target,label:t.label,labelStyle:gt(r)});n?.looseEdges?.has(e)&&(i.layoutOptions={...i.layoutOptions,"elk.layered.priority.straightness":`0`}),p.push(i)}if(d)for(let e of g.get(vt)??[])p.push(e);else for(let{index:e,edge:t}of u)p.push(at({id:`e${e}`,source:S.has(e)?t.target:t.source,target:S.has(e)?t.source:t.target,label:t.label,labelStyle:gt(r)}));return{id:`root`,layoutOptions:m,children:f,edges:p}}function wt(e,t,n,r,i,a,o){let s=e.direction!==void 0&&ee(e,t)?e.direction:o,c=ht({direction:mt(s),nodeSpacing:n.nodeSpacing,layerSpacing:n.layerSpacing,padding:e.region?lt:V}),l,u=i.get(e.id);u&&u.size>0&&(l=[...u].map(e=>({id:e})));let d=[];for(let r of e.nodeIds){let e=t.nodes.get(r);if(e){let t=_t(r,e.label,e.shape,n.fontSizes.nodeLabel);d.push(nt(r,t,e.label))}}let f=e.children.some(e=>e.region)?e.children:[...e.children].reverse();for(let e of f)d.push(wt(e,t,n,r,i,a,s));let p=[],m=r.get(e.id)??[],h=ft(t);for(let{index:e,edge:t}of m)t.source!==t.target&&p.push(at({id:`e${e}`,source:h.has(e)?t.target:t.source,target:h.has(e)?t.source:t.target,label:t.label,labelStyle:gt(n)}));for(let t of a.get(e.id)??[])p.push(t);return{id:e.id,layoutOptions:c,labels:e.label?[{text:e.label}]:void 0,ports:l,children:d,edges:p}}function Tt(e,t,n){for(let n of e.nodeIds)t.add(n);for(let r of e.children)n.add(r.id),Tt(r,t,n)}function Et(e){let t=new Map;function n(e){for(let n of e.nodeIds)t.set(n,e.id);for(let t of e.children)n(t)}for(let t of e)n(t);return t}function Dt(e,t,n){if(e.length<2||t.shape===`rectangle`||t.shape===`rounded`||t.shape===`stadium`)return e;let r=[...e];if(t.shape===`diamond`){if(n)r[0]=Ot(e[0],e[1],t);else{let n=e.length-1;r[n]=Ot(e[n],e[n-1],t)}}if(t.shape===`asymmetric`){let i=n?0:e.length-1,a=e[i],o=t.height/2,s=Math.abs(a.y-(t.y+o));Math.abs(a.x-t.x)<.5&&s<o&&(r[i]={x:t.x+12*(1-s/o),y:a.y})}return r}function Ot(e,t,n){let r=n.x+n.width/2,i=n.y+n.height/2,a={x:r,y:n.y},o={x:n.x+n.width,y:i},s={x:r,y:n.y+n.height},c={x:n.x,y:i},l=e.x-t.x,u=e.y-t.y;if(Math.abs(l)<Math.abs(u)){let t=e.x;return u>0?t<=r?At(t,c,a)??a:At(t,a,o)??a:t<=r?At(t,s,c)??s:At(t,o,s)??s}{let t=e.y;return l>0?t<=i?kt(t,a,c)??c:kt(t,c,s)??c:t<=i?kt(t,a,o)??o:kt(t,o,s)??o}}function kt(e,t,n){let r=n.y-t.y;if(Math.abs(r)<.001)return null;let i=(e-t.y)/r;return i<0||i>1?null:{x:t.x+i*(n.x-t.x),y:e}}function At(e,t,n){let r=n.x-t.x;if(Math.abs(r)<.001)return null;let i=(e-t.x)/r;return i<0||i>1?null:{x:e,y:t.y+i*(n.y-t.y)}}var jt=12;function Mt(e,t,n){if(e.length===0)return;let r=n===`LR`||n===`RL`,i=new Set;for(let e of t)i.add(`${e.source}:${e.target}`),i.add(`${e.target}:${e.source}`);let a=B.layerSpacing*.6,o=[...e].sort((e,t)=>r?e.x-t.x:e.y-t.y),s=[],c=[o[0]];for(let e=1;e<o.length;e++){let t=(r?o[e].x:o[e].y)-(r?o[e-1].x:o[e-1].y),n=c.some(t=>i.has(`${t.id}:${o[e].id}`));t<=a&&!n?c.push(o[e]):(s.push(c),c=[o[e]])}s.push(c);let l=new Map;for(let e of s){if(e.length<=1)continue;let t=e.map(e=>r?e.x:e.y),n=Math.min(...t),i=Math.max(...t);if(i-n<=1)continue;let a=(n+i)/2;for(let t of e){let e=a-(r?t.x:t.y);Math.abs(e)>.5&&(r?t.x=a:t.y=a,l.set(t.id,e))}}if(l.size===0)return;let u=r?`x`:`y`,d=(e,t,n,r)=>{let i=e[t],a=i[u];i[u]+=r;let[o,s,c]=[1,2,3].map(r=>e[t+r*n]);if(o[u]===a)o[u]+=r;else if(s&&c&&s[u]===o[u]){let e=Math.sign(o[u]-a),t=o[u]+e*Math.max(0,jt-e*(o[u]-i[u]));e*(c[u]-t)>0&&(o[u]=s[u]=t)}};for(let e of t){let{points:t}=e;if(t.length<2)continue;let n=l.get(e.source),r=l.get(e.target);n!=null&&d(t,0,1,n),r!=null&&d(t,t.length-1,-1,r)}}var Nt=.5;function Pt(e,t,n){for(let r=0;r<e.length-1;r++){let i=e[r],a=e[r+1],o=Math.min(i.x,a.x),s=Math.max(i.x,a.x),c=Math.min(i.y,a.y),l=Math.max(i.y,a.y);for(let e of t){if(n.has(e.id))continue;let t=e.x+Nt,r=e.x+e.width-Nt,i=e.y+Nt,a=e.y+e.height-Nt;if(!(t>=r||i>=a)&&o<r&&s>t&&c<a&&l>i)return!1}}return!0}function Ft(e,t,n){let r=[];for(let i of n)e>=i.x&&e<=i.x+i.width&&t>=i.y&&t<=i.y+i.height&&(r.push(i),r.push(...Ft(e,t,i.children)));return r}function It(e,t,n,r,i){let a=i===`LR`,o=i===`RL`,s=i===`BT`,c=a||o,l=new Set(Ft(t,n,r).map(e=>e.id)),u=Ft(c?e:t,c?n:e,r).find(e=>!l.has(e.id));return u?a?u.x-12:o?u.x+u.width+12:s?u.y+u.height+12:u.y-12:e}var Lt=2;function Rt(e,t,n,r,i){for(let a of e){if(t.has(a)||a.source===a.target)continue;let e=a.source===n?a.points[0]:a.target===n?a.points[a.points.length-1]:void 0;if(e&&Math.abs((i?e.x:e.y)-r)<=Lt)return!0}return!1}function zt(e,t,n,r){let i=new Map(t.map(e=>[e.id,e])),a=new Set,o=r===`LR`,s=r===`RL`,c=r===`BT`,l=o||s,u=new Map;for(let t of e){if(t.source===t.target)continue;let e=u.get(t.source)??[];u.set(t.source,e),e.push(t)}for(let[d,f]of u){if(f.length<2)continue;let u=f[0].style;if(f.some(e=>e.label||e.style!==u))continue;let p=i.get(d);if(!p)continue;let m=[];for(let e of f){let t=i.get(e.target);t&&(o?t.x>p.x+p.width:s?t.x+t.width<p.x:c?t.y+t.height<p.y:t.y>p.y+p.height)&&m.push({edge:e,node:t})}if(m.length<2)continue;let h=p.x+p.width/2,g=p.y+p.height/2;if(l){let i=o?p.x+p.width:p.x,s=g;if(Rt(e,new Set(m.map(e=>e.edge)),d,i,!0))continue;let c=i+((o?Math.min(...m.map(e=>e.node.x)):Math.max(...m.map(e=>e.node.x+e.node.width)))-i)/2;c=It(c,h,g,n,r);let l=[];for(let{edge:e,node:n}of m){let r=o?n.x:n.x+n.width,a=n.y+n.height/2,u=[{x:i,y:s},{x:c,y:s},{x:c,y:a},{x:r,y:a}];Pt(u,t,new Set([d,n.id]))&&l.push({edge:e,points:u})}if(l.length<2)continue;for(let{edge:e,points:t}of l)e.points=t,a.add(e)}else{let i=h,o=c?p.y:p.y+p.height;if(Rt(e,new Set(m.map(e=>e.edge)),d,o,!1))continue;let s=o+((c?Math.max(...m.map(e=>e.node.y+e.node.height)):Math.min(...m.map(e=>e.node.y)))-o)/2;s=It(s,h,g,n,r);let l=[];for(let{edge:e,node:n}of m){let r=n.x+n.width/2,a=c?n.y+n.height:n.y,u=[{x:i,y:o},{x:i,y:s},{x:r,y:s},{x:r,y:a}];Pt(u,t,new Set([d,n.id]))&&l.push({edge:e,points:u})}if(l.length<2)continue;for(let{edge:e,points:t}of l)e.points=t,a.add(e)}}let d=new Map;for(let t of e){if(a.has(t)||t.source===t.target)continue;let e=d.get(t.target)??[];d.set(t.target,e),e.push(t)}for(let[a,u]of d){if(u.length<2)continue;let d=u[0].style;if(u.some(e=>e.label||e.style!==d))continue;let f=i.get(a);if(!f)continue;let p=[];for(let e of u){let t=i.get(e.source);t&&(o?t.x+t.width<f.x:s?t.x>f.x+f.width:c?t.y>f.y+f.height:t.y+t.height<f.y)&&p.push({edge:e,node:t})}if(p.length<2)continue;let m=f.x+f.width/2,h=f.y+f.height/2;if(l){let i=o?f.x:f.x+f.width,s=h;if(Rt(e,new Set(p.map(e=>e.edge)),a,i,!0))continue;let c=o?Math.max(...p.map(e=>e.node.x+e.node.width)):Math.min(...p.map(e=>e.node.x)),l=c+(i-c)/2;l=It(l,m,h,n,r);let u=[];for(let{edge:e,node:n}of p){let r=o?n.x+n.width:n.x,c=n.y+n.height/2,d=[{x:r,y:c},{x:l,y:c},{x:l,y:s},{x:i,y:s}];Pt(d,t,new Set([n.id,a]))&&u.push({edge:e,points:d})}if(u.length<2)continue;for(let{edge:e,points:t}of u)e.points=t}else{let i=m,o=c?f.y+f.height:f.y;if(Rt(e,new Set(p.map(e=>e.edge)),a,o,!1))continue;let s=c?Math.min(...p.map(e=>e.node.y)):Math.max(...p.map(e=>e.node.y+e.node.height)),l=s+(o-s)/2;l=It(l,m,h,n,r);let u=[];for(let{edge:e,node:n}of p){let r=n.x+n.width/2,s=[{x:r,y:c?n.y:n.y+n.height},{x:r,y:l},{x:i,y:l},{x:i,y:o}];Pt(s,t,new Set([n.id,a]))&&u.push({edge:e,points:s})}if(u.length<2)continue;for(let{edge:e,points:t}of u)e.points=t}}}var Bt=1.5,Vt=.01;function Ht(e){let t=e.map(e=>({...e})),n=0;for(;n+3<t.length;){let[e,r,i,a]=[t[n],t[n+1],t[n+2],t[n+3]],o=Math.abs(e.x-r.x)<Vt&&Math.abs(i.x-a.x)<Vt&&Math.abs(r.y-i.y)<Vt&&Math.abs(r.x-i.x)<=Bt&&Math.abs(r.x-i.x)>=Vt,s=Math.abs(e.y-r.y)<Vt&&Math.abs(i.y-a.y)<Vt&&Math.abs(r.x-i.x)<Vt&&Math.abs(r.y-i.y)<=Bt&&Math.abs(r.y-i.y)>=Vt;if(o){let r=(e.x+a.x)/2;t.splice(n,4,{x:r,y:e.y},{x:r,y:a.y})}else if(s){let r=(e.y+a.y)/2;t.splice(n,4,{x:e.x,y:r},{x:a.x,y:r})}else n++}return t}function Ut(e,t=0,n=0){let r=[];if(!e.sections||e.sections.length===0)return r;let i=e.sections[0];if(r.push({x:i.startPoint.x+t,y:i.startPoint.y+n}),i.bendPoints)for(let e of i.bendPoints)r.push({x:e.x+t,y:e.y+n});return r.push({x:i.endPoint.x+t,y:i.endPoint.y+n}),r}function Wt(e,t=0,n=0){if(!e.labels||e.labels.length===0)return;let r=e.labels[0];if(r.x!=null&&r.y!=null)return{x:r.x+(r.width??0)/2+t,y:r.y+(r.height??0)/2+n}}var Gt=16,Kt=28,qt=18,Jt=28,Yt=10;function Xt(e,t){let n=e.x+e.width,r=e.y+e.height/2,i=Math.min(Jt,e.height*.6)/2,a=Kt+t*qt,o=[];for(let e=0;e<=Gt;e++){let t=Math.PI*e/Gt;o.push({x:n+a*Math.sin(t),y:r-i*Math.cos(t)})}return{points:o,labelPosition:{x:n+a+Yt,y:r}}}function Zt(e,t,n){let r=new Map;for(let i=0;i<e.edges.length;i++){let a=e.edges[i];if(a.source!==a.target)continue;let o=t.get(a.source);if(!o)continue;let s=r.get(o.id)??0;r.set(o.id,s+1);let{points:c,labelPosition:l}=Xt(o,s);n.push({source:a.source,target:a.target,label:a.label,style:a.style,hasArrowStart:a.hasArrowStart,hasArrowEnd:a.hasArrowEnd,points:c,labelPosition:a.label?l:void 0,inlineStyle:un(i,e),id:a.id,animate:a.animate})}}function Qt(e){let t=[];for(let n of e)t.push({x:n.x,y:n.y,right:n.x+n.width,bottom:n.y+n.height}),t.push(...Qt(n.children));return t}function $t(e,t,n=!1){let r=[],i=[],a=[],o=new Set;for(let e of t.subgraphs)ln(e,o);en(e,t,o,r,a,0,0);let s=Qt(a);rn(e,t,i,0,0,s.length>0?{leftX:Math.min(...s.map(e=>e.x))-20,rightX:Math.max(...s.map(e=>e.right))+20}:void 0),Mt(r,i,t.direction);let c=new Map(r.map(e=>[e.id,e]));Zt(t,c,i),n&&zt(i,r,a,t.direction);for(let e of i){e.points=Ht(e.points);let t=c.get(e.source),n=c.get(e.target);t&&(e.points=Dt(e.points,t,!0)),n&&(e.points=Dt(e.points,n,!1))}let l=e.width??800,u=e.height??600,d=Xe.width,f=B.padding;for(let e of i){for(let t of e.points)l=Math.max(l,t.x+d+f),u=Math.max(u,t.y+d+f);e.labelPosition&&(l=Math.max(l,e.labelPosition.x+60+f),u=Math.max(u,e.labelPosition.y+20+f))}return{width:l,height:u,nodes:r,edges:i,groups:a}}function en(e,t,n,r,i,a,o){if(e.children)for(let s of e.children){let e=(s.x??0)+a,c=(s.y??0)+o,l=s.width??0,u=s.height??0;if(n.has(s.id)){let a=[];en(s,t,n,r,a,e,c);let o=cn(t.subgraphs,s.id);i.push({id:s.id,label:o?.label??``,x:e,y:c,width:l,height:u,children:a,...o?.region?{region:!0}:{}})}else{let a=t.nodes.get(s.id);if(a){let n=T(s.id,t),i=t.classAssignments.get(s.id);r.push({id:s.id,label:a.label,shape:a.shape,x:e,y:c,width:l,height:u,inlineStyle:n,className:i,interaction:t.interactions.get(s.id)})}s.children&&s.children.length>0&&en(s,t,n,r,i,e,c)}}}function tn(e){let t=/^e(\d+)$/.exec(e);if(t)return{edgeIndex:parseInt(t[1],10),role:`bridge`};let n=/^e(\d+)_([st])(\d+)$/.exec(e);if(n)return{edgeIndex:parseInt(n[1],10),role:n[2]===`s`?`source`:`target`,level:parseInt(n[3],10)}}function nn(e){if(e.length===0)return{x:0,y:0};if(e.length===1)return e[0];let t=0;for(let n=1;n<e.length;n++){let r=e[n].x-e[n-1].x,i=e[n].y-e[n-1].y;t+=Math.sqrt(r*r+i*i)}let n=t/2;for(let t=1;t<e.length;t++){let r=e[t].x-e[t-1].x,i=e[t].y-e[t-1].y,a=Math.sqrt(r*r+i*i);if(n<=a){let o=n/a;return{x:e[t-1].x+o*r,y:e[t-1].y+o*i}}n-=a}return e[e.length-1]}function rn(e,t,n,r,i,a){let o=new Map;an(e,o,0,0);let s=new Map;sn(e,s,0,0,o);let c=0;for(let[e,r]of s){let i=t.edges[e];if(!i)continue;let o=[],s=e=>{!e||e.points.length===0||(o.length>0?o.push(...e.points.slice(1)):o.push(...e.points))},l=[...r.sourceHops.keys()].sort((e,t)=>t-e);for(let e of l)s(r.sourceHops.get(e));s(r.bridge);let u=[...r.targetHops.keys()].sort((e,t)=>e-t);for(let e of u)s(r.targetHops.get(e));let d;i.label&&o.length>=2&&(d=r.bridge?.labelPosition??nn(o));let f=on(o,a,c);f!==o&&c++,i.label&&f!==o&&f.length>=2&&(d=nn(f)),n.push({source:i.source,target:i.target,label:i.label,style:i.style,hasArrowStart:i.hasArrowStart,hasArrowEnd:i.hasArrowEnd,points:ft(t).has(e)?[...f].reverse():f,labelPosition:d,inlineStyle:un(e,t),id:i.id,animate:i.animate})}}function an(e,t,n,r){t.set(e.id,{x:n,y:r});for(let i of e.children??[]){let e=i.x??0,a=i.y??0;an(i,t,n+e,r+a)}}function on(e,t,n=0){if(e.length<2)return e;let r=!1;for(let t=1;t<e.length;t++){let n=Math.abs(e[t].x-e[t-1].x),i=Math.abs(e[t].y-e[t-1].y);if(n>1&&i>1){r=!0;break}}if(!r)return e;let i=[e[0]];for(let r=1;r<e.length;r++){let a=i[i.length-1],o=e[r],s=Math.abs(o.x-a.x),c=Math.abs(o.y-a.y);if(s>1&&c>1){if(t){let e=n%2==0,r=Math.floor(n/2)*12,s=e?t.rightX+r:t.leftX-r;i.push({x:s,y:a.y}),i.push({x:s,y:o.y})}else{let e=(a.y+o.y)/2;i.push({x:a.x,y:e}),i.push({x:o.x,y:e})}}i.push(o)}return i}function sn(e,t,n,r,i){if(e.edges)for(let a of e.edges){let e=tn(a.id);if(!e)continue;let{edgeIndex:o}=e,s=a.container,c=s?i.get(s):void 0,l=c?.x??n,u=c?.y??r,d=Ut(a,l,u),f=Wt(a,l,u),p=t.get(o)??{sourceHops:new Map,targetHops:new Map};t.set(o,p);let m={edgeIndex:o,points:d,labelPosition:f};e.role===`bridge`?p.bridge=m:e.role===`source`?p.sourceHops.set(e.level,m):p.targetHops.set(e.level,m)}if(e.children)for(let a of e.children)sn(a,t,n+(a.x??0),r+(a.y??0),i)}function cn(e,t){for(let n of e){if(n.id===t)return n;let e=cn(n.children,t);if(e)return e}}function ln(e,t){t.add(e.id);for(let n of e.children)ln(n,t)}function un(e,t){let n,r=t.linkStyles.get(`default`);r&&(n={...r});let i=t.linkStyles.get(e);return i&&(n=n?{...n,...i}:{...i}),n&&s(n)}var dn=10,fn=14,pn=14,mn=10,hn=24,gn=400,_n=new Set([`rectangle`,`rounded`,`subroutine`]);function vn(e){let t=e===`TD`||e===`TB`||e===`BT`,n=e===`BT`||e===`RL`?-1:1;return{span:e=>{let[r,i]=t?[e.y,e.y+e.height]:[e.x,e.x+e.width],a=n*r,o=n*i;return{a0:Math.min(a,o),a1:Math.max(a,o),c0:t?e.x:e.y,c1:t?e.x+e.width:e.y+e.height}},toPoint:({a:e,c:r})=>t?{x:r,y:n*e}:{x:n*e,y:r}}}function yn(e,t,n){let r=Math.min(e.a,t.a),i=Math.max(e.a,t.a),a=Math.min(e.c,t.c),o=Math.max(e.c,t.c);return i>n.a0&&r<n.a1&&o>n.c0&&a<n.c1}var bn=(e,t)=>({a0:e.a0-t,a1:e.a1+t,c0:e.c0-t,c1:e.c1+t});function xn(e,t){let n=e.span({x:t.x,y:t.y,width:0,height:0});return{a:n.a0,c:n.c0}}function Sn(e,t,n){let r=e.c===t.c;for(let i=1;i<n.length;i++){let a=n[i-1],o=n[i];if(a.c===o.c===r){if(r){let n=Math.abs(e.c-a.c),r=Math.min(Math.max(e.a,t.a),Math.max(a.a,o.a))-Math.max(Math.min(e.a,t.a),Math.min(a.a,o.a));if(n<fn&&r>0)return!0}else{let n=Math.abs(e.a-a.a),r=Math.min(Math.max(e.c,t.c),Math.max(a.c,o.c))-Math.max(Math.min(e.c,t.c),Math.min(a.c,o.c));if(n<fn&&r>0)return!0}}}return!1}function Cn(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.a===n.a&&e.c===n.c||t.push(n)}for(let e=t.length-2;e>0;e--){let n=t[e-1],r=t[e],i=t[e+1];(n.a===r.a&&r.a===i.a||n.c===r.c&&r.c===i.c)&&t.splice(e,1)}return t}var wn=e=>{let t=0;for(let n=1;n<e.length;n++)t+=Math.abs(e[n].a-e[n-1].a)+Math.abs(e[n].c-e[n-1].c);return t};function Tn(e,t,n,r,i,a=[]){let o=vn(i),s=o.span(e),c=o.span(t),l=s.a1<=c.a0,u=c.a1<=s.a0;if(!l&&!u)return;let d=o.span(r),f={a0:d.a0+mn,a1:d.a1-mn,c0:d.c0+mn,c1:d.c1-mn},p=a.map(e=>e.map(e=>xn(o,e))),m=n.map(e=>bn(o.span(e),dn)),h=e=>(e.c0+e.c1)/2,g=e=>(e.a0+e.a1)/2,_=e=>_n.has(e.shape),v=e=>{for(let t of e)if(t.a<f.a0||t.a>f.a1||t.c<f.c0||t.c>f.c1)return!1;for(let t=1;t<e.length;t++){let n=e[t-1],r=e[t];if(n.a!==r.a&&n.c!==r.c||m.some(e=>yn(n,r,e))||yn(n,r,s)||yn(n,r,c)||p.some(e=>Sn(n,r,e)))return!1}return!0},y=new Set([h(s),h(c),f.c0,f.c1]);for(let e of m)y.add(e.c0-1),y.add(e.c1+1);for(let e of[s,c])y.add(e.c0-dn),y.add(e.c1+dn);let b=(e,t,n)=>_(e)?n>=t.c0+4&&n<=t.c1-4:Math.abs(n-h(t))<.5,x=[];if(l){let n=(c.a0-s.a1)/2,r=s.a1+Math.min(pn,n),i=c.a0-Math.min(pn,n);for(let n of y){b(e,s,n)&&b(t,c,n)&&x.push([{a:s.a1,c:n},{a:c.a0,c:n}]),x.push([{a:s.a1,c:h(s)},{a:r,c:h(s)},{a:r,c:n},{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}]),b(t,c,n)&&x.push([{a:s.a1,c:h(s)},{a:r,c:h(s)},{a:r,c:n},{a:c.a0,c:n}]),b(e,s,n)&&x.push([{a:s.a1,c:n},{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}]);let a=n>=s.c1?s.c1:n<=s.c0?s.c0:void 0;if(a!==void 0){let e=b(t,c,n)?[{a:c.a0,c:n}]:[{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}];x.push([{a:g(s),c:a},{a:g(s),c:n},...e])}}}else for(let t of y){let n=t>=c.c1?c.c1:t<=c.c0?c.c0:void 0;if(n===void 0)continue;b(e,s,t)&&x.push([{a:s.a0,c:t},{a:g(c),c:t},{a:g(c),c:n}]);let r=n===c.c1?s.c1:s.c0;x.push([{a:g(s),c:r},{a:g(s),c:t},{a:g(c),c:t},{a:g(c),c:n}])}let S,C=1/0;for(let t of x){let n=Cn(t);if(n.length<2||!v(n))continue;let r=e.shape===`diamond`&&n[0].a===s.a1?gn:0,i=wn(n)+hn*(n.length-2)+r;i<C&&(S=n,C=i)}return S?.map(o.toPoint)}function En(e){let t={x:e[0].x,y:e[0].y},n=-1;for(let r=1;r<e.length;r++){let i=e[r-1],a=e[r],o=Math.abs(a.x-i.x)+Math.abs(a.y-i.y);o>n&&(n=o,t={x:(i.x+a.x)/2,y:(i.y+a.y)/2})}return t}var Dn=`__zm_spine__`,On=8,kn=6,An=12,jn=4,Mn=4,Nn=.25,Pn=.02,Fn=40,In=e=>e===`TD`||e===`TB`||e===`BT`,Ln=e=>e.startsWith(Dn);function Rn(e){return e.flatMap(e=>[e,...Rn(e.children)])}function H(e){let t=new Set(e.nodeIds);for(let n of e.children)for(let e of H(n))t.add(e);return t}function zn(e){if(e.subgraphs.length===0||ct(e)||yt(e.subgraphs))return!1;for(let t of e.nodes.keys())if(Ln(t))return!1;for(let t of e.edges)if(!e.nodes.has(t.source)||!e.nodes.has(t.target))return!1;let t=Rn(e.subgraphs);return!t.some(t=>e.nodes.has(t.id))&&t.every(t=>[...H(t)].some(t=>e.nodes.has(t)))}function Bn(e,t){let n=In(t),r=e=>n?[e.y,e.y+e.height]:[e.x,e.x+e.width],i=[...e].sort((e,t)=>{let[n,i]=r(e),[a,o]=r(t);return(n+i)/2-(a+o)/2}),a=[];for(let e of i){let[t,n]=r(e),i=a[a.length-1];i&&t<i.end?(i.end=Math.min(i.end,n),i.ids.push(e.id)):a.push({end:n,ids:[e.id]})}(t===`BT`||t===`RL`)&&a.reverse();let o=new Map;return a.forEach((e,t)=>e.ids.forEach(e=>o.set(e,t))),o}function Vn(e,t,n){let r={ghosts:[],edges:[]};for(let i of e){let e=[...H(i)].filter(e=>t.has(e));if(e.length===0)continue;let a=e.map(e=>t.get(e)),o=Math.min(...a),s=Math.max(...a),c=new Map;for(let a=o;a<=s;a++){let o=e.filter(e=>t.get(e)===a).sort((e,t)=>n(e)-n(t));if(o.length>0)c.set(a,o[0]);else{let e=`${Dn}${i.id}__${a}`;r.ghosts.push({id:e,subgraph:i.id}),c.set(a,e)}}for(let e=o;e<s;e++){let t=c.get(e),n=c.get(e+1);!Ln(t)&&!Ln(n)||r.edges.push({source:t,target:n,style:`invisible`,hasArrowStart:!1,hasArrowEnd:!1})}}return r}function Hn(e,t,n,r=()=>!1,i=()=>!1){let a=e=>{let n=[...H(e)].filter(e=>t.has(e)).map(e=>t.get(e));return n.length>0?[Math.min(...n),Math.max(...n)]:void 0},o=e=>{let t=[...H(e)].filter(e=>n.has(e)).map(e=>n.get(e));return t.reduce((e,t)=>e+t,0)/t.length},s=e.map(e=>({sg:e,at:a(e)})).filter(e=>!!e.at).sort((e,t)=>e.at[0]-t.at[0]),c=[],l=-1/0;for(let{sg:e,at:t}of s){let n=c[c.length-1];n&&t[0]<=l?(n.push(e),l=Math.max(l,t[1])):(c.push([e]),l=t[1])}for(let t of c){if(t.length<2||t.some((e,n)=>t.slice(n+1).some(t=>r(e,t))))continue;let a=t.some(e=>e.region)||t.some((e,n)=>t.slice(n+1).some(t=>i(e,t)))?-1:1,s=[...t].sort((t,n)=>a*(e.indexOf(n)-e.indexOf(t))),c=t.map(o).sort((e,t)=>e-t),l=s.map((e,t)=>c[t]-o(e));s.forEach((e,t)=>{for(let r of H(e))n.has(r)&&n.set(r,n.get(r)+l[t])})}for(let a of e)Hn(a.children,t,n,r,i)}function Un(e,t,n,r,i){let a=new Map(t);for(let t of r){let r=H(t);for(let e of i.get(t.id)??[])r.add(e);let o=[...r].filter(e=>a.has(e)),s=o.filter(e=>n.has(e));if(s.length===0)continue;let c=Math.min(...s.map(e=>n.get(e))),l=Math.max(...s.map(e=>n.get(e))),u=o.map(e=>a.get(e)),d=Math.min(...u),f=Math.max(...u),p=(d+f)/2,m=0;for(let t of e){if(r.has(t)||Ln(t))continue;let e=n.get(t);if(e===void 0||e<c||e>l)continue;m++;let i=a.get(t);a.set(t,i<=p?Math.min(i,d)-1-m*.001:Math.max(i,f)+1+m*.001)}}let o=new Map(e.map((e,t)=>[e,t]));return[...e].sort((e,t)=>a.get(e)-a.get(t)||o.get(e)-o.get(t))}var Wn=(e,t)=>t>=Math.min(...e)&&t<=Math.max(...e);function Gn(e,t,n){let r=e=>{let i=e.children.map(r),a=[...[...H(e)].flatMap(e=>{let n=t.get(e);return n?[n]:[]}),...i],o=e.region?lt:V,s=Math.min(...a.map(e=>e.x))-o.left,c=Math.min(...a.map(e=>e.y))-o.top,l=Math.max(...a.map(e=>e.x+e.width))+o.right,u=Math.max(...a.map(e=>e.y+e.height))+o.bottom,d=e.region?0:_(e.label,n.groupHeader,L.groupHeader).width+24;return{id:e.id,label:e.label,x:s,y:c,width:Math.max(l-s,d),height:u-c,children:i,...e.region?{region:!0}:{}}};return e.map(r)}var Kn=e=>e.flatMap(e=>[e,...Kn(e.children)]);function qn(e,t,n,r,i,a){let o=In(r),s=new Map(Rn(t).map(e=>[e.id,H(e)])),c=new Map,l=!1,u=[],d=e=>o?[e.x,e.x+e.width]:[e.y,e.y+e.height],f=e=>o?[e.y,e.y+e.height]:[e.x,e.x+e.width],p=([e,t],[n,r])=>Math.max(0,Math.min(t,r)-Math.max(e,n)),m=e=>({x:e.x-Fn,y:e.y-Fn,width:e.width+80,height:e.height+80}),h=(e,t)=>p(f(e),f(t))>0?p(d(e),d(t)):0,g=Kn(e),_=new Map(g.map(e=>[e,m(e)])),v=(e,t,n,r)=>{let i=p(d(e),d(t)),a=p(f(e),f(t));if(i<=0||a<=0)return;let s=i<=a,c=s===o,l=e=>c?e.x:e.y,m=e=>c?e.x+e.width:e.y+e.height,h=e=>(l(e)+m(e))/2,g=h(n)<=h(r)?n:r;u.push({axis:c?`x`:`y`,amount:s?i:a,after:m(g)})};for(let e of g){let t=s.get(e.id),r=[...t].filter(e=>a.has(e)).map(e=>a.get(e)),o=new Set(r);for(let[s,u]of n){if(t.has(s))continue;if(o.has(a.get(s))||!Wn(r,a.get(s))){v(_.get(e),u,e,u);continue}let n=h(_.get(e),u);n<=0||(i.has(e.id)?c.set(e.id,Math.max(c.get(e.id)??0,n)):l=!0)}}let y=(e,t)=>Kn(e.children).includes(t);for(let e=0;e<g.length;e++)for(let t=e+1;t<g.length;t++){let n=g[e],r=g[t];y(n,r)||y(r,n)||v(_.get(n),r,n,r)}return{penetration:c,stuck:l,requests:u}}function Jn(e,t,n){let r=[...e.nodes.keys()],i={...e,subgraphs:[]},a=j(e),o=t(i,{feedbackEdges:a}),s=Bn(o.nodes,e.direction),c=In(e.direction),l=new Map(o.nodes.map(e=>[e.id,e])),u=e=>{let t=l.get(e);return c?t.x:t.y},d=Rn(e.subgraphs),f=Vn(d,s,u),p=new Map;for(let e of f.ghosts)p.set(e.subgraph,[...p.get(e.subgraph)??[],e.id]);let m=new Map(o.nodes.map(e=>[e.id,u(e.id)]));Hn(e.subgraphs,s,m,(t,n)=>{let r=H(t),i=H(n),a=(t,n)=>e.edges.some(e=>t.has(e.source)&&n.has(e.target));return a(r,i)&&a(i,r)},(t,n)=>M(e,t,n));for(let e of f.ghosts){let t=[...H(d.find(t=>t.id===e.subgraph))].filter(e=>m.has(e)).map(e=>m.get(e));m.set(e.id,t.reduce((e,t)=>e+t,0)/t.length)}let h=new Map(e.nodes);for(let e of f.ghosts)h.set(e.id,{id:e.id,label:` `,shape:`rectangle`});let g=Un([...h.keys()],m,s,d,p),_={...i,nodes:new Map(g.map(e=>[e,h.get(e)])),edges:[...e.edges,...f.edges]},v=new Set(f.edges.map((t,n)=>e.edges.length+n)),y=i=>{let o=new Map,c=new Map;for(let l=0;;l++){let u=new Map(f.ghosts.map(e=>[e.id,On+(o.get(e.subgraph)??0)])),m=t(_,{fixedWidths:u,looseEdges:v,detachedEdges:i,walkOrder:r,feedbackEdges:a,forceNodeOrder:!0}),h=new Map(m.nodes.filter(e=>!Ln(e.id)).map(e=>[e.id,e])),g=Gn(e.subgraphs,h,n),y=qn(g,e.subgraphs,h,e.direction,new Set(p.keys()),s),{penetration:b,stuck:x}=y;if(x)return;if(b.size===0){for(let t=0;y.requests.length>0;t++){if(t===An)return;Zn(y.requests.reduce((e,t)=>t.amount>e.amount?t:e),[...h.values()],m.edges),g=Gn(e.subgraphs,h,n),y=qn(g,e.subgraphs,h,e.direction,new Set(p.keys()),s)}let t=Xn(e,i,h,g,d);return t&&er(m,[...h.values()],g,t,e.direction)}if(l===kn)return;for(let[e,t]of b){let n=o.get(e)??0,r=c.get(e),i=r?(r.overlap-t)/(n-r.width):0,a=i>Pn?i:Nn;c.set(e,{width:n,overlap:t}),o.set(e,n+t/a+Mn)}}},b=Yn(e,f,s,d);return(b.size>0?y(b):void 0)??y(new Set)}function Yn(e,t,n,r){let i=r.map(e=>{let t=H(e);return{inside:t,layers:new Set([...t].filter(e=>n.has(e)).map(e=>n.get(e)))}}),a=e=>{let t=n.get(e.source),r=n.get(e.target);return t===void 0||r===void 0||e.source===e.target?!1:i.some(({inside:n,layers:i})=>n.has(e.source)&&n.has(e.target)&&Array.from({length:Math.max(0,Math.abs(r-t)-1)},(e,n)=>Math.min(t,r)+1+n).some(e=>!i.has(e)))},o=new Set;e.edges.forEach((e,t)=>{a(e)&&o.add(t)});let s=new Map,c=e=>{e.source!==e.target&&(s.set(e.source,(s.get(e.source)??0)+1),s.set(e.target,(s.get(e.target)??0)+1))};e.edges.forEach((e,t)=>{o.has(t)||c(e)}),t.edges.forEach(c);for(let t of[...o]){let n=e.edges[t];(!s.get(n.source)||!s.get(n.target))&&o.delete(t)}return o}function Xn(e,t,n,r,i){let a=new Map(Kn(r).map(e=>[e.id,e])),o=[];for(let r of t){let t=e.edges[r],s=n.get(t.source),c=n.get(t.target),l=i.filter(e=>{let n=H(e);return n.has(t.source)&&n.has(t.target)}).sort((e,t)=>H(e).size-H(t).size)[0],u=l&&a.get(l.id);if(!s||!c||!u)return;let d=Tn(s,c,[...n.values()].filter(e=>e!==s&&e!==c),u,e.direction,o.map(e=>e.points));if(!d)return;o.push({source:t.source,target:t.target,label:t.label,style:t.style,hasArrowStart:t.hasArrowStart,hasArrowEnd:t.hasArrowEnd,points:d,labelPosition:t.label?En(d):void 0,inlineStyle:un(r,e),id:t.id,animate:t.animate})}return o}function Zn(e,t,n){let{axis:r,amount:i,after:a}=e,o=i+jn,s=t.filter(e=>e[r]>=a),c=Math.min(...s.map(e=>e[r]));for(let e of s)e[r]+=o;let l=e=>{e[r]>=c&&(e[r]+=o)};for(let e of n)e.points.forEach(l),e.labelPosition&&l(e.labelPosition)}var Qn=8;function $n(e,t,n,r){let i=In(r)?`y`:`x`,a=i===`x`?`y`:`x`,o=i===`x`?`width`:`height`,s=i===`x`?`height`:`width`;for(let{points:r}of e)for(let e=1;e<r.length-1;){let c=e;for(;c+1<r.length-1&&r[c+1][i]===r[e][i];)c++;let l=r.slice(e,c+1),u=l[0],d=Math.min(...l.map(e=>e[a])),f=Math.max(...l.map(e=>e[a])),p=r[e-1][i],m=r[c+1][i],h=n.flatMap(e=>[e[i],e[i]+e[o]].map(t=>({g:e,s:t}))).find(({g:e,s:t})=>Math.abs(u[i]-t)<Qn&&f>e[a]&&d<e[a]+e[s]);if(h){let e=h.s+(u[i]>=h.s?Qn:-8),n=(e-p)*(m-e)>0,r=t.every(t=>t[i]+t[o]<=e||t[i]>=e||t[a]+t[s]<=d||t[a]>=f);if(n&&r)for(let t of l)t[i]=e}e=c+1}}function er(e,t,n,r,i){let a=[...e.edges.filter(e=>!Ln(e.source)&&!Ln(e.target)),...r],o=Kn(n);$n(a,t,o,i);let s=[...t.map(e=>e.x),...o.map(e=>e.x),...a.flatMap(e=>e.points.map(e=>e.x))],c=[...t.map(e=>e.y),...o.map(e=>e.y),...a.flatMap(e=>e.points.map(e=>e.y))],l=B.padding-Math.min(...s),u=B.padding-Math.min(...c);for(let e of t)e.x+=l,e.y+=u;for(let e of o)e.x+=l,e.y+=u;for(let e of a){for(let t of e.points)t.x+=l,t.y+=u;e.labelPosition&&(e.labelPosition.x+=l,e.labelPosition.y+=u)}let d=0,f=0;for(let e of t)d=Math.max(d,e.x+e.width+B.padding),f=Math.max(f,e.y+e.height+B.padding);for(let e of o)d=Math.max(d,e.x+e.width+B.padding),f=Math.max(f,e.y+e.height+B.padding);for(let e of a){for(let t of e.points)d=Math.max(d,t.x+Xe.width+B.padding),f=Math.max(f,t.y+Xe.width+B.padding);e.labelPosition&&(d=Math.max(d,e.labelPosition.x+60+B.padding),f=Math.max(f,e.labelPosition.y+20+B.padding))}return{...e,nodes:t,edges:a,groups:n,width:d,height:f}}var tr=12,nr=8,rr=4;function ir(e,t,n){let r=e.map(e=>({axis:e.axis,cross:e.cross,after:e.after??0,rank:0,real:!0})),i=e.map(()=>[]),a=e.map(()=>[]),o=t.flatMap((e,t)=>e.from===e.to?[]:[t]),s=p(o.map(e=>({source:String(t[e].from),target:String(t[e].to)})),e.map((e,t)=>String(t))),c=o.map((e,n)=>{let r=t[e];return s.has(n)?{index:e,u:r.to,v:r.from,reversed:!0}:{index:e,u:r.from,v:r.to,reversed:!1}}),l=e.map(()=>[]),u=e.map(()=>0);for(let e of c)l[e.u].push(e.v),u[e.v]++;let d=u.flatMap((e,t)=>e===0?[t]:[]);for(let e=0;e<d.length;e++){let t=d[e];for(let e of l[t])r[e].rank=Math.max(r[e].rank,r[t].rank+2),--u[e]===0&&d.push(e)}let f=c.map(e=>{let n=(r[e.v].rank-r[e.u].rank)/2,o=r[e.u].rank+2*Math.floor(n/2)+1,s=t[e.index].label,c=[e.u];for(let t=r[e.u].rank+1;t<r[e.v].rank;t++){let e=r.length,n=t===o&&s!==void 0;r.push({axis:n?s.axis:0,cross:n?s.cross:0,after:0,rank:t,real:!1}),i.push([]),a.push([]),c.push(e)}c.push(e.v);for(let e=1;e<c.length;e++)a[c[e-1]].push(c[e]),i[c[e]].push(c[e-1]);return{chain:c,labelRank:o}}),m=r.map((e,t)=>t),h=e=>{let t=e;for(;m[t]!==t;)t=m[t]=m[m[t]];return t};for(let{chain:e}of f)for(let t of e)m[h(t)]=h(e[0]);let g=new Map;r.forEach((e,t)=>{let n=h(t);g.set(n,[...g.get(n)??[],t])});let _=r.map(()=>0),v=[],y=[];for(let e of g.values()){let t=ar(e,r,i,a,n),o=1/0,s=-1/0;for(let n of e)_[n]=t.get(n),o=Math.min(o,_[n]-r[n].cross/2),s=Math.max(s,_[n]+r[n].cross/2+r[n].after);v.push({min:o,max:s}),y.push(e)}let b=0;y.forEach((e,t)=>{let r=b-v[t].min;for(let t of e)_[t]=_[t]+r;b+=v[t].max-v[t].min+n.nodeSep});let x=Math.max(0,b-n.nodeSep),S=r.reduce((e,t)=>Math.max(e,t.rank),0),C=Array(S+1).fill(0);for(let e of r)C[e.rank]=Math.max(C[e.rank],e.axis);let w=Array(S+1).fill(0);for(let e=1;e<=S;e++)w[e]=w[e-1]+C[e-1]+n.rankSep/2;let T=e=>w[r[e].rank]+C[r[e].rank]/2,E=t.map(()=>[]),D=t.map(()=>void 0);return c.forEach((e,n)=>{let{chain:i,labelRank:a}=f[n],o=i.slice(1,-1),s=o.map(e=>({axis:T(e),cross:_[e]}));if(E[e.index]=e.reversed?s.reverse():s,t[e.index].label){let t=o.find(e=>r[e].rank===a);D[e.index]={axis:T(t),cross:_[t]}}}),{nodes:e.map((e,t)=>({axis:w[r[t].rank]+(C[r[t].rank]-e.axis)/2,cross:_[t]-e.cross/2})),paths:E,labels:D,axisSize:w[S]+C[S],crossSize:x}}function ar(e,t,n,r,i){let a=[],o=new Set,s=[...e].sort((e,n)=>t[e].rank-t[n].rank||e-n);for(let e of s){if(o.has(e))continue;let n=[{s:e,next:0}];for(o.add(e),(a[t[e].rank]??=[]).push(e);n.length>0;){let e=n[n.length-1],i=r[e.s][e.next++];i===void 0?n.pop():o.has(i)||(o.add(i),(a[t[i].rank]??=[]).push(i),n.push({s:i,next:0}))}}let c=a.filter(e=>e!==void 0),l=new Map,u=()=>c.forEach(e=>e.forEach((e,t)=>l.set(e,t))),d=()=>{let e=0;for(let t=0;t+1<c.length;t++){let n=c[t].flatMap(e=>r[e].map(t=>[l.get(e),l.get(t)]));for(let t=0;t<n.length;t++)for(let r=t+1;r<n.length;r++){let[i,a]=n[t],[o,s]=n[r];(i-o)*(a-s)<0&&e++}}return e};u();let f=c.map(e=>[...e]),p=d();for(let e=0;e<nr&&p>0;e++){let t=e%2==0,i=c.map((e,t)=>t);t||i.reverse();for(let e of i){let i=t?n:r,a=e=>{let t=i[e];return t.length===0?l.get(e):t.reduce((e,t)=>e+l.get(t),0)/t.length},o=new Map(c[e].map(e=>[e,a(e)]));c[e].sort((e,t)=>o.get(e)-o.get(t)||l.get(e)-l.get(t)),c[e].forEach((e,t)=>l.set(e,t))}let a=d();a<p&&(p=a,f=c.map(e=>[...e]))}f.forEach((e,t)=>c[t]=e);let m=new Map,h=(e,n)=>(t[e].cross+t[n].cross)/2+t[e].after+(t[e].real&&t[n].real?i.nodeSep:Math.min(i.nodeSep,tr)),g=(e,t)=>{let n=e.slice(1).map((t,n)=>h(e[n],t)),r=[0];n.forEach((e,t)=>r.push(r[t]+e)),or(e.map((e,n)=>{let i=(t[e]??[]).filter(e=>m.has(e));return(i.length===0?m.get(e)??0:i.reduce((e,t)=>e+m.get(t),0)/i.length)-r[n]})).forEach((t,n)=>m.set(e[n],t+r[n]))};for(let e of c)g(e,[]);for(let e=0;e<rr;e++){for(let e=1;e<c.length;e++)g(c[e],n);for(let e=c.length-2;e>=0;e--)g(c[e],r)}return m}function or(e){let t=[];for(let n of e)for(t.push({sum:n,count:1});t.length>1;){let e=t[t.length-1],n=t[t.length-2];if(n.sum/n.count<=e.sum/e.count)break;t.splice(-2,2,{sum:n.sum+e.sum,count:n.count+e.count})}return t.flatMap(e=>Array(e.count).fill(e.sum/e.count))}var sr=28,cr=18,lr=10,ur=32;function dr(e,t={}){let n={...B,...t,fontSizes:Ke(t.fontSizes)},r=e.direction===`TB`||e.direction===`TD`||e.direction===`BT`,i=e.direction===`BT`||e.direction===`RL`,a=new Map,o=new Map,s=(e,t)=>{a.set(e.id,e),t!==void 0&&o.set(e.id,t);for(let t of e.nodeIds)o.has(t)||o.set(t,e.id);for(let t of e.children)s(t,e.id)};e.subgraphs.forEach(e=>s(e));let c=[...e.nodes.keys()].filter(e=>!a.has(e)),l=new Map(c.map((e,t)=>[e,t])),u=e=>Math.min(...e.nodeIds.map(e=>l.get(e)??1/0),...e.children.map(u)),d=e=>{let t=a.get(e);return t?u(t):l.get(e)??1/0},f=t=>[...c.filter(e=>o.get(e)===t),...(t===void 0?e.subgraphs:a.get(t).children).map(e=>e.id)].map((e,t)=>({id:e,i:t})).sort((e,t)=>d(e.id)-d(t.id)||e.i-t.i).map(e=>e.id),p=e=>{let t=[e];for(let n=o.get(e);n!==void 0;n=o.get(n))t.unshift(n);return t},m=t=>{let i=e.edges[t].label;if(!i)return;let a=_(i,n.fontSizes.edgeLabel,L.edgeLabel),o=a.width+8,s=a.height+6;return r?{axis:s,cross:o}:{axis:o,cross:s}},h=new Map,g=new Map;e.edges.forEach((e,t)=>{if(e.source===e.target){g.set(e.source,[...g.get(e.source)??[],t]);return}let n=p(e.source),r=p(e.target),i=0;for(;n[i]!==void 0&&n[i]===r[i];)i++;if(i>=n.length||i>=r.length)return;let a=i===0?``:n[i-1];h.set(a,[...h.get(a)??[],{index:t,from:n[i],to:r[i]}])});let v=r?i?{axisStart:V.bottom,axisEnd:V.top,crossStart:V.left,crossEnd:V.right}:{axisStart:V.top,axisEnd:V.bottom,crossStart:V.left,crossEnd:V.right}:{axisStart:i?V.right:V.left,axisEnd:i?V.left:V.right,crossStart:V.top,crossEnd:V.bottom},y=(e,t)=>r?{aSize:t,cSize:e}:{aSize:e,cSize:t},b=new Map;for(let t of c){let r=e.nodes.get(t),i=_t(t,r.label,r.shape,n.fontSizes.nodeLabel);b.set(t,y(i.width,i.height))}let x=e=>{let t=g.get(e);if(!r||!t)return 0;let n=Math.max(0,...t.map(e=>(m(e)?.cross??-10)+lr));return sr+(t.length-1)*cr+n},S=e=>{let t=f(e),i=new Map,o=new Map,s=new Map;for(let e of t){let t=a.get(e);if(!t){o.set(e,b.get(e));continue}let c=S(e);i.set(e,c);let l=_(t.label,n.fontSizes.groupHeader,L.groupHeader).width,u=c.axisSize+v.axisStart+v.axisEnd,d=c.crossSize+v.crossStart+v.crossEnd,f=r?0:l+ur,p=r?l+ur:0,m=Math.max(0,f-u),h=Math.max(0,p-d);u+=m,d+=h,o.set(e,{aSize:u,cSize:d}),s.set(e,{axis:v.axisStart+m/2,cross:v.crossStart+h/2})}let c=new Map(t.map((e,t)=>[e,t])),l=h.get(e??``)??[],u=ir(t.map(e=>({axis:o.get(e).aSize,cross:o.get(e).cSize,after:x(e)})),l.map(e=>({from:c.get(e.from),to:c.get(e.to),label:m(e.index)})),{nodeSep:n.nodeSpacing,rankSep:n.layerSpacing}),d=new Map;return l.forEach((e,t)=>d.set(e.index,{mids:u.paths[t],label:u.labels[t]})),{members:t,at:new Map(t.map((e,t)=>[e,u.nodes[t]])),sizes:o,inset:{axis:0,cross:0},axisSize:u.axisSize,crossSize:u.crossSize,routes:d,inner:new Map([...i].map(([e,t])=>[e,{...t,inset:s.get(e)}]))}},C=S(void 0),w=new Map,E=new Map,D=(e,t,n)=>{for(let[r,i]of e.routes)E.set(r,{mids:i.mids.map(e=>({axis:e.axis+t,cross:e.cross+n})),label:i.label&&{axis:i.label.axis+t,cross:i.label.cross+n}});let r=[];for(let i of e.members){let o=e.at.get(i),s=e.sizes.get(i),c={axis:t+o.axis,cross:n+o.cross,...s};w.set(i,c);let l=e.inner.get(i);if(l){let e=a.get(i),t=D(l,c.axis+l.inset.axis,c.cross+l.inset.cross);r.push({id:i,label:e.label,x:0,y:0,width:0,height:0,children:t,...e.region?{region:!0}:{}})}}return r},O=D(C,0,0),k=n.padding,A=C.axisSize,ee=e=>{let t=i?A-e.axis:e.axis;return r?{x:e.cross+k,y:t+k}:{x:t+k,y:e.cross+k}},j=e=>{let t=i?A-e.axis-e.aSize:e.axis;return r?{x:e.cross+k,y:t+k,width:e.cSize,height:e.aSize}:{x:t+k,y:e.cross+k,width:e.aSize,height:e.cSize}},M=e=>{for(let t of e)Object.assign(t,j(w.get(t.id))),M(t.children)};M(O);let N=c.map(t=>{let n=e.nodes.get(t);return{id:t,label:n.label,shape:n.shape,...j(w.get(t)),inlineStyle:T(t,e),className:e.classAssignments.get(t),interaction:e.interactions.get(t)}}),P=new Map(N.map(e=>[e.id,e])),te=[];e.edges.forEach((t,n)=>{let r=E.get(n);if(!r)return;let i=w.get(t.source),a=w.get(t.target),o=i.axis>a.axis,[s,c]=o?[a,i]:[i,a],l=[{axis:s.axis+s.aSize,cross:s.cross+s.cSize/2},...o?[...r.mids].reverse():r.mids,{axis:c.axis,cross:c.cross+c.cSize/2}],u=[l[0]];for(let e of l.slice(1)){let t=u[u.length-1];if(t.cross!==e.cross){let n=(t.axis+e.axis)/2;u.push({axis:n,cross:t.cross},{axis:n,cross:e.cross})}u.push(e)}let d=Ht(fr(u.map(ee)));o&&d.reverse();let f=P.get(t.source),p=P.get(t.target);f&&(d=Dt(d,f,!0)),p&&(d=Dt(d,p,!1)),te.push({source:t.source,target:t.target,label:t.label,style:t.style,hasArrowStart:t.hasArrowStart,hasArrowEnd:t.hasArrowEnd,points:d,labelPosition:r.label&&ee(r.label),inlineStyle:un(n,e),id:t.id,animate:t.animate})}),Zt(e,P,te);let ne=(r?C.crossSize:C.axisSize)+k*2,F=(r?C.axisSize:C.crossSize)+k*2;for(let e of te){for(let t of e.points)ne=Math.max(ne,t.x+Xe.width+k),F=Math.max(F,t.y+Xe.width+k);e.labelPosition&&(ne=Math.max(ne,e.labelPosition.x+60+k),F=Math.max(F,e.labelPosition.y+20+k))}return{width:ne,height:F,nodes:N,edges:te,groups:O}}function fr(e){return e.filter((t,n)=>{let r=e[n-1],i=e[n+1];return!r||!i||!(r.x===t.x&&t.x===i.x||r.y===t.y&&t.y===i.y)})}function pr(e,t={}){return mr(e,t)}function mr(e,t,n){let r={...B,...t,fontSizes:Ke(t.fontSizes)};return $t(ze(Ct(e,r,n),t.layoutCache),e,r.mergeEdges)}function hr(e,t={}){let n=ne(e);if(t.layout===`simple`&&!ct(n))return dr(n,t);if(t.layout!==void 0&&t.layout!==`elk`&&t.layout!==`simple`)throw Error(`zombie-mermaid: unknown layout ${JSON.stringify(t.layout)}; use 'elk' or 'simple'.`);if(zn(n)){let e=Jn(n,(e,n)=>mr(e,t,n),Ke(t.fontSizes));if(e)return e}return pr(n,t)}function gr(e,t={}){return Ct(e,{...B,...t,fontSizes:Ke(t.fontSizes)})}var _r=12,vr=2;function yr(e){return e.flatMap(e=>[e,...yr(e.children)])}function br(e,t){let n=t.groupHeader+16;return yr(e).filter(e=>e.label!==``).map(e=>{let r=_(e.label,t.groupHeader,L.groupHeader);return{x:e.x+_r-vr,y:e.y+n/2-r.height/2-vr,width:r.width+4,height:r.height+4}})}function xr(e,t,n){let r=t.x-e.x,i=t.y-e.y,a=[-r,r,-i,i],o=[e.x-n.x,n.x+n.width-e.x,e.y-n.y,n.y+n.height-e.y],s=0,c=1;for(let e=0;e<4;e++){let t=a[e],n=o[e];if(t===0){if(n<0)return!1}else{let e=n/t;if(t<0?s=Math.max(s,e):c=Math.min(c,e),s>c)return!1}}return!0}function Sr(e){return{x:e.x+vr,y:e.y+vr,width:e.width-4,height:e.height-4}}function Cr(e,t){let n=e.points,r=t.map(Sr);for(let e=0;e+1<n.length;e++)if(r.some(t=>xr(n[e],n[e+1],t)))return!0;return!1}function wr(e){let t=2166136261;for(let n of e.map(e=>`${e.x},${e.y},${e.width},${e.height}`).join(`;`))t=Math.imul(t^n.charCodeAt(0),16777619);return(t>>>0).toString(36)}function Tr(e,t,n){let r=`zm-title-gap-${wr(e)}`;return{id:r,markup:` <mask id="${r}" maskUnits="userSpaceOnUse" x="0" y="0" width="${t}" height="${n}">\n <rect x="0" y="0" width="${t}" height="${n}" fill="#fff" />\n${e.map(e=>` <rect x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" fill="#000" />`).join(`
|
|
8
|
+
}`;function I(e,t,n){return v(e,t,n)}function He(e,t){return e.length*t*.6}var Ue=`'JetBrains Mono'`,We=`${Ue}, 'SF Mono', 'Fira Code', ui-monospace, monospace`,Ge={nodeLabel:13,edgeLabel:11,groupHeader:12};function Ke(e){return{nodeLabel:e?.nodeLabel??Ge.nodeLabel,edgeLabel:e?.edgeLabel??Ge.edgeLabel,groupHeader:e?.groupHeader??Ge.groupHeader}}var L={nodeLabel:500,edgeLabel:400,groupHeader:600},qe=12,Je=12,Ye={horizontal:20,vertical:10,diamondExtra:24},R={outerBox:1,innerBox:.75,connector:1},z=`0.35em`,Xe={width:8,height:5};function Ze(e,t,r,i){return n(e,t?{family:Be,faceCss:Ve}:!1,r,i)}var B={font:`Inter`,padding:40,nodeSpacing:28,layerSpacing:48,mergeEdges:!0,thoroughness:3,fontSizes:Ge},Qe={flowchart:`DOWN`,state:`DOWN`,class:`DOWN`,er:`DOWN`,c4:`DOWN`};function $e(e,t){switch(e){case`LR`:return`RIGHT`;case`RL`:return`LEFT`;case`BT`:return`UP`;case`TD`:case`TB`:return`DOWN`;default:return t}}function et(e){let t=typeof e==`number`?{top:e,left:e,bottom:e,right:e}:e;return`[top=${t.top},left=${t.left},bottom=${t.bottom},right=${t.right}]`}function tt(e){return{"elk.algorithm":`layered`,"elk.direction":e.direction,"elk.spacing.nodeNode":String(e.nodeSpacing),"elk.layered.spacing.nodeNodeBetweenLayers":String(e.layerSpacing),"elk.padding":et(e.padding),"elk.edgeRouting":`ORTHOGONAL`}}function nt(e,t,n){let r={id:e,width:t.width,height:t.height};return n!==void 0&&(r.labels=[{text:n}]),r}var rt={"elk.edgeLabels.inline":`true`,"elk.edgeLabels.placement":`CENTER`};function it(e,t){let n=_(e,t.fontSize,L.edgeLabel),r={text:e,width:n.width+8,height:n.height+6};return t.layoutOptions&&(r.layoutOptions={...t.layoutOptions}),r}function at(e){let t={id:e.id,sources:[e.source],targets:[e.target]};return e.label&&(t.labels=[it(e.label,e.labelStyle)]),t}var ot={"state-start":`FIRST`},st={"elk.layered.cycleBreaking.strategy":`MODEL_ORDER`,"elk.layered.compaction.postCompaction.strategy":`NONE`};function ct(e){for(let t of e.nodes.values())if(t.shape===`state-start`||t.shape===`state-end`)return!0;return!1}var V={top:44,left:16,bottom:16,right:16},lt={top:16,left:16,bottom:16,right:16};function ut(e){let t=new Map;for(let n of e.edges){if(!n.label)continue;let e=`${n.source}\0${n.target}`,r=(t.get(e)??0)+1;if(r>=3)return!0;t.set(e,r)}return!1}var dt=new WeakMap;function ft(e,t){let n=dt.get(e);return n||(n=ct(e)||yt(e.subgraphs)?new Set:f(e,t?.walkOrder,t?.feedbackEdges??j(e)),dt.set(e,n)),n}function pt(e,t){for(let n=0;n<e.edges.length;n++){let r=e.edges[n];if(t.has(r.source)||t.has(r.target))return n}return 1/0}function mt(e){return $e(e,Qe.flowchart)}function ht(e){return{...tt(e),"elk.spacing.edgeEdge":`12`,"elk.layered.spacing.edgeEdgeBetweenLayers":`12`,"elk.layered.spacing.edgeNodeBetweenLayers":`12`,"elk.layered.nodePlacement.bk.fixedAlignment":`BALANCED`,"elk.contentAlignment":`H_CENTER V_CENTER`}}function gt(e){return{fontSize:e.fontSizes.edgeLabel,layoutOptions:rt}}function _t(e,t,n,r){let i=_(t,r,L.nodeLabel),a=i.width+Ye.horizontal*2,o=i.height+Ye.vertical*2;if(n===`diamond`){let e=Math.max(a,o)+Ye.diamondExtra;a=e,o=e}if(n===`circle`||n===`doublecircle`){let e=Math.ceil(Math.sqrt(a*a+o*o))+8;a=n===`doublecircle`?e+12:e,o=a}return n===`hexagon`&&(a+=Ye.horizontal),(n===`trapezoid`||n===`trapezoid-alt`||n===`parallelogram`||n===`parallelogram-alt`)&&(a+=Ye.horizontal),n===`asymmetric`&&(a+=12),n===`cylinder`&&(o+=14),n===`state-start`||n===`state-end`||t===``&&n===`diamond`?{width:28,height:28}:t===``&&n===`fork-join`?{width:70,height:10}:(a=Math.max(a,60),o=Math.max(o,36),{width:a,height:o})}var vt=` root`;function yt(e){for(let t of e)if(t.direction!==void 0||yt(t.children))return!0;return!1}function bt(e,t){for(let n of e.nodeIds)t.add(n);for(let n of e.children)bt(n,t)}function xt(e){let t=new Map;function n(e,r){let i=[...r,e.id];t.set(e.id,i);for(let t of e.children)n(t,i)}for(let t of e)n(t,[]);return t}function St(e,t){let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];)n++;return n}function Ct(e,t,n){let r=t,i=new Set,a=new Set;for(let t of e.subgraphs)a.add(t.id),Tt(t,i,a);let o=Et(e.subgraphs),s=xt(e.subgraphs),c=e=>e?s.get(e)??[]:[],l=new Map;l.set(null,[]);let u=[];for(let t=0;t<e.edges.length;t++){let n=e.edges[t],r=o.get(n.source),i=o.get(n.target);if(r&&r===i){let e=l.get(r)??[];l.set(r,e),e.push({index:t,edge:n})}else!r&&!i?l.get(null).push({index:t,edge:n}):u.push({index:t,edge:n,srcChain:c(r),tgtChain:c(i)})}let d=yt(e.subgraphs),f=[],p=[],m={...ht({direction:mt(e.direction),nodeSpacing:r.nodeSpacing,layerSpacing:r.layerSpacing,padding:r.padding}),"elk.layered.thoroughness":String(B.thoroughness),"elk.layered.highDegreeNodes.treatment":`false`,"elk.layered.compaction.postCompaction.strategy":(e.subgraphs.length===0||ut(e))&&!n?.forceNodeOrder?`NONE`:`LEFT_RIGHT_CONSTRAINT_LOCKING`,"elk.layered.considerModelOrder.strategy":`NODES_AND_EDGES`,...ut(e)?{"elk.spacing.edgeEdge":`40`}:{},...n?.forceNodeOrder?{"elk.layered.crossingMinimization.forceNodeModelOrder":`true`}:{},...ct(e)?st:{},"elk.layered.wrapping.strategy":`OFF`,"elk.hierarchyHandling":d?`SEPARATE`:`INCLUDE_CHILDREN`},h=new Map,g=new Map;function _(e,t){let n=h.get(e)??new Set;h.set(e,n),n.add(t)}function v(e,t){let n=g.get(e)??[];g.set(e,n),n.push(t)}if(d)for(let{index:e,edge:t,srcChain:n,tgtChain:i}of u){let a=St(n,i),o=t.source;if(n.length>a){for(let r=n.length-1;r>=a;r--){let i=n[r],a=`${i}_out_${e}`;_(i,a);let o=r===n.length-1?t.source:`${n[r+1]}_out_${e}`;v(i,{id:`e${e}_s${r}`,sources:[o],targets:[a]})}o=`${n[a]}_out_${e}`}let s=t.target;if(i.length>a){for(let n=a;n<=i.length-1;n++){let r=i[n],a=`${r}_in_${e}`;_(r,a);let o=n===i.length-1?t.target:`${i[n+1]}_in_${e}`;v(r,{id:`e${e}_t${n}`,sources:[a],targets:[o]})}s=`${i[a]}_in_${e}`}v(a>0?n[a-1]:vt,at({id:`e${e}`,source:o,target:s,label:t.label,labelStyle:gt(r)}))}for(let[t,o]of e.nodes)if(!i.has(t)&&!a.has(t)){let i=_t(t,o.label,o.shape,r.fontSizes.nodeLabel),a=n?.fixedWidths?.get(t);a!==void 0&&(i.width=a);let s=nt(t,i,o.label),c=ct(e)?ot[o.shape]:void 0;c!==void 0&&(s.layoutOptions={"elk.layered.layering.layerConstraint":c}),f.push(s)}let y=ct(e),b=f.length,x=y?e.subgraphs:[...e.subgraphs].reverse();for(let t of x)f.push(wt(t,e,r,l,h,g,e.direction));if(y&&e.subgraphs.length>0){let t=f.map((t,n)=>{if(n<b)return pt(e,new Set([t.id]));let r=e.subgraphs[n-b],i=pt(e,new Set([r.id]));if(i!==1/0)return i;let a=new Set;return bt(r,a),pt(e,a)}),n=f.map((e,t)=>t).sort((e,n)=>t[e]-t[n]||e-n).map(e=>f[e]);f.splice(0,f.length,...n)}let S=ft(e,n),C=n?.feedbackEdges,w=l.get(null),T=C?.size?[...w.filter(e=>C.has(e.index)),...w.filter(e=>!C.has(e.index))]:w;for(let{index:e,edge:t}of T){if(t.source===t.target||n?.detachedEdges?.has(e))continue;let i=at({id:`e${e}`,source:S.has(e)?t.target:t.source,target:S.has(e)?t.source:t.target,label:t.label,labelStyle:gt(r)});n?.looseEdges?.has(e)&&(i.layoutOptions={...i.layoutOptions,"elk.layered.priority.straightness":`0`}),p.push(i)}if(d)for(let e of g.get(vt)??[])p.push(e);else for(let{index:e,edge:t}of u)p.push(at({id:`e${e}`,source:S.has(e)?t.target:t.source,target:S.has(e)?t.source:t.target,label:t.label,labelStyle:gt(r)}));return{id:`root`,layoutOptions:m,children:f,edges:p}}function wt(e,t,n,r,i,a,o){let s=e.direction!==void 0&&ee(e,t)?e.direction:o,c=ht({direction:mt(s),nodeSpacing:n.nodeSpacing,layerSpacing:n.layerSpacing,padding:e.region?lt:V}),l,u=i.get(e.id);u&&u.size>0&&(l=[...u].map(e=>({id:e})));let d=[];for(let r of e.nodeIds){let e=t.nodes.get(r);if(e){let t=_t(r,e.label,e.shape,n.fontSizes.nodeLabel);d.push(nt(r,t,e.label))}}let f=e.children.some(e=>e.region)?e.children:[...e.children].reverse();for(let e of f)d.push(wt(e,t,n,r,i,a,s));let p=[],m=r.get(e.id)??[],h=ft(t);for(let{index:e,edge:t}of m)t.source!==t.target&&p.push(at({id:`e${e}`,source:h.has(e)?t.target:t.source,target:h.has(e)?t.source:t.target,label:t.label,labelStyle:gt(n)}));for(let t of a.get(e.id)??[])p.push(t);return{id:e.id,layoutOptions:c,labels:e.label?[{text:e.label}]:void 0,ports:l,children:d,edges:p}}function Tt(e,t,n){for(let n of e.nodeIds)t.add(n);for(let r of e.children)n.add(r.id),Tt(r,t,n)}function Et(e){let t=new Map;function n(e){for(let n of e.nodeIds)t.set(n,e.id);for(let t of e.children)n(t)}for(let t of e)n(t);return t}function Dt(e,t,n){if(e.length<2||t.shape===`rectangle`||t.shape===`rounded`||t.shape===`stadium`)return e;let r=[...e];if(t.shape===`diamond`){if(n)r[0]=Ot(e[0],e[1],t);else{let n=e.length-1;r[n]=Ot(e[n],e[n-1],t)}}if(t.shape===`asymmetric`){let i=n?0:e.length-1,a=e[i],o=t.height/2,s=Math.abs(a.y-(t.y+o));Math.abs(a.x-t.x)<.5&&s<o&&(r[i]={x:t.x+12*(1-s/o),y:a.y})}return r}function Ot(e,t,n){let r=n.x+n.width/2,i=n.y+n.height/2,a={x:r,y:n.y},o={x:n.x+n.width,y:i},s={x:r,y:n.y+n.height},c={x:n.x,y:i},l=e.x-t.x,u=e.y-t.y;if(Math.abs(l)<Math.abs(u)){let t=e.x;return u>0?t<=r?At(t,c,a)??a:At(t,a,o)??a:t<=r?At(t,s,c)??s:At(t,o,s)??s}{let t=e.y;return l>0?t<=i?kt(t,a,c)??c:kt(t,c,s)??c:t<=i?kt(t,a,o)??o:kt(t,o,s)??o}}function kt(e,t,n){let r=n.y-t.y;if(Math.abs(r)<.001)return null;let i=(e-t.y)/r;return i<0||i>1?null:{x:t.x+i*(n.x-t.x),y:e}}function At(e,t,n){let r=n.x-t.x;if(Math.abs(r)<.001)return null;let i=(e-t.x)/r;return i<0||i>1?null:{x:e,y:t.y+i*(n.y-t.y)}}var jt=12;function Mt(e,t,n){if(e.length===0)return;let r=n===`LR`||n===`RL`,i=new Set;for(let e of t)i.add(`${e.source}:${e.target}`),i.add(`${e.target}:${e.source}`);let a=B.layerSpacing*.6,o=[...e].sort((e,t)=>r?e.x-t.x:e.y-t.y),s=[],c=[o[0]];for(let e=1;e<o.length;e++){let t=(r?o[e].x:o[e].y)-(r?o[e-1].x:o[e-1].y),n=c.some(t=>i.has(`${t.id}:${o[e].id}`));t<=a&&!n?c.push(o[e]):(s.push(c),c=[o[e]])}s.push(c);let l=new Map;for(let e of s){if(e.length<=1)continue;let t=e.map(e=>r?e.x:e.y),n=Math.min(...t),i=Math.max(...t);if(i-n<=1)continue;let a=(n+i)/2;for(let t of e){let e=a-(r?t.x:t.y);Math.abs(e)>.5&&(r?t.x=a:t.y=a,l.set(t.id,e))}}if(l.size===0)return;let u=r?`x`:`y`,d=(e,t,n,r)=>{let i=e[t],a=i[u];i[u]+=r;let[o,s,c]=[1,2,3].map(r=>e[t+r*n]);if(o[u]===a)o[u]+=r;else if(s&&c&&s[u]===o[u]){let e=Math.sign(o[u]-a),t=o[u]+e*Math.max(0,jt-e*(o[u]-i[u]));e*(c[u]-t)>0&&(o[u]=s[u]=t)}};for(let e of t){let{points:t}=e;if(t.length<2)continue;let n=l.get(e.source),r=l.get(e.target);n!=null&&d(t,0,1,n),r!=null&&d(t,t.length-1,-1,r)}}var Nt=.5;function Pt(e,t,n){for(let r=0;r<e.length-1;r++){let i=e[r],a=e[r+1],o=Math.min(i.x,a.x),s=Math.max(i.x,a.x),c=Math.min(i.y,a.y),l=Math.max(i.y,a.y);for(let e of t){if(n.has(e.id))continue;let t=e.x+Nt,r=e.x+e.width-Nt,i=e.y+Nt,a=e.y+e.height-Nt;if(!(t>=r||i>=a)&&o<r&&s>t&&c<a&&l>i)return!1}}return!0}function Ft(e,t,n){let r=[];for(let i of n)e>=i.x&&e<=i.x+i.width&&t>=i.y&&t<=i.y+i.height&&(r.push(i),r.push(...Ft(e,t,i.children)));return r}function It(e,t,n,r,i){let a=i===`LR`,o=i===`RL`,s=i===`BT`,c=a||o,l=new Set(Ft(t,n,r).map(e=>e.id)),u=Ft(c?e:t,c?n:e,r).find(e=>!l.has(e.id));return u?a?u.x-12:o?u.x+u.width+12:s?u.y+u.height+12:u.y-12:e}var Lt=2;function Rt(e,t,n,r,i){for(let a of e){if(t.has(a)||a.source===a.target)continue;let e=a.source===n?a.points[0]:a.target===n?a.points[a.points.length-1]:void 0;if(e&&Math.abs((i?e.x:e.y)-r)<=Lt)return!0}return!1}function zt(e,t,n,r){let i=new Map(t.map(e=>[e.id,e])),a=new Set,o=r===`LR`,s=r===`RL`,c=r===`BT`,l=o||s,u=new Map;for(let t of e){if(t.source===t.target)continue;let e=u.get(t.source)??[];u.set(t.source,e),e.push(t)}for(let[d,f]of u){if(f.length<2)continue;let u=f[0].style;if(f.some(e=>e.label||e.style!==u))continue;let p=i.get(d);if(!p)continue;let m=[];for(let e of f){let t=i.get(e.target);t&&(o?t.x>p.x+p.width:s?t.x+t.width<p.x:c?t.y+t.height<p.y:t.y>p.y+p.height)&&m.push({edge:e,node:t})}if(m.length<2)continue;let h=p.x+p.width/2,g=p.y+p.height/2;if(l){let i=o?p.x+p.width:p.x,s=g;if(Rt(e,new Set(m.map(e=>e.edge)),d,i,!0))continue;let c=i+((o?Math.min(...m.map(e=>e.node.x)):Math.max(...m.map(e=>e.node.x+e.node.width)))-i)/2;c=It(c,h,g,n,r);let l=[];for(let{edge:e,node:n}of m){let r=o?n.x:n.x+n.width,a=n.y+n.height/2,u=[{x:i,y:s},{x:c,y:s},{x:c,y:a},{x:r,y:a}];Pt(u,t,new Set([d,n.id]))&&l.push({edge:e,points:u})}if(l.length<2)continue;for(let{edge:e,points:t}of l)e.points=t,a.add(e)}else{let i=h,o=c?p.y:p.y+p.height;if(Rt(e,new Set(m.map(e=>e.edge)),d,o,!1))continue;let s=o+((c?Math.max(...m.map(e=>e.node.y+e.node.height)):Math.min(...m.map(e=>e.node.y)))-o)/2;s=It(s,h,g,n,r);let l=[];for(let{edge:e,node:n}of m){let r=n.x+n.width/2,a=c?n.y+n.height:n.y,u=[{x:i,y:o},{x:i,y:s},{x:r,y:s},{x:r,y:a}];Pt(u,t,new Set([d,n.id]))&&l.push({edge:e,points:u})}if(l.length<2)continue;for(let{edge:e,points:t}of l)e.points=t,a.add(e)}}let d=new Map;for(let t of e){if(a.has(t)||t.source===t.target)continue;let e=d.get(t.target)??[];d.set(t.target,e),e.push(t)}for(let[a,u]of d){if(u.length<2)continue;let d=u[0].style;if(u.some(e=>e.label||e.style!==d))continue;let f=i.get(a);if(!f)continue;let p=[];for(let e of u){let t=i.get(e.source);t&&(o?t.x+t.width<f.x:s?t.x>f.x+f.width:c?t.y>f.y+f.height:t.y+t.height<f.y)&&p.push({edge:e,node:t})}if(p.length<2)continue;let m=f.x+f.width/2,h=f.y+f.height/2;if(l){let i=o?f.x:f.x+f.width,s=h;if(Rt(e,new Set(p.map(e=>e.edge)),a,i,!0))continue;let c=o?Math.max(...p.map(e=>e.node.x+e.node.width)):Math.min(...p.map(e=>e.node.x)),l=c+(i-c)/2;l=It(l,m,h,n,r);let u=[];for(let{edge:e,node:n}of p){let r=o?n.x+n.width:n.x,c=n.y+n.height/2,d=[{x:r,y:c},{x:l,y:c},{x:l,y:s},{x:i,y:s}];Pt(d,t,new Set([n.id,a]))&&u.push({edge:e,points:d})}if(u.length<2)continue;for(let{edge:e,points:t}of u)e.points=t}else{let i=m,o=c?f.y+f.height:f.y;if(Rt(e,new Set(p.map(e=>e.edge)),a,o,!1))continue;let s=c?Math.min(...p.map(e=>e.node.y)):Math.max(...p.map(e=>e.node.y+e.node.height)),l=s+(o-s)/2;l=It(l,m,h,n,r);let u=[];for(let{edge:e,node:n}of p){let r=n.x+n.width/2,s=[{x:r,y:c?n.y:n.y+n.height},{x:r,y:l},{x:i,y:l},{x:i,y:o}];Pt(s,t,new Set([n.id,a]))&&u.push({edge:e,points:s})}if(u.length<2)continue;for(let{edge:e,points:t}of u)e.points=t}}}var Bt=1.5,Vt=.01;function Ht(e){let t=e.map(e=>({...e})),n=0;for(;n+3<t.length;){let[e,r,i,a]=[t[n],t[n+1],t[n+2],t[n+3]],o=Math.abs(e.x-r.x)<Vt&&Math.abs(i.x-a.x)<Vt&&Math.abs(r.y-i.y)<Vt&&Math.abs(r.x-i.x)<=Bt&&Math.abs(r.x-i.x)>=Vt,s=Math.abs(e.y-r.y)<Vt&&Math.abs(i.y-a.y)<Vt&&Math.abs(r.x-i.x)<Vt&&Math.abs(r.y-i.y)<=Bt&&Math.abs(r.y-i.y)>=Vt;if(o){let r=(e.x+a.x)/2;t.splice(n,4,{x:r,y:e.y},{x:r,y:a.y})}else if(s){let r=(e.y+a.y)/2;t.splice(n,4,{x:e.x,y:r},{x:a.x,y:r})}else n++}return t}function Ut(e,t=0,n=0){let r=[];if(!e.sections||e.sections.length===0)return r;let i=e.sections[0];if(r.push({x:i.startPoint.x+t,y:i.startPoint.y+n}),i.bendPoints)for(let e of i.bendPoints)r.push({x:e.x+t,y:e.y+n});return r.push({x:i.endPoint.x+t,y:i.endPoint.y+n}),r}function Wt(e,t=0,n=0){if(!e.labels||e.labels.length===0)return;let r=e.labels[0];if(r.x!=null&&r.y!=null)return{x:r.x+(r.width??0)/2+t,y:r.y+(r.height??0)/2+n}}var Gt=16,Kt=28,qt=18,Jt=28,Yt=10;function Xt(e,t){let n=e.x+e.width,r=e.y+e.height/2,i=Math.min(Jt,e.height*.6)/2,a=Kt+t*qt,o=[];for(let e=0;e<=Gt;e++){let t=Math.PI*e/Gt;o.push({x:n+a*Math.sin(t),y:r-i*Math.cos(t)})}return{points:o,labelPosition:{x:n+a+Yt,y:r}}}function Zt(e,t,n){let r=new Map;for(let i=0;i<e.edges.length;i++){let a=e.edges[i];if(a.source!==a.target)continue;let o=t.get(a.source);if(!o)continue;let s=r.get(o.id)??0;r.set(o.id,s+1);let{points:c,labelPosition:l}=Xt(o,s);n.push({source:a.source,target:a.target,label:a.label,style:a.style,hasArrowStart:a.hasArrowStart,hasArrowEnd:a.hasArrowEnd,points:c,labelPosition:a.label?l:void 0,inlineStyle:un(i,e),id:a.id,animate:a.animate})}}function Qt(e){let t=[];for(let n of e)t.push({x:n.x,y:n.y,right:n.x+n.width,bottom:n.y+n.height}),t.push(...Qt(n.children));return t}function $t(e,t,n=!1){let r=[],i=[],a=[],o=new Set;for(let e of t.subgraphs)ln(e,o);en(e,t,o,r,a,0,0);let s=Qt(a);rn(e,t,i,0,0,s.length>0?{leftX:Math.min(...s.map(e=>e.x))-20,rightX:Math.max(...s.map(e=>e.right))+20}:void 0),Mt(r,i,t.direction);let c=new Map(r.map(e=>[e.id,e]));Zt(t,c,i),n&&zt(i,r,a,t.direction);for(let e of i){e.points=Ht(e.points);let t=c.get(e.source),n=c.get(e.target);t&&(e.points=Dt(e.points,t,!0)),n&&(e.points=Dt(e.points,n,!1))}let l=e.width??800,u=e.height??600,d=Xe.width,f=B.padding;for(let e of i){for(let t of e.points)l=Math.max(l,t.x+d+f),u=Math.max(u,t.y+d+f);e.labelPosition&&(l=Math.max(l,e.labelPosition.x+60+f),u=Math.max(u,e.labelPosition.y+20+f))}return{width:l,height:u,nodes:r,edges:i,groups:a}}function en(e,t,n,r,i,a,o){if(e.children)for(let s of e.children){let e=(s.x??0)+a,c=(s.y??0)+o,l=s.width??0,u=s.height??0;if(n.has(s.id)){let a=[];en(s,t,n,r,a,e,c);let o=cn(t.subgraphs,s.id);i.push({id:s.id,label:o?.label??``,x:e,y:c,width:l,height:u,children:a,...o?.region?{region:!0}:{}})}else{let a=t.nodes.get(s.id);if(a){let n=T(s.id,t),i=t.classAssignments.get(s.id);r.push({id:s.id,label:a.label,shape:a.shape,x:e,y:c,width:l,height:u,inlineStyle:n,className:i,interaction:t.interactions.get(s.id)})}s.children&&s.children.length>0&&en(s,t,n,r,i,e,c)}}}function tn(e){let t=/^e(\d+)$/.exec(e);if(t)return{edgeIndex:parseInt(t[1],10),role:`bridge`};let n=/^e(\d+)_([st])(\d+)$/.exec(e);if(n)return{edgeIndex:parseInt(n[1],10),role:n[2]===`s`?`source`:`target`,level:parseInt(n[3],10)}}function nn(e){if(e.length===0)return{x:0,y:0};if(e.length===1)return e[0];let t=0;for(let n=1;n<e.length;n++){let r=e[n].x-e[n-1].x,i=e[n].y-e[n-1].y;t+=Math.sqrt(r*r+i*i)}let n=t/2;for(let t=1;t<e.length;t++){let r=e[t].x-e[t-1].x,i=e[t].y-e[t-1].y,a=Math.sqrt(r*r+i*i);if(n<=a){let o=n/a;return{x:e[t-1].x+o*r,y:e[t-1].y+o*i}}n-=a}return e[e.length-1]}function rn(e,t,n,r,i,a){let o=new Map;an(e,o,0,0);let s=new Map;sn(e,s,0,0,o);let c=0;for(let[e,r]of s){let i=t.edges[e];if(!i)continue;let o=[],s=e=>{!e||e.points.length===0||(o.length>0?o.push(...e.points.slice(1)):o.push(...e.points))},l=[...r.sourceHops.keys()].sort((e,t)=>t-e);for(let e of l)s(r.sourceHops.get(e));s(r.bridge);let u=[...r.targetHops.keys()].sort((e,t)=>e-t);for(let e of u)s(r.targetHops.get(e));let d;i.label&&o.length>=2&&(d=r.bridge?.labelPosition??nn(o));let f=on(o,a,c);f!==o&&c++,i.label&&f!==o&&f.length>=2&&(d=nn(f)),n.push({source:i.source,target:i.target,label:i.label,style:i.style,hasArrowStart:i.hasArrowStart,hasArrowEnd:i.hasArrowEnd,points:ft(t).has(e)?[...f].reverse():f,labelPosition:d,inlineStyle:un(e,t),id:i.id,animate:i.animate})}}function an(e,t,n,r){t.set(e.id,{x:n,y:r});for(let i of e.children??[]){let e=i.x??0,a=i.y??0;an(i,t,n+e,r+a)}}function on(e,t,n=0){if(e.length<2)return e;let r=!1;for(let t=1;t<e.length;t++){let n=Math.abs(e[t].x-e[t-1].x),i=Math.abs(e[t].y-e[t-1].y);if(n>1&&i>1){r=!0;break}}if(!r)return e;let i=[e[0]];for(let r=1;r<e.length;r++){let a=i[i.length-1],o=e[r],s=Math.abs(o.x-a.x),c=Math.abs(o.y-a.y);if(s>1&&c>1){if(t){let e=n%2==0,r=Math.floor(n/2)*12,s=e?t.rightX+r:t.leftX-r;i.push({x:s,y:a.y}),i.push({x:s,y:o.y})}else{let e=(a.y+o.y)/2;i.push({x:a.x,y:e}),i.push({x:o.x,y:e})}}i.push(o)}return i}function sn(e,t,n,r,i){if(e.edges)for(let a of e.edges){let e=tn(a.id);if(!e)continue;let{edgeIndex:o}=e,s=a.container,c=s?i.get(s):void 0,l=c?.x??n,u=c?.y??r,d=Ut(a,l,u),f=Wt(a,l,u),p=t.get(o)??{sourceHops:new Map,targetHops:new Map};t.set(o,p);let m={edgeIndex:o,points:d,labelPosition:f};e.role===`bridge`?p.bridge=m:e.role===`source`?p.sourceHops.set(e.level,m):p.targetHops.set(e.level,m)}if(e.children)for(let a of e.children)sn(a,t,n+(a.x??0),r+(a.y??0),i)}function cn(e,t){for(let n of e){if(n.id===t)return n;let e=cn(n.children,t);if(e)return e}}function ln(e,t){t.add(e.id);for(let n of e.children)ln(n,t)}function un(e,t){let n,r=t.linkStyles.get(`default`);r&&(n={...r});let i=t.linkStyles.get(e);return i&&(n=n?{...n,...i}:{...i}),n&&s(n)}var dn=10,fn=14,pn=14,mn=10,hn=24,gn=400,_n=new Set([`rectangle`,`rounded`,`subroutine`]);function vn(e){let t=e===`TD`||e===`TB`||e===`BT`,n=e===`BT`||e===`RL`?-1:1;return{span:e=>{let[r,i]=t?[e.y,e.y+e.height]:[e.x,e.x+e.width],a=n*r,o=n*i;return{a0:Math.min(a,o),a1:Math.max(a,o),c0:t?e.x:e.y,c1:t?e.x+e.width:e.y+e.height}},toPoint:({a:e,c:r})=>t?{x:r,y:n*e}:{x:n*e,y:r}}}function yn(e,t,n){let r=Math.min(e.a,t.a),i=Math.max(e.a,t.a),a=Math.min(e.c,t.c),o=Math.max(e.c,t.c);return i>n.a0&&r<n.a1&&o>n.c0&&a<n.c1}var bn=(e,t)=>({a0:e.a0-t,a1:e.a1+t,c0:e.c0-t,c1:e.c1+t});function xn(e,t){let n=e.span({x:t.x,y:t.y,width:0,height:0});return{a:n.a0,c:n.c0}}function Sn(e,t,n){let r=e.c===t.c;for(let i=1;i<n.length;i++){let a=n[i-1],o=n[i];if(a.c===o.c===r){if(r){let n=Math.abs(e.c-a.c),r=Math.min(Math.max(e.a,t.a),Math.max(a.a,o.a))-Math.max(Math.min(e.a,t.a),Math.min(a.a,o.a));if(n<fn&&r>0)return!0}else{let n=Math.abs(e.a-a.a),r=Math.min(Math.max(e.c,t.c),Math.max(a.c,o.c))-Math.max(Math.min(e.c,t.c),Math.min(a.c,o.c));if(n<fn&&r>0)return!0}}}return!1}function Cn(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.a===n.a&&e.c===n.c||t.push(n)}for(let e=t.length-2;e>0;e--){let n=t[e-1],r=t[e],i=t[e+1];(n.a===r.a&&r.a===i.a||n.c===r.c&&r.c===i.c)&&t.splice(e,1)}return t}var wn=e=>{let t=0;for(let n=1;n<e.length;n++)t+=Math.abs(e[n].a-e[n-1].a)+Math.abs(e[n].c-e[n-1].c);return t};function Tn(e,t,n,r,i,a=[]){let o=vn(i),s=o.span(e),c=o.span(t),l=s.a1<=c.a0,u=c.a1<=s.a0;if(!l&&!u)return;let d=o.span(r),f={a0:d.a0+mn,a1:d.a1-mn,c0:d.c0+mn,c1:d.c1-mn},p=a.map(e=>e.map(e=>xn(o,e))),m=n.map(e=>bn(o.span(e),dn)),h=e=>(e.c0+e.c1)/2,g=e=>(e.a0+e.a1)/2,_=e=>_n.has(e.shape),v=e=>{for(let t of e)if(t.a<f.a0||t.a>f.a1||t.c<f.c0||t.c>f.c1)return!1;for(let t=1;t<e.length;t++){let n=e[t-1],r=e[t];if(n.a!==r.a&&n.c!==r.c||m.some(e=>yn(n,r,e))||yn(n,r,s)||yn(n,r,c)||p.some(e=>Sn(n,r,e)))return!1}return!0},y=new Set([h(s),h(c),f.c0,f.c1]);for(let e of m)y.add(e.c0-1),y.add(e.c1+1);for(let e of[s,c])y.add(e.c0-dn),y.add(e.c1+dn);let b=(e,t,n)=>_(e)?n>=t.c0+4&&n<=t.c1-4:Math.abs(n-h(t))<.5,x=[];if(l){let n=(c.a0-s.a1)/2,r=s.a1+Math.min(pn,n),i=c.a0-Math.min(pn,n);for(let n of y){b(e,s,n)&&b(t,c,n)&&x.push([{a:s.a1,c:n},{a:c.a0,c:n}]),x.push([{a:s.a1,c:h(s)},{a:r,c:h(s)},{a:r,c:n},{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}]),b(t,c,n)&&x.push([{a:s.a1,c:h(s)},{a:r,c:h(s)},{a:r,c:n},{a:c.a0,c:n}]),b(e,s,n)&&x.push([{a:s.a1,c:n},{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}]);let a=n>=s.c1?s.c1:n<=s.c0?s.c0:void 0;if(a!==void 0){let e=b(t,c,n)?[{a:c.a0,c:n}]:[{a:i,c:n},{a:i,c:h(c)},{a:c.a0,c:h(c)}];x.push([{a:g(s),c:a},{a:g(s),c:n},...e])}}}else for(let t of y){let n=t>=c.c1?c.c1:t<=c.c0?c.c0:void 0;if(n===void 0)continue;b(e,s,t)&&x.push([{a:s.a0,c:t},{a:g(c),c:t},{a:g(c),c:n}]);let r=n===c.c1?s.c1:s.c0;x.push([{a:g(s),c:r},{a:g(s),c:t},{a:g(c),c:t},{a:g(c),c:n}])}let S,C=1/0;for(let t of x){let n=Cn(t);if(n.length<2||!v(n))continue;let r=e.shape===`diamond`&&n[0].a===s.a1?gn:0,i=wn(n)+hn*(n.length-2)+r;i<C&&(S=n,C=i)}return S?.map(o.toPoint)}function En(e){let t={x:e[0].x,y:e[0].y},n=-1;for(let r=1;r<e.length;r++){let i=e[r-1],a=e[r],o=Math.abs(a.x-i.x)+Math.abs(a.y-i.y);o>n&&(n=o,t={x:(i.x+a.x)/2,y:(i.y+a.y)/2})}return t}var Dn=`__zm_spine__`,On=8,kn=6,An=12,jn=4,Mn=4,Nn=.25,Pn=.02,Fn=40,In=e=>e===`TD`||e===`TB`||e===`BT`,Ln=e=>e.startsWith(Dn);function Rn(e){return e.flatMap(e=>[e,...Rn(e.children)])}function H(e){let t=new Set(e.nodeIds);for(let n of e.children)for(let e of H(n))t.add(e);return t}function zn(e){if(e.subgraphs.length===0||ct(e)||yt(e.subgraphs))return!1;for(let t of e.nodes.keys())if(Ln(t))return!1;for(let t of e.edges)if(!e.nodes.has(t.source)||!e.nodes.has(t.target))return!1;let t=Rn(e.subgraphs);return!t.some(t=>e.nodes.has(t.id))&&t.every(t=>[...H(t)].some(t=>e.nodes.has(t)))}function Bn(e,t){let n=In(t),r=e=>n?[e.y,e.y+e.height]:[e.x,e.x+e.width],i=[...e].sort((e,t)=>{let[n,i]=r(e),[a,o]=r(t);return(n+i)/2-(a+o)/2}),a=[];for(let e of i){let[t,n]=r(e),i=a[a.length-1];i&&t<i.end?(i.end=Math.min(i.end,n),i.ids.push(e.id)):a.push({end:n,ids:[e.id]})}(t===`BT`||t===`RL`)&&a.reverse();let o=new Map;return a.forEach((e,t)=>e.ids.forEach(e=>o.set(e,t))),o}function Vn(e,t,n){let r={ghosts:[],edges:[]};for(let i of e){let e=[...H(i)].filter(e=>t.has(e));if(e.length===0)continue;let a=e.map(e=>t.get(e)),o=Math.min(...a),s=Math.max(...a),c=new Map;for(let a=o;a<=s;a++){let o=e.filter(e=>t.get(e)===a).sort((e,t)=>n(e)-n(t));if(o.length>0)c.set(a,o[0]);else{let e=`${Dn}${i.id}__${a}`;r.ghosts.push({id:e,subgraph:i.id}),c.set(a,e)}}for(let e=o;e<s;e++){let t=c.get(e),n=c.get(e+1);!Ln(t)&&!Ln(n)||r.edges.push({source:t,target:n,style:`invisible`,hasArrowStart:!1,hasArrowEnd:!1})}}return r}function Hn(e,t,n,r=()=>!1,i=()=>!1){let a=e=>{let n=[...H(e)].filter(e=>t.has(e)).map(e=>t.get(e));return n.length>0?[Math.min(...n),Math.max(...n)]:void 0},o=e=>{let t=[...H(e)].filter(e=>n.has(e)).map(e=>n.get(e));return t.reduce((e,t)=>e+t,0)/t.length},s=e.map(e=>({sg:e,at:a(e)})).filter(e=>!!e.at).sort((e,t)=>e.at[0]-t.at[0]),c=[],l=-1/0;for(let{sg:e,at:t}of s){let n=c[c.length-1];n&&t[0]<=l?(n.push(e),l=Math.max(l,t[1])):(c.push([e]),l=t[1])}for(let t of c){if(t.length<2||t.some((e,n)=>t.slice(n+1).some(t=>r(e,t))))continue;let a=t.some(e=>e.region)||t.some((e,n)=>t.slice(n+1).some(t=>i(e,t)))?-1:1,s=[...t].sort((t,n)=>a*(e.indexOf(n)-e.indexOf(t))),c=t.map(o).sort((e,t)=>e-t),l=s.map((e,t)=>c[t]-o(e));s.forEach((e,t)=>{for(let r of H(e))n.has(r)&&n.set(r,n.get(r)+l[t])})}for(let a of e)Hn(a.children,t,n,r,i)}function Un(e,t,n,r,i){let a=new Map(t);for(let t of r){let r=H(t);for(let e of i.get(t.id)??[])r.add(e);let o=[...r].filter(e=>a.has(e)),s=o.filter(e=>n.has(e));if(s.length===0)continue;let c=Math.min(...s.map(e=>n.get(e))),l=Math.max(...s.map(e=>n.get(e))),u=o.map(e=>a.get(e)),d=Math.min(...u),f=Math.max(...u),p=(d+f)/2,m=0;for(let t of e){if(r.has(t)||Ln(t))continue;let e=n.get(t);if(e===void 0||e<c||e>l)continue;m++;let i=a.get(t);a.set(t,i<=p?Math.min(i,d)-1-m*.001:Math.max(i,f)+1+m*.001)}}let o=new Map(e.map((e,t)=>[e,t]));return[...e].sort((e,t)=>a.get(e)-a.get(t)||o.get(e)-o.get(t))}var Wn=(e,t)=>t>=Math.min(...e)&&t<=Math.max(...e);function Gn(e,t,n){let r=e=>{let i=e.children.map(r),a=[...[...H(e)].flatMap(e=>{let n=t.get(e);return n?[n]:[]}),...i],o=e.region?lt:V,s=Math.min(...a.map(e=>e.x))-o.left,c=Math.min(...a.map(e=>e.y))-o.top,l=Math.max(...a.map(e=>e.x+e.width))+o.right,u=Math.max(...a.map(e=>e.y+e.height))+o.bottom,d=e.region?0:_(e.label,n.groupHeader,L.groupHeader).width+24;return{id:e.id,label:e.label,x:s,y:c,width:Math.max(l-s,d),height:u-c,children:i,...e.region?{region:!0}:{}}};return e.map(r)}var Kn=e=>e.flatMap(e=>[e,...Kn(e.children)]);function qn(e,t,n,r,i,a){let o=In(r),s=new Map(Rn(t).map(e=>[e.id,H(e)])),c=new Map,l=!1,u=[],d=e=>o?[e.x,e.x+e.width]:[e.y,e.y+e.height],f=e=>o?[e.y,e.y+e.height]:[e.x,e.x+e.width],p=([e,t],[n,r])=>Math.max(0,Math.min(t,r)-Math.max(e,n)),m=e=>({x:e.x-Fn,y:e.y-Fn,width:e.width+80,height:e.height+80}),h=(e,t)=>p(f(e),f(t))>0?p(d(e),d(t)):0,g=Kn(e),_=new Map(g.map(e=>[e,m(e)])),v=(e,t,n,r)=>{let i=p(d(e),d(t)),a=p(f(e),f(t));if(i<=0||a<=0)return;let s=i<=a,c=s===o,l=e=>c?e.x:e.y,m=e=>c?e.x+e.width:e.y+e.height,h=e=>(l(e)+m(e))/2,g=h(n)<=h(r)?n:r;u.push({axis:c?`x`:`y`,amount:s?i:a,after:m(g)})};for(let e of g){let t=s.get(e.id),r=[...t].filter(e=>a.has(e)).map(e=>a.get(e)),o=new Set(r);for(let[s,u]of n){if(t.has(s))continue;if(o.has(a.get(s))||!Wn(r,a.get(s))){v(_.get(e),u,e,u);continue}let n=h(_.get(e),u);n<=0||(i.has(e.id)?c.set(e.id,Math.max(c.get(e.id)??0,n)):l=!0)}}let y=(e,t)=>Kn(e.children).includes(t);for(let e=0;e<g.length;e++)for(let t=e+1;t<g.length;t++){let n=g[e],r=g[t];y(n,r)||y(r,n)||v(_.get(n),r,n,r)}return{penetration:c,stuck:l,requests:u}}function Jn(e,t,n){let r=[...e.nodes.keys()],i={...e,subgraphs:[]},a=j(e),o=t(i,{feedbackEdges:a}),s=Bn(o.nodes,e.direction),c=In(e.direction),l=new Map(o.nodes.map(e=>[e.id,e])),u=e=>{let t=l.get(e);return c?t.x:t.y},d=Rn(e.subgraphs),f=Vn(d,s,u),p=new Map;for(let e of f.ghosts)p.set(e.subgraph,[...p.get(e.subgraph)??[],e.id]);let m=new Map(o.nodes.map(e=>[e.id,u(e.id)]));Hn(e.subgraphs,s,m,(t,n)=>{let r=H(t),i=H(n),a=(t,n)=>e.edges.some(e=>t.has(e.source)&&n.has(e.target));return a(r,i)&&a(i,r)},(t,n)=>M(e,t,n));for(let e of f.ghosts){let t=[...H(d.find(t=>t.id===e.subgraph))].filter(e=>m.has(e)).map(e=>m.get(e));m.set(e.id,t.reduce((e,t)=>e+t,0)/t.length)}let h=new Map(e.nodes);for(let e of f.ghosts)h.set(e.id,{id:e.id,label:` `,shape:`rectangle`});let g=Un([...h.keys()],m,s,d,p),_={...i,nodes:new Map(g.map(e=>[e,h.get(e)])),edges:[...e.edges,...f.edges]},v=new Set(f.edges.map((t,n)=>e.edges.length+n)),y=i=>{let o=new Map,c=new Map;for(let l=0;;l++){let u=new Map(f.ghosts.map(e=>[e.id,On+(o.get(e.subgraph)??0)])),m=t(_,{fixedWidths:u,looseEdges:v,detachedEdges:i,walkOrder:r,feedbackEdges:a,forceNodeOrder:!0}),h=new Map(m.nodes.filter(e=>!Ln(e.id)).map(e=>[e.id,e])),g=Gn(e.subgraphs,h,n),y=qn(g,e.subgraphs,h,e.direction,new Set(p.keys()),s),{penetration:b,stuck:x}=y;if(x)return;if(b.size===0){for(let t=0;y.requests.length>0;t++){if(t===An)return;Zn(y.requests.reduce((e,t)=>t.amount>e.amount?t:e),[...h.values()],m.edges),g=Gn(e.subgraphs,h,n),y=qn(g,e.subgraphs,h,e.direction,new Set(p.keys()),s)}let t=Xn(e,i,h,g,d);return t&&er(m,[...h.values()],g,t,e.direction)}if(l===kn)return;for(let[e,t]of b){let n=o.get(e)??0,r=c.get(e),i=r?(r.overlap-t)/(n-r.width):0,a=i>Pn?i:Nn;c.set(e,{width:n,overlap:t}),o.set(e,n+t/a+Mn)}}},b=Yn(e,f,s,d);return(b.size>0?y(b):void 0)??y(new Set)}function Yn(e,t,n,r){let i=r.map(e=>{let t=H(e);return{inside:t,layers:new Set([...t].filter(e=>n.has(e)).map(e=>n.get(e)))}}),a=e=>{let t=n.get(e.source),r=n.get(e.target);return t===void 0||r===void 0||e.source===e.target?!1:i.some(({inside:n,layers:i})=>n.has(e.source)&&n.has(e.target)&&Array.from({length:Math.max(0,Math.abs(r-t)-1)},(e,n)=>Math.min(t,r)+1+n).some(e=>!i.has(e)))},o=new Set;e.edges.forEach((e,t)=>{a(e)&&o.add(t)});let s=new Map,c=e=>{e.source!==e.target&&(s.set(e.source,(s.get(e.source)??0)+1),s.set(e.target,(s.get(e.target)??0)+1))};e.edges.forEach((e,t)=>{o.has(t)||c(e)}),t.edges.forEach(c);for(let t of[...o]){let n=e.edges[t];(!s.get(n.source)||!s.get(n.target))&&o.delete(t)}return o}function Xn(e,t,n,r,i){let a=new Map(Kn(r).map(e=>[e.id,e])),o=[];for(let r of t){let t=e.edges[r],s=n.get(t.source),c=n.get(t.target),l=i.filter(e=>{let n=H(e);return n.has(t.source)&&n.has(t.target)}).sort((e,t)=>H(e).size-H(t).size)[0],u=l&&a.get(l.id);if(!s||!c||!u)return;let d=Tn(s,c,[...n.values()].filter(e=>e!==s&&e!==c),u,e.direction,o.map(e=>e.points));if(!d)return;o.push({source:t.source,target:t.target,label:t.label,style:t.style,hasArrowStart:t.hasArrowStart,hasArrowEnd:t.hasArrowEnd,points:d,labelPosition:t.label?En(d):void 0,inlineStyle:un(r,e),id:t.id,animate:t.animate})}return o}function Zn(e,t,n){let{axis:r,amount:i,after:a}=e,o=i+jn,s=t.filter(e=>e[r]>=a),c=Math.min(...s.map(e=>e[r]));for(let e of s)e[r]+=o;let l=e=>{e[r]>=c&&(e[r]+=o)};for(let e of n)e.points.forEach(l),e.labelPosition&&l(e.labelPosition)}var Qn=8;function $n(e,t,n,r){let i=In(r)?`y`:`x`,a=i===`x`?`y`:`x`,o=i===`x`?`width`:`height`,s=i===`x`?`height`:`width`;for(let{points:r}of e)for(let e=1;e<r.length-1;){let c=e;for(;c+1<r.length-1&&r[c+1][i]===r[e][i];)c++;let l=r.slice(e,c+1),u=l[0],d=Math.min(...l.map(e=>e[a])),f=Math.max(...l.map(e=>e[a])),p=r[e-1][i],m=r[c+1][i],h=n.flatMap(e=>[e[i],e[i]+e[o]].map(t=>({g:e,s:t}))).find(({g:e,s:t})=>Math.abs(u[i]-t)<Qn&&f>e[a]&&d<e[a]+e[s]);if(h){let e=h.s+(u[i]>=h.s?Qn:-8),n=(e-p)*(m-e)>0,r=t.every(t=>t[i]+t[o]<=e||t[i]>=e||t[a]+t[s]<=d||t[a]>=f);if(n&&r)for(let t of l)t[i]=e}e=c+1}}function er(e,t,n,r,i){let a=[...e.edges.filter(e=>!Ln(e.source)&&!Ln(e.target)),...r],o=Kn(n);$n(a,t,o,i);let s=[...t.map(e=>e.x),...o.map(e=>e.x),...a.flatMap(e=>e.points.map(e=>e.x))],c=[...t.map(e=>e.y),...o.map(e=>e.y),...a.flatMap(e=>e.points.map(e=>e.y))],l=B.padding-Math.min(...s),u=B.padding-Math.min(...c);for(let e of t)e.x+=l,e.y+=u;for(let e of o)e.x+=l,e.y+=u;for(let e of a){for(let t of e.points)t.x+=l,t.y+=u;e.labelPosition&&(e.labelPosition.x+=l,e.labelPosition.y+=u)}let d=0,f=0;for(let e of t)d=Math.max(d,e.x+e.width+B.padding),f=Math.max(f,e.y+e.height+B.padding);for(let e of o)d=Math.max(d,e.x+e.width+B.padding),f=Math.max(f,e.y+e.height+B.padding);for(let e of a){for(let t of e.points)d=Math.max(d,t.x+Xe.width+B.padding),f=Math.max(f,t.y+Xe.width+B.padding);e.labelPosition&&(d=Math.max(d,e.labelPosition.x+60+B.padding),f=Math.max(f,e.labelPosition.y+20+B.padding))}return{...e,nodes:t,edges:a,groups:n,width:d,height:f}}var tr=12,nr=8,rr=4;function ir(e,t,n){let r=e.map(e=>({axis:e.axis,cross:e.cross,after:e.after??0,rank:0,real:!0})),i=e.map(()=>[]),a=e.map(()=>[]),o=t.flatMap((e,t)=>e.from===e.to?[]:[t]),s=p(o.map(e=>({source:String(t[e].from),target:String(t[e].to)})),e.map((e,t)=>String(t))),c=o.map((e,n)=>{let r=t[e];return s.has(n)?{index:e,u:r.to,v:r.from,reversed:!0}:{index:e,u:r.from,v:r.to,reversed:!1}}),l=e.map(()=>[]),u=e.map(()=>0);for(let e of c)l[e.u].push(e.v),u[e.v]++;let d=u.flatMap((e,t)=>e===0?[t]:[]);for(let e=0;e<d.length;e++){let t=d[e];for(let e of l[t])r[e].rank=Math.max(r[e].rank,r[t].rank+2),--u[e]===0&&d.push(e)}let f=c.map(e=>{let n=(r[e.v].rank-r[e.u].rank)/2,o=r[e.u].rank+2*Math.floor(n/2)+1,s=t[e.index].label,c=[e.u];for(let t=r[e.u].rank+1;t<r[e.v].rank;t++){let e=r.length,n=t===o&&s!==void 0;r.push({axis:n?s.axis:0,cross:n?s.cross:0,after:0,rank:t,real:!1}),i.push([]),a.push([]),c.push(e)}c.push(e.v);for(let e=1;e<c.length;e++)a[c[e-1]].push(c[e]),i[c[e]].push(c[e-1]);return{chain:c,labelRank:o}}),m=r.map((e,t)=>t),h=e=>{let t=e;for(;m[t]!==t;)t=m[t]=m[m[t]];return t};for(let{chain:e}of f)for(let t of e)m[h(t)]=h(e[0]);let g=new Map;r.forEach((e,t)=>{let n=h(t);g.set(n,[...g.get(n)??[],t])});let _=r.map(()=>0),v=[],y=[];for(let e of g.values()){let t=ar(e,r,i,a,n),o=1/0,s=-1/0;for(let n of e)_[n]=t.get(n),o=Math.min(o,_[n]-r[n].cross/2),s=Math.max(s,_[n]+r[n].cross/2+r[n].after);v.push({min:o,max:s}),y.push(e)}let b=0;y.forEach((e,t)=>{let r=b-v[t].min;for(let t of e)_[t]=_[t]+r;b+=v[t].max-v[t].min+n.nodeSep});let x=Math.max(0,b-n.nodeSep),S=r.reduce((e,t)=>Math.max(e,t.rank),0),C=Array(S+1).fill(0);for(let e of r)C[e.rank]=Math.max(C[e.rank],e.axis);let w=Array(S+1).fill(0);for(let e=1;e<=S;e++)w[e]=w[e-1]+C[e-1]+n.rankSep/2;let T=e=>w[r[e].rank]+C[r[e].rank]/2,E=t.map(()=>[]),D=t.map(()=>void 0);return c.forEach((e,n)=>{let{chain:i,labelRank:a}=f[n],o=i.slice(1,-1),s=o.map(e=>({axis:T(e),cross:_[e]}));if(E[e.index]=e.reversed?s.reverse():s,t[e.index].label){let t=o.find(e=>r[e].rank===a);D[e.index]={axis:T(t),cross:_[t]}}}),{nodes:e.map((e,t)=>({axis:w[r[t].rank]+(C[r[t].rank]-e.axis)/2,cross:_[t]-e.cross/2})),paths:E,labels:D,axisSize:w[S]+C[S],crossSize:x}}function ar(e,t,n,r,i){let a=[],o=new Set,s=[...e].sort((e,n)=>t[e].rank-t[n].rank||e-n);for(let e of s){if(o.has(e))continue;let n=[{s:e,next:0}];for(o.add(e),(a[t[e].rank]??=[]).push(e);n.length>0;){let e=n[n.length-1],i=r[e.s][e.next++];i===void 0?n.pop():o.has(i)||(o.add(i),(a[t[i].rank]??=[]).push(i),n.push({s:i,next:0}))}}let c=a.filter(e=>e!==void 0),l=new Map,u=()=>c.forEach(e=>e.forEach((e,t)=>l.set(e,t))),d=()=>{let e=0;for(let t=0;t+1<c.length;t++){let n=c[t].flatMap(e=>r[e].map(t=>[l.get(e),l.get(t)]));for(let t=0;t<n.length;t++)for(let r=t+1;r<n.length;r++){let[i,a]=n[t],[o,s]=n[r];(i-o)*(a-s)<0&&e++}}return e};u();let f=c.map(e=>[...e]),p=d();for(let e=0;e<nr&&p>0;e++){let t=e%2==0,i=c.map((e,t)=>t);t||i.reverse();for(let e of i){let i=t?n:r,a=e=>{let t=i[e];return t.length===0?l.get(e):t.reduce((e,t)=>e+l.get(t),0)/t.length},o=new Map(c[e].map(e=>[e,a(e)]));c[e].sort((e,t)=>o.get(e)-o.get(t)||l.get(e)-l.get(t)),c[e].forEach((e,t)=>l.set(e,t))}let a=d();a<p&&(p=a,f=c.map(e=>[...e]))}f.forEach((e,t)=>c[t]=e);let m=new Map,h=(e,n)=>(t[e].cross+t[n].cross)/2+t[e].after+(t[e].real&&t[n].real?i.nodeSep:Math.min(i.nodeSep,tr)),g=(e,t)=>{let n=e.slice(1).map((t,n)=>h(e[n],t)),r=[0];n.forEach((e,t)=>r.push(r[t]+e)),or(e.map((e,n)=>{let i=(t[e]??[]).filter(e=>m.has(e));return(i.length===0?m.get(e)??0:i.reduce((e,t)=>e+m.get(t),0)/i.length)-r[n]})).forEach((t,n)=>m.set(e[n],t+r[n]))};for(let e of c)g(e,[]);for(let e=0;e<rr;e++){for(let e=1;e<c.length;e++)g(c[e],n);for(let e=c.length-2;e>=0;e--)g(c[e],r)}return m}function or(e){let t=[];for(let n of e)for(t.push({sum:n,count:1});t.length>1;){let e=t[t.length-1],n=t[t.length-2];if(n.sum/n.count<=e.sum/e.count)break;t.splice(-2,2,{sum:n.sum+e.sum,count:n.count+e.count})}return t.flatMap(e=>Array(e.count).fill(e.sum/e.count))}var sr=28,cr=18,lr=10,ur=32;function dr(e,t={}){let n={...B,...t,fontSizes:Ke(t.fontSizes)},r=e.direction===`TB`||e.direction===`TD`||e.direction===`BT`,i=e.direction===`BT`||e.direction===`RL`,a=new Map,o=new Map,s=(e,t)=>{a.set(e.id,e),t!==void 0&&o.set(e.id,t);for(let t of e.nodeIds)o.has(t)||o.set(t,e.id);for(let t of e.children)s(t,e.id)};e.subgraphs.forEach(e=>s(e));let c=[...e.nodes.keys()].filter(e=>!a.has(e)),l=new Map(c.map((e,t)=>[e,t])),u=e=>Math.min(...e.nodeIds.map(e=>l.get(e)??1/0),...e.children.map(u)),d=e=>{let t=a.get(e);return t?u(t):l.get(e)??1/0},f=t=>[...c.filter(e=>o.get(e)===t),...(t===void 0?e.subgraphs:a.get(t).children).map(e=>e.id)].map((e,t)=>({id:e,i:t})).sort((e,t)=>d(e.id)-d(t.id)||e.i-t.i).map(e=>e.id),p=e=>{let t=[e];for(let n=o.get(e);n!==void 0;n=o.get(n))t.unshift(n);return t},m=t=>{let i=e.edges[t].label;if(!i)return;let a=_(i,n.fontSizes.edgeLabel,L.edgeLabel),o=a.width+8,s=a.height+6;return r?{axis:s,cross:o}:{axis:o,cross:s}},h=new Map,g=new Map;e.edges.forEach((e,t)=>{if(e.source===e.target){g.set(e.source,[...g.get(e.source)??[],t]);return}let n=p(e.source),r=p(e.target),i=0;for(;n[i]!==void 0&&n[i]===r[i];)i++;if(i>=n.length||i>=r.length)return;let a=i===0?``:n[i-1];h.set(a,[...h.get(a)??[],{index:t,from:n[i],to:r[i]}])});let v=r?i?{axisStart:V.bottom,axisEnd:V.top,crossStart:V.left,crossEnd:V.right}:{axisStart:V.top,axisEnd:V.bottom,crossStart:V.left,crossEnd:V.right}:{axisStart:i?V.right:V.left,axisEnd:i?V.left:V.right,crossStart:V.top,crossEnd:V.bottom},y=(e,t)=>r?{aSize:t,cSize:e}:{aSize:e,cSize:t},b=new Map;for(let t of c){let r=e.nodes.get(t),i=_t(t,r.label,r.shape,n.fontSizes.nodeLabel);b.set(t,y(i.width,i.height))}let x=e=>{let t=g.get(e);if(!r||!t)return 0;let n=Math.max(0,...t.map(e=>(m(e)?.cross??-10)+lr));return sr+(t.length-1)*cr+n},S=e=>{let t=f(e),i=new Map,o=new Map,s=new Map;for(let e of t){let t=a.get(e);if(!t){o.set(e,b.get(e));continue}let c=S(e);i.set(e,c);let l=_(t.label,n.fontSizes.groupHeader,L.groupHeader).width,u=c.axisSize+v.axisStart+v.axisEnd,d=c.crossSize+v.crossStart+v.crossEnd,f=r?0:l+ur,p=r?l+ur:0,m=Math.max(0,f-u),h=Math.max(0,p-d);u+=m,d+=h,o.set(e,{aSize:u,cSize:d}),s.set(e,{axis:v.axisStart+m/2,cross:v.crossStart+h/2})}let c=new Map(t.map((e,t)=>[e,t])),l=h.get(e??``)??[],u=ir(t.map(e=>({axis:o.get(e).aSize,cross:o.get(e).cSize,after:x(e)})),l.map(e=>({from:c.get(e.from),to:c.get(e.to),label:m(e.index)})),{nodeSep:n.nodeSpacing,rankSep:n.layerSpacing}),d=new Map;return l.forEach((e,t)=>d.set(e.index,{mids:u.paths[t],label:u.labels[t]})),{members:t,at:new Map(t.map((e,t)=>[e,u.nodes[t]])),sizes:o,inset:{axis:0,cross:0},axisSize:u.axisSize,crossSize:u.crossSize,routes:d,inner:new Map([...i].map(([e,t])=>[e,{...t,inset:s.get(e)}]))}},C=S(void 0),w=new Map,E=new Map,D=(e,t,n)=>{for(let[r,i]of e.routes)E.set(r,{mids:i.mids.map(e=>({axis:e.axis+t,cross:e.cross+n})),label:i.label&&{axis:i.label.axis+t,cross:i.label.cross+n}});let r=[];for(let i of e.members){let o=e.at.get(i),s=e.sizes.get(i),c={axis:t+o.axis,cross:n+o.cross,...s};w.set(i,c);let l=e.inner.get(i);if(l){let e=a.get(i),t=D(l,c.axis+l.inset.axis,c.cross+l.inset.cross);r.push({id:i,label:e.label,x:0,y:0,width:0,height:0,children:t,...e.region?{region:!0}:{}})}}return r},O=D(C,0,0),k=n.padding,A=C.axisSize,ee=e=>{let t=i?A-e.axis:e.axis;return r?{x:e.cross+k,y:t+k}:{x:t+k,y:e.cross+k}},j=e=>{let t=i?A-e.axis-e.aSize:e.axis;return r?{x:e.cross+k,y:t+k,width:e.cSize,height:e.aSize}:{x:t+k,y:e.cross+k,width:e.aSize,height:e.cSize}},M=e=>{for(let t of e)Object.assign(t,j(w.get(t.id))),M(t.children)};M(O);let N=c.map(t=>{let n=e.nodes.get(t);return{id:t,label:n.label,shape:n.shape,...j(w.get(t)),inlineStyle:T(t,e),className:e.classAssignments.get(t),interaction:e.interactions.get(t)}}),P=new Map(N.map(e=>[e.id,e])),te=[];e.edges.forEach((t,n)=>{let r=E.get(n);if(!r)return;let i=w.get(t.source),a=w.get(t.target),o=i.axis>a.axis,[s,c]=o?[a,i]:[i,a],l=[{axis:s.axis+s.aSize,cross:s.cross+s.cSize/2},...o?[...r.mids].reverse():r.mids,{axis:c.axis,cross:c.cross+c.cSize/2}],u=[l[0]];for(let e of l.slice(1)){let t=u[u.length-1];if(t.cross!==e.cross){let n=(t.axis+e.axis)/2;u.push({axis:n,cross:t.cross},{axis:n,cross:e.cross})}u.push(e)}let d=Ht(fr(u.map(ee)));o&&d.reverse();let f=P.get(t.source),p=P.get(t.target);f&&(d=Dt(d,f,!0)),p&&(d=Dt(d,p,!1)),te.push({source:t.source,target:t.target,label:t.label,style:t.style,hasArrowStart:t.hasArrowStart,hasArrowEnd:t.hasArrowEnd,points:d,labelPosition:r.label&&ee(r.label),inlineStyle:un(n,e),id:t.id,animate:t.animate})}),Zt(e,P,te);let ne=(r?C.crossSize:C.axisSize)+k*2,F=(r?C.axisSize:C.crossSize)+k*2;for(let e of te){for(let t of e.points)ne=Math.max(ne,t.x+Xe.width+k),F=Math.max(F,t.y+Xe.width+k);e.labelPosition&&(ne=Math.max(ne,e.labelPosition.x+60+k),F=Math.max(F,e.labelPosition.y+20+k))}return{width:ne,height:F,nodes:N,edges:te,groups:O}}function fr(e){return e.filter((t,n)=>{let r=e[n-1],i=e[n+1];return!r||!i||!(r.x===t.x&&t.x===i.x||r.y===t.y&&t.y===i.y)})}function pr(e,t={}){return mr(e,t)}function mr(e,t,n){let r={...B,...t,fontSizes:Ke(t.fontSizes)};return $t(ze(Ct(e,r,n),t.layoutCache),e,r.mergeEdges)}function hr(e,t={}){let n=ne(e);if(t.layout===`simple`&&!ct(n))return dr(n,t);if(t.layout!==void 0&&t.layout!==`elk`&&t.layout!==`simple`)throw Error(`zombie-mermaid: unknown layout ${JSON.stringify(t.layout)}; use 'elk' or 'simple'.`);if(zn(n)){let e=Jn(n,(e,n)=>mr(e,t,n),Ke(t.fontSizes));if(e)return e}return pr(n,t)}function gr(e,t={}){return Ct(e,{...B,...t,fontSizes:Ke(t.fontSizes)})}var _r=12,vr=2;function yr(e){return e.flatMap(e=>[e,...yr(e.children)])}function br(e,t){let n=t.groupHeader+16;return yr(e).filter(e=>e.label!==``).map(e=>{let r=_(e.label,t.groupHeader,L.groupHeader);return{x:e.x+_r-vr,y:e.y+n/2-r.height/2-vr,width:r.width+4,height:r.height+4}})}function xr(e,t,n){let r=t.x-e.x,i=t.y-e.y,a=[-r,r,-i,i],o=[e.x-n.x,n.x+n.width-e.x,e.y-n.y,n.y+n.height-e.y],s=0,c=1;for(let e=0;e<4;e++){let t=a[e],n=o[e];if(t===0){if(n<0)return!1}else{let e=n/t;if(t<0?s=Math.max(s,e):c=Math.min(c,e),s>c)return!1}}return!0}function Sr(e){return{x:e.x+vr,y:e.y+vr,width:e.width-4,height:e.height-4}}function Cr(e,t){let n=e.points,r=t.map(Sr);for(let e=0;e+1<n.length;e++)if(r.some(t=>xr(n[e],n[e+1],t)))return!0;return!1}function wr(e){let t=2166136261;for(let n of e.map(e=>`${e.x},${e.y},${e.width},${e.height}`).join(`;`))t=Math.imul(t^n.charCodeAt(0),16777619);return(t>>>0).toString(36)}function Tr(e,t,n){let r=`zm-title-gap-${wr(e)}`;return{id:r,markup:` <mask id="${r}" maskUnits="userSpaceOnUse" x="0" y="0" width="${t}" height="${n}">\n <rect x="0" y="0" width="${t}" height="${n}" fill="#fff" />\n${e.map(e=>` <rect x="${e.x}" y="${e.y}" width="${e.width}" height="${e.height}" fill="#000" />`).join(`
|
|
9
9
|
`)}\n </mask>`}}function Er(e,t,r=`Inter`,i=!1,a=Ge,o=`linear`,s,c=!0,l=!0,u,d,f={}){let p=[],m=l&&e.nodes.some(e=>!!E(e.interaction?.href));p.push(Ci(N(e.width,e.height,t,i,u,d,m,f.styleAttribute,f.description),s)),p.push(n(r,!1,f.nonce,f.bodyFont)),c&&e.edges.some(e=>e.animate)&&p.push(Dr(f.nonce)),p.push(`<defs>`),p.push(Or());let h=new Set;for(let t of e.edges)t.inlineStyle?.stroke&&h.add(t.inlineStyle.stroke);for(let e of h)p.push(kr(e));let g=br(e.groups,a),_=new Set(e.edges.filter(e=>Cr(e,g))),v;if(_.size>0){let t=Tr(g,e.width,e.height);v=t.id,p.push(t.markup)}p.push(`</defs>`);for(let t of e.groups)p.push(Mr(t,r,a));for(let t of e.edges)p.push(Nr(t,o,c,_.has(t)?v:void 0));for(let t of e.edges)t.label&&p.push(Fr(t,r,a));for(let t of e.nodes)p.push(zr(t,r,a,l));return p.push(`</svg>`),p.join(`
|
|
10
10
|
`)}function Dr(e){return[A(e),` @keyframes zm-edge-dash { to { stroke-dashoffset: -28; } }`,` .edge-animated { animation: zm-edge-dash 1s linear infinite; }`,` @media (prefers-reduced-motion: reduce) {`,` .edge-animated { animation: none; }`,` }`,`</style>`].join(`
|
|
11
11
|
`)}function Or(){return Ar(`var(--_arrow)`,``)}function kr(e){return Ar(c(e),d`-${jr(e)}`)}function Ar(e,t){let n=Xe.width,r=Xe.height,i=n-1,a=d`fill="${e}" stroke="${e}" stroke-width="0.75" stroke-linejoin="round"`,o=d`<polygon points="0 0, ${n} ${r/2}, 0 ${r}" ${a} />`,s=(e,t)=>d` <marker id="${e}" markerWidth="${n}" markerHeight="${r}" refX="${i}" refY="${r/2}" orient="${t}">`+d`\n ${o}`+`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zombie-mermaid/svg-renderer",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.11.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "SVG rendering primitives and the ELK-backed layout engine behind zombie-mermaid's SVG output (maintained continuation of beautiful-mermaid).",
|
|
6
6
|
"keywords": [
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
],
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"entities": "^7.0.1",
|
|
53
|
-
"@zombie-mermaid/core": "5.
|
|
54
|
-
"@zombie-mermaid/mermaid-parser": "5.
|
|
53
|
+
"@zombie-mermaid/core": "5.11.0",
|
|
54
|
+
"@zombie-mermaid/mermaid-parser": "5.11.0"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
57
|
"elkjs": "^0.11.0 || ^0.12.0"
|