likec4 1.19.1 → 1.19.2

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.
@@ -1,4 +1,4 @@
1
- "use strict";const fs=require("node:fs"),path=require("node:path"),node_url=require("node:url"),tty=require("tty"),require$$0$4=require("node:util"),require$$0=require("util"),require$$0$1=require("path"),require$$2=require("os"),require$$3=require("crypto"),require$$4=require("net"),require$$0$2=require("url"),require$$0$3=require("fs"),require$$3$1=require("child_process"),fsPromises=require("node:fs/promises"),process$2=require("node:process"),P$2=require("node:tty"),index_DafVOuVd=require("./likec4.D81G5JV4.cjs"),wasmGraphviz=require("@hpcc-js/wasm-graphviz"),buffer=require("buffer"),node_child_process=require("node:child_process"),node_string_decoder=require("node:string_decoder"),promises=require("node:timers/promises"),os=require("node:os"),node_events=require("node:events"),node_v8=require("node:v8"),node_stream=require("node:stream"),node_buffer=require("node:buffer"),promises$1=require("node:stream/promises"),vite=require("vite");function _interopDefaultCompat(ti){return ti&&typeof ti=="object"&&"default"in ti?ti.default:ti}function _interopNamespaceCompat(ti){if(ti&&typeof ti=="object"&&"default"in ti)return ti;const ei=Object.create(null);if(ti)for(const ni in ti)ei[ni]=ti[ni];return ei.default=ti,ei}const fs__namespace=_interopNamespaceCompat(fs),path__default=_interopDefaultCompat(path),require$$0__default$4=_interopDefaultCompat(require$$0$4),require$$0__default=_interopDefaultCompat(require$$0),require$$0__default$1=_interopDefaultCompat(require$$0$1),require$$2__default=_interopDefaultCompat(require$$2),require$$3__default=_interopDefaultCompat(require$$3),require$$4__default=_interopDefaultCompat(require$$4),require$$0__default$2=_interopDefaultCompat(require$$0$2),require$$0__default$3=_interopDefaultCompat(require$$0$3),require$$3__default$1=_interopDefaultCompat(require$$3$1),process__default=_interopDefaultCompat(process$2),P__namespace=_interopNamespaceCompat(P$2),P__default=_interopDefaultCompat(P$2),s$6=["amber","blue","gray","slate","green","indigo","muted","primary","red","secondary","sky"];function a$b(ti){return ti in s$6}function x$2(ti,ei){let ni=Math.ceil(ti),ri=Math.floor(ei);if(ri<ni)throw new RangeError(`randomInteger: The range [${ti.toString()},${ei.toString()}] contains no integer`);return Math.floor(Math.random()*(ri-ni+1)+ni)}var c$5,d$5;function q$3(){if(d$5)return c$5;d$5=1;var ti=index_DafVOuVd.q(),ei=index_DafVOuVd.r();function ni(){this.clear()}return ni.prototype.clear=function(){this.head=null,this.tail=null,this.size=0},ni.prototype.first=function(){return this.head?this.head.item:void 0},ni.prototype.peek=ni.prototype.first,ni.prototype.last=function(){return this.tail?this.tail.item:void 0},ni.prototype.push=function(ri){var ii={item:ri,next:null};return this.head?(this.tail.next=ii,this.tail=ii):(this.head=ii,this.tail=ii),this.size++,this.size},ni.prototype.unshift=function(ri){var ii={item:ri,next:null};return this.head?(this.head.next||(this.tail=this.head),ii.next=this.head,this.head=ii):(this.head=ii,this.tail=ii),this.size++,this.size},ni.prototype.shift=function(){if(this.size){var ri=this.head;return this.head=ri.next,this.size--,ri.item}},ni.prototype.forEach=function(ri,ii){if(this.size){ii=arguments.length>1?ii:this;for(var si=this.head,oi=0;si;)ri.call(ii,si.item,oi,this),si=si.next,oi++}},ni.prototype.toArray=function(){if(!this.size)return[];for(var ri=new Array(this.size),ii=0,si=this.size,oi=this.head;ii<si;ii++)ri[ii]=oi.item,oi=oi.next;return ri},ni.prototype.values=function(){var ri=this.head;return new ti(function(){if(!ri)return{done:!0};var ii=ri.item;return ri=ri.next,{value:ii,done:!1}})},ni.prototype.entries=function(){var ri=this.head,ii=0;return new ti(function(){if(!ri)return{done:!0};var si=ri.item;return ri=ri.next,ii++,{value:[ii-1,si],done:!1}})},typeof Symbol<"u"&&(ni.prototype[Symbol.iterator]=ni.prototype.values),ni.prototype.toString=function(){return this.toArray().join(",")},ni.prototype.toJSON=function(){return this.toArray()},ni.prototype.inspect=function(){var ri=this.toArray();return Object.defineProperty(ri,"constructor",{value:ni,enumerable:!1}),ri},typeof Symbol<"u"&&(ni.prototype[Symbol.for("nodejs.util.inspect.custom")]=ni.prototype.inspect),ni.from=function(ri){var ii=new ni;return ei(ri,function(si){ii.push(si)}),ii},c$5=ni,c$5}var A$4=q$3();const S$3=index_DafVOuVd.n(A$4),g$3="LIKEC4_DELAY";function E$2(...ti){let ei=100;return ti.length===2?ei=x$2(ti[0],ti[1]):ti.length===1&&(ei=ti[0]),new Promise(ni=>{setTimeout(()=>{ni(g$3)},ei??100)})}const k$3=(ti,ei)=>{const ni=index_DafVOuVd.t(ti.source,ti.target),ri=index_DafVOuVd.t(ei.source,ei.target);if(ni&&!ri)return 1;if(!ni&&ri)return-1;const ii=ni&&ri?index_DafVOuVd.w(ni,ri):0;if(ii!==0)return ii;const si=index_DafVOuVd.w(ti.source,ei.source);return si!==0?si:index_DafVOuVd.w(ti.target,ei.target)},{min:Vt$2,max:Ht$2}=Math,U$2=(ti,ei=0,ni=1)=>Vt$2(Ht$2(ei,ti),ni),_e$1=ti=>{ti._clipped=!1,ti._unclipped=ti.slice(0);for(let ei=0;ei<=3;ei++)ei<3?((ti[ei]<0||ti[ei]>255)&&(ti._clipped=!0),ti[ei]=U$2(ti[ei],0,255)):ei===3&&(ti[ei]=U$2(ti[ei],0,1));return ti},Ze={};for(let ti of["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"])Ze[`[object ${ti}]`]=ti.toLowerCase();function M$2(ti){return Ze[Object.prototype.toString.call(ti)]||"object"}const C$4=(ti,ei=null)=>ti.length>=3?Array.prototype.slice.call(ti):M$2(ti[0])=="object"&&ei?ei.split("").filter(ni=>ti[0][ni]!==void 0).map(ni=>ti[0][ni]):ti[0].slice(0),J$1=ti=>{if(ti.length<2)return null;const ei=ti.length-1;return M$2(ti[ei])=="string"?ti[ei].toLowerCase():null},{PI:ue$2,min:Ve,max:He}=Math,z$3=ti=>Math.round(ti*100)/100,Ce$2=ti=>Math.round(ti*100)/100,T$3=ue$2*2,Ee$2=ue$2/3,Kt$1=ue$2/180,Wt$2=180/ue$2;function Ke(ti){return[...ti.slice(0,3).reverse(),...ti.slice(3)]}const k$2={format:{},autodetect:[]};let i$c=class{constructor(...ei){const ni=this;if(M$2(ei[0])==="object"&&ei[0].constructor&&ei[0].constructor===this.constructor)return ei[0];let ri=J$1(ei),ii=!1;if(!ri){ii=!0,k$2.sorted||(k$2.autodetect=k$2.autodetect.sort((si,oi)=>oi.p-si.p),k$2.sorted=!0);for(let si of k$2.autodetect)if(ri=si.test(...ei),ri)break}if(k$2.format[ri]){const si=k$2.format[ri].apply(null,ii?ei:ei.slice(0,-1));ni._rgb=_e$1(si)}else throw new Error("unknown format: "+ei);ni._rgb.length===3&&ni._rgb.push(1)}toString(){return M$2(this.hex)=="function"?this.hex():`[${this._rgb.join(",")}]`}};const Ut$2="3.1.2",$$3=(...ti)=>new i$c(...ti);$$3.version=Ut$2;const Q$1={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},Jt$2=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Qt$1=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,We$1=ti=>{if(ti.match(Jt$2)){(ti.length===4||ti.length===7)&&(ti=ti.substr(1)),ti.length===3&&(ti=ti.split(""),ti=ti[0]+ti[0]+ti[1]+ti[1]+ti[2]+ti[2]);const ei=parseInt(ti,16),ni=ei>>16,ri=ei>>8&255,ii=ei&255;return[ni,ri,ii,1]}if(ti.match(Qt$1)){(ti.length===5||ti.length===9)&&(ti=ti.substr(1)),ti.length===4&&(ti=ti.split(""),ti=ti[0]+ti[0]+ti[1]+ti[1]+ti[2]+ti[2]+ti[3]+ti[3]);const ei=parseInt(ti,16),ni=ei>>24&255,ri=ei>>16&255,ii=ei>>8&255,si=Math.round((ei&255)/255*100)/100;return[ni,ri,ii,si]}throw new Error(`unknown hex color: ${ti}`)},{round:be$2}=Math,Ue$1=(...ti)=>{let[ei,ni,ri,ii]=C$4(ti,"rgba"),si=J$1(ti)||"auto";ii===void 0&&(ii=1),si==="auto"&&(si=ii<1?"rgba":"rgb"),ei=be$2(ei),ni=be$2(ni),ri=be$2(ri);let oi="000000"+(ei<<16|ni<<8|ri).toString(16);oi=oi.substr(oi.length-6);let ai="0"+be$2(ii*255).toString(16);switch(ai=ai.substr(ai.length-2),si.toLowerCase()){case"rgba":return`#${oi}${ai}`;case"argb":return`#${ai}${oi}`;default:return`#${oi}`}};i$c.prototype.name=function(){const ti=Ue$1(this._rgb,"rgb");for(let ei of Object.keys(Q$1))if(Q$1[ei]===ti)return ei.toLowerCase();return ti},k$2.format.named=ti=>{if(ti=ti.toLowerCase(),Q$1[ti])return We$1(Q$1[ti]);throw new Error("unknown color name: "+ti)},k$2.autodetect.push({p:5,test:(ti,...ei)=>{if(!ei.length&&M$2(ti)==="string"&&Q$1[ti.toLowerCase()])return"named"}}),i$c.prototype.alpha=function(ti,ei=!1){return ti!==void 0&&M$2(ti)==="number"?ei?(this._rgb[3]=ti,this):new i$c([this._rgb[0],this._rgb[1],this._rgb[2],ti],"rgb"):this._rgb[3]},i$c.prototype.clipped=function(){return this._rgb._clipped||!1};const X$1={Kn:18,labWhitePoint:"d65",Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452,kE:216/24389,kKE:8,kK:24389/27,RefWhiteRGB:{X:.95047,Y:1,Z:1.08883},MtxRGB2XYZ:{m00:.4124564390896922,m01:.21267285140562253,m02:.0193338955823293,m10:.357576077643909,m11:.715152155287818,m12:.11919202588130297,m20:.18043748326639894,m21:.07217499330655958,m22:.9503040785363679},MtxXYZ2RGB:{m00:3.2404541621141045,m01:-.9692660305051868,m02:.055643430959114726,m10:-1.5371385127977166,m11:1.8760108454466942,m12:-.2040259135167538,m20:-.498531409556016,m21:.041556017530349834,m22:1.0572251882231791},As:.9414285350000001,Bs:1.040417467,Cs:1.089532651,MtxAdaptMa:{m00:.8951,m01:-.7502,m02:.0389,m10:.2664,m11:1.7135,m12:-.0685,m20:-.1614,m21:.0367,m22:1.0296},MtxAdaptMaI:{m00:.9869929054667123,m01:.43230526972339456,m02:-.008528664575177328,m10:-.14705425642099013,m11:.5183602715367776,m12:.04004282165408487,m20:.15996265166373125,m21:.0492912282128556,m22:.9684866957875502}},en=new Map([["a",[1.0985,.35585]],["b",[1.0985,.35585]],["c",[.98074,1.18232]],["d50",[.96422,.82521]],["d55",[.95682,.92149]],["d65",[.95047,1.08883]],["e",[1,1,1]],["f2",[.99186,.67393]],["f7",[.95041,1.08747]],["f11",[1.00962,.6435]],["icc",[.96422,.82521]]]);function F$2(ti){const ei=en.get(String(ti).toLowerCase());if(!ei)throw new Error("unknown Lab illuminant "+ti);X$1.labWhitePoint=ti,X$1.Xn=ei[0],X$1.Zn=ei[1]}function fe$1(){return X$1.labWhitePoint}const Me$2=(...ti)=>{ti=C$4(ti,"lab");const[ei,ni,ri]=ti,[ii,si,oi]=tn(ei,ni,ri),[ai,ci,ui]=Je(ii,si,oi);return[ai,ci,ui,ti.length>3?ti[3]:1]},tn=(ti,ei,ni)=>{const{kE:ri,kK:ii,kKE:si,Xn:oi,Yn:ai,Zn:ci}=X$1,ui=(ti+16)/116,li=.002*ei+ui,di=ui-.005*ni,fi=li*li*li,pi=di*di*di,hi=fi>ri?fi:(116*li-16)/ii,vi=ti>si?Math.pow((ti+16)/116,3):ti/ii,bi=pi>ri?pi:(116*di-16)/ii,gi=hi*oi,wi=vi*ai,Ri=bi*ci;return[gi,wi,Ri]},xe$2=ti=>{const ei=Math.sign(ti);return ti=Math.abs(ti),(ti<=.0031308?ti*12.92:1.055*Math.pow(ti,1/2.4)-.055)*ei},Je=(ti,ei,ni)=>{const{MtxAdaptMa:ri,MtxAdaptMaI:ii,MtxXYZ2RGB:si,RefWhiteRGB:oi,Xn:ai,Yn:ci,Zn:ui}=X$1,li=ai*ri.m00+ci*ri.m10+ui*ri.m20,di=ai*ri.m01+ci*ri.m11+ui*ri.m21,fi=ai*ri.m02+ci*ri.m12+ui*ri.m22,pi=oi.X*ri.m00+oi.Y*ri.m10+oi.Z*ri.m20,hi=oi.X*ri.m01+oi.Y*ri.m11+oi.Z*ri.m21,vi=oi.X*ri.m02+oi.Y*ri.m12+oi.Z*ri.m22,bi=(ti*ri.m00+ei*ri.m10+ni*ri.m20)*(pi/li),gi=(ti*ri.m01+ei*ri.m11+ni*ri.m21)*(hi/di),wi=(ti*ri.m02+ei*ri.m12+ni*ri.m22)*(vi/fi),Ri=bi*ii.m00+gi*ii.m10+wi*ii.m20,ki=bi*ii.m01+gi*ii.m11+wi*ii.m21,Ai=bi*ii.m02+gi*ii.m12+wi*ii.m22,Ni=xe$2(Ri*si.m00+ki*si.m10+Ai*si.m20),_i=xe$2(Ri*si.m01+ki*si.m11+Ai*si.m21),Mi=xe$2(Ri*si.m02+ki*si.m12+Ai*si.m22);return[Ni*255,_i*255,Mi*255]},$e$2=(...ti)=>{const[ei,ni,ri,...ii]=C$4(ti,"rgb"),[si,oi,ai]=Qe(ei,ni,ri),[ci,ui,li]=nn(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]};function nn(ti,ei,ni){const{Xn:ri,Yn:ii,Zn:si,kE:oi,kK:ai}=X$1,ci=ti/ri,ui=ei/ii,li=ni/si,di=ci>oi?Math.pow(ci,1/3):(ai*ci+16)/116,fi=ui>oi?Math.pow(ui,1/3):(ai*ui+16)/116,pi=li>oi?Math.pow(li,1/3):(ai*li+16)/116;return[116*fi-16,500*(di-fi),200*(fi-pi)]}function Ae$2(ti){const ei=Math.sign(ti);return ti=Math.abs(ti),(ti<=.04045?ti/12.92:Math.pow((ti+.055)/1.055,2.4))*ei}const Qe=(ti,ei,ni)=>{ti=Ae$2(ti/255),ei=Ae$2(ei/255),ni=Ae$2(ni/255);const{MtxRGB2XYZ:ri,MtxAdaptMa:ii,MtxAdaptMaI:si,Xn:oi,Yn:ai,Zn:ci,As:ui,Bs:li,Cs:di}=X$1;let fi=ti*ri.m00+ei*ri.m10+ni*ri.m20,pi=ti*ri.m01+ei*ri.m11+ni*ri.m21,hi=ti*ri.m02+ei*ri.m12+ni*ri.m22;const vi=oi*ii.m00+ai*ii.m10+ci*ii.m20,bi=oi*ii.m01+ai*ii.m11+ci*ii.m21,gi=oi*ii.m02+ai*ii.m12+ci*ii.m22;let wi=fi*ii.m00+pi*ii.m10+hi*ii.m20,Ri=fi*ii.m01+pi*ii.m11+hi*ii.m21,ki=fi*ii.m02+pi*ii.m12+hi*ii.m22;return wi*=vi/ui,Ri*=bi/li,ki*=gi/di,fi=wi*si.m00+Ri*si.m10+ki*si.m20,pi=wi*si.m01+Ri*si.m11+ki*si.m21,hi=wi*si.m02+Ri*si.m12+ki*si.m22,[fi,pi,hi]};i$c.prototype.lab=function(){return $e$2(this._rgb)};const rn=(...ti)=>new i$c(...ti,"lab");Object.assign($$3,{lab:rn,getLabWhitePoint:fe$1,setLabWhitePoint:F$2}),k$2.format.lab=Me$2,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"lab"),M$2(ti)==="array"&&ti.length===3)return"lab"}}),i$c.prototype.darken=function(ti=1){const ei=this,ni=ei.lab();return ni[0]-=X$1.Kn*ti,new i$c(ni,"lab").alpha(ei.alpha(),!0)},i$c.prototype.brighten=function(ti=1){return this.darken(-ti)},i$c.prototype.darker=i$c.prototype.darken,i$c.prototype.brighter=i$c.prototype.brighten,i$c.prototype.get=function(ti){const[ei,ni]=ti.split("."),ri=this[ei]();if(ni){const ii=ei.indexOf(ni)-(ei.substr(0,2)==="ok"?2:0);if(ii>-1)return ri[ii];throw new Error(`unknown channel ${ni} in mode ${ei}`)}else return ri};const{pow:on}=Math,sn=1e-7,cn=20;i$c.prototype.luminance=function(ti,ei="rgb"){if(ti!==void 0&&M$2(ti)==="number"){if(ti===0)return new i$c([0,0,0,this._rgb[3]],"rgb");if(ti===1)return new i$c([255,255,255,this._rgb[3]],"rgb");let ni=this.luminance(),ri=cn;const ii=(oi,ai)=>{const ci=oi.interpolate(ai,.5,ei),ui=ci.luminance();return Math.abs(ti-ui)<sn||!ri--?ci:ui>ti?ii(oi,ci):ii(ci,ai)},si=(ni>ti?ii(new i$c([0,0,0]),this):ii(this,new i$c([255,255,255]))).rgb();return new i$c([...si,this._rgb[3]])}return an(...this._rgb.slice(0,3))};const an=(ti,ei,ni)=>(ti=Re$1(ti),ei=Re$1(ei),ni=Re$1(ni),.2126*ti+.7152*ei+.0722*ni),Re$1=ti=>(ti/=255,ti<=.03928?ti/12.92:on((ti+.055)/1.055,2.4)),q$2={},ee$1=(ti,ei,ni=.5,...ri)=>{let ii=ri[0]||"lrgb";if(!q$2[ii]&&!ri.length&&(ii=Object.keys(q$2)[0]),!q$2[ii])throw new Error(`interpolation mode ${ii} is not defined`);return M$2(ti)!=="object"&&(ti=new i$c(ti)),M$2(ei)!=="object"&&(ei=new i$c(ei)),q$2[ii](ti,ei,ni).alpha(ti.alpha()+ni*(ei.alpha()-ti.alpha()))};i$c.prototype.mix=i$c.prototype.interpolate=function(ti,ei=.5,...ni){return ee$1(this,ti,ei,...ni)},i$c.prototype.premultiply=function(ti=!1){const ei=this._rgb,ni=ei[3];return ti?(this._rgb=[ei[0]*ni,ei[1]*ni,ei[2]*ni,ni],this):new i$c([ei[0]*ni,ei[1]*ni,ei[2]*ni,ni],"rgb")};const{sin:fn,cos:ln}=Math,et$1=(...ti)=>{let[ei,ni,ri]=C$4(ti,"lch");return isNaN(ri)&&(ri=0),ri=ri*Kt$1,[ei,ln(ri)*ni,fn(ri)*ni]},Le$2=(...ti)=>{ti=C$4(ti,"lch");const[ei,ni,ri]=ti,[ii,si,oi]=et$1(ei,ni,ri),[ai,ci,ui]=Me$2(ii,si,oi);return[ai,ci,ui,ti.length>3?ti[3]:1]},un=(...ti)=>{const ei=Ke(C$4(ti,"hcl"));return Le$2(...ei)},{sqrt:bn,atan2:hn,round:dn}=Math,tt$1=(...ti)=>{const[ei,ni,ri]=C$4(ti,"lab"),ii=bn(ni*ni+ri*ri);let si=(hn(ri,ni)*Wt$2+360)%360;return dn(ii*1e4)===0&&(si=Number.NaN),[ei,ii,si]},Ne$2=(...ti)=>{const[ei,ni,ri,...ii]=C$4(ti,"rgb"),[si,oi,ai]=$e$2(ei,ni,ri),[ci,ui,li]=tt$1(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]};i$c.prototype.lch=function(){return Ne$2(this._rgb)},i$c.prototype.hcl=function(){return Ke(Ne$2(this._rgb))};const pn=(...ti)=>new i$c(...ti,"lch"),mn=(...ti)=>new i$c(...ti,"hcl");Object.assign($$3,{lch:pn,hcl:mn}),k$2.format.lch=Le$2,k$2.format.hcl=un,["lch","hcl"].forEach(ti=>k$2.autodetect.push({p:2,test:(...ei)=>{if(ei=C$4(ei,ti),M$2(ei)==="array"&&ei.length===3)return ti}})),i$c.prototype.saturate=function(ti=1){const ei=this,ni=ei.lch();return ni[1]+=X$1.Kn*ti,ni[1]<0&&(ni[1]=0),new i$c(ni,"lch").alpha(ei.alpha(),!0)},i$c.prototype.desaturate=function(ti=1){return this.saturate(-ti)},i$c.prototype.set=function(ti,ei,ni=!1){const[ri,ii]=ti.split("."),si=this[ri]();if(ii){const oi=ri.indexOf(ii)-(ri.substr(0,2)==="ok"?2:0);if(oi>-1){if(M$2(ei)=="string")switch(ei.charAt(0)){case"+":si[oi]+=+ei;break;case"-":si[oi]+=+ei;break;case"*":si[oi]*=+ei.substr(1);break;case"/":si[oi]/=+ei.substr(1);break;default:si[oi]=+ei}else if(M$2(ei)==="number")si[oi]=ei;else throw new Error("unsupported value for Color.set");const ai=new i$c(si,ri);return ni?(this._rgb=ai._rgb,this):ai}throw new Error(`unknown channel ${ii} in mode ${ri}`)}else return si},i$c.prototype.tint=function(ti=.5,...ei){return ee$1(this,"white",ti,...ei)},i$c.prototype.shade=function(ti=.5,...ei){return ee$1(this,"black",ti,...ei)};const gn=(ti,ei,ni)=>{const ri=ti._rgb,ii=ei._rgb;return new i$c(ri[0]+ni*(ii[0]-ri[0]),ri[1]+ni*(ii[1]-ri[1]),ri[2]+ni*(ii[2]-ri[2]),"rgb")};q$2.rgb=gn;const{sqrt:Pe$2,pow:te$1}=Math,yn=(ti,ei,ni)=>{const[ri,ii,si]=ti._rgb,[oi,ai,ci]=ei._rgb;return new i$c(Pe$2(te$1(ri,2)*(1-ni)+te$1(oi,2)*ni),Pe$2(te$1(ii,2)*(1-ni)+te$1(ai,2)*ni),Pe$2(te$1(si,2)*(1-ni)+te$1(ci,2)*ni),"rgb")};q$2.lrgb=yn;const wn=(ti,ei,ni)=>{const ri=ti.lab(),ii=ei.lab();return new i$c(ri[0]+ni*(ii[0]-ri[0]),ri[1]+ni*(ii[1]-ri[1]),ri[2]+ni*(ii[2]-ri[2]),"lab")};q$2.lab=wn;const ne$1=(ti,ei,ni,ri)=>{let ii,si;ri==="hsl"?(ii=ti.hsl(),si=ei.hsl()):ri==="hsv"?(ii=ti.hsv(),si=ei.hsv()):ri==="hcg"?(ii=ti.hcg(),si=ei.hcg()):ri==="hsi"?(ii=ti.hsi(),si=ei.hsi()):ri==="lch"||ri==="hcl"?(ri="hcl",ii=ti.hcl(),si=ei.hcl()):ri==="oklch"&&(ii=ti.oklch().reverse(),si=ei.oklch().reverse());let oi,ai,ci,ui,li,di;(ri.substr(0,1)==="h"||ri==="oklch")&&([oi,ci,li]=ii,[ai,ui,di]=si);let fi,pi,hi,vi;return!isNaN(oi)&&!isNaN(ai)?(ai>oi&&ai-oi>180?vi=ai-(oi+360):ai<oi&&oi-ai>180?vi=ai+360-oi:vi=ai-oi,pi=oi+ni*vi):isNaN(oi)?isNaN(ai)?pi=Number.NaN:(pi=ai,(li==1||li==0)&&ri!="hsv"&&(fi=ui)):(pi=oi,(di==1||di==0)&&ri!="hsv"&&(fi=ci)),fi===void 0&&(fi=ci+ni*(ui-ci)),hi=li+ni*(di-li),ri==="oklch"?new i$c([hi,fi,pi],ri):new i$c([pi,fi,hi],ri)},nt$1=(ti,ei,ni)=>ne$1(ti,ei,ni,"lch");q$2.lch=nt$1,q$2.hcl=nt$1;const kn=ti=>{if(M$2(ti)=="number"&&ti>=0&&ti<=16777215){const ei=ti>>16,ni=ti>>8&255,ri=ti&255;return[ei,ni,ri,1]}throw new Error("unknown num color: "+ti)},_n=(...ti)=>{const[ei,ni,ri]=C$4(ti,"rgb");return(ei<<16)+(ni<<8)+ri};i$c.prototype.num=function(){return _n(this._rgb)};const Cn=(...ti)=>new i$c(...ti,"num");Object.assign($$3,{num:Cn}),k$2.format.num=kn,k$2.autodetect.push({p:5,test:(...ti)=>{if(ti.length===1&&M$2(ti[0])==="number"&&ti[0]>=0&&ti[0]<=16777215)return"num"}});const En=(ti,ei,ni)=>{const ri=ti.num(),ii=ei.num();return new i$c(ri+ni*(ii-ri),"num")};q$2.num=En;const{floor:Mn}=Math,xn=(...ti)=>{ti=C$4(ti,"hcg");let[ei,ni,ri]=ti,ii,si,oi;ri=ri*255;const ai=ni*255;if(ni===0)ii=si=oi=ri;else{ei===360&&(ei=0),ei>360&&(ei-=360),ei<0&&(ei+=360),ei/=60;const ci=Mn(ei),ui=ei-ci,li=ri*(1-ni),di=li+ai*(1-ui),fi=li+ai*ui,pi=li+ai;switch(ci){case 0:[ii,si,oi]=[pi,fi,li];break;case 1:[ii,si,oi]=[di,pi,li];break;case 2:[ii,si,oi]=[li,pi,fi];break;case 3:[ii,si,oi]=[li,di,pi];break;case 4:[ii,si,oi]=[fi,li,pi];break;case 5:[ii,si,oi]=[pi,li,di];break}}return[ii,si,oi,ti.length>3?ti[3]:1]},$n=(...ti)=>{const[ei,ni,ri]=C$4(ti,"rgb"),ii=Ve(ei,ni,ri),si=He(ei,ni,ri),oi=si-ii,ai=oi*100/255,ci=ii/(255-oi)*100;let ui;return oi===0?ui=Number.NaN:(ei===si&&(ui=(ni-ri)/oi),ni===si&&(ui=2+(ri-ei)/oi),ri===si&&(ui=4+(ei-ni)/oi),ui*=60,ui<0&&(ui+=360)),[ui,ai,ci]};i$c.prototype.hcg=function(){return $n(this._rgb)};const An=(...ti)=>new i$c(...ti,"hcg");$$3.hcg=An,k$2.format.hcg=xn,k$2.autodetect.push({p:1,test:(...ti)=>{if(ti=C$4(ti,"hcg"),M$2(ti)==="array"&&ti.length===3)return"hcg"}});const Rn=(ti,ei,ni)=>ne$1(ti,ei,ni,"hcg");q$2.hcg=Rn;const{cos:re$1}=Math,Ln=(...ti)=>{ti=C$4(ti,"hsi");let[ei,ni,ri]=ti,ii,si,oi;return isNaN(ei)&&(ei=0),isNaN(ni)&&(ni=0),ei>360&&(ei-=360),ei<0&&(ei+=360),ei/=360,ei<1/3?(oi=(1-ni)/3,ii=(1+ni*re$1(T$3*ei)/re$1(Ee$2-T$3*ei))/3,si=1-(oi+ii)):ei<2/3?(ei-=1/3,ii=(1-ni)/3,si=(1+ni*re$1(T$3*ei)/re$1(Ee$2-T$3*ei))/3,oi=1-(ii+si)):(ei-=2/3,si=(1-ni)/3,oi=(1+ni*re$1(T$3*ei)/re$1(Ee$2-T$3*ei))/3,ii=1-(si+oi)),ii=U$2(ri*ii*3),si=U$2(ri*si*3),oi=U$2(ri*oi*3),[ii*255,si*255,oi*255,ti.length>3?ti[3]:1]},{min:Nn,sqrt:Pn,acos:jn}=Math,Bn=(...ti)=>{let[ei,ni,ri]=C$4(ti,"rgb");ei/=255,ni/=255,ri/=255;let ii;const si=Nn(ei,ni,ri),oi=(ei+ni+ri)/3,ai=oi>0?1-si/oi:0;return ai===0?ii=NaN:(ii=(ei-ni+(ei-ri))/2,ii/=Pn((ei-ni)*(ei-ni)+(ei-ri)*(ni-ri)),ii=jn(ii),ri>ni&&(ii=T$3-ii),ii/=T$3),[ii*360,ai,oi]};i$c.prototype.hsi=function(){return Bn(this._rgb)};const On=(...ti)=>new i$c(...ti,"hsi");$$3.hsi=On,k$2.format.hsi=Ln,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"hsi"),M$2(ti)==="array"&&ti.length===3)return"hsi"}});const vn=(ti,ei,ni)=>ne$1(ti,ei,ni,"hsi");q$2.hsi=vn;const je$1=(...ti)=>{ti=C$4(ti,"hsl");const[ei,ni,ri]=ti;let ii,si,oi;if(ni===0)ii=si=oi=ri*255;else{const ai=[0,0,0],ci=[0,0,0],ui=ri<.5?ri*(1+ni):ri+ni-ri*ni,li=2*ri-ui,di=ei/360;ai[0]=di+1/3,ai[1]=di,ai[2]=di-1/3;for(let fi=0;fi<3;fi++)ai[fi]<0&&(ai[fi]+=1),ai[fi]>1&&(ai[fi]-=1),6*ai[fi]<1?ci[fi]=li+(ui-li)*6*ai[fi]:2*ai[fi]<1?ci[fi]=ui:3*ai[fi]<2?ci[fi]=li+(ui-li)*(2/3-ai[fi])*6:ci[fi]=li;[ii,si,oi]=[ci[0]*255,ci[1]*255,ci[2]*255]}return ti.length>3?[ii,si,oi,ti[3]]:[ii,si,oi,1]},rt$1=(...ti)=>{ti=C$4(ti,"rgba");let[ei,ni,ri]=ti;ei/=255,ni/=255,ri/=255;const ii=Ve(ei,ni,ri),si=He(ei,ni,ri),oi=(si+ii)/2;let ai,ci;return si===ii?(ai=0,ci=Number.NaN):ai=oi<.5?(si-ii)/(si+ii):(si-ii)/(2-si-ii),ei==si?ci=(ni-ri)/(si-ii):ni==si?ci=2+(ri-ei)/(si-ii):ri==si&&(ci=4+(ei-ni)/(si-ii)),ci*=60,ci<0&&(ci+=360),ti.length>3&&ti[3]!==void 0?[ci,ai,oi,ti[3]]:[ci,ai,oi]};i$c.prototype.hsl=function(){return rt$1(this._rgb)};const Sn=(...ti)=>new i$c(...ti,"hsl");$$3.hsl=Sn,k$2.format.hsl=je$1,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"hsl"),M$2(ti)==="array"&&ti.length===3)return"hsl"}});const qn=(ti,ei,ni)=>ne$1(ti,ei,ni,"hsl");q$2.hsl=qn;const{floor:Gn}=Math,zn=(...ti)=>{ti=C$4(ti,"hsv");let[ei,ni,ri]=ti,ii,si,oi;if(ri*=255,ni===0)ii=si=oi=ri;else{ei===360&&(ei=0),ei>360&&(ei-=360),ei<0&&(ei+=360),ei/=60;const ai=Gn(ei),ci=ei-ai,ui=ri*(1-ni),li=ri*(1-ni*ci),di=ri*(1-ni*(1-ci));switch(ai){case 0:[ii,si,oi]=[ri,di,ui];break;case 1:[ii,si,oi]=[li,ri,ui];break;case 2:[ii,si,oi]=[ui,ri,di];break;case 3:[ii,si,oi]=[ui,li,ri];break;case 4:[ii,si,oi]=[di,ui,ri];break;case 5:[ii,si,oi]=[ri,ui,li];break}}return[ii,si,oi,ti.length>3?ti[3]:1]},{min:Yn,max:Dn}=Math,In=(...ti)=>{ti=C$4(ti,"rgb");let[ei,ni,ri]=ti;const ii=Yn(ei,ni,ri),si=Dn(ei,ni,ri),oi=si-ii;let ai,ci,ui;return ui=si/255,si===0?(ai=Number.NaN,ci=0):(ci=oi/si,ei===si&&(ai=(ni-ri)/oi),ni===si&&(ai=2+(ri-ei)/oi),ri===si&&(ai=4+(ei-ni)/oi),ai*=60,ai<0&&(ai+=360)),[ai,ci,ui]};i$c.prototype.hsv=function(){return In(this._rgb)};const Xn=(...ti)=>new i$c(...ti,"hsv");$$3.hsv=Xn,k$2.format.hsv=zn,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"hsv"),M$2(ti)==="array"&&ti.length===3)return"hsv"}});const Tn=(ti,ei,ni)=>ne$1(ti,ei,ni,"hsv");q$2.hsv=Tn;function he$1(ti,ei){let ni=ti.length;Array.isArray(ti[0])||(ti=[ti]),Array.isArray(ei[0])||(ei=ei.map(oi=>[oi]));let ri=ei[0].length,ii=ei[0].map((oi,ai)=>ei.map(ci=>ci[ai])),si=ti.map(oi=>ii.map(ai=>Array.isArray(oi)?oi.reduce((ci,ui,li)=>ci+ui*(ai[li]||0),0):ai.reduce((ci,ui)=>ci+ui*oi,0)));return ni===1&&(si=si[0]),ri===1?si.map(oi=>oi[0]):si}const Be$2=(...ti)=>{ti=C$4(ti,"lab");const[ei,ni,ri,...ii]=ti,[si,oi,ai]=Fn([ei,ni,ri]),[ci,ui,li]=Je(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]};function Fn(ti){var ei=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],ni=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],ri=he$1(ni,ti);return he$1(ei,ri.map(ii=>ii**3))}const Oe$2=(...ti)=>{const[ei,ni,ri,...ii]=C$4(ti,"rgb"),si=Qe(ei,ni,ri);return[...Zn(si),...ii.length>0&&ii[0]<1?[ii[0]]:[]]};function Zn(ti){const ei=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],ni=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],ri=he$1(ei,ti);return he$1(ni,ri.map(ii=>Math.cbrt(ii)))}i$c.prototype.oklab=function(){return Oe$2(this._rgb)};const Vn=(...ti)=>new i$c(...ti,"oklab");Object.assign($$3,{oklab:Vn}),k$2.format.oklab=Be$2,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"oklab"),M$2(ti)==="array"&&ti.length===3)return"oklab"}});const Hn=(ti,ei,ni)=>{const ri=ti.oklab(),ii=ei.oklab();return new i$c(ri[0]+ni*(ii[0]-ri[0]),ri[1]+ni*(ii[1]-ri[1]),ri[2]+ni*(ii[2]-ri[2]),"oklab")};q$2.oklab=Hn;const Kn=(ti,ei,ni)=>ne$1(ti,ei,ni,"oklch");q$2.oklch=Kn;const{pow:ve$2,sqrt:Se$2,PI:qe$1,cos:ot$1,sin:st$1,atan2:Wn}=Math,Un=(ti,ei="lrgb",ni=null)=>{const ri=ti.length;ni||(ni=Array.from(new Array(ri)).map(()=>1));const ii=ri/ni.reduce(function(di,fi){return di+fi});if(ni.forEach((di,fi)=>{ni[fi]*=ii}),ti=ti.map(di=>new i$c(di)),ei==="lrgb")return Jn(ti,ni);const si=ti.shift(),oi=si.get(ei),ai=[];let ci=0,ui=0;for(let di=0;di<oi.length;di++)if(oi[di]=(oi[di]||0)*ni[0],ai.push(isNaN(oi[di])?0:ni[0]),ei.charAt(di)==="h"&&!isNaN(oi[di])){const fi=oi[di]/180*qe$1;ci+=ot$1(fi)*ni[0],ui+=st$1(fi)*ni[0]}let li=si.alpha()*ni[0];ti.forEach((di,fi)=>{const pi=di.get(ei);li+=di.alpha()*ni[fi+1];for(let hi=0;hi<oi.length;hi++)if(!isNaN(pi[hi]))if(ai[hi]+=ni[fi+1],ei.charAt(hi)==="h"){const vi=pi[hi]/180*qe$1;ci+=ot$1(vi)*ni[fi+1],ui+=st$1(vi)*ni[fi+1]}else oi[hi]+=pi[hi]*ni[fi+1]});for(let di=0;di<oi.length;di++)if(ei.charAt(di)==="h"){let fi=Wn(ui/ai[di],ci/ai[di])/qe$1*180;for(;fi<0;)fi+=360;for(;fi>=360;)fi-=360;oi[di]=fi}else oi[di]=oi[di]/ai[di];return li/=ri,new i$c(oi,ei).alpha(li>.99999?1:li,!0)},Jn=(ti,ei)=>{const ni=ti.length,ri=[0,0,0,0];for(let ii=0;ii<ti.length;ii++){const si=ti[ii],oi=ei[ii]/ni,ai=si._rgb;ri[0]+=ve$2(ai[0],2)*oi,ri[1]+=ve$2(ai[1],2)*oi,ri[2]+=ve$2(ai[2],2)*oi,ri[3]+=ai[3]*oi}return ri[0]=Se$2(ri[0]),ri[1]=Se$2(ri[1]),ri[2]=Se$2(ri[2]),ri[3]>.9999999&&(ri[3]=1),new i$c(_e$1(ri))},{pow:Qn}=Math;function de$2(ti){let ei="rgb",ni=$$3("#ccc"),ri=0,ii=[0,1],si=[],oi=[0,0],ai=!1,ci=[],ui=!1,li=0,di=1,fi=!1,pi={},hi=!0,vi=1;const bi=function(_i){if(_i=_i||["#fff","#000"],_i&&M$2(_i)==="string"&&$$3.brewer&&$$3.brewer[_i.toLowerCase()]&&(_i=$$3.brewer[_i.toLowerCase()]),M$2(_i)==="array"){_i.length===1&&(_i=[_i[0],_i[0]]),_i=_i.slice(0);for(let Mi=0;Mi<_i.length;Mi++)_i[Mi]=$$3(_i[Mi]);si.length=0;for(let Mi=0;Mi<_i.length;Mi++)si.push(Mi/(_i.length-1))}return Ai(),ci=_i},gi=function(_i){if(ai!=null){const Mi=ai.length-1;let Bi=0;for(;Bi<Mi&&_i>=ai[Bi];)Bi++;return Bi-1}return 0};let wi=_i=>_i,Ri=_i=>_i;const ki=function(_i,Mi){let Bi,Xi;if(Mi==null&&(Mi=!1),isNaN(_i)||_i===null)return ni;Mi?Xi=_i:ai&&ai.length>2?Xi=gi(_i)/(ai.length-2):di!==li?Xi=(_i-li)/(di-li):Xi=1,Xi=Ri(Xi),Mi||(Xi=wi(Xi)),vi!==1&&(Xi=Qn(Xi,vi)),Xi=oi[0]+Xi*(1-oi[0]-oi[1]),Xi=U$2(Xi,0,1);const Ii=Math.floor(Xi*1e4);if(hi&&pi[Ii])Bi=pi[Ii];else{if(M$2(ci)==="array")for(let Ti=0;Ti<si.length;Ti++){const $i=si[Ti];if(Xi<=$i){Bi=ci[Ti];break}if(Xi>=$i&&Ti===si.length-1){Bi=ci[Ti];break}if(Xi>$i&&Xi<si[Ti+1]){Xi=(Xi-$i)/(si[Ti+1]-$i),Bi=$$3.interpolate(ci[Ti],ci[Ti+1],Xi,ei);break}}else M$2(ci)==="function"&&(Bi=ci(Xi));hi&&(pi[Ii]=Bi)}return Bi};var Ai=()=>pi={};bi(ti);const Ni=function(_i){const Mi=$$3(ki(_i));return ui&&Mi[ui]?Mi[ui]():Mi};return Ni.classes=function(_i){if(_i!=null){if(M$2(_i)==="array")ai=_i,ii=[_i[0],_i[_i.length-1]];else{const Mi=$$3.analyze(ii);_i===0?ai=[Mi.min,Mi.max]:ai=$$3.limits(Mi,"e",_i)}return Ni}return ai},Ni.domain=function(_i){if(!arguments.length)return ii;li=_i[0],di=_i[_i.length-1],si=[];const Mi=ci.length;if(_i.length===Mi&&li!==di)for(let Bi of Array.from(_i))si.push((Bi-li)/(di-li));else{for(let Bi=0;Bi<Mi;Bi++)si.push(Bi/(Mi-1));if(_i.length>2){const Bi=_i.map((Ii,Ti)=>Ti/(_i.length-1)),Xi=_i.map(Ii=>(Ii-li)/(di-li));Xi.every((Ii,Ti)=>Bi[Ti]===Ii)||(Ri=Ii=>{if(Ii<=0||Ii>=1)return Ii;let Ti=0;for(;Ii>=Xi[Ti+1];)Ti++;const $i=(Ii-Xi[Ti])/(Xi[Ti+1]-Xi[Ti]);return Bi[Ti]+$i*(Bi[Ti+1]-Bi[Ti])})}}return ii=[li,di],Ni},Ni.mode=function(_i){return arguments.length?(ei=_i,Ai(),Ni):ei},Ni.range=function(_i,Mi){return bi(_i),Ni},Ni.out=function(_i){return ui=_i,Ni},Ni.spread=function(_i){return arguments.length?(ri=_i,Ni):ri},Ni.correctLightness=function(_i){return _i==null&&(_i=!0),fi=_i,Ai(),fi?wi=function(Mi){const Bi=ki(0,!0).lab()[0],Xi=ki(1,!0).lab()[0],Ii=Bi>Xi;let Ti=ki(Mi,!0).lab()[0];const $i=Bi+(Xi-Bi)*Mi;let Fi=Ti-$i,Wi=0,Gi=1,Hi=20;for(;Math.abs(Fi)>.01&&Hi-- >0;)(function(){return Ii&&(Fi*=-1),Fi<0?(Wi=Mi,Mi+=(Gi-Mi)*.5):(Gi=Mi,Mi+=(Wi-Mi)*.5),Ti=ki(Mi,!0).lab()[0],Fi=Ti-$i})();return Mi}:wi=Mi=>Mi,Ni},Ni.padding=function(_i){return _i!=null?(M$2(_i)==="number"&&(_i=[_i,_i]),oi=_i,Ni):oi},Ni.colors=function(_i,Mi){arguments.length<2&&(Mi="hex");let Bi=[];if(arguments.length===0)Bi=ci.slice(0);else if(_i===1)Bi=[Ni(.5)];else if(_i>1){const Xi=ii[0],Ii=ii[1]-Xi;Bi=er(0,_i).map(Ti=>Ni(Xi+Ti/(_i-1)*Ii))}else{ti=[];let Xi=[];if(ai&&ai.length>2)for(let Ii=1,Ti=ai.length,$i=1<=Ti;$i?Ii<Ti:Ii>Ti;$i?Ii++:Ii--)Xi.push((ai[Ii-1]+ai[Ii])*.5);else Xi=ii;Bi=Xi.map(Ii=>Ni(Ii))}return $$3[Mi]&&(Bi=Bi.map(Xi=>Xi[Mi]())),Bi},Ni.cache=function(_i){return _i!=null?(hi=_i,Ni):hi},Ni.gamma=function(_i){return _i!=null?(vi=_i,Ni):vi},Ni.nodata=function(_i){return _i!=null?(ni=$$3(_i),Ni):ni},Ni}function er(ti,ei,ni){let ri=[],ii=ti<ei,si=ei;for(let oi=ti;ii?oi<si:oi>si;ii?oi++:oi--)ri.push(oi);return ri}const tr=function(ti){let ei=[1,1];for(let ni=1;ni<ti;ni++){let ri=[1];for(let ii=1;ii<=ei.length;ii++)ri[ii]=(ei[ii]||0)+ei[ii-1];ei=ri}return ei},nr=function(ti){let ei,ni,ri,ii;if(ti=ti.map(si=>new i$c(si)),ti.length===2)[ni,ri]=ti.map(si=>si.lab()),ei=function(si){const oi=[0,1,2].map(ai=>ni[ai]+si*(ri[ai]-ni[ai]));return new i$c(oi,"lab")};else if(ti.length===3)[ni,ri,ii]=ti.map(si=>si.lab()),ei=function(si){const oi=[0,1,2].map(ai=>(1-si)*(1-si)*ni[ai]+2*(1-si)*si*ri[ai]+si*si*ii[ai]);return new i$c(oi,"lab")};else if(ti.length===4){let si;[ni,ri,ii,si]=ti.map(oi=>oi.lab()),ei=function(oi){const ai=[0,1,2].map(ci=>(1-oi)*(1-oi)*(1-oi)*ni[ci]+3*(1-oi)*(1-oi)*oi*ri[ci]+3*(1-oi)*oi*oi*ii[ci]+oi*oi*oi*si[ci]);return new i$c(ai,"lab")}}else if(ti.length>=5){let si,oi,ai;si=ti.map(ci=>ci.lab()),ai=ti.length-1,oi=tr(ai),ei=function(ci){const ui=1-ci,li=[0,1,2].map(di=>si.reduce((fi,pi,hi)=>fi+oi[hi]*ui**(ai-hi)*ci**hi*pi[di],0));return new i$c(li,"lab")}}else throw new RangeError("No point in running bezier with only one color.");return ei},rr=ti=>{const ei=nr(ti);return ei.scale=()=>de$2(ei),ei},{round:ct$1}=Math;i$c.prototype.rgb=function(ti=!0){return ti===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(ct$1)},i$c.prototype.rgba=function(ti=!0){return this._rgb.slice(0,4).map((ei,ni)=>ni<3?ti===!1?ei:ct$1(ei):ei)};const or=(...ti)=>new i$c(...ti,"rgb");Object.assign($$3,{rgb:or}),k$2.format.rgb=(...ti)=>{const ei=C$4(ti,"rgba");return ei[3]===void 0&&(ei[3]=1),ei},k$2.autodetect.push({p:3,test:(...ti)=>{if(ti=C$4(ti,"rgba"),M$2(ti)==="array"&&(ti.length===3||ti.length===4&&M$2(ti[3])=="number"&&ti[3]>=0&&ti[3]<=1))return"rgb"}});const D$2=(ti,ei,ni)=>{if(!D$2[ni])throw new Error("unknown blend mode "+ni);return D$2[ni](ti,ei)},H=ti=>(ei,ni)=>{const ri=$$3(ni).rgb(),ii=$$3(ei).rgb();return $$3.rgb(ti(ri,ii))},K$1=ti=>(ei,ni)=>{const ri=[];return ri[0]=ti(ei[0],ni[0]),ri[1]=ti(ei[1],ni[1]),ri[2]=ti(ei[2],ni[2]),ri},sr=ti=>ti,cr=(ti,ei)=>ti*ei/255,ar=(ti,ei)=>ti>ei?ei:ti,fr=(ti,ei)=>ti>ei?ti:ei,lr=(ti,ei)=>255*(1-(1-ti/255)*(1-ei/255)),ir=(ti,ei)=>ei<128?2*ti*ei/255:255*(1-2*(1-ti/255)*(1-ei/255)),ur=(ti,ei)=>255*(1-(1-ei/255)/(ti/255)),br=(ti,ei)=>ti===255?255:(ti=255*(ei/255)/(1-ti/255),ti>255?255:ti);D$2.normal=H(K$1(sr)),D$2.multiply=H(K$1(cr)),D$2.screen=H(K$1(lr)),D$2.overlay=H(K$1(ir)),D$2.darken=H(K$1(ar)),D$2.lighten=H(K$1(fr)),D$2.dodge=H(K$1(br)),D$2.burn=H(K$1(ur));const{pow:hr,sin:dr,cos:pr}=Math;function mr(ti=300,ei=-1.5,ni=1,ri=1,ii=[0,1]){let si=0,oi;M$2(ii)==="array"?oi=ii[1]-ii[0]:(oi=0,ii=[ii,ii]);const ai=function(ci){const ui=T$3*((ti+120)/360+ei*ci),li=hr(ii[0]+oi*ci,ri),di=(si!==0?ni[0]+ci*si:ni)*li*(1-li)/2,fi=pr(ui),pi=dr(ui),hi=li+di*(-.14861*fi+1.78277*pi),vi=li+di*(-.29227*fi-.90649*pi),bi=li+di*(1.97294*fi);return $$3(_e$1([hi*255,vi*255,bi*255,1]))};return ai.start=function(ci){return ci==null?ti:(ti=ci,ai)},ai.rotations=function(ci){return ci==null?ei:(ei=ci,ai)},ai.gamma=function(ci){return ci==null?ri:(ri=ci,ai)},ai.hue=function(ci){return ci==null?ni:(ni=ci,M$2(ni)==="array"?(si=ni[1]-ni[0],si===0&&(ni=ni[1])):si=0,ai)},ai.lightness=function(ci){return ci==null?ii:(M$2(ci)==="array"?(ii=ci,oi=ci[1]-ci[0]):(ii=[ci,ci],oi=0),ai)},ai.scale=()=>$$3.scale(ai),ai.hue(ni),ai}const gr="0123456789abcdef",{floor:yr,random:wr}=Math,kr=()=>{let ti="#";for(let ei=0;ei<6;ei++)ti+=gr.charAt(yr(wr()*16));return new i$c(ti,"hex")},{log:at$1,pow:_r,floor:Cr,abs:Er}=Math;function ft$2(ti,ei=null){const ni={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return M$2(ti)==="object"&&(ti=Object.values(ti)),ti.forEach(ri=>{ei&&M$2(ri)==="object"&&(ri=ri[ei]),ri!=null&&!isNaN(ri)&&(ni.values.push(ri),ni.sum+=ri,ri<ni.min&&(ni.min=ri),ri>ni.max&&(ni.max=ri),ni.count+=1)}),ni.domain=[ni.min,ni.max],ni.limits=(ri,ii)=>lt$1(ni,ri,ii),ni}function lt$1(ti,ei="equal",ni=7){M$2(ti)=="array"&&(ti=ft$2(ti));const{min:ri,max:ii}=ti,si=ti.values.sort((ai,ci)=>ai-ci);if(ni===1)return[ri,ii];const oi=[];if(ei.substr(0,1)==="c"&&(oi.push(ri),oi.push(ii)),ei.substr(0,1)==="e"){oi.push(ri);for(let ai=1;ai<ni;ai++)oi.push(ri+ai/ni*(ii-ri));oi.push(ii)}else if(ei.substr(0,1)==="l"){if(ri<=0)throw new Error("Logarithmic scales are only possible for values > 0");const ai=Math.LOG10E*at$1(ri),ci=Math.LOG10E*at$1(ii);oi.push(ri);for(let ui=1;ui<ni;ui++)oi.push(_r(10,ai+ui/ni*(ci-ai)));oi.push(ii)}else if(ei.substr(0,1)==="q"){oi.push(ri);for(let ai=1;ai<ni;ai++){const ci=(si.length-1)*ai/ni,ui=Cr(ci);if(ui===ci)oi.push(si[ui]);else{const li=ci-ui;oi.push(si[ui]*(1-li)+si[ui+1]*li)}}oi.push(ii)}else if(ei.substr(0,1)==="k"){let ai;const ci=si.length,ui=new Array(ci),li=new Array(ni);let di=!0,fi=0,pi=null;pi=[],pi.push(ri);for(let bi=1;bi<ni;bi++)pi.push(ri+bi/ni*(ii-ri));for(pi.push(ii);di;){for(let gi=0;gi<ni;gi++)li[gi]=0;for(let gi=0;gi<ci;gi++){const wi=si[gi];let Ri=Number.MAX_VALUE,ki;for(let Ai=0;Ai<ni;Ai++){const Ni=Er(pi[Ai]-wi);Ni<Ri&&(Ri=Ni,ki=Ai),li[ki]++,ui[gi]=ki}}const bi=new Array(ni);for(let gi=0;gi<ni;gi++)bi[gi]=null;for(let gi=0;gi<ci;gi++)ai=ui[gi],bi[ai]===null?bi[ai]=si[gi]:bi[ai]+=si[gi];for(let gi=0;gi<ni;gi++)bi[gi]*=1/li[gi];di=!1;for(let gi=0;gi<ni;gi++)if(bi[gi]!==pi[gi]){di=!0;break}pi=bi,fi++,fi>200&&(di=!1)}const hi={};for(let bi=0;bi<ni;bi++)hi[bi]=[];for(let bi=0;bi<ci;bi++)ai=ui[bi],hi[ai].push(si[bi]);let vi=[];for(let bi=0;bi<ni;bi++)vi.push(hi[bi][0]),vi.push(hi[bi][hi[bi].length-1]);vi=vi.sort((bi,gi)=>bi-gi),oi.push(vi[0]);for(let bi=1;bi<vi.length;bi+=2){const gi=vi[bi];!isNaN(gi)&&oi.indexOf(gi)===-1&&oi.push(gi)}}return oi}const Mr=(ti,ei)=>{ti=new i$c(ti),ei=new i$c(ei);const ni=ti.luminance(),ri=ei.luminance();return ni>ri?(ni+.05)/(ri+.05):(ri+.05)/(ni+.05)},it$1=.027,xr=5e-4,$r=.1,ut$2=1.14,pe$1=.022,bt$2=1.414,Ar=(ti,ei)=>{ti=new i$c(ti),ei=new i$c(ei),ti.alpha()<1&&(ti=ee$1(ei,ti,ti.alpha(),"rgb"));const ni=ht$1(...ti.rgb()),ri=ht$1(...ei.rgb()),ii=ni>=pe$1?ni:ni+Math.pow(pe$1-ni,bt$2),si=ri>=pe$1?ri:ri+Math.pow(pe$1-ri,bt$2),oi=Math.pow(si,.56)-Math.pow(ii,.57),ai=Math.pow(si,.65)-Math.pow(ii,.62),ci=Math.abs(si-ii)<xr?0:ii<si?oi*ut$2:ai*ut$2;return(Math.abs(ci)<$r?0:ci>0?ci-it$1:ci+it$1)*100};function ht$1(ti,ei,ni){return .2126729*Math.pow(ti/255,2.4)+.7151522*Math.pow(ei/255,2.4)+.072175*Math.pow(ni/255,2.4)}const{sqrt:Z$3,pow:j$4,min:Rr,max:Lr,atan2:dt$1,abs:pt$2,cos:me$1,sin:mt$2,exp:Nr,PI:gt$2}=Math;function Pr(ti,ei,ni=1,ri=1,ii=1){var si=function(Rs){return 360*Rs/(2*gt$2)},oi=function(Rs){return 2*gt$2*Rs/360};ti=new i$c(ti),ei=new i$c(ei);const[ai,ci,ui]=Array.from(ti.lab()),[li,di,fi]=Array.from(ei.lab()),pi=(ai+li)/2,hi=Z$3(j$4(ci,2)+j$4(ui,2)),vi=Z$3(j$4(di,2)+j$4(fi,2)),bi=(hi+vi)/2,gi=.5*(1-Z$3(j$4(bi,7)/(j$4(bi,7)+j$4(25,7)))),wi=ci*(1+gi),Ri=di*(1+gi),ki=Z$3(j$4(wi,2)+j$4(ui,2)),Ai=Z$3(j$4(Ri,2)+j$4(fi,2)),Ni=(ki+Ai)/2,_i=si(dt$1(ui,wi)),Mi=si(dt$1(fi,Ri)),Bi=_i>=0?_i:_i+360,Xi=Mi>=0?Mi:Mi+360,Ii=pt$2(Bi-Xi)>180?(Bi+Xi+360)/2:(Bi+Xi)/2,Ti=1-.17*me$1(oi(Ii-30))+.24*me$1(oi(2*Ii))+.32*me$1(oi(3*Ii+6))-.2*me$1(oi(4*Ii-63));let $i=Xi-Bi;$i=pt$2($i)<=180?$i:Xi<=Bi?$i+360:$i-360,$i=2*Z$3(ki*Ai)*mt$2(oi($i)/2);const Fi=li-ai,Wi=Ai-ki,Gi=1+.015*j$4(pi-50,2)/Z$3(20+j$4(pi-50,2)),Hi=1+.045*Ni,ds=1+.015*Ni*Ti,Zi=30*Nr(-j$4((Ii-275)/25,2)),Ci=-(2*Z$3(j$4(Ni,7)/(j$4(Ni,7)+j$4(25,7))))*mt$2(2*oi(Zi)),us=Z$3(j$4(Fi/(ni*Gi),2)+j$4(Wi/(ri*Hi),2)+j$4($i/(ii*ds),2)+Ci*(Wi/(ri*Hi))*($i/(ii*ds)));return Lr(0,Rr(100,us))}function jr(ti,ei,ni="lab"){ti=new i$c(ti),ei=new i$c(ei);const ri=ti.get(ni),ii=ei.get(ni);let si=0;for(let oi in ri){const ai=(ri[oi]||0)-(ii[oi]||0);si+=ai*ai}return Math.sqrt(si)}const Br=(...ti)=>{try{return new i$c(...ti),!0}catch{return!1}},Or={cool(){return de$2([$$3.hsl(180,1,.9),$$3.hsl(250,.7,.4)])},hot(){return de$2(["#000","#f00","#ff0","#fff"]).mode("rgb")}},Ge$1={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},yt$2=Object.keys(Ge$1),wt$2=new Map(yt$2.map(ti=>[ti.toLowerCase(),ti])),vr=typeof Proxy=="function"?new Proxy(Ge$1,{get(ti,ei){const ni=ei.toLowerCase();if(wt$2.has(ni))return ti[wt$2.get(ni)]},getOwnPropertyNames(){return Object.getOwnPropertyNames(yt$2)}}):Ge$1,Sr=(...ti)=>{ti=C$4(ti,"cmyk");const[ei,ni,ri,ii]=ti,si=ti.length>4?ti[4]:1;return ii===1?[0,0,0,si]:[ei>=1?0:255*(1-ei)*(1-ii),ni>=1?0:255*(1-ni)*(1-ii),ri>=1?0:255*(1-ri)*(1-ii),si]},{max:kt$2}=Math,qr=(...ti)=>{let[ei,ni,ri]=C$4(ti,"rgb");ei=ei/255,ni=ni/255,ri=ri/255;const ii=1-kt$2(ei,kt$2(ni,ri)),si=ii<1?1/(1-ii):0,oi=(1-ei-ii)*si,ai=(1-ni-ii)*si,ci=(1-ri-ii)*si;return[oi,ai,ci,ii]};i$c.prototype.cmyk=function(){return qr(this._rgb)};const Gr=(...ti)=>new i$c(...ti,"cmyk");Object.assign($$3,{cmyk:Gr}),k$2.format.cmyk=Sr,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"cmyk"),M$2(ti)==="array"&&ti.length===4)return"cmyk"}});const zr=(...ti)=>{const ei=C$4(ti,"hsla");let ni=J$1(ti)||"lsa";return ei[0]=z$3(ei[0]||0)+"deg",ei[1]=z$3(ei[1]*100)+"%",ei[2]=z$3(ei[2]*100)+"%",ni==="hsla"||ei.length>3&&ei[3]<1?(ei[3]="/ "+(ei.length>3?ei[3]:1),ni="hsla"):ei.length=3,`${ni.substr(0,3)}(${ei.join(" ")})`},Yr=(...ti)=>{const ei=C$4(ti,"lab");let ni=J$1(ti)||"lab";return ei[0]=z$3(ei[0])+"%",ei[1]=z$3(ei[1]),ei[2]=z$3(ei[2]),ni==="laba"||ei.length>3&&ei[3]<1?ei[3]="/ "+(ei.length>3?ei[3]:1):ei.length=3,`lab(${ei.join(" ")})`},Dr=(...ti)=>{const ei=C$4(ti,"lch");let ni=J$1(ti)||"lab";return ei[0]=z$3(ei[0])+"%",ei[1]=z$3(ei[1]),ei[2]=isNaN(ei[2])?"none":z$3(ei[2])+"deg",ni==="lcha"||ei.length>3&&ei[3]<1?ei[3]="/ "+(ei.length>3?ei[3]:1):ei.length=3,`lch(${ei.join(" ")})`},Ir=(...ti)=>{const ei=C$4(ti,"lab");return ei[0]=z$3(ei[0]*100)+"%",ei[1]=Ce$2(ei[1]),ei[2]=Ce$2(ei[2]),ei.length>3&&ei[3]<1?ei[3]="/ "+(ei.length>3?ei[3]:1):ei.length=3,`oklab(${ei.join(" ")})`},_t$2=(...ti)=>{const[ei,ni,ri,...ii]=C$4(ti,"rgb"),[si,oi,ai]=Oe$2(ei,ni,ri),[ci,ui,li]=tt$1(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]},Xr=(...ti)=>{const ei=C$4(ti,"lch");return ei[0]=z$3(ei[0]*100)+"%",ei[1]=Ce$2(ei[1]),ei[2]=isNaN(ei[2])?"none":z$3(ei[2])+"deg",ei.length>3&&ei[3]<1?ei[3]="/ "+(ei.length>3?ei[3]:1):ei.length=3,`oklch(${ei.join(" ")})`},{round:ze$2}=Math,Tr=(...ti)=>{const ei=C$4(ti,"rgba");let ni=J$1(ti)||"rgb";if(ni.substr(0,3)==="hsl")return zr(rt$1(ei),ni);if(ni.substr(0,3)==="lab"){const ri=fe$1();F$2("d50");const ii=Yr($e$2(ei),ni);return F$2(ri),ii}if(ni.substr(0,3)==="lch"){const ri=fe$1();F$2("d50");const ii=Dr(Ne$2(ei),ni);return F$2(ri),ii}return ni.substr(0,5)==="oklab"?Ir(Oe$2(ei)):ni.substr(0,5)==="oklch"?Xr(_t$2(ei)):(ei[0]=ze$2(ei[0]),ei[1]=ze$2(ei[1]),ei[2]=ze$2(ei[2]),(ni==="rgba"||ei.length>3&&ei[3]<1)&&(ei[3]="/ "+(ei.length>3?ei[3]:1),ni="rgba"),`${ni.substr(0,3)}(${ei.slice(0,ni==="rgb"?3:4).join(" ")})`)},Ct$2=(...ti)=>{ti=C$4(ti,"lch");const[ei,ni,ri,...ii]=ti,[si,oi,ai]=et$1(ei,ni,ri),[ci,ui,li]=Be$2(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]},V$2=/((?:-?\d+)|(?:-?\d+(?:\.\d+)?)%|none)/.source,I$4=/((?:-?(?:\d+(?:\.\d*)?|\.\d+)%?)|none)/.source,ge$1=/((?:-?(?:\d+(?:\.\d*)?|\.\d+)%)|none)/.source,Y$2=/\s*/.source,oe$2=/\s+/.source,Ye$1=/\s*,\s*/.source,ye$1=/((?:-?(?:\d+(?:\.\d*)?|\.\d+)(?:deg)?)|none)/.source,se$2=/\s*(?:\/\s*((?:[01]|[01]?\.\d+)|\d+(?:\.\d+)?%))?/.source,Et$2=new RegExp("^rgba?\\("+Y$2+[V$2,V$2,V$2].join(oe$2)+se$2+"\\)$"),Mt$2=new RegExp("^rgb\\("+Y$2+[V$2,V$2,V$2].join(Ye$1)+Y$2+"\\)$"),xt$2=new RegExp("^rgba\\("+Y$2+[V$2,V$2,V$2,I$4].join(Ye$1)+Y$2+"\\)$"),$t$2=new RegExp("^hsla?\\("+Y$2+[ye$1,ge$1,ge$1].join(oe$2)+se$2+"\\)$"),At$2=new RegExp("^hsl?\\("+Y$2+[ye$1,ge$1,ge$1].join(Ye$1)+Y$2+"\\)$"),Rt$2=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,Lt$2=new RegExp("^lab\\("+Y$2+[I$4,I$4,I$4].join(oe$2)+se$2+"\\)$"),Nt$2=new RegExp("^lch\\("+Y$2+[I$4,I$4,ye$1].join(oe$2)+se$2+"\\)$"),Pt$2=new RegExp("^oklab\\("+Y$2+[I$4,I$4,I$4].join(oe$2)+se$2+"\\)$"),jt$2=new RegExp("^oklch\\("+Y$2+[I$4,I$4,ye$1].join(oe$2)+se$2+"\\)$"),{round:Bt$2}=Math,ce$2=ti=>ti.map((ei,ni)=>ni<=2?U$2(Bt$2(ei),0,255):ei),B$3=(ti,ei=0,ni=100,ri=!1)=>(typeof ti=="string"&&ti.endsWith("%")&&(ti=parseFloat(ti.substring(0,ti.length-1))/100,ri?ti=ei+(ti+1)*.5*(ni-ei):ti=ei+ti*(ni-ei)),+ti),G$3=(ti,ei)=>ti==="none"?ei:ti,De$2=ti=>{if(ti=ti.toLowerCase().trim(),ti==="transparent")return[0,0,0,0];let ei;if(k$2.format.named)try{return k$2.format.named(ti)}catch{}if((ei=ti.match(Et$2))||(ei=ti.match(Mt$2))){let ni=ei.slice(1,4);for(let ii=0;ii<3;ii++)ni[ii]=+B$3(G$3(ni[ii],0),0,255);ni=ce$2(ni);const ri=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ni[3]=ri,ni}if(ei=ti.match(xt$2)){const ni=ei.slice(1,5);for(let ri=0;ri<4;ri++)ni[ri]=+B$3(ni[ri],0,255);return ni}if((ei=ti.match($t$2))||(ei=ti.match(At$2))){const ni=ei.slice(1,4);ni[0]=+G$3(ni[0].replace("deg",""),0),ni[1]=+B$3(G$3(ni[1],0),0,100)*.01,ni[2]=+B$3(G$3(ni[2],0),0,100)*.01;const ri=ce$2(je$1(ni)),ii=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ri[3]=ii,ri}if(ei=ti.match(Rt$2)){const ni=ei.slice(1,4);ni[1]*=.01,ni[2]*=.01;const ri=je$1(ni);for(let ii=0;ii<3;ii++)ri[ii]=Bt$2(ri[ii]);return ri[3]=+ei[4],ri}if(ei=ti.match(Lt$2)){const ni=ei.slice(1,4);ni[0]=B$3(G$3(ni[0],0),0,100),ni[1]=B$3(G$3(ni[1],0),-125,125,!0),ni[2]=B$3(G$3(ni[2],0),-125,125,!0);const ri=fe$1();F$2("d50");const ii=ce$2(Me$2(ni));F$2(ri);const si=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ii[3]=si,ii}if(ei=ti.match(Nt$2)){const ni=ei.slice(1,4);ni[0]=B$3(ni[0],0,100),ni[1]=B$3(G$3(ni[1],0),0,150,!1),ni[2]=+G$3(ni[2].replace("deg",""),0);const ri=fe$1();F$2("d50");const ii=ce$2(Le$2(ni));F$2(ri);const si=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ii[3]=si,ii}if(ei=ti.match(Pt$2)){const ni=ei.slice(1,4);ni[0]=B$3(G$3(ni[0],0),0,1),ni[1]=B$3(G$3(ni[1],0),-.4,.4,!0),ni[2]=B$3(G$3(ni[2],0),-.4,.4,!0);const ri=ce$2(Be$2(ni)),ii=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ri[3]=ii,ri}if(ei=ti.match(jt$2)){const ni=ei.slice(1,4);ni[0]=B$3(G$3(ni[0],0),0,1),ni[1]=B$3(G$3(ni[1],0),0,.4,!1),ni[2]=+G$3(ni[2].replace("deg",""),0);const ri=ce$2(Ct$2(ni)),ii=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ri[3]=ii,ri}};De$2.test=ti=>Et$2.test(ti)||$t$2.test(ti)||Lt$2.test(ti)||Nt$2.test(ti)||Pt$2.test(ti)||jt$2.test(ti)||Mt$2.test(ti)||xt$2.test(ti)||At$2.test(ti)||Rt$2.test(ti)||ti==="transparent",i$c.prototype.css=function(ti){return Tr(this._rgb,ti)};const Fr=(...ti)=>new i$c(...ti,"css");$$3.css=Fr,k$2.format.css=De$2,k$2.autodetect.push({p:5,test:(ti,...ei)=>{if(!ei.length&&M$2(ti)==="string"&&De$2.test(ti))return"css"}}),k$2.format.gl=(...ti)=>{const ei=C$4(ti,"rgba");return ei[0]*=255,ei[1]*=255,ei[2]*=255,ei};const Zr=(...ti)=>new i$c(...ti,"gl");$$3.gl=Zr,i$c.prototype.gl=function(){const ti=this._rgb;return[ti[0]/255,ti[1]/255,ti[2]/255,ti[3]]},i$c.prototype.hex=function(ti){return Ue$1(this._rgb,ti)};const Vr=(...ti)=>new i$c(...ti,"hex");$$3.hex=Vr,k$2.format.hex=We$1,k$2.autodetect.push({p:4,test:(ti,...ei)=>{if(!ei.length&&M$2(ti)==="string"&&[3,4,5,6,7,8,9].indexOf(ti.length)>=0)return"hex"}});const{log:we$2}=Math,Ot$2=ti=>{const ei=ti/100;let ni,ri,ii;return ei<66?(ni=255,ri=ei<6?0:-155.25485562709179-.44596950469579133*(ri=ei-2)+104.49216199393888*we$2(ri),ii=ei<20?0:-254.76935184120902+.8274096064007395*(ii=ei-10)+115.67994401066147*we$2(ii)):(ni=351.97690566805693+.114206453784165*(ni=ei-55)-40.25366309332127*we$2(ni),ri=325.4494125711974+.07943456536662342*(ri=ei-50)-28.0852963507957*we$2(ri),ii=255),[ni,ri,ii,1]},{round:Hr}=Math,Kr=(...ti)=>{const ei=C$4(ti,"rgb"),ni=ei[0],ri=ei[2];let ii=1e3,si=4e4;const oi=.4;let ai;for(;si-ii>oi;){ai=(si+ii)*.5;const ci=Ot$2(ai);ci[2]/ci[0]>=ri/ni?si=ai:ii=ai}return Hr(ai)};i$c.prototype.temp=i$c.prototype.kelvin=i$c.prototype.temperature=function(){return Kr(this._rgb)};const Ie$2=(...ti)=>new i$c(...ti,"temp");Object.assign($$3,{temp:Ie$2,kelvin:Ie$2,temperature:Ie$2}),k$2.format.temp=k$2.format.kelvin=k$2.format.temperature=Ot$2,i$c.prototype.oklch=function(){return _t$2(this._rgb)};const Wr=(...ti)=>new i$c(...ti,"oklch");Object.assign($$3,{oklch:Wr}),k$2.format.oklch=Ct$2,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"oklch"),M$2(ti)==="array"&&ti.length===3)return"oklch"}}),Object.assign($$3,{analyze:ft$2,average:Un,bezier:rr,blend:D$2,brewer:vr,Color:i$c,colors:Q$1,contrast:Mr,contrastAPCA:Ar,cubehelix:mr,deltaE:Pr,distance:jr,input:k$2,interpolate:ee$1,limits:lt$1,mix:ee$1,random:kr,scale:de$2,scales:Or,valid:Br});const Xe=[.96,.907,.805,.697,.605,.547,.518,.445,.395,.34],vt$2=[.32,.16,.08,.04,0,0,.04,.08,.16,.32];function Ur(ti){const ei=ti.get("hsl.l");return Xe.reduce((ni,ri)=>Math.abs(ri-ei)<Math.abs(ni-ei)?ri:ni)}function Jr(ti){const ei=$$3(ti),ni=Ur(ei),ri=Xe.findIndex(si=>si===ni),ii=Xe.map(si=>ei.set("hsl.l",si)).map(si=>$$3(si)).map((si,oi)=>{const ai=vt$2[oi]-vt$2[ri];return ai>=0?si.saturate(ai):si.desaturate(ai*-1)});return{baseColorIndex:ri,colors:ii}}function Qr(ti){return Jr(ti).colors.map(ei=>ei.hex())}const St$2={fill:"#3b82f6",stroke:"#2563eb",hiContrast:"#eff6ff",loContrast:"#bfdbfe"},qt$2={fill:"#0284c7",stroke:"#0369a1",hiContrast:"#f0f9ff",loContrast:"#B6ECF7"},Gt$2={fill:"#64748b",stroke:"#475569",hiContrast:"#f8fafc",loContrast:"#cbd5e1"},zt$2={primary:St$2,blue:St$2,secondary:qt$2,sky:qt$2,muted:Gt$2,slate:Gt$2,gray:{fill:"#737373",stroke:"#525252",hiContrast:"#fafafa",loContrast:"#d4d4d4"},red:{fill:"#AC4D39",stroke:"#853A2D",hiContrast:"#FBD3CB",loContrast:"#f5b2a3"},green:{fill:"#428a4f",stroke:"#2d5d39",hiContrast:"#f8fafc",loContrast:"#c2f0c2"},amber:{fill:"#A35829",stroke:"#7E451D",hiContrast:"#FFE0C2",loContrast:"#f9b27c"},indigo:{fill:"#6366f1",stroke:"#4f46e5",hiContrast:"#eef2ff",loContrast:"#c7d2fe"}},e0={lineColor:"#6E6E6E",labelBgColor:"#18191b",labelColor:"#C6C6C6"},Yt$2={lineColor:"#64748b",labelBgColor:"#0f172a",labelColor:"#cbd5e1"},Dt$2={lineColor:"#3b82f6",labelBgColor:"#172554",labelColor:"#60a5fa"},It$2={lineColor:"#0ea5e9",labelBgColor:"#082f49",labelColor:"#38bdf8"},Xt$2={amber:{lineColor:"#b45309",labelBgColor:"#78350f",labelColor:"#FFE0C2"},blue:Dt$2,gray:e0,green:{lineColor:"#15803d",labelBgColor:"#052e16",labelColor:"#22c55e"},indigo:{lineColor:"#6366f1",labelBgColor:"#1e1b4b",labelColor:"#818cf8"},muted:Yt$2,primary:Dt$2,red:{lineColor:"#AC4D39",labelBgColor:"#b91c1c",labelColor:"#f5b2a3"},secondary:It$2,sky:It$2,slate:Yt$2},Te$2={elements:zt$2,relationships:Xt$2,font:"Arial",shadow:"#0a0a0a"};function t0(ti){if(ti.match(/^#([0-9a-f]{3}){1,2}$/i)){const ei=Qr(ti);return{elements:{fill:ei[6],stroke:ei[7],hiContrast:ei[0],loContrast:ei[1]},relationships:{lineColor:ei[4],labelColor:ei[3],labelBgColor:ei[9]}}}else return{elements:Te$2.elements.primary,relationships:Te$2.relationships.primary}}function isPlainObject$1(ti){if(ti===null||typeof ti!="object")return!1;const ei=Object.getPrototypeOf(ti);return ei!==null&&ei!==Object.prototype&&Object.getPrototypeOf(ei)!==null||Symbol.iterator in ti?!1:Symbol.toStringTag in ti?Object.prototype.toString.call(ti)==="[object Module]":!0}function _defu(ti,ei,ni=".",ri){if(!isPlainObject$1(ei))return _defu(ti,{},ni,ri);const ii=Object.assign({},ei);for(const si in ti){if(si==="__proto__"||si==="constructor")continue;const oi=ti[si];oi!=null&&(ri&&ri(ii,si,oi,ni)||(Array.isArray(oi)&&Array.isArray(ii[si])?ii[si]=[...oi,...ii[si]]:isPlainObject$1(oi)&&isPlainObject$1(ii[si])?ii[si]=_defu(oi,ii[si],(ni?`${ni}.`:"")+si.toString(),ri):ii[si]=oi))}return ii}function createDefu(ti){return(...ei)=>ei.reduce((ni,ri)=>_defu(ni,ri,"",ti),{})}const defu=createDefu();function isAstNode(ti){return typeof ti=="object"&&ti!==null&&typeof ti.$type=="string"}function isReference(ti){return typeof ti=="object"&&ti!==null&&typeof ti.$refText=="string"}function isAstNodeDescription(ti){return typeof ti=="object"&&ti!==null&&typeof ti.name=="string"&&typeof ti.type=="string"&&typeof ti.path=="string"}function isLinkingError(ti){return typeof ti=="object"&&ti!==null&&isAstNode(ti.container)&&isReference(ti.reference)&&typeof ti.message=="string"}class AbstractAstReflection{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(ei,ni){return isAstNode(ei)&&this.isSubtype(ei.$type,ni)}isSubtype(ei,ni){if(ei===ni)return!0;let ri=this.subtypes[ei];ri||(ri=this.subtypes[ei]={});const ii=ri[ni];if(ii!==void 0)return ii;{const si=this.computeIsSubtype(ei,ni);return ri[ni]=si,si}}getAllSubTypes(ei){const ni=this.allSubtypes[ei];if(ni)return ni;{const ri=this.getAllTypes(),ii=[];for(const si of ri)this.isSubtype(si,ei)&&ii.push(si);return this.allSubtypes[ei]=ii,ii}}}function isCompositeCstNode(ti){return typeof ti=="object"&&ti!==null&&Array.isArray(ti.content)}function isLeafCstNode(ti){return typeof ti=="object"&&ti!==null&&typeof ti.tokenType=="object"}function isRootCstNode(ti){return isCompositeCstNode(ti)&&typeof ti.fullText=="string"}class StreamImpl{constructor(ei,ni){this.startFn=ei,this.nextFn=ni}iterator(){const ei={state:this.startFn(),next:()=>this.nextFn(ei.state),[Symbol.iterator]:()=>ei};return ei}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){const ei=this.iterator();let ni=0,ri=ei.next();for(;!ri.done;)ni++,ri=ei.next();return ni}toArray(){const ei=[],ni=this.iterator();let ri;do ri=ni.next(),ri.value!==void 0&&ei.push(ri.value);while(!ri.done);return ei}toSet(){return new Set(this)}toMap(ei,ni){const ri=this.map(ii=>[ei?ei(ii):ii,ni?ni(ii):ii]);return new Map(ri)}toString(){return this.join()}concat(ei){return new StreamImpl(()=>({first:this.startFn(),firstDone:!1,iterator:ei[Symbol.iterator]()}),ni=>{let ri;if(!ni.firstDone){do if(ri=this.nextFn(ni.first),!ri.done)return ri;while(!ri.done);ni.firstDone=!0}do if(ri=ni.iterator.next(),!ri.done)return ri;while(!ri.done);return DONE_RESULT})}join(ei=","){const ni=this.iterator();let ri="",ii,si=!1;do ii=ni.next(),ii.done||(si&&(ri+=ei),ri+=toString$2(ii.value)),si=!0;while(!ii.done);return ri}indexOf(ei,ni=0){const ri=this.iterator();let ii=0,si=ri.next();for(;!si.done;){if(ii>=ni&&si.value===ei)return ii;si=ri.next(),ii++}return-1}every(ei){const ni=this.iterator();let ri=ni.next();for(;!ri.done;){if(!ei(ri.value))return!1;ri=ni.next()}return!0}some(ei){const ni=this.iterator();let ri=ni.next();for(;!ri.done;){if(ei(ri.value))return!0;ri=ni.next()}return!1}forEach(ei){const ni=this.iterator();let ri=0,ii=ni.next();for(;!ii.done;)ei(ii.value,ri),ii=ni.next(),ri++}map(ei){return new StreamImpl(this.startFn,ni=>{const{done:ri,value:ii}=this.nextFn(ni);return ri?DONE_RESULT:{done:!1,value:ei(ii)}})}filter(ei){return new StreamImpl(this.startFn,ni=>{let ri;do if(ri=this.nextFn(ni),!ri.done&&ei(ri.value))return ri;while(!ri.done);return DONE_RESULT})}nonNullable(){return this.filter(ei=>ei!=null)}reduce(ei,ni){const ri=this.iterator();let ii=ni,si=ri.next();for(;!si.done;)ii===void 0?ii=si.value:ii=ei(ii,si.value),si=ri.next();return ii}reduceRight(ei,ni){return this.recursiveReduce(this.iterator(),ei,ni)}recursiveReduce(ei,ni,ri){const ii=ei.next();if(ii.done)return ri;const si=this.recursiveReduce(ei,ni,ri);return si===void 0?ii.value:ni(si,ii.value)}find(ei){const ni=this.iterator();let ri=ni.next();for(;!ri.done;){if(ei(ri.value))return ri.value;ri=ni.next()}}findIndex(ei){const ni=this.iterator();let ri=0,ii=ni.next();for(;!ii.done;){if(ei(ii.value))return ri;ii=ni.next(),ri++}return-1}includes(ei){const ni=this.iterator();let ri=ni.next();for(;!ri.done;){if(ri.value===ei)return!0;ri=ni.next()}return!1}flatMap(ei){return new StreamImpl(()=>({this:this.startFn()}),ni=>{do{if(ni.iterator){const si=ni.iterator.next();if(si.done)ni.iterator=void 0;else return si}const{done:ri,value:ii}=this.nextFn(ni.this);if(!ri){const si=ei(ii);if(isIterable(si))ni.iterator=si[Symbol.iterator]();else return{done:!1,value:si}}}while(ni.iterator);return DONE_RESULT})}flat(ei){if(ei===void 0&&(ei=1),ei<=0)return this;const ni=ei>1?this.flat(ei-1):this;return new StreamImpl(()=>({this:ni.startFn()}),ri=>{do{if(ri.iterator){const oi=ri.iterator.next();if(oi.done)ri.iterator=void 0;else return oi}const{done:ii,value:si}=ni.nextFn(ri.this);if(!ii)if(isIterable(si))ri.iterator=si[Symbol.iterator]();else return{done:!1,value:si}}while(ri.iterator);return DONE_RESULT})}head(){const ni=this.iterator().next();if(!ni.done)return ni.value}tail(ei=1){return new StreamImpl(()=>{const ni=this.startFn();for(let ri=0;ri<ei;ri++)if(this.nextFn(ni).done)return ni;return ni},this.nextFn)}limit(ei){return new StreamImpl(()=>({size:0,state:this.startFn()}),ni=>(ni.size++,ni.size>ei?DONE_RESULT:this.nextFn(ni.state)))}distinct(ei){return new StreamImpl(()=>({set:new Set,internalState:this.startFn()}),ni=>{let ri;do if(ri=this.nextFn(ni.internalState),!ri.done){const ii=ei?ei(ri.value):ri.value;if(!ni.set.has(ii))return ni.set.add(ii),ri}while(!ri.done);return DONE_RESULT})}exclude(ei,ni){const ri=new Set;for(const ii of ei){const si=ni?ni(ii):ii;ri.add(si)}return this.filter(ii=>{const si=ni?ni(ii):ii;return!ri.has(si)})}}function toString$2(ti){return typeof ti=="string"?ti:typeof ti>"u"?"undefined":typeof ti.toString=="function"?ti.toString():Object.prototype.toString.call(ti)}function isIterable(ti){return!!ti&&typeof ti[Symbol.iterator]=="function"}const EMPTY_STREAM=new StreamImpl(()=>{},()=>DONE_RESULT),DONE_RESULT=Object.freeze({done:!0,value:void 0});function stream(...ti){if(ti.length===1){const ei=ti[0];if(ei instanceof StreamImpl)return ei;if(isIterable(ei))return new StreamImpl(()=>ei[Symbol.iterator](),ni=>ni.next());if(typeof ei.length=="number")return new StreamImpl(()=>({index:0}),ni=>ni.index<ei.length?{done:!1,value:ei[ni.index++]}:DONE_RESULT)}return ti.length>1?new StreamImpl(()=>({collIndex:0,arrIndex:0}),ei=>{do{if(ei.iterator){const ni=ei.iterator.next();if(!ni.done)return ni;ei.iterator=void 0}if(ei.array){if(ei.arrIndex<ei.array.length)return{done:!1,value:ei.array[ei.arrIndex++]};ei.array=void 0,ei.arrIndex=0}if(ei.collIndex<ti.length){const ni=ti[ei.collIndex++];isIterable(ni)?ei.iterator=ni[Symbol.iterator]():ni&&typeof ni.length=="number"&&(ei.array=ni)}}while(ei.iterator||ei.array||ei.collIndex<ti.length);return DONE_RESULT}):EMPTY_STREAM}class TreeStreamImpl extends StreamImpl{constructor(ei,ni,ri){super(()=>({iterators:ri?.includeRoot?[[ei][Symbol.iterator]()]:[ni(ei)[Symbol.iterator]()],pruned:!1}),ii=>{for(ii.pruned&&(ii.iterators.pop(),ii.pruned=!1);ii.iterators.length>0;){const oi=ii.iterators[ii.iterators.length-1].next();if(oi.done)ii.iterators.pop();else return ii.iterators.push(ni(oi.value)[Symbol.iterator]()),oi}return DONE_RESULT})}iterator(){const ei={state:this.startFn(),next:()=>this.nextFn(ei.state),prune:()=>{ei.state.pruned=!0},[Symbol.iterator]:()=>ei};return ei}}var Reduction;(function(ti){function ei(si){return si.reduce((oi,ai)=>oi+ai,0)}ti.sum=ei;function ni(si){return si.reduce((oi,ai)=>oi*ai,0)}ti.product=ni;function ri(si){return si.reduce((oi,ai)=>Math.min(oi,ai))}ti.min=ri;function ii(si){return si.reduce((oi,ai)=>Math.max(oi,ai))}ti.max=ii})(Reduction||(Reduction={}));function streamCst(ti){return new TreeStreamImpl(ti,ei=>isCompositeCstNode(ei)?ei.content:[],{includeRoot:!0})}function flattenCst(ti){return streamCst(ti).filter(isLeafCstNode)}function isChildNode(ti,ei){for(;ti.container;)if(ti=ti.container,ti===ei)return!0;return!1}function tokenToRange(ti){return{start:{character:ti.startColumn-1,line:ti.startLine-1},end:{character:ti.endColumn,line:ti.endLine-1}}}function toDocumentSegment(ti){if(!ti)return;const{offset:ei,end:ni,range:ri}=ti;return{range:ri,offset:ei,end:ni,length:ni-ei}}var RangeComparison;(function(ti){ti[ti.Before=0]="Before",ti[ti.After=1]="After",ti[ti.OverlapFront=2]="OverlapFront",ti[ti.OverlapBack=3]="OverlapBack",ti[ti.Inside=4]="Inside",ti[ti.Outside=5]="Outside"})(RangeComparison||(RangeComparison={}));function compareRange(ti,ei){if(ti.end.line<ei.start.line||ti.end.line===ei.start.line&&ti.end.character<=ei.start.character)return RangeComparison.Before;if(ti.start.line>ei.end.line||ti.start.line===ei.end.line&&ti.start.character>=ei.end.character)return RangeComparison.After;const ni=ti.start.line>ei.start.line||ti.start.line===ei.start.line&&ti.start.character>=ei.start.character,ri=ti.end.line<ei.end.line||ti.end.line===ei.end.line&&ti.end.character<=ei.end.character;return ni&&ri?RangeComparison.Inside:ni?RangeComparison.OverlapBack:ri?RangeComparison.OverlapFront:RangeComparison.Outside}function inRange(ti,ei){return compareRange(ti,ei)>RangeComparison.After}const DefaultNameRegexp=/^[\w\p{L}]$/u;function findDeclarationNodeAtOffset(ti,ei,ni=DefaultNameRegexp){if(ti){if(ei>0){const ri=ei-ti.offset,ii=ti.text.charAt(ri);ni.test(ii)||ei--}return findLeafNodeAtOffset(ti,ei)}}function findCommentNode(ti,ei){if(ti){const ni=getPreviousNode(ti,!0);if(ni&&isCommentNode(ni,ei))return ni;if(isRootCstNode(ti)){const ri=ti.content.findIndex(ii=>!ii.hidden);for(let ii=ri-1;ii>=0;ii--){const si=ti.content[ii];if(isCommentNode(si,ei))return si}}}}function isCommentNode(ti,ei){return isLeafCstNode(ti)&&ei.includes(ti.tokenType.name)}function findLeafNodeAtOffset(ti,ei){if(isLeafCstNode(ti))return ti;if(isCompositeCstNode(ti)){const ni=binarySearch(ti,ei,!1);if(ni)return findLeafNodeAtOffset(ni,ei)}}function findLeafNodeBeforeOffset(ti,ei){if(isLeafCstNode(ti))return ti;if(isCompositeCstNode(ti)){const ni=binarySearch(ti,ei,!0);if(ni)return findLeafNodeBeforeOffset(ni,ei)}}function binarySearch(ti,ei,ni){let ri=0,ii=ti.content.length-1,si;for(;ri<=ii;){const oi=Math.floor((ri+ii)/2),ai=ti.content[oi];if(ai.offset<=ei&&ai.end>ei)return ai;ai.end<=ei?(si=ni?ai:void 0,ri=oi+1):ii=oi-1}return si}function getPreviousNode(ti,ei=!0){for(;ti.container;){const ni=ti.container;let ri=ni.content.indexOf(ti);for(;ri>0;){ri--;const ii=ni.content[ri];if(ei||!ii.hidden)return ii}ti=ni}}function getNextNode(ti,ei=!0){for(;ti.container;){const ni=ti.container;let ri=ni.content.indexOf(ti);const ii=ni.content.length-1;for(;ri<ii;){ri++;const si=ni.content[ri];if(ei||!si.hidden)return si}ti=ni}}function getStartlineNode(ti){if(ti.range.start.character===0)return ti;const ei=ti.range.start.line;let ni=ti,ri;for(;ti.container;){const ii=ti.container,si=ri??ii.content.indexOf(ti);if(si===0?(ti=ii,ri=void 0):(ri=si-1,ti=ii.content[ri]),ti.range.start.line!==ei)break;ni=ti}return ni}function getInteriorNodes(ti,ei){const ni=getCommonParent(ti,ei);return ni?ni.parent.content.slice(ni.a+1,ni.b):[]}function getCommonParent(ti,ei){const ni=getParentChain(ti),ri=getParentChain(ei);let ii;for(let si=0;si<ni.length&&si<ri.length;si++){const oi=ni[si],ai=ri[si];if(oi.parent===ai.parent)ii={parent:oi.parent,a:oi.index,b:ai.index};else break}return ii}function getParentChain(ti){const ei=[];for(;ti.container;){const ni=ti.container,ri=ni.content.indexOf(ti);ei.push({parent:ni,index:ri}),ti=ni}return ei.reverse()}const q$1={__proto__:null,DefaultNameRegexp,get RangeComparison(){return RangeComparison},compareRange,findCommentNode,findDeclarationNodeAtOffset,findLeafNodeAtOffset,findLeafNodeBeforeOffset,flattenCst,getInteriorNodes,getNextNode,getPreviousNode,getStartlineNode,inRange,isChildNode,isCommentNode,streamCst,toDocumentSegment,tokenToRange};class ErrorWithLocation extends Error{constructor(ei,ni){super(ei?`${ni} at ${ei.range.start.line}:${ei.range.start.character}`:ni)}}function assertUnreachable(ti){throw new Error("Error! The input value was not handled.")}const AbstractRule="AbstractRule",AbstractType="AbstractType",Condition="Condition",TypeDefinition="TypeDefinition",ValueLiteral="ValueLiteral",AbstractElement="AbstractElement";function isAbstractElement(ti){return reflection$1.isInstance(ti,AbstractElement)}const ArrayLiteral="ArrayLiteral",ArrayType="ArrayType";function isArrayType(ti){return reflection$1.isInstance(ti,ArrayType)}const BooleanLiteral="BooleanLiteral";function isBooleanLiteral(ti){return reflection$1.isInstance(ti,BooleanLiteral)}const Conjunction="Conjunction";function isConjunction(ti){return reflection$1.isInstance(ti,Conjunction)}const Disjunction="Disjunction";function isDisjunction(ti){return reflection$1.isInstance(ti,Disjunction)}const Grammar="Grammar",GrammarImport="GrammarImport",InferredType="InferredType";function isInferredType(ti){return reflection$1.isInstance(ti,InferredType)}const Interface="Interface";function isInterface(ti){return reflection$1.isInstance(ti,Interface)}const NamedArgument="NamedArgument",Negation="Negation";function isNegation(ti){return reflection$1.isInstance(ti,Negation)}const NumberLiteral="NumberLiteral",Parameter="Parameter",ParameterReference="ParameterReference";function isParameterReference(ti){return reflection$1.isInstance(ti,ParameterReference)}const ParserRule="ParserRule";function isParserRule(ti){return reflection$1.isInstance(ti,ParserRule)}const ReferenceType="ReferenceType";function isReferenceType(ti){return reflection$1.isInstance(ti,ReferenceType)}const ReturnType="ReturnType";function isReturnType(ti){return reflection$1.isInstance(ti,ReturnType)}const SimpleType="SimpleType";function isSimpleType(ti){return reflection$1.isInstance(ti,SimpleType)}const StringLiteral="StringLiteral",TerminalRule="TerminalRule";function isTerminalRule(ti){return reflection$1.isInstance(ti,TerminalRule)}const Type$1="Type";function isType(ti){return reflection$1.isInstance(ti,Type$1)}const TypeAttribute="TypeAttribute",UnionType="UnionType";function isUnionType(ti){return reflection$1.isInstance(ti,UnionType)}const Action="Action";function isAction(ti){return reflection$1.isInstance(ti,Action)}const Alternatives="Alternatives";function isAlternatives(ti){return reflection$1.isInstance(ti,Alternatives)}const Assignment="Assignment";function isAssignment(ti){return reflection$1.isInstance(ti,Assignment)}const CharacterRange="CharacterRange";function isCharacterRange(ti){return reflection$1.isInstance(ti,CharacterRange)}const CrossReference="CrossReference";function isCrossReference(ti){return reflection$1.isInstance(ti,CrossReference)}const EndOfFile="EndOfFile";function isEndOfFile(ti){return reflection$1.isInstance(ti,EndOfFile)}const Group="Group";function isGroup(ti){return reflection$1.isInstance(ti,Group)}const Keyword$1="Keyword";function isKeyword(ti){return reflection$1.isInstance(ti,Keyword$1)}const NegatedToken="NegatedToken";function isNegatedToken(ti){return reflection$1.isInstance(ti,NegatedToken)}const RegexToken="RegexToken";function isRegexToken(ti){return reflection$1.isInstance(ti,RegexToken)}const RuleCall="RuleCall";function isRuleCall(ti){return reflection$1.isInstance(ti,RuleCall)}const TerminalAlternatives="TerminalAlternatives";function isTerminalAlternatives(ti){return reflection$1.isInstance(ti,TerminalAlternatives)}const TerminalGroup="TerminalGroup";function isTerminalGroup(ti){return reflection$1.isInstance(ti,TerminalGroup)}const TerminalRuleCall="TerminalRuleCall";function isTerminalRuleCall(ti){return reflection$1.isInstance(ti,TerminalRuleCall)}const UnorderedGroup="UnorderedGroup";function isUnorderedGroup(ti){return reflection$1.isInstance(ti,UnorderedGroup)}const UntilToken="UntilToken";function isUntilToken(ti){return reflection$1.isInstance(ti,UntilToken)}const Wildcard="Wildcard";function isWildcard(ti){return reflection$1.isInstance(ti,Wildcard)}class LangiumGrammarAstReflection extends AbstractAstReflection{getAllTypes(){return[AbstractElement,AbstractRule,AbstractType,Action,Alternatives,ArrayLiteral,ArrayType,Assignment,BooleanLiteral,CharacterRange,Condition,Conjunction,CrossReference,Disjunction,EndOfFile,Grammar,GrammarImport,Group,InferredType,Interface,Keyword$1,NamedArgument,NegatedToken,Negation,NumberLiteral,Parameter,ParameterReference,ParserRule,ReferenceType,RegexToken,ReturnType,RuleCall,SimpleType,StringLiteral,TerminalAlternatives,TerminalGroup,TerminalRule,TerminalRuleCall,Type$1,TypeAttribute,TypeDefinition,UnionType,UnorderedGroup,UntilToken,ValueLiteral,Wildcard]}computeIsSubtype(ei,ni){switch(ei){case Action:case Alternatives:case Assignment:case CharacterRange:case CrossReference:case EndOfFile:case Group:case Keyword$1:case NegatedToken:case RegexToken:case RuleCall:case TerminalAlternatives:case TerminalGroup:case TerminalRuleCall:case UnorderedGroup:case UntilToken:case Wildcard:return this.isSubtype(AbstractElement,ni);case ArrayLiteral:case NumberLiteral:case StringLiteral:return this.isSubtype(ValueLiteral,ni);case ArrayType:case ReferenceType:case SimpleType:case UnionType:return this.isSubtype(TypeDefinition,ni);case BooleanLiteral:return this.isSubtype(Condition,ni)||this.isSubtype(ValueLiteral,ni);case Conjunction:case Disjunction:case Negation:case ParameterReference:return this.isSubtype(Condition,ni);case InferredType:case Interface:case Type$1:return this.isSubtype(AbstractType,ni);case ParserRule:return this.isSubtype(AbstractRule,ni)||this.isSubtype(AbstractType,ni);case TerminalRule:return this.isSubtype(AbstractRule,ni);default:return!1}}getReferenceType(ei){const ni=`${ei.container.$type}:${ei.property}`;switch(ni){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return AbstractType;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return AbstractRule;case"Grammar:usedGrammars":return Grammar;case"NamedArgument:parameter":case"ParameterReference:parameter":return Parameter;case"TerminalRuleCall:rule":return TerminalRule;default:throw new Error(`${ni} is not a valid reference id.`)}}getTypeMetaData(ei){switch(ei){case AbstractElement:return{name:AbstractElement,properties:[{name:"cardinality"},{name:"lookahead"}]};case ArrayLiteral:return{name:ArrayLiteral,properties:[{name:"elements",defaultValue:[]}]};case ArrayType:return{name:ArrayType,properties:[{name:"elementType"}]};case BooleanLiteral:return{name:BooleanLiteral,properties:[{name:"true",defaultValue:!1}]};case Conjunction:return{name:Conjunction,properties:[{name:"left"},{name:"right"}]};case Disjunction:return{name:Disjunction,properties:[{name:"left"},{name:"right"}]};case Grammar:return{name:Grammar,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case GrammarImport:return{name:GrammarImport,properties:[{name:"path"}]};case InferredType:return{name:InferredType,properties:[{name:"name"}]};case Interface:return{name:Interface,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case NamedArgument:return{name:NamedArgument,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Negation:return{name:Negation,properties:[{name:"value"}]};case NumberLiteral:return{name:NumberLiteral,properties:[{name:"value"}]};case Parameter:return{name:Parameter,properties:[{name:"name"}]};case ParameterReference:return{name:ParameterReference,properties:[{name:"parameter"}]};case ParserRule:return{name:ParserRule,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case ReferenceType:return{name:ReferenceType,properties:[{name:"referenceType"}]};case ReturnType:return{name:ReturnType,properties:[{name:"name"}]};case SimpleType:return{name:SimpleType,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case StringLiteral:return{name:StringLiteral,properties:[{name:"value"}]};case TerminalRule:return{name:TerminalRule,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case Type$1:return{name:Type$1,properties:[{name:"name"},{name:"type"}]};case TypeAttribute:return{name:TypeAttribute,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case UnionType:return{name:UnionType,properties:[{name:"types",defaultValue:[]}]};case Action:return{name:Action,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Alternatives:return{name:Alternatives,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Assignment:return{name:Assignment,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case CharacterRange:return{name:CharacterRange,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case CrossReference:return{name:CrossReference,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case EndOfFile:return{name:EndOfFile,properties:[{name:"cardinality"},{name:"lookahead"}]};case Group:return{name:Group,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case Keyword$1:return{name:Keyword$1,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case NegatedToken:return{name:NegatedToken,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case RegexToken:return{name:RegexToken,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case RuleCall:return{name:RuleCall,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case TerminalAlternatives:return{name:TerminalAlternatives,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case TerminalGroup:return{name:TerminalGroup,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case TerminalRuleCall:return{name:TerminalRuleCall,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case UnorderedGroup:return{name:UnorderedGroup,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case UntilToken:return{name:UntilToken,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Wildcard:return{name:Wildcard,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:ei,properties:[]}}}}const reflection$1=new LangiumGrammarAstReflection;function linkContentToContainer(ti){for(const[ei,ni]of Object.entries(ti))ei.startsWith("$")||(Array.isArray(ni)?ni.forEach((ri,ii)=>{isAstNode(ri)&&(ri.$container=ti,ri.$containerProperty=ei,ri.$containerIndex=ii)}):isAstNode(ni)&&(ni.$container=ti,ni.$containerProperty=ei))}function getContainerOfType(ti,ei){let ni=ti;for(;ni;){if(ei(ni))return ni;ni=ni.$container}}function hasContainerOfType(ti,ei){let ni=ti;for(;ni;){if(ei(ni))return!0;ni=ni.$container}return!1}function getDocument(ti){const ni=findRootNode(ti).$document;if(!ni)throw new Error("AST node has no document.");return ni}function findRootNode(ti){for(;ti.$container;)ti=ti.$container;return ti}function streamContents(ti,ei){if(!ti)throw new Error("Node must be an AstNode.");const ni=ei?.range;return new StreamImpl(()=>({keys:Object.keys(ti),keyIndex:0,arrayIndex:0}),ri=>{for(;ri.keyIndex<ri.keys.length;){const ii=ri.keys[ri.keyIndex];if(!ii.startsWith("$")){const si=ti[ii];if(isAstNode(si)){if(ri.keyIndex++,isAstNodeInRange(si,ni))return{done:!1,value:si}}else if(Array.isArray(si)){for(;ri.arrayIndex<si.length;){const oi=ri.arrayIndex++,ai=si[oi];if(isAstNode(ai)&&isAstNodeInRange(ai,ni))return{done:!1,value:ai}}ri.arrayIndex=0}}ri.keyIndex++}return DONE_RESULT})}function streamAllContents(ti,ei){if(!ti)throw new Error("Root node must be an AstNode.");return new TreeStreamImpl(ti,ni=>streamContents(ni,ei))}function streamAst(ti,ei){if(ti){if(ei?.range&&!isAstNodeInRange(ti,ei.range))return new TreeStreamImpl(ti,()=>[])}else throw new Error("Root node must be an AstNode.");return new TreeStreamImpl(ti,ni=>streamContents(ni,ei),{includeRoot:!0})}function isAstNodeInRange(ti,ei){var ni;if(!ei)return!0;const ri=(ni=ti.$cstNode)===null||ni===void 0?void 0:ni.range;return ri?inRange(ri,ei):!1}function streamReferences(ti){return new StreamImpl(()=>({keys:Object.keys(ti),keyIndex:0,arrayIndex:0}),ei=>{for(;ei.keyIndex<ei.keys.length;){const ni=ei.keys[ei.keyIndex];if(!ni.startsWith("$")){const ri=ti[ni];if(isReference(ri))return ei.keyIndex++,{done:!1,value:{reference:ri,container:ti,property:ni}};if(Array.isArray(ri)){for(;ei.arrayIndex<ri.length;){const ii=ei.arrayIndex++,si=ri[ii];if(isReference(si))return{done:!1,value:{reference:si,container:ti,property:ni,index:ii}}}ei.arrayIndex=0}}ei.keyIndex++}return DONE_RESULT})}function findLocalReferences(ti,ei=getDocument(ti).parseResult.value){const ni=[];return streamAst(ei).forEach(ri=>{streamReferences(ri).forEach(ii=>{ii.reference.ref===ti&&ni.push(ii.reference)})}),stream(ni)}function assignMandatoryProperties(ti,ei){const ni=ti.getTypeMetaData(ei.$type),ri=ei;for(const ii of ni.properties)ii.defaultValue!==void 0&&ri[ii.name]===void 0&&(ri[ii.name]=copyDefaultValue(ii.defaultValue))}function copyDefaultValue(ti){return Array.isArray(ti)?[...ti.map(copyDefaultValue)]:ti}function copyAstNode(ti,ei){const ni={$type:ti.$type};for(const[ri,ii]of Object.entries(ti))if(!ri.startsWith("$"))if(isAstNode(ii))ni[ri]=copyAstNode(ii,ei);else if(isReference(ii))ni[ri]=ei(ni,ri,ii.$refNode,ii.$refText);else if(Array.isArray(ii)){const si=[];for(const oi of ii)isAstNode(oi)?si.push(copyAstNode(oi,ei)):isReference(oi)?si.push(ei(ni,ri,oi.$refNode,oi.$refText)):si.push(oi);ni[ri]=si}else ni[ri]=ii;return linkContentToContainer(ni),ni}const f$9={__proto__:null,assignMandatoryProperties,copyAstNode,findLocalReferences,findRootNode,getContainerOfType,getDocument,hasContainerOfType,linkContentToContainer,streamAllContents,streamAst,streamContents,streamReferences};function cc(ti){return ti.charCodeAt(0)}function insertToSet(ti,ei){Array.isArray(ti)?ti.forEach(function(ni){ei.push(ni)}):ei.push(ti)}function addFlag(ti,ei){if(ti[ei]===!0)throw"duplicate flag "+ei;ti[ei],ti[ei]=!0}function ASSERT_EXISTS(ti){if(ti===void 0)throw Error("Internal Error - Should never get here!");return!0}function ASSERT_NEVER_REACH_HERE(){throw Error("Internal Error - Should never get here!")}function isCharacter(ti){return ti.type==="Character"}const digitsCharCodes=[];for(let ti=cc("0");ti<=cc("9");ti++)digitsCharCodes.push(ti);const wordCharCodes=[cc("_")].concat(digitsCharCodes);for(let ti=cc("a");ti<=cc("z");ti++)wordCharCodes.push(ti);for(let ti=cc("A");ti<=cc("Z");ti++)wordCharCodes.push(ti);const whitespaceCodes=[cc(" "),cc("\f"),cc(`
1
+ "use strict";const fs=require("node:fs"),path=require("node:path"),node_url=require("node:url"),tty=require("tty"),require$$0$4=require("node:util"),require$$0=require("util"),require$$0$1=require("path"),require$$2=require("os"),require$$3=require("crypto"),require$$4=require("net"),require$$0$2=require("url"),require$$0$3=require("fs"),require$$3$1=require("child_process"),fsPromises=require("node:fs/promises"),process$2=require("node:process"),P$2=require("node:tty"),index_KOeaSlL8=require("./likec4.CVn8U3Og.cjs"),wasmGraphviz=require("@hpcc-js/wasm-graphviz"),buffer=require("buffer"),node_child_process=require("node:child_process"),node_string_decoder=require("node:string_decoder"),promises=require("node:timers/promises"),os=require("node:os"),node_events=require("node:events"),node_v8=require("node:v8"),node_stream=require("node:stream"),node_buffer=require("node:buffer"),promises$1=require("node:stream/promises"),vite=require("vite");function _interopDefaultCompat(ti){return ti&&typeof ti=="object"&&"default"in ti?ti.default:ti}function _interopNamespaceCompat(ti){if(ti&&typeof ti=="object"&&"default"in ti)return ti;const ei=Object.create(null);if(ti)for(const ni in ti)ei[ni]=ti[ni];return ei.default=ti,ei}const fs__namespace=_interopNamespaceCompat(fs),path__default=_interopDefaultCompat(path),require$$0__default$4=_interopDefaultCompat(require$$0$4),require$$0__default=_interopDefaultCompat(require$$0),require$$0__default$1=_interopDefaultCompat(require$$0$1),require$$2__default=_interopDefaultCompat(require$$2),require$$3__default=_interopDefaultCompat(require$$3),require$$4__default=_interopDefaultCompat(require$$4),require$$0__default$2=_interopDefaultCompat(require$$0$2),require$$0__default$3=_interopDefaultCompat(require$$0$3),require$$3__default$1=_interopDefaultCompat(require$$3$1),process__default=_interopDefaultCompat(process$2),P__namespace=_interopNamespaceCompat(P$2),P__default=_interopDefaultCompat(P$2),s$6=["amber","blue","gray","slate","green","indigo","muted","primary","red","secondary","sky"];function a$b(ti){return ti in s$6}function x$2(ti,ei){let ni=Math.ceil(ti),ri=Math.floor(ei);if(ri<ni)throw new RangeError(`randomInteger: The range [${ti.toString()},${ei.toString()}] contains no integer`);return Math.floor(Math.random()*(ri-ni+1)+ni)}var c$5,d$5;function q$3(){if(d$5)return c$5;d$5=1;var ti=index_KOeaSlL8.p(),ei=index_KOeaSlL8.r();function ni(){this.clear()}return ni.prototype.clear=function(){this.head=null,this.tail=null,this.size=0},ni.prototype.first=function(){return this.head?this.head.item:void 0},ni.prototype.peek=ni.prototype.first,ni.prototype.last=function(){return this.tail?this.tail.item:void 0},ni.prototype.push=function(ri){var ii={item:ri,next:null};return this.head?(this.tail.next=ii,this.tail=ii):(this.head=ii,this.tail=ii),this.size++,this.size},ni.prototype.unshift=function(ri){var ii={item:ri,next:null};return this.head?(this.head.next||(this.tail=this.head),ii.next=this.head,this.head=ii):(this.head=ii,this.tail=ii),this.size++,this.size},ni.prototype.shift=function(){if(this.size){var ri=this.head;return this.head=ri.next,this.size--,ri.item}},ni.prototype.forEach=function(ri,ii){if(this.size){ii=arguments.length>1?ii:this;for(var si=this.head,oi=0;si;)ri.call(ii,si.item,oi,this),si=si.next,oi++}},ni.prototype.toArray=function(){if(!this.size)return[];for(var ri=new Array(this.size),ii=0,si=this.size,oi=this.head;ii<si;ii++)ri[ii]=oi.item,oi=oi.next;return ri},ni.prototype.values=function(){var ri=this.head;return new ti(function(){if(!ri)return{done:!0};var ii=ri.item;return ri=ri.next,{value:ii,done:!1}})},ni.prototype.entries=function(){var ri=this.head,ii=0;return new ti(function(){if(!ri)return{done:!0};var si=ri.item;return ri=ri.next,ii++,{value:[ii-1,si],done:!1}})},typeof Symbol<"u"&&(ni.prototype[Symbol.iterator]=ni.prototype.values),ni.prototype.toString=function(){return this.toArray().join(",")},ni.prototype.toJSON=function(){return this.toArray()},ni.prototype.inspect=function(){var ri=this.toArray();return Object.defineProperty(ri,"constructor",{value:ni,enumerable:!1}),ri},typeof Symbol<"u"&&(ni.prototype[Symbol.for("nodejs.util.inspect.custom")]=ni.prototype.inspect),ni.from=function(ri){var ii=new ni;return ei(ri,function(si){ii.push(si)}),ii},c$5=ni,c$5}var A$4=q$3();const S$3=index_KOeaSlL8.s(A$4),g$3="LIKEC4_DELAY";function E$2(...ti){let ei=100;return ti.length===2?ei=x$2(ti[0],ti[1]):ti.length===1&&(ei=ti[0]),new Promise(ni=>{setTimeout(()=>{ni(g$3)},ei??100)})}const k$3=(ti,ei)=>{const ni=index_KOeaSlL8.t(ti.source,ti.target),ri=index_KOeaSlL8.t(ei.source,ei.target);if(ni&&!ri)return 1;if(!ni&&ri)return-1;const ii=ni&&ri?index_KOeaSlL8.x(ni,ri):0;if(ii!==0)return ii;const si=index_KOeaSlL8.x(ti.source,ei.source);return si!==0?si:index_KOeaSlL8.x(ti.target,ei.target)},{min:Vt$2,max:Ht$2}=Math,U$2=(ti,ei=0,ni=1)=>Vt$2(Ht$2(ei,ti),ni),_e$1=ti=>{ti._clipped=!1,ti._unclipped=ti.slice(0);for(let ei=0;ei<=3;ei++)ei<3?((ti[ei]<0||ti[ei]>255)&&(ti._clipped=!0),ti[ei]=U$2(ti[ei],0,255)):ei===3&&(ti[ei]=U$2(ti[ei],0,1));return ti},Ze={};for(let ti of["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"])Ze[`[object ${ti}]`]=ti.toLowerCase();function M$2(ti){return Ze[Object.prototype.toString.call(ti)]||"object"}const C$4=(ti,ei=null)=>ti.length>=3?Array.prototype.slice.call(ti):M$2(ti[0])=="object"&&ei?ei.split("").filter(ni=>ti[0][ni]!==void 0).map(ni=>ti[0][ni]):ti[0].slice(0),J$1=ti=>{if(ti.length<2)return null;const ei=ti.length-1;return M$2(ti[ei])=="string"?ti[ei].toLowerCase():null},{PI:ue$2,min:Ve,max:He}=Math,z$3=ti=>Math.round(ti*100)/100,Ce$2=ti=>Math.round(ti*100)/100,T$3=ue$2*2,Ee$2=ue$2/3,Kt$1=ue$2/180,Wt$2=180/ue$2;function Ke(ti){return[...ti.slice(0,3).reverse(),...ti.slice(3)]}const k$2={format:{},autodetect:[]};let i$c=class{constructor(...ei){const ni=this;if(M$2(ei[0])==="object"&&ei[0].constructor&&ei[0].constructor===this.constructor)return ei[0];let ri=J$1(ei),ii=!1;if(!ri){ii=!0,k$2.sorted||(k$2.autodetect=k$2.autodetect.sort((si,oi)=>oi.p-si.p),k$2.sorted=!0);for(let si of k$2.autodetect)if(ri=si.test(...ei),ri)break}if(k$2.format[ri]){const si=k$2.format[ri].apply(null,ii?ei:ei.slice(0,-1));ni._rgb=_e$1(si)}else throw new Error("unknown format: "+ei);ni._rgb.length===3&&ni._rgb.push(1)}toString(){return M$2(this.hex)=="function"?this.hex():`[${this._rgb.join(",")}]`}};const Ut$2="3.1.2",$$3=(...ti)=>new i$c(...ti);$$3.version=Ut$2;const Q$1={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},Jt$2=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Qt$1=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,We$1=ti=>{if(ti.match(Jt$2)){(ti.length===4||ti.length===7)&&(ti=ti.substr(1)),ti.length===3&&(ti=ti.split(""),ti=ti[0]+ti[0]+ti[1]+ti[1]+ti[2]+ti[2]);const ei=parseInt(ti,16),ni=ei>>16,ri=ei>>8&255,ii=ei&255;return[ni,ri,ii,1]}if(ti.match(Qt$1)){(ti.length===5||ti.length===9)&&(ti=ti.substr(1)),ti.length===4&&(ti=ti.split(""),ti=ti[0]+ti[0]+ti[1]+ti[1]+ti[2]+ti[2]+ti[3]+ti[3]);const ei=parseInt(ti,16),ni=ei>>24&255,ri=ei>>16&255,ii=ei>>8&255,si=Math.round((ei&255)/255*100)/100;return[ni,ri,ii,si]}throw new Error(`unknown hex color: ${ti}`)},{round:be$2}=Math,Ue$1=(...ti)=>{let[ei,ni,ri,ii]=C$4(ti,"rgba"),si=J$1(ti)||"auto";ii===void 0&&(ii=1),si==="auto"&&(si=ii<1?"rgba":"rgb"),ei=be$2(ei),ni=be$2(ni),ri=be$2(ri);let oi="000000"+(ei<<16|ni<<8|ri).toString(16);oi=oi.substr(oi.length-6);let ai="0"+be$2(ii*255).toString(16);switch(ai=ai.substr(ai.length-2),si.toLowerCase()){case"rgba":return`#${oi}${ai}`;case"argb":return`#${ai}${oi}`;default:return`#${oi}`}};i$c.prototype.name=function(){const ti=Ue$1(this._rgb,"rgb");for(let ei of Object.keys(Q$1))if(Q$1[ei]===ti)return ei.toLowerCase();return ti},k$2.format.named=ti=>{if(ti=ti.toLowerCase(),Q$1[ti])return We$1(Q$1[ti]);throw new Error("unknown color name: "+ti)},k$2.autodetect.push({p:5,test:(ti,...ei)=>{if(!ei.length&&M$2(ti)==="string"&&Q$1[ti.toLowerCase()])return"named"}}),i$c.prototype.alpha=function(ti,ei=!1){return ti!==void 0&&M$2(ti)==="number"?ei?(this._rgb[3]=ti,this):new i$c([this._rgb[0],this._rgb[1],this._rgb[2],ti],"rgb"):this._rgb[3]},i$c.prototype.clipped=function(){return this._rgb._clipped||!1};const X$1={Kn:18,labWhitePoint:"d65",Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452,kE:216/24389,kKE:8,kK:24389/27,RefWhiteRGB:{X:.95047,Y:1,Z:1.08883},MtxRGB2XYZ:{m00:.4124564390896922,m01:.21267285140562253,m02:.0193338955823293,m10:.357576077643909,m11:.715152155287818,m12:.11919202588130297,m20:.18043748326639894,m21:.07217499330655958,m22:.9503040785363679},MtxXYZ2RGB:{m00:3.2404541621141045,m01:-.9692660305051868,m02:.055643430959114726,m10:-1.5371385127977166,m11:1.8760108454466942,m12:-.2040259135167538,m20:-.498531409556016,m21:.041556017530349834,m22:1.0572251882231791},As:.9414285350000001,Bs:1.040417467,Cs:1.089532651,MtxAdaptMa:{m00:.8951,m01:-.7502,m02:.0389,m10:.2664,m11:1.7135,m12:-.0685,m20:-.1614,m21:.0367,m22:1.0296},MtxAdaptMaI:{m00:.9869929054667123,m01:.43230526972339456,m02:-.008528664575177328,m10:-.14705425642099013,m11:.5183602715367776,m12:.04004282165408487,m20:.15996265166373125,m21:.0492912282128556,m22:.9684866957875502}},en=new Map([["a",[1.0985,.35585]],["b",[1.0985,.35585]],["c",[.98074,1.18232]],["d50",[.96422,.82521]],["d55",[.95682,.92149]],["d65",[.95047,1.08883]],["e",[1,1,1]],["f2",[.99186,.67393]],["f7",[.95041,1.08747]],["f11",[1.00962,.6435]],["icc",[.96422,.82521]]]);function F$2(ti){const ei=en.get(String(ti).toLowerCase());if(!ei)throw new Error("unknown Lab illuminant "+ti);X$1.labWhitePoint=ti,X$1.Xn=ei[0],X$1.Zn=ei[1]}function fe$1(){return X$1.labWhitePoint}const Me$2=(...ti)=>{ti=C$4(ti,"lab");const[ei,ni,ri]=ti,[ii,si,oi]=tn(ei,ni,ri),[ai,ci,ui]=Je(ii,si,oi);return[ai,ci,ui,ti.length>3?ti[3]:1]},tn=(ti,ei,ni)=>{const{kE:ri,kK:ii,kKE:si,Xn:oi,Yn:ai,Zn:ci}=X$1,ui=(ti+16)/116,li=.002*ei+ui,di=ui-.005*ni,fi=li*li*li,pi=di*di*di,hi=fi>ri?fi:(116*li-16)/ii,vi=ti>si?Math.pow((ti+16)/116,3):ti/ii,bi=pi>ri?pi:(116*di-16)/ii,gi=hi*oi,wi=vi*ai,Ri=bi*ci;return[gi,wi,Ri]},xe$2=ti=>{const ei=Math.sign(ti);return ti=Math.abs(ti),(ti<=.0031308?ti*12.92:1.055*Math.pow(ti,1/2.4)-.055)*ei},Je=(ti,ei,ni)=>{const{MtxAdaptMa:ri,MtxAdaptMaI:ii,MtxXYZ2RGB:si,RefWhiteRGB:oi,Xn:ai,Yn:ci,Zn:ui}=X$1,li=ai*ri.m00+ci*ri.m10+ui*ri.m20,di=ai*ri.m01+ci*ri.m11+ui*ri.m21,fi=ai*ri.m02+ci*ri.m12+ui*ri.m22,pi=oi.X*ri.m00+oi.Y*ri.m10+oi.Z*ri.m20,hi=oi.X*ri.m01+oi.Y*ri.m11+oi.Z*ri.m21,vi=oi.X*ri.m02+oi.Y*ri.m12+oi.Z*ri.m22,bi=(ti*ri.m00+ei*ri.m10+ni*ri.m20)*(pi/li),gi=(ti*ri.m01+ei*ri.m11+ni*ri.m21)*(hi/di),wi=(ti*ri.m02+ei*ri.m12+ni*ri.m22)*(vi/fi),Ri=bi*ii.m00+gi*ii.m10+wi*ii.m20,ki=bi*ii.m01+gi*ii.m11+wi*ii.m21,Ai=bi*ii.m02+gi*ii.m12+wi*ii.m22,Ni=xe$2(Ri*si.m00+ki*si.m10+Ai*si.m20),_i=xe$2(Ri*si.m01+ki*si.m11+Ai*si.m21),Mi=xe$2(Ri*si.m02+ki*si.m12+Ai*si.m22);return[Ni*255,_i*255,Mi*255]},$e$2=(...ti)=>{const[ei,ni,ri,...ii]=C$4(ti,"rgb"),[si,oi,ai]=Qe(ei,ni,ri),[ci,ui,li]=nn(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]};function nn(ti,ei,ni){const{Xn:ri,Yn:ii,Zn:si,kE:oi,kK:ai}=X$1,ci=ti/ri,ui=ei/ii,li=ni/si,di=ci>oi?Math.pow(ci,1/3):(ai*ci+16)/116,fi=ui>oi?Math.pow(ui,1/3):(ai*ui+16)/116,pi=li>oi?Math.pow(li,1/3):(ai*li+16)/116;return[116*fi-16,500*(di-fi),200*(fi-pi)]}function Ae$2(ti){const ei=Math.sign(ti);return ti=Math.abs(ti),(ti<=.04045?ti/12.92:Math.pow((ti+.055)/1.055,2.4))*ei}const Qe=(ti,ei,ni)=>{ti=Ae$2(ti/255),ei=Ae$2(ei/255),ni=Ae$2(ni/255);const{MtxRGB2XYZ:ri,MtxAdaptMa:ii,MtxAdaptMaI:si,Xn:oi,Yn:ai,Zn:ci,As:ui,Bs:li,Cs:di}=X$1;let fi=ti*ri.m00+ei*ri.m10+ni*ri.m20,pi=ti*ri.m01+ei*ri.m11+ni*ri.m21,hi=ti*ri.m02+ei*ri.m12+ni*ri.m22;const vi=oi*ii.m00+ai*ii.m10+ci*ii.m20,bi=oi*ii.m01+ai*ii.m11+ci*ii.m21,gi=oi*ii.m02+ai*ii.m12+ci*ii.m22;let wi=fi*ii.m00+pi*ii.m10+hi*ii.m20,Ri=fi*ii.m01+pi*ii.m11+hi*ii.m21,ki=fi*ii.m02+pi*ii.m12+hi*ii.m22;return wi*=vi/ui,Ri*=bi/li,ki*=gi/di,fi=wi*si.m00+Ri*si.m10+ki*si.m20,pi=wi*si.m01+Ri*si.m11+ki*si.m21,hi=wi*si.m02+Ri*si.m12+ki*si.m22,[fi,pi,hi]};i$c.prototype.lab=function(){return $e$2(this._rgb)};const rn=(...ti)=>new i$c(...ti,"lab");Object.assign($$3,{lab:rn,getLabWhitePoint:fe$1,setLabWhitePoint:F$2}),k$2.format.lab=Me$2,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"lab"),M$2(ti)==="array"&&ti.length===3)return"lab"}}),i$c.prototype.darken=function(ti=1){const ei=this,ni=ei.lab();return ni[0]-=X$1.Kn*ti,new i$c(ni,"lab").alpha(ei.alpha(),!0)},i$c.prototype.brighten=function(ti=1){return this.darken(-ti)},i$c.prototype.darker=i$c.prototype.darken,i$c.prototype.brighter=i$c.prototype.brighten,i$c.prototype.get=function(ti){const[ei,ni]=ti.split("."),ri=this[ei]();if(ni){const ii=ei.indexOf(ni)-(ei.substr(0,2)==="ok"?2:0);if(ii>-1)return ri[ii];throw new Error(`unknown channel ${ni} in mode ${ei}`)}else return ri};const{pow:on}=Math,sn=1e-7,cn=20;i$c.prototype.luminance=function(ti,ei="rgb"){if(ti!==void 0&&M$2(ti)==="number"){if(ti===0)return new i$c([0,0,0,this._rgb[3]],"rgb");if(ti===1)return new i$c([255,255,255,this._rgb[3]],"rgb");let ni=this.luminance(),ri=cn;const ii=(oi,ai)=>{const ci=oi.interpolate(ai,.5,ei),ui=ci.luminance();return Math.abs(ti-ui)<sn||!ri--?ci:ui>ti?ii(oi,ci):ii(ci,ai)},si=(ni>ti?ii(new i$c([0,0,0]),this):ii(this,new i$c([255,255,255]))).rgb();return new i$c([...si,this._rgb[3]])}return an(...this._rgb.slice(0,3))};const an=(ti,ei,ni)=>(ti=Re$1(ti),ei=Re$1(ei),ni=Re$1(ni),.2126*ti+.7152*ei+.0722*ni),Re$1=ti=>(ti/=255,ti<=.03928?ti/12.92:on((ti+.055)/1.055,2.4)),q$2={},ee$1=(ti,ei,ni=.5,...ri)=>{let ii=ri[0]||"lrgb";if(!q$2[ii]&&!ri.length&&(ii=Object.keys(q$2)[0]),!q$2[ii])throw new Error(`interpolation mode ${ii} is not defined`);return M$2(ti)!=="object"&&(ti=new i$c(ti)),M$2(ei)!=="object"&&(ei=new i$c(ei)),q$2[ii](ti,ei,ni).alpha(ti.alpha()+ni*(ei.alpha()-ti.alpha()))};i$c.prototype.mix=i$c.prototype.interpolate=function(ti,ei=.5,...ni){return ee$1(this,ti,ei,...ni)},i$c.prototype.premultiply=function(ti=!1){const ei=this._rgb,ni=ei[3];return ti?(this._rgb=[ei[0]*ni,ei[1]*ni,ei[2]*ni,ni],this):new i$c([ei[0]*ni,ei[1]*ni,ei[2]*ni,ni],"rgb")};const{sin:fn,cos:ln}=Math,et$1=(...ti)=>{let[ei,ni,ri]=C$4(ti,"lch");return isNaN(ri)&&(ri=0),ri=ri*Kt$1,[ei,ln(ri)*ni,fn(ri)*ni]},Le$2=(...ti)=>{ti=C$4(ti,"lch");const[ei,ni,ri]=ti,[ii,si,oi]=et$1(ei,ni,ri),[ai,ci,ui]=Me$2(ii,si,oi);return[ai,ci,ui,ti.length>3?ti[3]:1]},un=(...ti)=>{const ei=Ke(C$4(ti,"hcl"));return Le$2(...ei)},{sqrt:bn,atan2:hn,round:dn}=Math,tt$1=(...ti)=>{const[ei,ni,ri]=C$4(ti,"lab"),ii=bn(ni*ni+ri*ri);let si=(hn(ri,ni)*Wt$2+360)%360;return dn(ii*1e4)===0&&(si=Number.NaN),[ei,ii,si]},Ne$2=(...ti)=>{const[ei,ni,ri,...ii]=C$4(ti,"rgb"),[si,oi,ai]=$e$2(ei,ni,ri),[ci,ui,li]=tt$1(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]};i$c.prototype.lch=function(){return Ne$2(this._rgb)},i$c.prototype.hcl=function(){return Ke(Ne$2(this._rgb))};const pn=(...ti)=>new i$c(...ti,"lch"),mn=(...ti)=>new i$c(...ti,"hcl");Object.assign($$3,{lch:pn,hcl:mn}),k$2.format.lch=Le$2,k$2.format.hcl=un,["lch","hcl"].forEach(ti=>k$2.autodetect.push({p:2,test:(...ei)=>{if(ei=C$4(ei,ti),M$2(ei)==="array"&&ei.length===3)return ti}})),i$c.prototype.saturate=function(ti=1){const ei=this,ni=ei.lch();return ni[1]+=X$1.Kn*ti,ni[1]<0&&(ni[1]=0),new i$c(ni,"lch").alpha(ei.alpha(),!0)},i$c.prototype.desaturate=function(ti=1){return this.saturate(-ti)},i$c.prototype.set=function(ti,ei,ni=!1){const[ri,ii]=ti.split("."),si=this[ri]();if(ii){const oi=ri.indexOf(ii)-(ri.substr(0,2)==="ok"?2:0);if(oi>-1){if(M$2(ei)=="string")switch(ei.charAt(0)){case"+":si[oi]+=+ei;break;case"-":si[oi]+=+ei;break;case"*":si[oi]*=+ei.substr(1);break;case"/":si[oi]/=+ei.substr(1);break;default:si[oi]=+ei}else if(M$2(ei)==="number")si[oi]=ei;else throw new Error("unsupported value for Color.set");const ai=new i$c(si,ri);return ni?(this._rgb=ai._rgb,this):ai}throw new Error(`unknown channel ${ii} in mode ${ri}`)}else return si},i$c.prototype.tint=function(ti=.5,...ei){return ee$1(this,"white",ti,...ei)},i$c.prototype.shade=function(ti=.5,...ei){return ee$1(this,"black",ti,...ei)};const gn=(ti,ei,ni)=>{const ri=ti._rgb,ii=ei._rgb;return new i$c(ri[0]+ni*(ii[0]-ri[0]),ri[1]+ni*(ii[1]-ri[1]),ri[2]+ni*(ii[2]-ri[2]),"rgb")};q$2.rgb=gn;const{sqrt:Pe$2,pow:te$1}=Math,yn=(ti,ei,ni)=>{const[ri,ii,si]=ti._rgb,[oi,ai,ci]=ei._rgb;return new i$c(Pe$2(te$1(ri,2)*(1-ni)+te$1(oi,2)*ni),Pe$2(te$1(ii,2)*(1-ni)+te$1(ai,2)*ni),Pe$2(te$1(si,2)*(1-ni)+te$1(ci,2)*ni),"rgb")};q$2.lrgb=yn;const wn=(ti,ei,ni)=>{const ri=ti.lab(),ii=ei.lab();return new i$c(ri[0]+ni*(ii[0]-ri[0]),ri[1]+ni*(ii[1]-ri[1]),ri[2]+ni*(ii[2]-ri[2]),"lab")};q$2.lab=wn;const ne$1=(ti,ei,ni,ri)=>{let ii,si;ri==="hsl"?(ii=ti.hsl(),si=ei.hsl()):ri==="hsv"?(ii=ti.hsv(),si=ei.hsv()):ri==="hcg"?(ii=ti.hcg(),si=ei.hcg()):ri==="hsi"?(ii=ti.hsi(),si=ei.hsi()):ri==="lch"||ri==="hcl"?(ri="hcl",ii=ti.hcl(),si=ei.hcl()):ri==="oklch"&&(ii=ti.oklch().reverse(),si=ei.oklch().reverse());let oi,ai,ci,ui,li,di;(ri.substr(0,1)==="h"||ri==="oklch")&&([oi,ci,li]=ii,[ai,ui,di]=si);let fi,pi,hi,vi;return!isNaN(oi)&&!isNaN(ai)?(ai>oi&&ai-oi>180?vi=ai-(oi+360):ai<oi&&oi-ai>180?vi=ai+360-oi:vi=ai-oi,pi=oi+ni*vi):isNaN(oi)?isNaN(ai)?pi=Number.NaN:(pi=ai,(li==1||li==0)&&ri!="hsv"&&(fi=ui)):(pi=oi,(di==1||di==0)&&ri!="hsv"&&(fi=ci)),fi===void 0&&(fi=ci+ni*(ui-ci)),hi=li+ni*(di-li),ri==="oklch"?new i$c([hi,fi,pi],ri):new i$c([pi,fi,hi],ri)},nt$1=(ti,ei,ni)=>ne$1(ti,ei,ni,"lch");q$2.lch=nt$1,q$2.hcl=nt$1;const kn=ti=>{if(M$2(ti)=="number"&&ti>=0&&ti<=16777215){const ei=ti>>16,ni=ti>>8&255,ri=ti&255;return[ei,ni,ri,1]}throw new Error("unknown num color: "+ti)},_n=(...ti)=>{const[ei,ni,ri]=C$4(ti,"rgb");return(ei<<16)+(ni<<8)+ri};i$c.prototype.num=function(){return _n(this._rgb)};const Cn=(...ti)=>new i$c(...ti,"num");Object.assign($$3,{num:Cn}),k$2.format.num=kn,k$2.autodetect.push({p:5,test:(...ti)=>{if(ti.length===1&&M$2(ti[0])==="number"&&ti[0]>=0&&ti[0]<=16777215)return"num"}});const En=(ti,ei,ni)=>{const ri=ti.num(),ii=ei.num();return new i$c(ri+ni*(ii-ri),"num")};q$2.num=En;const{floor:Mn}=Math,xn=(...ti)=>{ti=C$4(ti,"hcg");let[ei,ni,ri]=ti,ii,si,oi;ri=ri*255;const ai=ni*255;if(ni===0)ii=si=oi=ri;else{ei===360&&(ei=0),ei>360&&(ei-=360),ei<0&&(ei+=360),ei/=60;const ci=Mn(ei),ui=ei-ci,li=ri*(1-ni),di=li+ai*(1-ui),fi=li+ai*ui,pi=li+ai;switch(ci){case 0:[ii,si,oi]=[pi,fi,li];break;case 1:[ii,si,oi]=[di,pi,li];break;case 2:[ii,si,oi]=[li,pi,fi];break;case 3:[ii,si,oi]=[li,di,pi];break;case 4:[ii,si,oi]=[fi,li,pi];break;case 5:[ii,si,oi]=[pi,li,di];break}}return[ii,si,oi,ti.length>3?ti[3]:1]},$n=(...ti)=>{const[ei,ni,ri]=C$4(ti,"rgb"),ii=Ve(ei,ni,ri),si=He(ei,ni,ri),oi=si-ii,ai=oi*100/255,ci=ii/(255-oi)*100;let ui;return oi===0?ui=Number.NaN:(ei===si&&(ui=(ni-ri)/oi),ni===si&&(ui=2+(ri-ei)/oi),ri===si&&(ui=4+(ei-ni)/oi),ui*=60,ui<0&&(ui+=360)),[ui,ai,ci]};i$c.prototype.hcg=function(){return $n(this._rgb)};const An=(...ti)=>new i$c(...ti,"hcg");$$3.hcg=An,k$2.format.hcg=xn,k$2.autodetect.push({p:1,test:(...ti)=>{if(ti=C$4(ti,"hcg"),M$2(ti)==="array"&&ti.length===3)return"hcg"}});const Rn=(ti,ei,ni)=>ne$1(ti,ei,ni,"hcg");q$2.hcg=Rn;const{cos:re$1}=Math,Ln=(...ti)=>{ti=C$4(ti,"hsi");let[ei,ni,ri]=ti,ii,si,oi;return isNaN(ei)&&(ei=0),isNaN(ni)&&(ni=0),ei>360&&(ei-=360),ei<0&&(ei+=360),ei/=360,ei<1/3?(oi=(1-ni)/3,ii=(1+ni*re$1(T$3*ei)/re$1(Ee$2-T$3*ei))/3,si=1-(oi+ii)):ei<2/3?(ei-=1/3,ii=(1-ni)/3,si=(1+ni*re$1(T$3*ei)/re$1(Ee$2-T$3*ei))/3,oi=1-(ii+si)):(ei-=2/3,si=(1-ni)/3,oi=(1+ni*re$1(T$3*ei)/re$1(Ee$2-T$3*ei))/3,ii=1-(si+oi)),ii=U$2(ri*ii*3),si=U$2(ri*si*3),oi=U$2(ri*oi*3),[ii*255,si*255,oi*255,ti.length>3?ti[3]:1]},{min:Nn,sqrt:Pn,acos:jn}=Math,Bn=(...ti)=>{let[ei,ni,ri]=C$4(ti,"rgb");ei/=255,ni/=255,ri/=255;let ii;const si=Nn(ei,ni,ri),oi=(ei+ni+ri)/3,ai=oi>0?1-si/oi:0;return ai===0?ii=NaN:(ii=(ei-ni+(ei-ri))/2,ii/=Pn((ei-ni)*(ei-ni)+(ei-ri)*(ni-ri)),ii=jn(ii),ri>ni&&(ii=T$3-ii),ii/=T$3),[ii*360,ai,oi]};i$c.prototype.hsi=function(){return Bn(this._rgb)};const On=(...ti)=>new i$c(...ti,"hsi");$$3.hsi=On,k$2.format.hsi=Ln,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"hsi"),M$2(ti)==="array"&&ti.length===3)return"hsi"}});const vn=(ti,ei,ni)=>ne$1(ti,ei,ni,"hsi");q$2.hsi=vn;const je$1=(...ti)=>{ti=C$4(ti,"hsl");const[ei,ni,ri]=ti;let ii,si,oi;if(ni===0)ii=si=oi=ri*255;else{const ai=[0,0,0],ci=[0,0,0],ui=ri<.5?ri*(1+ni):ri+ni-ri*ni,li=2*ri-ui,di=ei/360;ai[0]=di+1/3,ai[1]=di,ai[2]=di-1/3;for(let fi=0;fi<3;fi++)ai[fi]<0&&(ai[fi]+=1),ai[fi]>1&&(ai[fi]-=1),6*ai[fi]<1?ci[fi]=li+(ui-li)*6*ai[fi]:2*ai[fi]<1?ci[fi]=ui:3*ai[fi]<2?ci[fi]=li+(ui-li)*(2/3-ai[fi])*6:ci[fi]=li;[ii,si,oi]=[ci[0]*255,ci[1]*255,ci[2]*255]}return ti.length>3?[ii,si,oi,ti[3]]:[ii,si,oi,1]},rt$1=(...ti)=>{ti=C$4(ti,"rgba");let[ei,ni,ri]=ti;ei/=255,ni/=255,ri/=255;const ii=Ve(ei,ni,ri),si=He(ei,ni,ri),oi=(si+ii)/2;let ai,ci;return si===ii?(ai=0,ci=Number.NaN):ai=oi<.5?(si-ii)/(si+ii):(si-ii)/(2-si-ii),ei==si?ci=(ni-ri)/(si-ii):ni==si?ci=2+(ri-ei)/(si-ii):ri==si&&(ci=4+(ei-ni)/(si-ii)),ci*=60,ci<0&&(ci+=360),ti.length>3&&ti[3]!==void 0?[ci,ai,oi,ti[3]]:[ci,ai,oi]};i$c.prototype.hsl=function(){return rt$1(this._rgb)};const Sn=(...ti)=>new i$c(...ti,"hsl");$$3.hsl=Sn,k$2.format.hsl=je$1,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"hsl"),M$2(ti)==="array"&&ti.length===3)return"hsl"}});const qn=(ti,ei,ni)=>ne$1(ti,ei,ni,"hsl");q$2.hsl=qn;const{floor:Gn}=Math,zn=(...ti)=>{ti=C$4(ti,"hsv");let[ei,ni,ri]=ti,ii,si,oi;if(ri*=255,ni===0)ii=si=oi=ri;else{ei===360&&(ei=0),ei>360&&(ei-=360),ei<0&&(ei+=360),ei/=60;const ai=Gn(ei),ci=ei-ai,ui=ri*(1-ni),li=ri*(1-ni*ci),di=ri*(1-ni*(1-ci));switch(ai){case 0:[ii,si,oi]=[ri,di,ui];break;case 1:[ii,si,oi]=[li,ri,ui];break;case 2:[ii,si,oi]=[ui,ri,di];break;case 3:[ii,si,oi]=[ui,li,ri];break;case 4:[ii,si,oi]=[di,ui,ri];break;case 5:[ii,si,oi]=[ri,ui,li];break}}return[ii,si,oi,ti.length>3?ti[3]:1]},{min:Yn,max:Dn}=Math,In=(...ti)=>{ti=C$4(ti,"rgb");let[ei,ni,ri]=ti;const ii=Yn(ei,ni,ri),si=Dn(ei,ni,ri),oi=si-ii;let ai,ci,ui;return ui=si/255,si===0?(ai=Number.NaN,ci=0):(ci=oi/si,ei===si&&(ai=(ni-ri)/oi),ni===si&&(ai=2+(ri-ei)/oi),ri===si&&(ai=4+(ei-ni)/oi),ai*=60,ai<0&&(ai+=360)),[ai,ci,ui]};i$c.prototype.hsv=function(){return In(this._rgb)};const Xn=(...ti)=>new i$c(...ti,"hsv");$$3.hsv=Xn,k$2.format.hsv=zn,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"hsv"),M$2(ti)==="array"&&ti.length===3)return"hsv"}});const Tn=(ti,ei,ni)=>ne$1(ti,ei,ni,"hsv");q$2.hsv=Tn;function he$1(ti,ei){let ni=ti.length;Array.isArray(ti[0])||(ti=[ti]),Array.isArray(ei[0])||(ei=ei.map(oi=>[oi]));let ri=ei[0].length,ii=ei[0].map((oi,ai)=>ei.map(ci=>ci[ai])),si=ti.map(oi=>ii.map(ai=>Array.isArray(oi)?oi.reduce((ci,ui,li)=>ci+ui*(ai[li]||0),0):ai.reduce((ci,ui)=>ci+ui*oi,0)));return ni===1&&(si=si[0]),ri===1?si.map(oi=>oi[0]):si}const Be$2=(...ti)=>{ti=C$4(ti,"lab");const[ei,ni,ri,...ii]=ti,[si,oi,ai]=Fn([ei,ni,ri]),[ci,ui,li]=Je(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]};function Fn(ti){var ei=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],ni=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],ri=he$1(ni,ti);return he$1(ei,ri.map(ii=>ii**3))}const Oe$2=(...ti)=>{const[ei,ni,ri,...ii]=C$4(ti,"rgb"),si=Qe(ei,ni,ri);return[...Zn(si),...ii.length>0&&ii[0]<1?[ii[0]]:[]]};function Zn(ti){const ei=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],ni=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],ri=he$1(ei,ti);return he$1(ni,ri.map(ii=>Math.cbrt(ii)))}i$c.prototype.oklab=function(){return Oe$2(this._rgb)};const Vn=(...ti)=>new i$c(...ti,"oklab");Object.assign($$3,{oklab:Vn}),k$2.format.oklab=Be$2,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"oklab"),M$2(ti)==="array"&&ti.length===3)return"oklab"}});const Hn=(ti,ei,ni)=>{const ri=ti.oklab(),ii=ei.oklab();return new i$c(ri[0]+ni*(ii[0]-ri[0]),ri[1]+ni*(ii[1]-ri[1]),ri[2]+ni*(ii[2]-ri[2]),"oklab")};q$2.oklab=Hn;const Kn=(ti,ei,ni)=>ne$1(ti,ei,ni,"oklch");q$2.oklch=Kn;const{pow:ve$2,sqrt:Se$2,PI:qe$1,cos:ot$1,sin:st$1,atan2:Wn}=Math,Un=(ti,ei="lrgb",ni=null)=>{const ri=ti.length;ni||(ni=Array.from(new Array(ri)).map(()=>1));const ii=ri/ni.reduce(function(di,fi){return di+fi});if(ni.forEach((di,fi)=>{ni[fi]*=ii}),ti=ti.map(di=>new i$c(di)),ei==="lrgb")return Jn(ti,ni);const si=ti.shift(),oi=si.get(ei),ai=[];let ci=0,ui=0;for(let di=0;di<oi.length;di++)if(oi[di]=(oi[di]||0)*ni[0],ai.push(isNaN(oi[di])?0:ni[0]),ei.charAt(di)==="h"&&!isNaN(oi[di])){const fi=oi[di]/180*qe$1;ci+=ot$1(fi)*ni[0],ui+=st$1(fi)*ni[0]}let li=si.alpha()*ni[0];ti.forEach((di,fi)=>{const pi=di.get(ei);li+=di.alpha()*ni[fi+1];for(let hi=0;hi<oi.length;hi++)if(!isNaN(pi[hi]))if(ai[hi]+=ni[fi+1],ei.charAt(hi)==="h"){const vi=pi[hi]/180*qe$1;ci+=ot$1(vi)*ni[fi+1],ui+=st$1(vi)*ni[fi+1]}else oi[hi]+=pi[hi]*ni[fi+1]});for(let di=0;di<oi.length;di++)if(ei.charAt(di)==="h"){let fi=Wn(ui/ai[di],ci/ai[di])/qe$1*180;for(;fi<0;)fi+=360;for(;fi>=360;)fi-=360;oi[di]=fi}else oi[di]=oi[di]/ai[di];return li/=ri,new i$c(oi,ei).alpha(li>.99999?1:li,!0)},Jn=(ti,ei)=>{const ni=ti.length,ri=[0,0,0,0];for(let ii=0;ii<ti.length;ii++){const si=ti[ii],oi=ei[ii]/ni,ai=si._rgb;ri[0]+=ve$2(ai[0],2)*oi,ri[1]+=ve$2(ai[1],2)*oi,ri[2]+=ve$2(ai[2],2)*oi,ri[3]+=ai[3]*oi}return ri[0]=Se$2(ri[0]),ri[1]=Se$2(ri[1]),ri[2]=Se$2(ri[2]),ri[3]>.9999999&&(ri[3]=1),new i$c(_e$1(ri))},{pow:Qn}=Math;function de$2(ti){let ei="rgb",ni=$$3("#ccc"),ri=0,ii=[0,1],si=[],oi=[0,0],ai=!1,ci=[],ui=!1,li=0,di=1,fi=!1,pi={},hi=!0,vi=1;const bi=function(_i){if(_i=_i||["#fff","#000"],_i&&M$2(_i)==="string"&&$$3.brewer&&$$3.brewer[_i.toLowerCase()]&&(_i=$$3.brewer[_i.toLowerCase()]),M$2(_i)==="array"){_i.length===1&&(_i=[_i[0],_i[0]]),_i=_i.slice(0);for(let Mi=0;Mi<_i.length;Mi++)_i[Mi]=$$3(_i[Mi]);si.length=0;for(let Mi=0;Mi<_i.length;Mi++)si.push(Mi/(_i.length-1))}return Ai(),ci=_i},gi=function(_i){if(ai!=null){const Mi=ai.length-1;let Bi=0;for(;Bi<Mi&&_i>=ai[Bi];)Bi++;return Bi-1}return 0};let wi=_i=>_i,Ri=_i=>_i;const ki=function(_i,Mi){let Bi,Xi;if(Mi==null&&(Mi=!1),isNaN(_i)||_i===null)return ni;Mi?Xi=_i:ai&&ai.length>2?Xi=gi(_i)/(ai.length-2):di!==li?Xi=(_i-li)/(di-li):Xi=1,Xi=Ri(Xi),Mi||(Xi=wi(Xi)),vi!==1&&(Xi=Qn(Xi,vi)),Xi=oi[0]+Xi*(1-oi[0]-oi[1]),Xi=U$2(Xi,0,1);const Ii=Math.floor(Xi*1e4);if(hi&&pi[Ii])Bi=pi[Ii];else{if(M$2(ci)==="array")for(let Ti=0;Ti<si.length;Ti++){const $i=si[Ti];if(Xi<=$i){Bi=ci[Ti];break}if(Xi>=$i&&Ti===si.length-1){Bi=ci[Ti];break}if(Xi>$i&&Xi<si[Ti+1]){Xi=(Xi-$i)/(si[Ti+1]-$i),Bi=$$3.interpolate(ci[Ti],ci[Ti+1],Xi,ei);break}}else M$2(ci)==="function"&&(Bi=ci(Xi));hi&&(pi[Ii]=Bi)}return Bi};var Ai=()=>pi={};bi(ti);const Ni=function(_i){const Mi=$$3(ki(_i));return ui&&Mi[ui]?Mi[ui]():Mi};return Ni.classes=function(_i){if(_i!=null){if(M$2(_i)==="array")ai=_i,ii=[_i[0],_i[_i.length-1]];else{const Mi=$$3.analyze(ii);_i===0?ai=[Mi.min,Mi.max]:ai=$$3.limits(Mi,"e",_i)}return Ni}return ai},Ni.domain=function(_i){if(!arguments.length)return ii;li=_i[0],di=_i[_i.length-1],si=[];const Mi=ci.length;if(_i.length===Mi&&li!==di)for(let Bi of Array.from(_i))si.push((Bi-li)/(di-li));else{for(let Bi=0;Bi<Mi;Bi++)si.push(Bi/(Mi-1));if(_i.length>2){const Bi=_i.map((Ii,Ti)=>Ti/(_i.length-1)),Xi=_i.map(Ii=>(Ii-li)/(di-li));Xi.every((Ii,Ti)=>Bi[Ti]===Ii)||(Ri=Ii=>{if(Ii<=0||Ii>=1)return Ii;let Ti=0;for(;Ii>=Xi[Ti+1];)Ti++;const $i=(Ii-Xi[Ti])/(Xi[Ti+1]-Xi[Ti]);return Bi[Ti]+$i*(Bi[Ti+1]-Bi[Ti])})}}return ii=[li,di],Ni},Ni.mode=function(_i){return arguments.length?(ei=_i,Ai(),Ni):ei},Ni.range=function(_i,Mi){return bi(_i),Ni},Ni.out=function(_i){return ui=_i,Ni},Ni.spread=function(_i){return arguments.length?(ri=_i,Ni):ri},Ni.correctLightness=function(_i){return _i==null&&(_i=!0),fi=_i,Ai(),fi?wi=function(Mi){const Bi=ki(0,!0).lab()[0],Xi=ki(1,!0).lab()[0],Ii=Bi>Xi;let Ti=ki(Mi,!0).lab()[0];const $i=Bi+(Xi-Bi)*Mi;let Fi=Ti-$i,Wi=0,Gi=1,Hi=20;for(;Math.abs(Fi)>.01&&Hi-- >0;)(function(){return Ii&&(Fi*=-1),Fi<0?(Wi=Mi,Mi+=(Gi-Mi)*.5):(Gi=Mi,Mi+=(Wi-Mi)*.5),Ti=ki(Mi,!0).lab()[0],Fi=Ti-$i})();return Mi}:wi=Mi=>Mi,Ni},Ni.padding=function(_i){return _i!=null?(M$2(_i)==="number"&&(_i=[_i,_i]),oi=_i,Ni):oi},Ni.colors=function(_i,Mi){arguments.length<2&&(Mi="hex");let Bi=[];if(arguments.length===0)Bi=ci.slice(0);else if(_i===1)Bi=[Ni(.5)];else if(_i>1){const Xi=ii[0],Ii=ii[1]-Xi;Bi=er(0,_i).map(Ti=>Ni(Xi+Ti/(_i-1)*Ii))}else{ti=[];let Xi=[];if(ai&&ai.length>2)for(let Ii=1,Ti=ai.length,$i=1<=Ti;$i?Ii<Ti:Ii>Ti;$i?Ii++:Ii--)Xi.push((ai[Ii-1]+ai[Ii])*.5);else Xi=ii;Bi=Xi.map(Ii=>Ni(Ii))}return $$3[Mi]&&(Bi=Bi.map(Xi=>Xi[Mi]())),Bi},Ni.cache=function(_i){return _i!=null?(hi=_i,Ni):hi},Ni.gamma=function(_i){return _i!=null?(vi=_i,Ni):vi},Ni.nodata=function(_i){return _i!=null?(ni=$$3(_i),Ni):ni},Ni}function er(ti,ei,ni){let ri=[],ii=ti<ei,si=ei;for(let oi=ti;ii?oi<si:oi>si;ii?oi++:oi--)ri.push(oi);return ri}const tr=function(ti){let ei=[1,1];for(let ni=1;ni<ti;ni++){let ri=[1];for(let ii=1;ii<=ei.length;ii++)ri[ii]=(ei[ii]||0)+ei[ii-1];ei=ri}return ei},nr=function(ti){let ei,ni,ri,ii;if(ti=ti.map(si=>new i$c(si)),ti.length===2)[ni,ri]=ti.map(si=>si.lab()),ei=function(si){const oi=[0,1,2].map(ai=>ni[ai]+si*(ri[ai]-ni[ai]));return new i$c(oi,"lab")};else if(ti.length===3)[ni,ri,ii]=ti.map(si=>si.lab()),ei=function(si){const oi=[0,1,2].map(ai=>(1-si)*(1-si)*ni[ai]+2*(1-si)*si*ri[ai]+si*si*ii[ai]);return new i$c(oi,"lab")};else if(ti.length===4){let si;[ni,ri,ii,si]=ti.map(oi=>oi.lab()),ei=function(oi){const ai=[0,1,2].map(ci=>(1-oi)*(1-oi)*(1-oi)*ni[ci]+3*(1-oi)*(1-oi)*oi*ri[ci]+3*(1-oi)*oi*oi*ii[ci]+oi*oi*oi*si[ci]);return new i$c(ai,"lab")}}else if(ti.length>=5){let si,oi,ai;si=ti.map(ci=>ci.lab()),ai=ti.length-1,oi=tr(ai),ei=function(ci){const ui=1-ci,li=[0,1,2].map(di=>si.reduce((fi,pi,hi)=>fi+oi[hi]*ui**(ai-hi)*ci**hi*pi[di],0));return new i$c(li,"lab")}}else throw new RangeError("No point in running bezier with only one color.");return ei},rr=ti=>{const ei=nr(ti);return ei.scale=()=>de$2(ei),ei},{round:ct$1}=Math;i$c.prototype.rgb=function(ti=!0){return ti===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(ct$1)},i$c.prototype.rgba=function(ti=!0){return this._rgb.slice(0,4).map((ei,ni)=>ni<3?ti===!1?ei:ct$1(ei):ei)};const or=(...ti)=>new i$c(...ti,"rgb");Object.assign($$3,{rgb:or}),k$2.format.rgb=(...ti)=>{const ei=C$4(ti,"rgba");return ei[3]===void 0&&(ei[3]=1),ei},k$2.autodetect.push({p:3,test:(...ti)=>{if(ti=C$4(ti,"rgba"),M$2(ti)==="array"&&(ti.length===3||ti.length===4&&M$2(ti[3])=="number"&&ti[3]>=0&&ti[3]<=1))return"rgb"}});const D$2=(ti,ei,ni)=>{if(!D$2[ni])throw new Error("unknown blend mode "+ni);return D$2[ni](ti,ei)},H=ti=>(ei,ni)=>{const ri=$$3(ni).rgb(),ii=$$3(ei).rgb();return $$3.rgb(ti(ri,ii))},K$1=ti=>(ei,ni)=>{const ri=[];return ri[0]=ti(ei[0],ni[0]),ri[1]=ti(ei[1],ni[1]),ri[2]=ti(ei[2],ni[2]),ri},sr=ti=>ti,cr=(ti,ei)=>ti*ei/255,ar=(ti,ei)=>ti>ei?ei:ti,fr=(ti,ei)=>ti>ei?ti:ei,lr=(ti,ei)=>255*(1-(1-ti/255)*(1-ei/255)),ir=(ti,ei)=>ei<128?2*ti*ei/255:255*(1-2*(1-ti/255)*(1-ei/255)),ur=(ti,ei)=>255*(1-(1-ei/255)/(ti/255)),br=(ti,ei)=>ti===255?255:(ti=255*(ei/255)/(1-ti/255),ti>255?255:ti);D$2.normal=H(K$1(sr)),D$2.multiply=H(K$1(cr)),D$2.screen=H(K$1(lr)),D$2.overlay=H(K$1(ir)),D$2.darken=H(K$1(ar)),D$2.lighten=H(K$1(fr)),D$2.dodge=H(K$1(br)),D$2.burn=H(K$1(ur));const{pow:hr,sin:dr,cos:pr}=Math;function mr(ti=300,ei=-1.5,ni=1,ri=1,ii=[0,1]){let si=0,oi;M$2(ii)==="array"?oi=ii[1]-ii[0]:(oi=0,ii=[ii,ii]);const ai=function(ci){const ui=T$3*((ti+120)/360+ei*ci),li=hr(ii[0]+oi*ci,ri),di=(si!==0?ni[0]+ci*si:ni)*li*(1-li)/2,fi=pr(ui),pi=dr(ui),hi=li+di*(-.14861*fi+1.78277*pi),vi=li+di*(-.29227*fi-.90649*pi),bi=li+di*(1.97294*fi);return $$3(_e$1([hi*255,vi*255,bi*255,1]))};return ai.start=function(ci){return ci==null?ti:(ti=ci,ai)},ai.rotations=function(ci){return ci==null?ei:(ei=ci,ai)},ai.gamma=function(ci){return ci==null?ri:(ri=ci,ai)},ai.hue=function(ci){return ci==null?ni:(ni=ci,M$2(ni)==="array"?(si=ni[1]-ni[0],si===0&&(ni=ni[1])):si=0,ai)},ai.lightness=function(ci){return ci==null?ii:(M$2(ci)==="array"?(ii=ci,oi=ci[1]-ci[0]):(ii=[ci,ci],oi=0),ai)},ai.scale=()=>$$3.scale(ai),ai.hue(ni),ai}const gr="0123456789abcdef",{floor:yr,random:wr}=Math,kr=()=>{let ti="#";for(let ei=0;ei<6;ei++)ti+=gr.charAt(yr(wr()*16));return new i$c(ti,"hex")},{log:at$1,pow:_r,floor:Cr,abs:Er}=Math;function ft$2(ti,ei=null){const ni={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return M$2(ti)==="object"&&(ti=Object.values(ti)),ti.forEach(ri=>{ei&&M$2(ri)==="object"&&(ri=ri[ei]),ri!=null&&!isNaN(ri)&&(ni.values.push(ri),ni.sum+=ri,ri<ni.min&&(ni.min=ri),ri>ni.max&&(ni.max=ri),ni.count+=1)}),ni.domain=[ni.min,ni.max],ni.limits=(ri,ii)=>lt$1(ni,ri,ii),ni}function lt$1(ti,ei="equal",ni=7){M$2(ti)=="array"&&(ti=ft$2(ti));const{min:ri,max:ii}=ti,si=ti.values.sort((ai,ci)=>ai-ci);if(ni===1)return[ri,ii];const oi=[];if(ei.substr(0,1)==="c"&&(oi.push(ri),oi.push(ii)),ei.substr(0,1)==="e"){oi.push(ri);for(let ai=1;ai<ni;ai++)oi.push(ri+ai/ni*(ii-ri));oi.push(ii)}else if(ei.substr(0,1)==="l"){if(ri<=0)throw new Error("Logarithmic scales are only possible for values > 0");const ai=Math.LOG10E*at$1(ri),ci=Math.LOG10E*at$1(ii);oi.push(ri);for(let ui=1;ui<ni;ui++)oi.push(_r(10,ai+ui/ni*(ci-ai)));oi.push(ii)}else if(ei.substr(0,1)==="q"){oi.push(ri);for(let ai=1;ai<ni;ai++){const ci=(si.length-1)*ai/ni,ui=Cr(ci);if(ui===ci)oi.push(si[ui]);else{const li=ci-ui;oi.push(si[ui]*(1-li)+si[ui+1]*li)}}oi.push(ii)}else if(ei.substr(0,1)==="k"){let ai;const ci=si.length,ui=new Array(ci),li=new Array(ni);let di=!0,fi=0,pi=null;pi=[],pi.push(ri);for(let bi=1;bi<ni;bi++)pi.push(ri+bi/ni*(ii-ri));for(pi.push(ii);di;){for(let gi=0;gi<ni;gi++)li[gi]=0;for(let gi=0;gi<ci;gi++){const wi=si[gi];let Ri=Number.MAX_VALUE,ki;for(let Ai=0;Ai<ni;Ai++){const Ni=Er(pi[Ai]-wi);Ni<Ri&&(Ri=Ni,ki=Ai),li[ki]++,ui[gi]=ki}}const bi=new Array(ni);for(let gi=0;gi<ni;gi++)bi[gi]=null;for(let gi=0;gi<ci;gi++)ai=ui[gi],bi[ai]===null?bi[ai]=si[gi]:bi[ai]+=si[gi];for(let gi=0;gi<ni;gi++)bi[gi]*=1/li[gi];di=!1;for(let gi=0;gi<ni;gi++)if(bi[gi]!==pi[gi]){di=!0;break}pi=bi,fi++,fi>200&&(di=!1)}const hi={};for(let bi=0;bi<ni;bi++)hi[bi]=[];for(let bi=0;bi<ci;bi++)ai=ui[bi],hi[ai].push(si[bi]);let vi=[];for(let bi=0;bi<ni;bi++)vi.push(hi[bi][0]),vi.push(hi[bi][hi[bi].length-1]);vi=vi.sort((bi,gi)=>bi-gi),oi.push(vi[0]);for(let bi=1;bi<vi.length;bi+=2){const gi=vi[bi];!isNaN(gi)&&oi.indexOf(gi)===-1&&oi.push(gi)}}return oi}const Mr=(ti,ei)=>{ti=new i$c(ti),ei=new i$c(ei);const ni=ti.luminance(),ri=ei.luminance();return ni>ri?(ni+.05)/(ri+.05):(ri+.05)/(ni+.05)},it$1=.027,xr=5e-4,$r=.1,ut$2=1.14,pe$1=.022,bt$2=1.414,Ar=(ti,ei)=>{ti=new i$c(ti),ei=new i$c(ei),ti.alpha()<1&&(ti=ee$1(ei,ti,ti.alpha(),"rgb"));const ni=ht$1(...ti.rgb()),ri=ht$1(...ei.rgb()),ii=ni>=pe$1?ni:ni+Math.pow(pe$1-ni,bt$2),si=ri>=pe$1?ri:ri+Math.pow(pe$1-ri,bt$2),oi=Math.pow(si,.56)-Math.pow(ii,.57),ai=Math.pow(si,.65)-Math.pow(ii,.62),ci=Math.abs(si-ii)<xr?0:ii<si?oi*ut$2:ai*ut$2;return(Math.abs(ci)<$r?0:ci>0?ci-it$1:ci+it$1)*100};function ht$1(ti,ei,ni){return .2126729*Math.pow(ti/255,2.4)+.7151522*Math.pow(ei/255,2.4)+.072175*Math.pow(ni/255,2.4)}const{sqrt:Z$3,pow:j$4,min:Rr,max:Lr,atan2:dt$1,abs:pt$2,cos:me$1,sin:mt$2,exp:Nr,PI:gt$2}=Math;function Pr(ti,ei,ni=1,ri=1,ii=1){var si=function(Rs){return 360*Rs/(2*gt$2)},oi=function(Rs){return 2*gt$2*Rs/360};ti=new i$c(ti),ei=new i$c(ei);const[ai,ci,ui]=Array.from(ti.lab()),[li,di,fi]=Array.from(ei.lab()),pi=(ai+li)/2,hi=Z$3(j$4(ci,2)+j$4(ui,2)),vi=Z$3(j$4(di,2)+j$4(fi,2)),bi=(hi+vi)/2,gi=.5*(1-Z$3(j$4(bi,7)/(j$4(bi,7)+j$4(25,7)))),wi=ci*(1+gi),Ri=di*(1+gi),ki=Z$3(j$4(wi,2)+j$4(ui,2)),Ai=Z$3(j$4(Ri,2)+j$4(fi,2)),Ni=(ki+Ai)/2,_i=si(dt$1(ui,wi)),Mi=si(dt$1(fi,Ri)),Bi=_i>=0?_i:_i+360,Xi=Mi>=0?Mi:Mi+360,Ii=pt$2(Bi-Xi)>180?(Bi+Xi+360)/2:(Bi+Xi)/2,Ti=1-.17*me$1(oi(Ii-30))+.24*me$1(oi(2*Ii))+.32*me$1(oi(3*Ii+6))-.2*me$1(oi(4*Ii-63));let $i=Xi-Bi;$i=pt$2($i)<=180?$i:Xi<=Bi?$i+360:$i-360,$i=2*Z$3(ki*Ai)*mt$2(oi($i)/2);const Fi=li-ai,Wi=Ai-ki,Gi=1+.015*j$4(pi-50,2)/Z$3(20+j$4(pi-50,2)),Hi=1+.045*Ni,ds=1+.015*Ni*Ti,Zi=30*Nr(-j$4((Ii-275)/25,2)),Ci=-(2*Z$3(j$4(Ni,7)/(j$4(Ni,7)+j$4(25,7))))*mt$2(2*oi(Zi)),us=Z$3(j$4(Fi/(ni*Gi),2)+j$4(Wi/(ri*Hi),2)+j$4($i/(ii*ds),2)+Ci*(Wi/(ri*Hi))*($i/(ii*ds)));return Lr(0,Rr(100,us))}function jr(ti,ei,ni="lab"){ti=new i$c(ti),ei=new i$c(ei);const ri=ti.get(ni),ii=ei.get(ni);let si=0;for(let oi in ri){const ai=(ri[oi]||0)-(ii[oi]||0);si+=ai*ai}return Math.sqrt(si)}const Br=(...ti)=>{try{return new i$c(...ti),!0}catch{return!1}},Or={cool(){return de$2([$$3.hsl(180,1,.9),$$3.hsl(250,.7,.4)])},hot(){return de$2(["#000","#f00","#ff0","#fff"]).mode("rgb")}},Ge$1={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},yt$2=Object.keys(Ge$1),wt$2=new Map(yt$2.map(ti=>[ti.toLowerCase(),ti])),vr=typeof Proxy=="function"?new Proxy(Ge$1,{get(ti,ei){const ni=ei.toLowerCase();if(wt$2.has(ni))return ti[wt$2.get(ni)]},getOwnPropertyNames(){return Object.getOwnPropertyNames(yt$2)}}):Ge$1,Sr=(...ti)=>{ti=C$4(ti,"cmyk");const[ei,ni,ri,ii]=ti,si=ti.length>4?ti[4]:1;return ii===1?[0,0,0,si]:[ei>=1?0:255*(1-ei)*(1-ii),ni>=1?0:255*(1-ni)*(1-ii),ri>=1?0:255*(1-ri)*(1-ii),si]},{max:kt$2}=Math,qr=(...ti)=>{let[ei,ni,ri]=C$4(ti,"rgb");ei=ei/255,ni=ni/255,ri=ri/255;const ii=1-kt$2(ei,kt$2(ni,ri)),si=ii<1?1/(1-ii):0,oi=(1-ei-ii)*si,ai=(1-ni-ii)*si,ci=(1-ri-ii)*si;return[oi,ai,ci,ii]};i$c.prototype.cmyk=function(){return qr(this._rgb)};const Gr=(...ti)=>new i$c(...ti,"cmyk");Object.assign($$3,{cmyk:Gr}),k$2.format.cmyk=Sr,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"cmyk"),M$2(ti)==="array"&&ti.length===4)return"cmyk"}});const zr=(...ti)=>{const ei=C$4(ti,"hsla");let ni=J$1(ti)||"lsa";return ei[0]=z$3(ei[0]||0)+"deg",ei[1]=z$3(ei[1]*100)+"%",ei[2]=z$3(ei[2]*100)+"%",ni==="hsla"||ei.length>3&&ei[3]<1?(ei[3]="/ "+(ei.length>3?ei[3]:1),ni="hsla"):ei.length=3,`${ni.substr(0,3)}(${ei.join(" ")})`},Yr=(...ti)=>{const ei=C$4(ti,"lab");let ni=J$1(ti)||"lab";return ei[0]=z$3(ei[0])+"%",ei[1]=z$3(ei[1]),ei[2]=z$3(ei[2]),ni==="laba"||ei.length>3&&ei[3]<1?ei[3]="/ "+(ei.length>3?ei[3]:1):ei.length=3,`lab(${ei.join(" ")})`},Dr=(...ti)=>{const ei=C$4(ti,"lch");let ni=J$1(ti)||"lab";return ei[0]=z$3(ei[0])+"%",ei[1]=z$3(ei[1]),ei[2]=isNaN(ei[2])?"none":z$3(ei[2])+"deg",ni==="lcha"||ei.length>3&&ei[3]<1?ei[3]="/ "+(ei.length>3?ei[3]:1):ei.length=3,`lch(${ei.join(" ")})`},Ir=(...ti)=>{const ei=C$4(ti,"lab");return ei[0]=z$3(ei[0]*100)+"%",ei[1]=Ce$2(ei[1]),ei[2]=Ce$2(ei[2]),ei.length>3&&ei[3]<1?ei[3]="/ "+(ei.length>3?ei[3]:1):ei.length=3,`oklab(${ei.join(" ")})`},_t$2=(...ti)=>{const[ei,ni,ri,...ii]=C$4(ti,"rgb"),[si,oi,ai]=Oe$2(ei,ni,ri),[ci,ui,li]=tt$1(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]},Xr=(...ti)=>{const ei=C$4(ti,"lch");return ei[0]=z$3(ei[0]*100)+"%",ei[1]=Ce$2(ei[1]),ei[2]=isNaN(ei[2])?"none":z$3(ei[2])+"deg",ei.length>3&&ei[3]<1?ei[3]="/ "+(ei.length>3?ei[3]:1):ei.length=3,`oklch(${ei.join(" ")})`},{round:ze$2}=Math,Tr=(...ti)=>{const ei=C$4(ti,"rgba");let ni=J$1(ti)||"rgb";if(ni.substr(0,3)==="hsl")return zr(rt$1(ei),ni);if(ni.substr(0,3)==="lab"){const ri=fe$1();F$2("d50");const ii=Yr($e$2(ei),ni);return F$2(ri),ii}if(ni.substr(0,3)==="lch"){const ri=fe$1();F$2("d50");const ii=Dr(Ne$2(ei),ni);return F$2(ri),ii}return ni.substr(0,5)==="oklab"?Ir(Oe$2(ei)):ni.substr(0,5)==="oklch"?Xr(_t$2(ei)):(ei[0]=ze$2(ei[0]),ei[1]=ze$2(ei[1]),ei[2]=ze$2(ei[2]),(ni==="rgba"||ei.length>3&&ei[3]<1)&&(ei[3]="/ "+(ei.length>3?ei[3]:1),ni="rgba"),`${ni.substr(0,3)}(${ei.slice(0,ni==="rgb"?3:4).join(" ")})`)},Ct$2=(...ti)=>{ti=C$4(ti,"lch");const[ei,ni,ri,...ii]=ti,[si,oi,ai]=et$1(ei,ni,ri),[ci,ui,li]=Be$2(si,oi,ai);return[ci,ui,li,...ii.length>0&&ii[0]<1?[ii[0]]:[]]},V$2=/((?:-?\d+)|(?:-?\d+(?:\.\d+)?)%|none)/.source,I$4=/((?:-?(?:\d+(?:\.\d*)?|\.\d+)%?)|none)/.source,ge$1=/((?:-?(?:\d+(?:\.\d*)?|\.\d+)%)|none)/.source,Y$2=/\s*/.source,oe$2=/\s+/.source,Ye$1=/\s*,\s*/.source,ye$1=/((?:-?(?:\d+(?:\.\d*)?|\.\d+)(?:deg)?)|none)/.source,se$2=/\s*(?:\/\s*((?:[01]|[01]?\.\d+)|\d+(?:\.\d+)?%))?/.source,Et$2=new RegExp("^rgba?\\("+Y$2+[V$2,V$2,V$2].join(oe$2)+se$2+"\\)$"),Mt$2=new RegExp("^rgb\\("+Y$2+[V$2,V$2,V$2].join(Ye$1)+Y$2+"\\)$"),xt$2=new RegExp("^rgba\\("+Y$2+[V$2,V$2,V$2,I$4].join(Ye$1)+Y$2+"\\)$"),$t$2=new RegExp("^hsla?\\("+Y$2+[ye$1,ge$1,ge$1].join(oe$2)+se$2+"\\)$"),At$2=new RegExp("^hsl?\\("+Y$2+[ye$1,ge$1,ge$1].join(Ye$1)+Y$2+"\\)$"),Rt$2=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,Lt$2=new RegExp("^lab\\("+Y$2+[I$4,I$4,I$4].join(oe$2)+se$2+"\\)$"),Nt$2=new RegExp("^lch\\("+Y$2+[I$4,I$4,ye$1].join(oe$2)+se$2+"\\)$"),Pt$2=new RegExp("^oklab\\("+Y$2+[I$4,I$4,I$4].join(oe$2)+se$2+"\\)$"),jt$2=new RegExp("^oklch\\("+Y$2+[I$4,I$4,ye$1].join(oe$2)+se$2+"\\)$"),{round:Bt$2}=Math,ce$2=ti=>ti.map((ei,ni)=>ni<=2?U$2(Bt$2(ei),0,255):ei),B$3=(ti,ei=0,ni=100,ri=!1)=>(typeof ti=="string"&&ti.endsWith("%")&&(ti=parseFloat(ti.substring(0,ti.length-1))/100,ri?ti=ei+(ti+1)*.5*(ni-ei):ti=ei+ti*(ni-ei)),+ti),G$3=(ti,ei)=>ti==="none"?ei:ti,De$2=ti=>{if(ti=ti.toLowerCase().trim(),ti==="transparent")return[0,0,0,0];let ei;if(k$2.format.named)try{return k$2.format.named(ti)}catch{}if((ei=ti.match(Et$2))||(ei=ti.match(Mt$2))){let ni=ei.slice(1,4);for(let ii=0;ii<3;ii++)ni[ii]=+B$3(G$3(ni[ii],0),0,255);ni=ce$2(ni);const ri=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ni[3]=ri,ni}if(ei=ti.match(xt$2)){const ni=ei.slice(1,5);for(let ri=0;ri<4;ri++)ni[ri]=+B$3(ni[ri],0,255);return ni}if((ei=ti.match($t$2))||(ei=ti.match(At$2))){const ni=ei.slice(1,4);ni[0]=+G$3(ni[0].replace("deg",""),0),ni[1]=+B$3(G$3(ni[1],0),0,100)*.01,ni[2]=+B$3(G$3(ni[2],0),0,100)*.01;const ri=ce$2(je$1(ni)),ii=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ri[3]=ii,ri}if(ei=ti.match(Rt$2)){const ni=ei.slice(1,4);ni[1]*=.01,ni[2]*=.01;const ri=je$1(ni);for(let ii=0;ii<3;ii++)ri[ii]=Bt$2(ri[ii]);return ri[3]=+ei[4],ri}if(ei=ti.match(Lt$2)){const ni=ei.slice(1,4);ni[0]=B$3(G$3(ni[0],0),0,100),ni[1]=B$3(G$3(ni[1],0),-125,125,!0),ni[2]=B$3(G$3(ni[2],0),-125,125,!0);const ri=fe$1();F$2("d50");const ii=ce$2(Me$2(ni));F$2(ri);const si=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ii[3]=si,ii}if(ei=ti.match(Nt$2)){const ni=ei.slice(1,4);ni[0]=B$3(ni[0],0,100),ni[1]=B$3(G$3(ni[1],0),0,150,!1),ni[2]=+G$3(ni[2].replace("deg",""),0);const ri=fe$1();F$2("d50");const ii=ce$2(Le$2(ni));F$2(ri);const si=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ii[3]=si,ii}if(ei=ti.match(Pt$2)){const ni=ei.slice(1,4);ni[0]=B$3(G$3(ni[0],0),0,1),ni[1]=B$3(G$3(ni[1],0),-.4,.4,!0),ni[2]=B$3(G$3(ni[2],0),-.4,.4,!0);const ri=ce$2(Be$2(ni)),ii=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ri[3]=ii,ri}if(ei=ti.match(jt$2)){const ni=ei.slice(1,4);ni[0]=B$3(G$3(ni[0],0),0,1),ni[1]=B$3(G$3(ni[1],0),0,.4,!1),ni[2]=+G$3(ni[2].replace("deg",""),0);const ri=ce$2(Ct$2(ni)),ii=ei[4]!==void 0?+B$3(ei[4],0,1):1;return ri[3]=ii,ri}};De$2.test=ti=>Et$2.test(ti)||$t$2.test(ti)||Lt$2.test(ti)||Nt$2.test(ti)||Pt$2.test(ti)||jt$2.test(ti)||Mt$2.test(ti)||xt$2.test(ti)||At$2.test(ti)||Rt$2.test(ti)||ti==="transparent",i$c.prototype.css=function(ti){return Tr(this._rgb,ti)};const Fr=(...ti)=>new i$c(...ti,"css");$$3.css=Fr,k$2.format.css=De$2,k$2.autodetect.push({p:5,test:(ti,...ei)=>{if(!ei.length&&M$2(ti)==="string"&&De$2.test(ti))return"css"}}),k$2.format.gl=(...ti)=>{const ei=C$4(ti,"rgba");return ei[0]*=255,ei[1]*=255,ei[2]*=255,ei};const Zr=(...ti)=>new i$c(...ti,"gl");$$3.gl=Zr,i$c.prototype.gl=function(){const ti=this._rgb;return[ti[0]/255,ti[1]/255,ti[2]/255,ti[3]]},i$c.prototype.hex=function(ti){return Ue$1(this._rgb,ti)};const Vr=(...ti)=>new i$c(...ti,"hex");$$3.hex=Vr,k$2.format.hex=We$1,k$2.autodetect.push({p:4,test:(ti,...ei)=>{if(!ei.length&&M$2(ti)==="string"&&[3,4,5,6,7,8,9].indexOf(ti.length)>=0)return"hex"}});const{log:we$2}=Math,Ot$2=ti=>{const ei=ti/100;let ni,ri,ii;return ei<66?(ni=255,ri=ei<6?0:-155.25485562709179-.44596950469579133*(ri=ei-2)+104.49216199393888*we$2(ri),ii=ei<20?0:-254.76935184120902+.8274096064007395*(ii=ei-10)+115.67994401066147*we$2(ii)):(ni=351.97690566805693+.114206453784165*(ni=ei-55)-40.25366309332127*we$2(ni),ri=325.4494125711974+.07943456536662342*(ri=ei-50)-28.0852963507957*we$2(ri),ii=255),[ni,ri,ii,1]},{round:Hr}=Math,Kr=(...ti)=>{const ei=C$4(ti,"rgb"),ni=ei[0],ri=ei[2];let ii=1e3,si=4e4;const oi=.4;let ai;for(;si-ii>oi;){ai=(si+ii)*.5;const ci=Ot$2(ai);ci[2]/ci[0]>=ri/ni?si=ai:ii=ai}return Hr(ai)};i$c.prototype.temp=i$c.prototype.kelvin=i$c.prototype.temperature=function(){return Kr(this._rgb)};const Ie$2=(...ti)=>new i$c(...ti,"temp");Object.assign($$3,{temp:Ie$2,kelvin:Ie$2,temperature:Ie$2}),k$2.format.temp=k$2.format.kelvin=k$2.format.temperature=Ot$2,i$c.prototype.oklch=function(){return _t$2(this._rgb)};const Wr=(...ti)=>new i$c(...ti,"oklch");Object.assign($$3,{oklch:Wr}),k$2.format.oklch=Ct$2,k$2.autodetect.push({p:2,test:(...ti)=>{if(ti=C$4(ti,"oklch"),M$2(ti)==="array"&&ti.length===3)return"oklch"}}),Object.assign($$3,{analyze:ft$2,average:Un,bezier:rr,blend:D$2,brewer:vr,Color:i$c,colors:Q$1,contrast:Mr,contrastAPCA:Ar,cubehelix:mr,deltaE:Pr,distance:jr,input:k$2,interpolate:ee$1,limits:lt$1,mix:ee$1,random:kr,scale:de$2,scales:Or,valid:Br});const Xe=[.96,.907,.805,.697,.605,.547,.518,.445,.395,.34],vt$2=[.32,.16,.08,.04,0,0,.04,.08,.16,.32];function Ur(ti){const ei=ti.get("hsl.l");return Xe.reduce((ni,ri)=>Math.abs(ri-ei)<Math.abs(ni-ei)?ri:ni)}function Jr(ti){const ei=$$3(ti),ni=Ur(ei),ri=Xe.findIndex(si=>si===ni),ii=Xe.map(si=>ei.set("hsl.l",si)).map(si=>$$3(si)).map((si,oi)=>{const ai=vt$2[oi]-vt$2[ri];return ai>=0?si.saturate(ai):si.desaturate(ai*-1)});return{baseColorIndex:ri,colors:ii}}function Qr(ti){return Jr(ti).colors.map(ei=>ei.hex())}const St$2={fill:"#3b82f6",stroke:"#2563eb",hiContrast:"#eff6ff",loContrast:"#bfdbfe"},qt$2={fill:"#0284c7",stroke:"#0369a1",hiContrast:"#f0f9ff",loContrast:"#B6ECF7"},Gt$2={fill:"#64748b",stroke:"#475569",hiContrast:"#f8fafc",loContrast:"#cbd5e1"},zt$2={primary:St$2,blue:St$2,secondary:qt$2,sky:qt$2,muted:Gt$2,slate:Gt$2,gray:{fill:"#737373",stroke:"#525252",hiContrast:"#fafafa",loContrast:"#d4d4d4"},red:{fill:"#AC4D39",stroke:"#853A2D",hiContrast:"#FBD3CB",loContrast:"#f5b2a3"},green:{fill:"#428a4f",stroke:"#2d5d39",hiContrast:"#f8fafc",loContrast:"#c2f0c2"},amber:{fill:"#A35829",stroke:"#7E451D",hiContrast:"#FFE0C2",loContrast:"#f9b27c"},indigo:{fill:"#6366f1",stroke:"#4f46e5",hiContrast:"#eef2ff",loContrast:"#c7d2fe"}},e0={lineColor:"#6E6E6E",labelBgColor:"#18191b",labelColor:"#C6C6C6"},Yt$2={lineColor:"#64748b",labelBgColor:"#0f172a",labelColor:"#cbd5e1"},Dt$2={lineColor:"#3b82f6",labelBgColor:"#172554",labelColor:"#60a5fa"},It$2={lineColor:"#0ea5e9",labelBgColor:"#082f49",labelColor:"#38bdf8"},Xt$2={amber:{lineColor:"#b45309",labelBgColor:"#78350f",labelColor:"#FFE0C2"},blue:Dt$2,gray:e0,green:{lineColor:"#15803d",labelBgColor:"#052e16",labelColor:"#22c55e"},indigo:{lineColor:"#6366f1",labelBgColor:"#1e1b4b",labelColor:"#818cf8"},muted:Yt$2,primary:Dt$2,red:{lineColor:"#AC4D39",labelBgColor:"#b91c1c",labelColor:"#f5b2a3"},secondary:It$2,sky:It$2,slate:Yt$2},Te$2={elements:zt$2,relationships:Xt$2,font:"Arial",shadow:"#0a0a0a"};function t0(ti){if(ti.match(/^#([0-9a-f]{3}){1,2}$/i)){const ei=Qr(ti);return{elements:{fill:ei[6],stroke:ei[7],hiContrast:ei[0],loContrast:ei[1]},relationships:{lineColor:ei[4],labelColor:ei[3],labelBgColor:ei[9]}}}else return{elements:Te$2.elements.primary,relationships:Te$2.relationships.primary}}function isPlainObject$1(ti){if(ti===null||typeof ti!="object")return!1;const ei=Object.getPrototypeOf(ti);return ei!==null&&ei!==Object.prototype&&Object.getPrototypeOf(ei)!==null||Symbol.iterator in ti?!1:Symbol.toStringTag in ti?Object.prototype.toString.call(ti)==="[object Module]":!0}function _defu(ti,ei,ni=".",ri){if(!isPlainObject$1(ei))return _defu(ti,{},ni,ri);const ii=Object.assign({},ei);for(const si in ti){if(si==="__proto__"||si==="constructor")continue;const oi=ti[si];oi!=null&&(ri&&ri(ii,si,oi,ni)||(Array.isArray(oi)&&Array.isArray(ii[si])?ii[si]=[...oi,...ii[si]]:isPlainObject$1(oi)&&isPlainObject$1(ii[si])?ii[si]=_defu(oi,ii[si],(ni?`${ni}.`:"")+si.toString(),ri):ii[si]=oi))}return ii}function createDefu(ti){return(...ei)=>ei.reduce((ni,ri)=>_defu(ni,ri,"",ti),{})}const defu=createDefu();function isAstNode(ti){return typeof ti=="object"&&ti!==null&&typeof ti.$type=="string"}function isReference(ti){return typeof ti=="object"&&ti!==null&&typeof ti.$refText=="string"}function isAstNodeDescription(ti){return typeof ti=="object"&&ti!==null&&typeof ti.name=="string"&&typeof ti.type=="string"&&typeof ti.path=="string"}function isLinkingError(ti){return typeof ti=="object"&&ti!==null&&isAstNode(ti.container)&&isReference(ti.reference)&&typeof ti.message=="string"}class AbstractAstReflection{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(ei,ni){return isAstNode(ei)&&this.isSubtype(ei.$type,ni)}isSubtype(ei,ni){if(ei===ni)return!0;let ri=this.subtypes[ei];ri||(ri=this.subtypes[ei]={});const ii=ri[ni];if(ii!==void 0)return ii;{const si=this.computeIsSubtype(ei,ni);return ri[ni]=si,si}}getAllSubTypes(ei){const ni=this.allSubtypes[ei];if(ni)return ni;{const ri=this.getAllTypes(),ii=[];for(const si of ri)this.isSubtype(si,ei)&&ii.push(si);return this.allSubtypes[ei]=ii,ii}}}function isCompositeCstNode(ti){return typeof ti=="object"&&ti!==null&&Array.isArray(ti.content)}function isLeafCstNode(ti){return typeof ti=="object"&&ti!==null&&typeof ti.tokenType=="object"}function isRootCstNode(ti){return isCompositeCstNode(ti)&&typeof ti.fullText=="string"}class StreamImpl{constructor(ei,ni){this.startFn=ei,this.nextFn=ni}iterator(){const ei={state:this.startFn(),next:()=>this.nextFn(ei.state),[Symbol.iterator]:()=>ei};return ei}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){const ei=this.iterator();let ni=0,ri=ei.next();for(;!ri.done;)ni++,ri=ei.next();return ni}toArray(){const ei=[],ni=this.iterator();let ri;do ri=ni.next(),ri.value!==void 0&&ei.push(ri.value);while(!ri.done);return ei}toSet(){return new Set(this)}toMap(ei,ni){const ri=this.map(ii=>[ei?ei(ii):ii,ni?ni(ii):ii]);return new Map(ri)}toString(){return this.join()}concat(ei){return new StreamImpl(()=>({first:this.startFn(),firstDone:!1,iterator:ei[Symbol.iterator]()}),ni=>{let ri;if(!ni.firstDone){do if(ri=this.nextFn(ni.first),!ri.done)return ri;while(!ri.done);ni.firstDone=!0}do if(ri=ni.iterator.next(),!ri.done)return ri;while(!ri.done);return DONE_RESULT})}join(ei=","){const ni=this.iterator();let ri="",ii,si=!1;do ii=ni.next(),ii.done||(si&&(ri+=ei),ri+=toString$2(ii.value)),si=!0;while(!ii.done);return ri}indexOf(ei,ni=0){const ri=this.iterator();let ii=0,si=ri.next();for(;!si.done;){if(ii>=ni&&si.value===ei)return ii;si=ri.next(),ii++}return-1}every(ei){const ni=this.iterator();let ri=ni.next();for(;!ri.done;){if(!ei(ri.value))return!1;ri=ni.next()}return!0}some(ei){const ni=this.iterator();let ri=ni.next();for(;!ri.done;){if(ei(ri.value))return!0;ri=ni.next()}return!1}forEach(ei){const ni=this.iterator();let ri=0,ii=ni.next();for(;!ii.done;)ei(ii.value,ri),ii=ni.next(),ri++}map(ei){return new StreamImpl(this.startFn,ni=>{const{done:ri,value:ii}=this.nextFn(ni);return ri?DONE_RESULT:{done:!1,value:ei(ii)}})}filter(ei){return new StreamImpl(this.startFn,ni=>{let ri;do if(ri=this.nextFn(ni),!ri.done&&ei(ri.value))return ri;while(!ri.done);return DONE_RESULT})}nonNullable(){return this.filter(ei=>ei!=null)}reduce(ei,ni){const ri=this.iterator();let ii=ni,si=ri.next();for(;!si.done;)ii===void 0?ii=si.value:ii=ei(ii,si.value),si=ri.next();return ii}reduceRight(ei,ni){return this.recursiveReduce(this.iterator(),ei,ni)}recursiveReduce(ei,ni,ri){const ii=ei.next();if(ii.done)return ri;const si=this.recursiveReduce(ei,ni,ri);return si===void 0?ii.value:ni(si,ii.value)}find(ei){const ni=this.iterator();let ri=ni.next();for(;!ri.done;){if(ei(ri.value))return ri.value;ri=ni.next()}}findIndex(ei){const ni=this.iterator();let ri=0,ii=ni.next();for(;!ii.done;){if(ei(ii.value))return ri;ii=ni.next(),ri++}return-1}includes(ei){const ni=this.iterator();let ri=ni.next();for(;!ri.done;){if(ri.value===ei)return!0;ri=ni.next()}return!1}flatMap(ei){return new StreamImpl(()=>({this:this.startFn()}),ni=>{do{if(ni.iterator){const si=ni.iterator.next();if(si.done)ni.iterator=void 0;else return si}const{done:ri,value:ii}=this.nextFn(ni.this);if(!ri){const si=ei(ii);if(isIterable(si))ni.iterator=si[Symbol.iterator]();else return{done:!1,value:si}}}while(ni.iterator);return DONE_RESULT})}flat(ei){if(ei===void 0&&(ei=1),ei<=0)return this;const ni=ei>1?this.flat(ei-1):this;return new StreamImpl(()=>({this:ni.startFn()}),ri=>{do{if(ri.iterator){const oi=ri.iterator.next();if(oi.done)ri.iterator=void 0;else return oi}const{done:ii,value:si}=ni.nextFn(ri.this);if(!ii)if(isIterable(si))ri.iterator=si[Symbol.iterator]();else return{done:!1,value:si}}while(ri.iterator);return DONE_RESULT})}head(){const ni=this.iterator().next();if(!ni.done)return ni.value}tail(ei=1){return new StreamImpl(()=>{const ni=this.startFn();for(let ri=0;ri<ei;ri++)if(this.nextFn(ni).done)return ni;return ni},this.nextFn)}limit(ei){return new StreamImpl(()=>({size:0,state:this.startFn()}),ni=>(ni.size++,ni.size>ei?DONE_RESULT:this.nextFn(ni.state)))}distinct(ei){return new StreamImpl(()=>({set:new Set,internalState:this.startFn()}),ni=>{let ri;do if(ri=this.nextFn(ni.internalState),!ri.done){const ii=ei?ei(ri.value):ri.value;if(!ni.set.has(ii))return ni.set.add(ii),ri}while(!ri.done);return DONE_RESULT})}exclude(ei,ni){const ri=new Set;for(const ii of ei){const si=ni?ni(ii):ii;ri.add(si)}return this.filter(ii=>{const si=ni?ni(ii):ii;return!ri.has(si)})}}function toString$2(ti){return typeof ti=="string"?ti:typeof ti>"u"?"undefined":typeof ti.toString=="function"?ti.toString():Object.prototype.toString.call(ti)}function isIterable(ti){return!!ti&&typeof ti[Symbol.iterator]=="function"}const EMPTY_STREAM=new StreamImpl(()=>{},()=>DONE_RESULT),DONE_RESULT=Object.freeze({done:!0,value:void 0});function stream(...ti){if(ti.length===1){const ei=ti[0];if(ei instanceof StreamImpl)return ei;if(isIterable(ei))return new StreamImpl(()=>ei[Symbol.iterator](),ni=>ni.next());if(typeof ei.length=="number")return new StreamImpl(()=>({index:0}),ni=>ni.index<ei.length?{done:!1,value:ei[ni.index++]}:DONE_RESULT)}return ti.length>1?new StreamImpl(()=>({collIndex:0,arrIndex:0}),ei=>{do{if(ei.iterator){const ni=ei.iterator.next();if(!ni.done)return ni;ei.iterator=void 0}if(ei.array){if(ei.arrIndex<ei.array.length)return{done:!1,value:ei.array[ei.arrIndex++]};ei.array=void 0,ei.arrIndex=0}if(ei.collIndex<ti.length){const ni=ti[ei.collIndex++];isIterable(ni)?ei.iterator=ni[Symbol.iterator]():ni&&typeof ni.length=="number"&&(ei.array=ni)}}while(ei.iterator||ei.array||ei.collIndex<ti.length);return DONE_RESULT}):EMPTY_STREAM}class TreeStreamImpl extends StreamImpl{constructor(ei,ni,ri){super(()=>({iterators:ri?.includeRoot?[[ei][Symbol.iterator]()]:[ni(ei)[Symbol.iterator]()],pruned:!1}),ii=>{for(ii.pruned&&(ii.iterators.pop(),ii.pruned=!1);ii.iterators.length>0;){const oi=ii.iterators[ii.iterators.length-1].next();if(oi.done)ii.iterators.pop();else return ii.iterators.push(ni(oi.value)[Symbol.iterator]()),oi}return DONE_RESULT})}iterator(){const ei={state:this.startFn(),next:()=>this.nextFn(ei.state),prune:()=>{ei.state.pruned=!0},[Symbol.iterator]:()=>ei};return ei}}var Reduction;(function(ti){function ei(si){return si.reduce((oi,ai)=>oi+ai,0)}ti.sum=ei;function ni(si){return si.reduce((oi,ai)=>oi*ai,0)}ti.product=ni;function ri(si){return si.reduce((oi,ai)=>Math.min(oi,ai))}ti.min=ri;function ii(si){return si.reduce((oi,ai)=>Math.max(oi,ai))}ti.max=ii})(Reduction||(Reduction={}));function streamCst(ti){return new TreeStreamImpl(ti,ei=>isCompositeCstNode(ei)?ei.content:[],{includeRoot:!0})}function flattenCst(ti){return streamCst(ti).filter(isLeafCstNode)}function isChildNode(ti,ei){for(;ti.container;)if(ti=ti.container,ti===ei)return!0;return!1}function tokenToRange(ti){return{start:{character:ti.startColumn-1,line:ti.startLine-1},end:{character:ti.endColumn,line:ti.endLine-1}}}function toDocumentSegment(ti){if(!ti)return;const{offset:ei,end:ni,range:ri}=ti;return{range:ri,offset:ei,end:ni,length:ni-ei}}var RangeComparison;(function(ti){ti[ti.Before=0]="Before",ti[ti.After=1]="After",ti[ti.OverlapFront=2]="OverlapFront",ti[ti.OverlapBack=3]="OverlapBack",ti[ti.Inside=4]="Inside",ti[ti.Outside=5]="Outside"})(RangeComparison||(RangeComparison={}));function compareRange(ti,ei){if(ti.end.line<ei.start.line||ti.end.line===ei.start.line&&ti.end.character<=ei.start.character)return RangeComparison.Before;if(ti.start.line>ei.end.line||ti.start.line===ei.end.line&&ti.start.character>=ei.end.character)return RangeComparison.After;const ni=ti.start.line>ei.start.line||ti.start.line===ei.start.line&&ti.start.character>=ei.start.character,ri=ti.end.line<ei.end.line||ti.end.line===ei.end.line&&ti.end.character<=ei.end.character;return ni&&ri?RangeComparison.Inside:ni?RangeComparison.OverlapBack:ri?RangeComparison.OverlapFront:RangeComparison.Outside}function inRange(ti,ei){return compareRange(ti,ei)>RangeComparison.After}const DefaultNameRegexp=/^[\w\p{L}]$/u;function findDeclarationNodeAtOffset(ti,ei,ni=DefaultNameRegexp){if(ti){if(ei>0){const ri=ei-ti.offset,ii=ti.text.charAt(ri);ni.test(ii)||ei--}return findLeafNodeAtOffset(ti,ei)}}function findCommentNode(ti,ei){if(ti){const ni=getPreviousNode(ti,!0);if(ni&&isCommentNode(ni,ei))return ni;if(isRootCstNode(ti)){const ri=ti.content.findIndex(ii=>!ii.hidden);for(let ii=ri-1;ii>=0;ii--){const si=ti.content[ii];if(isCommentNode(si,ei))return si}}}}function isCommentNode(ti,ei){return isLeafCstNode(ti)&&ei.includes(ti.tokenType.name)}function findLeafNodeAtOffset(ti,ei){if(isLeafCstNode(ti))return ti;if(isCompositeCstNode(ti)){const ni=binarySearch(ti,ei,!1);if(ni)return findLeafNodeAtOffset(ni,ei)}}function findLeafNodeBeforeOffset(ti,ei){if(isLeafCstNode(ti))return ti;if(isCompositeCstNode(ti)){const ni=binarySearch(ti,ei,!0);if(ni)return findLeafNodeBeforeOffset(ni,ei)}}function binarySearch(ti,ei,ni){let ri=0,ii=ti.content.length-1,si;for(;ri<=ii;){const oi=Math.floor((ri+ii)/2),ai=ti.content[oi];if(ai.offset<=ei&&ai.end>ei)return ai;ai.end<=ei?(si=ni?ai:void 0,ri=oi+1):ii=oi-1}return si}function getPreviousNode(ti,ei=!0){for(;ti.container;){const ni=ti.container;let ri=ni.content.indexOf(ti);for(;ri>0;){ri--;const ii=ni.content[ri];if(ei||!ii.hidden)return ii}ti=ni}}function getNextNode(ti,ei=!0){for(;ti.container;){const ni=ti.container;let ri=ni.content.indexOf(ti);const ii=ni.content.length-1;for(;ri<ii;){ri++;const si=ni.content[ri];if(ei||!si.hidden)return si}ti=ni}}function getStartlineNode(ti){if(ti.range.start.character===0)return ti;const ei=ti.range.start.line;let ni=ti,ri;for(;ti.container;){const ii=ti.container,si=ri??ii.content.indexOf(ti);if(si===0?(ti=ii,ri=void 0):(ri=si-1,ti=ii.content[ri]),ti.range.start.line!==ei)break;ni=ti}return ni}function getInteriorNodes(ti,ei){const ni=getCommonParent(ti,ei);return ni?ni.parent.content.slice(ni.a+1,ni.b):[]}function getCommonParent(ti,ei){const ni=getParentChain(ti),ri=getParentChain(ei);let ii;for(let si=0;si<ni.length&&si<ri.length;si++){const oi=ni[si],ai=ri[si];if(oi.parent===ai.parent)ii={parent:oi.parent,a:oi.index,b:ai.index};else break}return ii}function getParentChain(ti){const ei=[];for(;ti.container;){const ni=ti.container,ri=ni.content.indexOf(ti);ei.push({parent:ni,index:ri}),ti=ni}return ei.reverse()}const q$1={__proto__:null,DefaultNameRegexp,get RangeComparison(){return RangeComparison},compareRange,findCommentNode,findDeclarationNodeAtOffset,findLeafNodeAtOffset,findLeafNodeBeforeOffset,flattenCst,getInteriorNodes,getNextNode,getPreviousNode,getStartlineNode,inRange,isChildNode,isCommentNode,streamCst,toDocumentSegment,tokenToRange};class ErrorWithLocation extends Error{constructor(ei,ni){super(ei?`${ni} at ${ei.range.start.line}:${ei.range.start.character}`:ni)}}function assertUnreachable(ti){throw new Error("Error! The input value was not handled.")}const AbstractRule="AbstractRule",AbstractType="AbstractType",Condition="Condition",TypeDefinition="TypeDefinition",ValueLiteral="ValueLiteral",AbstractElement="AbstractElement";function isAbstractElement(ti){return reflection$1.isInstance(ti,AbstractElement)}const ArrayLiteral="ArrayLiteral",ArrayType="ArrayType";function isArrayType(ti){return reflection$1.isInstance(ti,ArrayType)}const BooleanLiteral="BooleanLiteral";function isBooleanLiteral(ti){return reflection$1.isInstance(ti,BooleanLiteral)}const Conjunction="Conjunction";function isConjunction(ti){return reflection$1.isInstance(ti,Conjunction)}const Disjunction="Disjunction";function isDisjunction(ti){return reflection$1.isInstance(ti,Disjunction)}const Grammar="Grammar",GrammarImport="GrammarImport",InferredType="InferredType";function isInferredType(ti){return reflection$1.isInstance(ti,InferredType)}const Interface="Interface";function isInterface(ti){return reflection$1.isInstance(ti,Interface)}const NamedArgument="NamedArgument",Negation="Negation";function isNegation(ti){return reflection$1.isInstance(ti,Negation)}const NumberLiteral="NumberLiteral",Parameter="Parameter",ParameterReference="ParameterReference";function isParameterReference(ti){return reflection$1.isInstance(ti,ParameterReference)}const ParserRule="ParserRule";function isParserRule(ti){return reflection$1.isInstance(ti,ParserRule)}const ReferenceType="ReferenceType";function isReferenceType(ti){return reflection$1.isInstance(ti,ReferenceType)}const ReturnType="ReturnType";function isReturnType(ti){return reflection$1.isInstance(ti,ReturnType)}const SimpleType="SimpleType";function isSimpleType(ti){return reflection$1.isInstance(ti,SimpleType)}const StringLiteral="StringLiteral",TerminalRule="TerminalRule";function isTerminalRule(ti){return reflection$1.isInstance(ti,TerminalRule)}const Type$1="Type";function isType(ti){return reflection$1.isInstance(ti,Type$1)}const TypeAttribute="TypeAttribute",UnionType="UnionType";function isUnionType(ti){return reflection$1.isInstance(ti,UnionType)}const Action="Action";function isAction(ti){return reflection$1.isInstance(ti,Action)}const Alternatives="Alternatives";function isAlternatives(ti){return reflection$1.isInstance(ti,Alternatives)}const Assignment="Assignment";function isAssignment(ti){return reflection$1.isInstance(ti,Assignment)}const CharacterRange="CharacterRange";function isCharacterRange(ti){return reflection$1.isInstance(ti,CharacterRange)}const CrossReference="CrossReference";function isCrossReference(ti){return reflection$1.isInstance(ti,CrossReference)}const EndOfFile="EndOfFile";function isEndOfFile(ti){return reflection$1.isInstance(ti,EndOfFile)}const Group="Group";function isGroup(ti){return reflection$1.isInstance(ti,Group)}const Keyword$1="Keyword";function isKeyword(ti){return reflection$1.isInstance(ti,Keyword$1)}const NegatedToken="NegatedToken";function isNegatedToken(ti){return reflection$1.isInstance(ti,NegatedToken)}const RegexToken="RegexToken";function isRegexToken(ti){return reflection$1.isInstance(ti,RegexToken)}const RuleCall="RuleCall";function isRuleCall(ti){return reflection$1.isInstance(ti,RuleCall)}const TerminalAlternatives="TerminalAlternatives";function isTerminalAlternatives(ti){return reflection$1.isInstance(ti,TerminalAlternatives)}const TerminalGroup="TerminalGroup";function isTerminalGroup(ti){return reflection$1.isInstance(ti,TerminalGroup)}const TerminalRuleCall="TerminalRuleCall";function isTerminalRuleCall(ti){return reflection$1.isInstance(ti,TerminalRuleCall)}const UnorderedGroup="UnorderedGroup";function isUnorderedGroup(ti){return reflection$1.isInstance(ti,UnorderedGroup)}const UntilToken="UntilToken";function isUntilToken(ti){return reflection$1.isInstance(ti,UntilToken)}const Wildcard="Wildcard";function isWildcard(ti){return reflection$1.isInstance(ti,Wildcard)}class LangiumGrammarAstReflection extends AbstractAstReflection{getAllTypes(){return[AbstractElement,AbstractRule,AbstractType,Action,Alternatives,ArrayLiteral,ArrayType,Assignment,BooleanLiteral,CharacterRange,Condition,Conjunction,CrossReference,Disjunction,EndOfFile,Grammar,GrammarImport,Group,InferredType,Interface,Keyword$1,NamedArgument,NegatedToken,Negation,NumberLiteral,Parameter,ParameterReference,ParserRule,ReferenceType,RegexToken,ReturnType,RuleCall,SimpleType,StringLiteral,TerminalAlternatives,TerminalGroup,TerminalRule,TerminalRuleCall,Type$1,TypeAttribute,TypeDefinition,UnionType,UnorderedGroup,UntilToken,ValueLiteral,Wildcard]}computeIsSubtype(ei,ni){switch(ei){case Action:case Alternatives:case Assignment:case CharacterRange:case CrossReference:case EndOfFile:case Group:case Keyword$1:case NegatedToken:case RegexToken:case RuleCall:case TerminalAlternatives:case TerminalGroup:case TerminalRuleCall:case UnorderedGroup:case UntilToken:case Wildcard:return this.isSubtype(AbstractElement,ni);case ArrayLiteral:case NumberLiteral:case StringLiteral:return this.isSubtype(ValueLiteral,ni);case ArrayType:case ReferenceType:case SimpleType:case UnionType:return this.isSubtype(TypeDefinition,ni);case BooleanLiteral:return this.isSubtype(Condition,ni)||this.isSubtype(ValueLiteral,ni);case Conjunction:case Disjunction:case Negation:case ParameterReference:return this.isSubtype(Condition,ni);case InferredType:case Interface:case Type$1:return this.isSubtype(AbstractType,ni);case ParserRule:return this.isSubtype(AbstractRule,ni)||this.isSubtype(AbstractType,ni);case TerminalRule:return this.isSubtype(AbstractRule,ni);default:return!1}}getReferenceType(ei){const ni=`${ei.container.$type}:${ei.property}`;switch(ni){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return AbstractType;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return AbstractRule;case"Grammar:usedGrammars":return Grammar;case"NamedArgument:parameter":case"ParameterReference:parameter":return Parameter;case"TerminalRuleCall:rule":return TerminalRule;default:throw new Error(`${ni} is not a valid reference id.`)}}getTypeMetaData(ei){switch(ei){case AbstractElement:return{name:AbstractElement,properties:[{name:"cardinality"},{name:"lookahead"}]};case ArrayLiteral:return{name:ArrayLiteral,properties:[{name:"elements",defaultValue:[]}]};case ArrayType:return{name:ArrayType,properties:[{name:"elementType"}]};case BooleanLiteral:return{name:BooleanLiteral,properties:[{name:"true",defaultValue:!1}]};case Conjunction:return{name:Conjunction,properties:[{name:"left"},{name:"right"}]};case Disjunction:return{name:Disjunction,properties:[{name:"left"},{name:"right"}]};case Grammar:return{name:Grammar,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case GrammarImport:return{name:GrammarImport,properties:[{name:"path"}]};case InferredType:return{name:InferredType,properties:[{name:"name"}]};case Interface:return{name:Interface,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case NamedArgument:return{name:NamedArgument,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case Negation:return{name:Negation,properties:[{name:"value"}]};case NumberLiteral:return{name:NumberLiteral,properties:[{name:"value"}]};case Parameter:return{name:Parameter,properties:[{name:"name"}]};case ParameterReference:return{name:ParameterReference,properties:[{name:"parameter"}]};case ParserRule:return{name:ParserRule,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case ReferenceType:return{name:ReferenceType,properties:[{name:"referenceType"}]};case ReturnType:return{name:ReturnType,properties:[{name:"name"}]};case SimpleType:return{name:SimpleType,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case StringLiteral:return{name:StringLiteral,properties:[{name:"value"}]};case TerminalRule:return{name:TerminalRule,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case Type$1:return{name:Type$1,properties:[{name:"name"},{name:"type"}]};case TypeAttribute:return{name:TypeAttribute,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case UnionType:return{name:UnionType,properties:[{name:"types",defaultValue:[]}]};case Action:return{name:Action,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Alternatives:return{name:Alternatives,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Assignment:return{name:Assignment,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case CharacterRange:return{name:CharacterRange,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case CrossReference:return{name:CrossReference,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case EndOfFile:return{name:EndOfFile,properties:[{name:"cardinality"},{name:"lookahead"}]};case Group:return{name:Group,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case Keyword$1:return{name:Keyword$1,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case NegatedToken:return{name:NegatedToken,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case RegexToken:return{name:RegexToken,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case RuleCall:return{name:RuleCall,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case TerminalAlternatives:return{name:TerminalAlternatives,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case TerminalGroup:return{name:TerminalGroup,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case TerminalRuleCall:return{name:TerminalRuleCall,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case UnorderedGroup:return{name:UnorderedGroup,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case UntilToken:return{name:UntilToken,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case Wildcard:return{name:Wildcard,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:ei,properties:[]}}}}const reflection$1=new LangiumGrammarAstReflection;function linkContentToContainer(ti){for(const[ei,ni]of Object.entries(ti))ei.startsWith("$")||(Array.isArray(ni)?ni.forEach((ri,ii)=>{isAstNode(ri)&&(ri.$container=ti,ri.$containerProperty=ei,ri.$containerIndex=ii)}):isAstNode(ni)&&(ni.$container=ti,ni.$containerProperty=ei))}function getContainerOfType(ti,ei){let ni=ti;for(;ni;){if(ei(ni))return ni;ni=ni.$container}}function hasContainerOfType(ti,ei){let ni=ti;for(;ni;){if(ei(ni))return!0;ni=ni.$container}return!1}function getDocument(ti){const ni=findRootNode(ti).$document;if(!ni)throw new Error("AST node has no document.");return ni}function findRootNode(ti){for(;ti.$container;)ti=ti.$container;return ti}function streamContents(ti,ei){if(!ti)throw new Error("Node must be an AstNode.");const ni=ei?.range;return new StreamImpl(()=>({keys:Object.keys(ti),keyIndex:0,arrayIndex:0}),ri=>{for(;ri.keyIndex<ri.keys.length;){const ii=ri.keys[ri.keyIndex];if(!ii.startsWith("$")){const si=ti[ii];if(isAstNode(si)){if(ri.keyIndex++,isAstNodeInRange(si,ni))return{done:!1,value:si}}else if(Array.isArray(si)){for(;ri.arrayIndex<si.length;){const oi=ri.arrayIndex++,ai=si[oi];if(isAstNode(ai)&&isAstNodeInRange(ai,ni))return{done:!1,value:ai}}ri.arrayIndex=0}}ri.keyIndex++}return DONE_RESULT})}function streamAllContents(ti,ei){if(!ti)throw new Error("Root node must be an AstNode.");return new TreeStreamImpl(ti,ni=>streamContents(ni,ei))}function streamAst(ti,ei){if(ti){if(ei?.range&&!isAstNodeInRange(ti,ei.range))return new TreeStreamImpl(ti,()=>[])}else throw new Error("Root node must be an AstNode.");return new TreeStreamImpl(ti,ni=>streamContents(ni,ei),{includeRoot:!0})}function isAstNodeInRange(ti,ei){var ni;if(!ei)return!0;const ri=(ni=ti.$cstNode)===null||ni===void 0?void 0:ni.range;return ri?inRange(ri,ei):!1}function streamReferences(ti){return new StreamImpl(()=>({keys:Object.keys(ti),keyIndex:0,arrayIndex:0}),ei=>{for(;ei.keyIndex<ei.keys.length;){const ni=ei.keys[ei.keyIndex];if(!ni.startsWith("$")){const ri=ti[ni];if(isReference(ri))return ei.keyIndex++,{done:!1,value:{reference:ri,container:ti,property:ni}};if(Array.isArray(ri)){for(;ei.arrayIndex<ri.length;){const ii=ei.arrayIndex++,si=ri[ii];if(isReference(si))return{done:!1,value:{reference:si,container:ti,property:ni,index:ii}}}ei.arrayIndex=0}}ei.keyIndex++}return DONE_RESULT})}function findLocalReferences(ti,ei=getDocument(ti).parseResult.value){const ni=[];return streamAst(ei).forEach(ri=>{streamReferences(ri).forEach(ii=>{ii.reference.ref===ti&&ni.push(ii.reference)})}),stream(ni)}function assignMandatoryProperties(ti,ei){const ni=ti.getTypeMetaData(ei.$type),ri=ei;for(const ii of ni.properties)ii.defaultValue!==void 0&&ri[ii.name]===void 0&&(ri[ii.name]=copyDefaultValue(ii.defaultValue))}function copyDefaultValue(ti){return Array.isArray(ti)?[...ti.map(copyDefaultValue)]:ti}function copyAstNode(ti,ei){const ni={$type:ti.$type};for(const[ri,ii]of Object.entries(ti))if(!ri.startsWith("$"))if(isAstNode(ii))ni[ri]=copyAstNode(ii,ei);else if(isReference(ii))ni[ri]=ei(ni,ri,ii.$refNode,ii.$refText);else if(Array.isArray(ii)){const si=[];for(const oi of ii)isAstNode(oi)?si.push(copyAstNode(oi,ei)):isReference(oi)?si.push(ei(ni,ri,oi.$refNode,oi.$refText)):si.push(oi);ni[ri]=si}else ni[ri]=ii;return linkContentToContainer(ni),ni}const f$9={__proto__:null,assignMandatoryProperties,copyAstNode,findLocalReferences,findRootNode,getContainerOfType,getDocument,hasContainerOfType,linkContentToContainer,streamAllContents,streamAst,streamContents,streamReferences};function cc(ti){return ti.charCodeAt(0)}function insertToSet(ti,ei){Array.isArray(ti)?ti.forEach(function(ni){ei.push(ni)}):ei.push(ti)}function addFlag(ti,ei){if(ti[ei]===!0)throw"duplicate flag "+ei;ti[ei],ti[ei]=!0}function ASSERT_EXISTS(ti){if(ti===void 0)throw Error("Internal Error - Should never get here!");return!0}function ASSERT_NEVER_REACH_HERE(){throw Error("Internal Error - Should never get here!")}function isCharacter(ti){return ti.type==="Character"}const digitsCharCodes=[];for(let ti=cc("0");ti<=cc("9");ti++)digitsCharCodes.push(ti);const wordCharCodes=[cc("_")].concat(digitsCharCodes);for(let ti=cc("a");ti<=cc("z");ti++)wordCharCodes.push(ti);for(let ti=cc("A");ti<=cc("Z");ti++)wordCharCodes.push(ti);const whitespaceCodes=[cc(" "),cc("\f"),cc(`
2
2
  `),cc("\r"),cc(" "),cc("\v"),cc(" "),cc("\xA0"),cc("\u1680"),cc("\u2000"),cc("\u2001"),cc("\u2002"),cc("\u2003"),cc("\u2004"),cc("\u2005"),cc("\u2006"),cc("\u2007"),cc("\u2008"),cc("\u2009"),cc("\u200A"),cc("\u2028"),cc("\u2029"),cc("\u202F"),cc("\u205F"),cc("\u3000"),cc("\uFEFF")],hexDigitPattern=/[0-9a-fA-F]/,decimalPattern=/[0-9]/,decimalPatternNoZero=/[1-9]/;class RegExpParser{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(ei){this.idx=ei.idx,this.input=ei.input,this.groupIdx=ei.groupIdx}pattern(ei){this.idx=0,this.input=ei,this.groupIdx=0,this.consumeChar("/");const ni=this.disjunction();this.consumeChar("/");const ri={type:"Flags",loc:{begin:this.idx,end:ei.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":addFlag(ri,"global");break;case"i":addFlag(ri,"ignoreCase");break;case"m":addFlag(ri,"multiLine");break;case"u":addFlag(ri,"unicode");break;case"y":addFlag(ri,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:ri,value:ni,loc:this.loc(0)}}disjunction(){const ei=[],ni=this.idx;for(ei.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),ei.push(this.alternative());return{type:"Disjunction",value:ei,loc:this.loc(ni)}}alternative(){const ei=[],ni=this.idx;for(;this.isTerm();)ei.push(this.term());return{type:"Alternative",value:ei,loc:this.loc(ni)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const ei=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(ei)};case"$":return{type:"EndAnchor",loc:this.loc(ei)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(ei)};case"B":return{type:"NonWordBoundary",loc:this.loc(ei)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let ni;switch(this.popChar()){case"=":ni="Lookahead";break;case"!":ni="NegativeLookahead";break}ASSERT_EXISTS(ni);const ri=this.disjunction();return this.consumeChar(")"),{type:ni,value:ri,loc:this.loc(ei)}}return ASSERT_NEVER_REACH_HERE()}quantifier(ei=!1){let ni;const ri=this.idx;switch(this.popChar()){case"*":ni={atLeast:0,atMost:1/0};break;case"+":ni={atLeast:1,atMost:1/0};break;case"?":ni={atLeast:0,atMost:1};break;case"{":const ii=this.integerIncludingZero();switch(this.popChar()){case"}":ni={atLeast:ii,atMost:ii};break;case",":let si;this.isDigit()?(si=this.integerIncludingZero(),ni={atLeast:ii,atMost:si}):ni={atLeast:ii,atMost:1/0},this.consumeChar("}");break}if(ei===!0&&ni===void 0)return;ASSERT_EXISTS(ni);break}if(!(ei===!0&&ni===void 0)&&ASSERT_EXISTS(ni))return this.peekChar(0)==="?"?(this.consumeChar("?"),ni.greedy=!1):ni.greedy=!0,ni.type="Quantifier",ni.loc=this.loc(ri),ni}atom(){let ei;const ni=this.idx;switch(this.peekChar()){case".":ei=this.dotAll();break;case"\\":ei=this.atomEscape();break;case"[":ei=this.characterClass();break;case"(":ei=this.group();break}if(ei===void 0&&this.isPatternCharacter()&&(ei=this.patternCharacter()),ASSERT_EXISTS(ei))return ei.loc=this.loc(ni),this.isQuantifier()&&(ei.quantifier=this.quantifier()),ei}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[cc(`
3
3
  `),cc("\r"),cc("\u2028"),cc("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let ei,ni=!1;switch(this.popChar()){case"d":ei=digitsCharCodes;break;case"D":ei=digitsCharCodes,ni=!0;break;case"s":ei=whitespaceCodes;break;case"S":ei=whitespaceCodes,ni=!0;break;case"w":ei=wordCharCodes;break;case"W":ei=wordCharCodes,ni=!0;break}if(ASSERT_EXISTS(ei))return{type:"Set",value:ei,complement:ni}}controlEscapeAtom(){let ei;switch(this.popChar()){case"f":ei=cc("\f");break;case"n":ei=cc(`
4
4
  `);break;case"r":ei=cc("\r");break;case"t":ei=cc(" ");break;case"v":ei=cc("\v");break}if(ASSERT_EXISTS(ei))return{type:"Character",value:ei}}controlLetterEscapeAtom(){this.consumeChar("c");const ei=this.popChar();if(/[a-zA-Z]/.test(ei)===!1)throw Error("Invalid ");return{type:"Character",value:ei.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:cc("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){const ei=this.popChar();return{type:"Character",value:cc(ei)}}classPatternCharacterAtom(){switch(this.peekChar()){case`
@@ -199,28 +199,28 @@ ${ti}`,$e$1=":",Le$1=`
199
199
  `),ni.message+=`
200
200
  `+si.slice(1).map(oi=>" "+oi).join(`
201
201
  `)}return typeof ti.tag=="string"&&ti.tag.length>0&&(ni.message=`[${ti.tag}] ${ni.message}`),ni}function Ge(ti){const ei=process$2.cwd()+path.sep;return ti.split(`
202
- `).map(ni=>ni.trim().replace("file://","").replace(ei,""))}function ze$1(ti){return We(ti,Ge)}const vu=c$2.debug,Ye=cu({level:vu,defaults:{level:vu},throttle:2,throttleMin:500,formatOptions:{colors:!0,compact:!1,date:!1}}),logger=Ye.withTag("lsp");function logError$1(ti){logger.error(ti)}function logWarnError(ti){if(ti instanceof Error){logger.warn(ti.stack??ti.message);return}logger.warn(ti)}function setLogLevel(ti){logger.level=c$2[ti]}function logToLspConnection(ti){const ei={log:(ni,ri)=>{const{message:ii,error:si}=ze$1(ni);switch(ni.type){case"silent":break;case"verbose":case"trace":{ti.tracer.log(ii);break}case"debug":{ti.console.debug(ii);break}case"log":{ti.console.log(ii);break}case"info":case"box":case"ready":case"start":case"success":{ti.console.info(ii);break}case"warn":{ti.console.warn(ii);break}case"fail":case"error":case"fatal":{ti.console.error(ii),si?ti.telemetry.logEvent({eventName:"error",...si}):ti.telemetry.logEvent({eventName:"error",message:ii});break}default:index_DafVOuVd.l(ni.type)}}};Ye.setReporters([ei]),logger.setReporters(Ye.options.reporters)}const LikeC4FileSystem={fileSystemProvider:()=>new n$3};let n$3=class extends NodeFileSystemProvider{async readDirectory(ei){const ni=await new distExports.fdir().withSymlinks().withFullPaths().crawl(ei.fsPath).withPromise(),ri=[];for(const ii of ni)try{const si=await fsPromises.stat(ii);ri.push({isFile:si.isFile(),isDirectory:si.isDirectory(),uri:URI.file(ii)})}catch(si){logger.error(si)}return ri}};function isForwardRefNode(ti){return typeof ti=="object"&&ti!==null&&typeof ti.id=="string"}function isNodeModel(ti){return typeof ti=="object"&&ti!==null&&ti.$$type==="Node"&&typeof ti.id=="string"}function isNodeRef(ti){return isNodeModel(ti)||isForwardRefNode(ti)}function isNodeRefLike(ti){return typeof ti=="string"||isNodeRef(ti)}function isNodeRefGroupLike(ti){return Array.isArray(ti)&&ti.every(isNodeRefLike)}function isCompass(ti){return["n","ne","e","se","s","sw","w","nw","c"].includes(ti)}function toNodeRef(ti){if(isNodeRef(ti))return ti;const[ei,ni,ri]=ti.split(":");return isCompass(ri)?{id:ei,port:ni,compass:ri}:{id:ei,port:ni}}function toNodeRefGroup(ti){if(ti.length<2&&(isNodeRefLike(ti[0])&&isNodeRefLike(ti[1]))===!1)throw Error("EdgeTargets must have at least 2 elements.");return ti.map(ei=>toNodeRef(ei))}const RootModelsContext=Object.seal({Graph:null,Digraph:null,Subgraph:null,Node:null,Edge:null});function createModelsContext(ti){return Object.assign(Object.seal(Object.assign({},RootModelsContext)),ti)}function _pipe(...ti){const[ei,...ni]=ti;return(...ri)=>ni.reduce((ii,si)=>si(ii),ei(...ri))}function pipe(ti,...ei){return _pipe(ti,...ei)}const defer=ti=>(...ei)=>ni=>ti(ni,...ei),toIterable=ti=>({[Symbol.iterator]:ti}),map=defer((ti,ei)=>Array.from(toIterable(function*(){for(const ni of ti)yield ei(ni)})));class Builder{options;getLocation(){return this.options?.locationFunction?.()??null}constructor(ei){this.options=ei}createElement(ei,ni,ri=[]){return{location:this.getLocation(),...ni,type:ei,children:ri}}}const createElement=Builder.prototype.createElement.bind(new Builder),EOL=/\r?\n/;function joinBy(ti){return ei=>ei.join(ti)}function wrapWith(ti){return ei=>ti+ei+ti}function wrapByPair(ti,ei){return ni=>ti+ni+ei}function leftPadWith(ti){return ei=>ti+ei}const escape=ti=>ti.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/"/g,'\\"'),splitByLine=ti=>ti.split(EOL),indent=(ti,ei,ni)=>pipe(splitByLine,map(leftPadWith(ti==="space"?" ".repeat(ei):`
202
+ `).map(ni=>ni.trim().replace("file://","").replace(ei,""))}function ze$1(ti){return We(ti,Ge)}const vu=c$2.debug,Ye=cu({level:vu,defaults:{level:vu},throttle:2,throttleMin:500,formatOptions:{colors:!0,compact:!1,date:!1}}),logger=Ye.withTag("lsp");function logError$1(ti){logger.error(ti)}function logWarnError(ti){if(ti instanceof Error){logger.warn(ti.stack??ti.message);return}logger.warn(ti)}function setLogLevel(ti){logger.level=c$2[ti]}function logToLspConnection(ti){const ei={log:(ni,ri)=>{const{message:ii,error:si}=ze$1(ni);switch(ni.type){case"silent":break;case"verbose":case"trace":{ti.tracer.log(ii);break}case"debug":{ti.console.debug(ii);break}case"log":{ti.console.log(ii);break}case"info":case"box":case"ready":case"start":case"success":{ti.console.info(ii);break}case"warn":{ti.console.warn(ii);break}case"fail":case"error":case"fatal":{ti.console.error(ii),si?ti.telemetry.logEvent({eventName:"error",...si}):ti.telemetry.logEvent({eventName:"error",message:ii});break}default:index_KOeaSlL8.n(ni.type)}}};Ye.setReporters([ei]),logger.setReporters(Ye.options.reporters)}const LikeC4FileSystem={fileSystemProvider:()=>new n$3};let n$3=class extends NodeFileSystemProvider{async readDirectory(ei){const ni=await new distExports.fdir().withSymlinks().withFullPaths().crawl(ei.fsPath).withPromise(),ri=[];for(const ii of ni)try{const si=await fsPromises.stat(ii);ri.push({isFile:si.isFile(),isDirectory:si.isDirectory(),uri:URI.file(ii)})}catch(si){logger.error(si)}return ri}};function isForwardRefNode(ti){return typeof ti=="object"&&ti!==null&&typeof ti.id=="string"}function isNodeModel(ti){return typeof ti=="object"&&ti!==null&&ti.$$type==="Node"&&typeof ti.id=="string"}function isNodeRef(ti){return isNodeModel(ti)||isForwardRefNode(ti)}function isNodeRefLike(ti){return typeof ti=="string"||isNodeRef(ti)}function isNodeRefGroupLike(ti){return Array.isArray(ti)&&ti.every(isNodeRefLike)}function isCompass(ti){return["n","ne","e","se","s","sw","w","nw","c"].includes(ti)}function toNodeRef(ti){if(isNodeRef(ti))return ti;const[ei,ni,ri]=ti.split(":");return isCompass(ri)?{id:ei,port:ni,compass:ri}:{id:ei,port:ni}}function toNodeRefGroup(ti){if(ti.length<2&&(isNodeRefLike(ti[0])&&isNodeRefLike(ti[1]))===!1)throw Error("EdgeTargets must have at least 2 elements.");return ti.map(ei=>toNodeRef(ei))}const RootModelsContext=Object.seal({Graph:null,Digraph:null,Subgraph:null,Node:null,Edge:null});function createModelsContext(ti){return Object.assign(Object.seal(Object.assign({},RootModelsContext)),ti)}function _pipe(...ti){const[ei,...ni]=ti;return(...ri)=>ni.reduce((ii,si)=>si(ii),ei(...ri))}function pipe(ti,...ei){return _pipe(ti,...ei)}const defer=ti=>(...ei)=>ni=>ti(ni,...ei),toIterable=ti=>({[Symbol.iterator]:ti}),map=defer((ti,ei)=>Array.from(toIterable(function*(){for(const ni of ti)yield ei(ni)})));class Builder{options;getLocation(){return this.options?.locationFunction?.()??null}constructor(ei){this.options=ei}createElement(ei,ni,ri=[]){return{location:this.getLocation(),...ni,type:ei,children:ri}}}const createElement=Builder.prototype.createElement.bind(new Builder),EOL=/\r?\n/;function joinBy(ti){return ei=>ei.join(ti)}function wrapWith(ti){return ei=>ti+ei+ti}function wrapByPair(ti,ei){return ni=>ti+ni+ei}function leftPadWith(ti){return ei=>ti+ei}const escape=ti=>ti.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/"/g,'\\"'),splitByLine=ti=>ti.split(EOL),indent=(ti,ei,ni)=>pipe(splitByLine,map(leftPadWith(ti==="space"?" ".repeat(ei):`
203
203
  `)),joinBy(ni)),endOfLine=ti=>{switch(ti){case"crlf":return`\r
204
204
  `;case"lf":return`
205
205
  `}},AttributeListPrintPlugin={match(ti){return ti.type==="AttributeList"},print(ti,ei){if(ei.children.length===0)return`${ei.kind.toLocaleLowerCase()} [];`;const ni=endOfLine(ti.endOfLine);return pipe(map(ti.print),joinBy(ni),indent(ti.indentStyle,ti.indentSize,ni),wrapByPair(`${ei.kind.toLocaleLowerCase()} [${ni}`,`${ni}];`))(ei.children)}},AttributePrintPlugin={match(ti){return ti.type==="Attribute"},print(ti,ei){return`${ti.print(ei.key)} = ${ti.print(ei.value)};`}},CommentPrintPlugin={match(ti){return ti.type==="Comment"},print(ti,ei){const ni=endOfLine(ti.endOfLine);switch(ei.kind){case"Block":return pipe(splitByLine,map(leftPadWith(" * ")),joinBy(ni),wrapByPair(`/**${ni}`,`${ni} */`))(ei.value);case"Macro":return pipe(splitByLine,map(leftPadWith("# ")),joinBy(ni))(ei.value);case"Slash":default:return pipe(splitByLine,map(leftPadWith("// ")),joinBy(ni))(ei.value)}}},DotPrintPlugin={match(ti){return ti.type==="Dot"},print(ti,ei){return ei.children.map(ti.print).join(endOfLine(ti.endOfLine))}},EdgePrintPlugin={match(ti){return ti.type==="Edge"},print(ti,ei){const ni=pipe(map(ti.print),joinBy(ti.directed?" -> ":" -- "))(ei.targets);if(ei.children.length===0)return`${ni};`;const ri=endOfLine(ti.endOfLine),ii=pipe(map(ti.print),joinBy(ri),indent(ti.indentStyle,ti.indentSize,ri),wrapByPair(`[${ri}`,`${ri}];`))(ei.children);return`${ni} ${ii}`}},GraphPrintPlugin={match(ti){return ti.type==="Graph"},print(ti,ei){ti.directed=ei.directed;const ni=[];if(ei.strict&&ni.push("strict"),ni.push(ei.directed?"digraph":"graph"),ei.id&&ni.push(ti.print(ei.id)),ei.children.length===0)return`${ni.join(" ")} {}`;const ri=endOfLine(ti.endOfLine),ii=pipe(map(ti.print),joinBy(ri),indent(ti.indentStyle,ti.indentSize,ri),wrapByPair(`{${ri}`,`${ri}}`))(ei.children);return`${ni.join(" ")} ${ii}`}},quoteLiteralValue=pipe(escape,wrapWith('"')),quoteHTMLLikeLiteralValue=wrapByPair("<",">"),LiteralPrintPlugin={match(ti){return ti.type==="Literal"},print(ti,ei){switch(ei.quoted){case"html":return quoteHTMLLikeLiteralValue(ei.value);case!0:return quoteLiteralValue(ei.value);case!1:default:return escape(ei.value)}}},NodePrintPlugin={match(ti){return ti.type==="Node"},print(ti,ei){const ni=ti.print(ei.id);if(ei.children.length===0)return`${ni};`;const ri=endOfLine(ti.endOfLine),ii=pipe(map(ti.print),joinBy(ri),indent(ti.indentStyle,ti.indentSize,ri),wrapByPair(`[${ri}`,`${ri}];`))(ei.children);return`${ni} ${ii}`}},NodeRefGroupPrintPlugin={match(ti){return ti.type==="NodeRefGroup"},print(ti,ei){return pipe(map(ti.print),joinBy(" "),wrapByPair("{","}"))(ei.children)}},NodeRefPrintPlugin={match(ti){return ti.type==="NodeRef"},print(ti,ei){const ni=[ti.print(ei.id)];return ei.port&&ni.push(ti.print(ei.port)),ei.compass&&ni.push(ti.print(ei.compass)),ni.join(":")}},SubgraphPrintPlugin={match(ti){return ti.type==="Subgraph"},print(ti,ei){const ni=["subgraph"];if(ei.id&&ni.push(ti.print(ei.id)),ei.children.length===0)return`${ni.join(" ")} {}`;const ri=endOfLine(ti.endOfLine),ii=pipe(map(ti.print),joinBy(ri),indent(ti.indentStyle,ti.indentSize,ri),wrapByPair(`{${ri}`,`${ri}}`))(ei.children);return`${ni.join(" ")} ${ii}`}},defaultPlugins$2=[AttributeListPrintPlugin,AttributePrintPlugin,CommentPrintPlugin,DotPrintPlugin,EdgePrintPlugin,GraphPrintPlugin,LiteralPrintPlugin,NodePrintPlugin,NodeRefGroupPrintPlugin,NodeRefPrintPlugin,SubgraphPrintPlugin];class Printer{options;#e=[...defaultPlugins$2];constructor(ei={}){this.options=ei}print(ei){const ni=[...this.#e],{indentSize:ri=2,indentStyle:ii="space",endOfLine:si="lf"}=this.options,oi={directed:!0,indentSize:ri,indentStyle:ii,endOfLine:si,print(ai){for(const ci of ni)if(ci.match(ai))return ci.print(oi,ai);throw Error()}};return oi.print(ei)}}function stringify(ti,ei){const ni=new Printer(ei).print(ti);if(!ni)throw new Error;return ni}function convertAttribute(ti,ei){if(typeof ei=="string"){const ni=ei.trim();return/^<.+>$/ms.test(ni)?createElement("Attribute",{key:createElement("Literal",{value:ti,quoted:!1},[]),value:createElement("Literal",{value:ni.slice(1,ni.length-1),quoted:"html"},[])},[]):createElement("Attribute",{key:createElement("Literal",{value:ti,quoted:!1},[]),value:createElement("Literal",{value:ei,quoted:!0},[])},[])}return createElement("Attribute",{key:createElement("Literal",{value:ti,quoted:!1},[]),value:createElement("Literal",{value:String(ei),quoted:!1},[])},[])}function convertComment(ti,ei){return createElement("Comment",{kind:ei,value:ti},[])}function convertClusterChildren(ti,ei){return Array.from(function*(){for(const[ni,ri]of ei.values)yield convertAttribute(ni,ri);for(const ni of Object.values(ei.attributes))ni.size>0&&(ni.comment&&(yield convertComment(ni.comment,ti.commentKind)),yield ti.convert(ni));for(const ni of ei.nodes)ni.comment&&(yield convertComment(ni.comment,ti.commentKind)),yield ti.convert(ni);for(const ni of ei.subgraphs)ni.comment&&(yield convertComment(ni.comment,ti.commentKind)),yield ti.convert(ni);for(const ni of ei.edges)ni.comment&&(yield convertComment(ni.comment,ti.commentKind)),yield ti.convert(ni)}())}const AttributeListPlugin={match(ti){return ti.$$type==="AttributeList"},convert(ti,ei){return createElement("AttributeList",{kind:ei.$$kind},ei.values.map(([ni,ri])=>convertAttribute(ni,ri)))}},EdgePlugin$1={match(ti){return ti.$$type==="Edge"},convert(ti,ei){return createElement("Edge",{targets:ei.targets.map(ni=>isNodeModel(ni)?createElement("NodeRef",{id:createElement("Literal",{value:ni.id,quoted:!0},[])},[]):isForwardRefNode(ni)?createElement("NodeRef",{id:createElement("Literal",{value:ni.id,quoted:!0},[]),port:ni.port?createElement("Literal",{value:ni.port,quoted:!0},[]):void 0,compass:ni.compass?createElement("Literal",{value:ni.compass,quoted:!0},[]):void 0},[]):createElement("NodeRefGroup",{},ni.map(ri=>isNodeModel(ri)?createElement("NodeRef",{id:createElement("Literal",{value:ri.id,quoted:!0},[])},[]):createElement("NodeRef",{id:createElement("Literal",{value:ri.id,quoted:!0},[]),port:ri.port?createElement("Literal",{value:ri.port,quoted:!0},[]):void 0,compass:ri.compass?createElement("Literal",{value:ri.compass,quoted:!0},[]):void 0},[]))))},[...ei.attributes.comment?[convertComment(ei.attributes.comment,ti.commentKind)]:[],...ei.attributes.values.map(([ni,ri])=>convertAttribute(ni,ri))])}},GraphPlugin$1={match(ti){return ti.$$type==="Graph"},convert(ti,ei){return createElement("Dot",{},[...ei.comment?[convertComment(ei.comment,ti.commentKind)]:[],createElement("Graph",{directed:ei.directed,strict:ei.strict,id:ei.id?createElement("Literal",{value:ei.id,quoted:!0},[]):void 0},convertClusterChildren(ti,ei))])}},NodePlugin$1={match(ti){return ti.$$type==="Node"},convert(ti,ei){return createElement("Node",{id:createElement("Literal",{value:ei.id,quoted:!0},[])},[...ei.attributes.comment?[convertComment(ei.attributes.comment,ti.commentKind)]:[],...ei.attributes.values.map(([ni,ri])=>convertAttribute(ni,ri))])}},SubgraphPlugin$1={match(ti){return ti.$$type==="Subgraph"},convert(ti,ei){return createElement("Subgraph",{id:ei.id?createElement("Literal",{value:ei.id,quoted:!0},[]):void 0},convertClusterChildren(ti,ei))}},defaultPlugins$1=[AttributeListPlugin,EdgePlugin$1,NodePlugin$1,GraphPlugin$1,SubgraphPlugin$1];class FromModelConverter{options;#e=[...defaultPlugins$1];constructor(ei={}){this.options=ei}convert(ei){const ni=[...this.#e],{commentKind:ri="Slash"}=this.options,ii={commentKind:ri,convert(si){for(const oi of ni)if(oi.match(si))return oi.convert(ii,si);throw Error()}};return ii.convert(ei)}}function fromModel(ti,ei){return new FromModelConverter(ei).convert(ti)}const attribute=new Proxy(Object.freeze({}),{get:(ti,ei)=>ei});class DotObject{}class AttributesBase extends DotObject{#e=new Map;constructor(ei){super(),ei!==void 0&&this.apply(ei)}get values(){return Array.from(this.#e.entries())}get size(){return this.#e.size}get(ei){return this.#e.get(ei)}set(ei,ni){ni!=null&&this.#e.set(ei,ni)}delete(ei){this.#e.delete(ei)}apply(ei){const ni=Array.isArray(ei)?ei:Object.entries(ei);for(const[ri,ii]of ni)this.set(ri,ii)}clear(){this.#e.clear()}}class AttributeList extends AttributesBase{$$kind;get $$type(){return"AttributeList"}comment;constructor(ei,ni){super(ni),this.$$kind=ei}}class GraphBase extends AttributesBase{#e=RootModelsContext;id;comment;attributes=Object.freeze({graph:new AttributeList("Graph"),edge:new AttributeList("Edge"),node:new AttributeList("Node")});get nodes(){return Array.from(this.#t.nodes.values())}get edges(){return Array.from(this.#t.edges.values())}get subgraphs(){return Array.from(this.#t.subgraphs.values())}#t={nodes:new Map,edges:new Set,subgraphs:new Set};with(ei){this.#e=createModelsContext(ei)}addNode(ei){this.#t.nodes.set(ei.id,ei)}addEdge(ei){this.#t.edges.add(ei)}addSubgraph(ei){this.#t.subgraphs.add(ei)}existNode(ei){return this.#t.nodes.has(ei)}existEdge(ei){return this.#t.edges.has(ei)}existSubgraph(ei){return this.#t.subgraphs.has(ei)}createSubgraph(...ei){const ni=new this.#e.Subgraph(...ei);return ni.with(this.#e),this.addSubgraph(ni),ni}removeNode(ei){this.#t.nodes.delete(typeof ei=="string"?ei:ei.id)}removeEdge(ei){this.#t.edges.delete(ei)}removeSubgraph(ei){this.#t.subgraphs.delete(ei)}createNode(ei,ni){const ri=new this.#e.Node(ei,ni);return this.addNode(ri),ri}getSubgraph(ei){return Array.from(this.#t.subgraphs.values()).find(ni=>ni.id===ei)}getNode(ei){return this.#t.nodes.get(ei)}createEdge(ei,ni){const ri=ei.map(si=>isNodeRefGroupLike(si)?toNodeRefGroup(si):toNodeRef(si)),ii=new this.#e.Edge(ri,ni);return this.addEdge(ii),ii}subgraph(...ei){const ni=ei.find(oi=>typeof oi=="string"),ri=ei.find(oi=>typeof oi=="object"&&oi!==null),ii=ei.find(oi=>typeof oi=="function"),si=ni?this.getSubgraph(ni)??this.createSubgraph(ni):this.createSubgraph();return ri!==void 0&&si.apply(ri),ii!==void 0&&ii(si),si}node(ei,...ni){if(typeof ei=="string"){const ri=ei,ii=ni.find(ai=>typeof ai=="object"&&ai!==null),si=ni.find(ai=>typeof ai=="function"),oi=this.getNode(ri)??this.createNode(ri);return ii!==void 0&&oi.attributes.apply(ii),si!==void 0&&si(oi),oi}typeof ei=="object"&&ei!==null&&this.attributes.node.apply(ei)}edge(ei,...ni){if(Array.isArray(ei)){const ri=ei,ii=ni.find(ai=>typeof ai=="object"),si=ni.find(ai=>typeof ai=="function"),oi=this.createEdge(ri,ii);return si!==void 0&&si(oi),oi}typeof ei=="object"&&ei!==null&&this.attributes.edge.apply(ei)}graph(ei){this.attributes.graph.apply(ei)}}class RootGraph extends GraphBase{get $$type(){return"Graph"}id;strict;constructor(...ei){super(),this.id=ei.find(ri=>typeof ri=="string"),this.strict=ei.find(ri=>typeof ri=="boolean")??!1;const ni=ei.find(ri=>typeof ri=="object"&&ri!==null);ni!==void 0&&this.apply(ni)}}class Digraph extends RootGraph{get directed(){return!0}}class Graph extends RootGraph{get directed(){return!1}}class Subgraph extends GraphBase{get $$type(){return"Subgraph"}id;constructor(...ei){super(),this.id=ei.find(ri=>typeof ri=="string");const ni=ei.find(ri=>typeof ri=="object"&&ri!==null);ni!==void 0&&this.apply(ni)}isSubgraphCluster(){return typeof this.id=="string"?this.id.startsWith("cluster"):!1}}class AttributesGroup extends AttributesBase{comment}let Node$1=class extends DotObject{id;get $$type(){return"Node"}comment;attributes;constructor(ei,ni){super(),this.id=ei,this.attributes=new AttributesGroup(ni)}port(ei){return typeof ei=="string"?{id:this.id,port:ei}:{id:this.id,...ei}}};class Edge extends DotObject{targets;get $$type(){return"Edge"}comment;attributes;constructor(ei,ni){if(super(),this.targets=ei,ei.length<2&&(isNodeRefLike(ei[0])&&isNodeRefLike(ei[1]))===!1)throw Error("The element of Edge target is missing or not satisfied as Edge target.");this.attributes=new AttributesGroup(ni)}}Object.assign(RootModelsContext,{Graph,Digraph,Subgraph,Node:Node$1,Edge});function ModelFactoryBuilder(ti,ei){return(...ni)=>{const ri=ti?this.Digraph:this.Graph,ii=ni.find(ci=>typeof ci=="string"),si=ni.find(ci=>typeof ci=="object"),oi=ni.find(ci=>typeof ci=="function"),ai=new ri(ii,ei,si);return ai.with(this),typeof oi=="function"&&oi(ai),ai}}function createModelFactories(ti,ei=RootModelsContext){return Object.freeze({digraph:ModelFactoryBuilder.call(ei,!0,ti),graph:ModelFactoryBuilder.call(ei,!1,ti)})}const noStrict=createModelFactories(!1),digraph=noStrict.digraph;noStrict.graph;const strict=createModelFactories(!0);function toDot(ti,ei){const ni=fromModel(ti,ei?.convert);return stringify(ni,ei?.print)}var wordWrap,hasRequiredWordWrap;function requireWordWrap(){if(hasRequiredWordWrap)return wordWrap;hasRequiredWordWrap=1;function ti(ri){let ii=ri.length-1,si=ri[ii];for(;si===" "||si===" ";)si=ri[--ii];return ri.substring(0,ii+1)}function ei(ri){return ri.split(`
206
206
  `).map(oi=>ti(oi)).join(`
207
207
  `)}wordWrap=function(ri,ii){if(ii=ii||{},ri==null)return ri;var si=ii.width||50,oi=typeof ii.indent=="string"?ii.indent:" ",ai=ii.newline||`
208
208
  `+oi,ci=typeof ii.escape=="function"?ii.escape:ni,ui=".{1,"+si+"}";ii.cut!==!0&&(ui+="([\\s\u200B]+|$)|[^\\s\u200B]+?([\\s\u200B]+|$)");var li=new RegExp(ui,"g"),di=ri.match(li)||[],fi=oi+di.map(function(pi){return pi.slice(-1)===`
209
- `&&(pi=pi.slice(0,pi.length-1)),ci(pi)}).join(ai);return ii.trim===!0&&(fi=ei(fi)),fi};function ni(ri){return ri}return wordWrap}var wordWrapExports=requireWordWrap();const ut=getDefaultExportFromCjs(wordWrapExports),Channel={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:ti=>ti>=255?255:ti<0?0:ti,g:ti=>ti>=255?255:ti<0?0:ti,b:ti=>ti>=255?255:ti<0?0:ti,h:ti=>ti%360,s:ti=>ti>=100?100:ti<0?0:ti,l:ti=>ti>=100?100:ti<0?0:ti,a:ti=>ti>=1?1:ti<0?0:ti},toLinear:ti=>{const ei=ti/255;return ti>.03928?Math.pow((ei+.055)/1.055,2.4):ei/12.92},hue2rgb:(ti,ei,ni)=>(ni<0&&(ni+=1),ni>1&&(ni-=1),ni<1/6?ti+(ei-ti)*6*ni:ni<1/2?ei:ni<2/3?ti+(ei-ti)*(2/3-ni)*6:ti),hsl2rgb:({h:ti,s:ei,l:ni},ri)=>{if(!ei)return ni*2.55;ti/=360,ei/=100,ni/=100;const ii=ni<.5?ni*(1+ei):ni+ei-ni*ei,si=2*ni-ii;switch(ri){case"r":return Channel.hue2rgb(si,ii,ti+1/3)*255;case"g":return Channel.hue2rgb(si,ii,ti)*255;case"b":return Channel.hue2rgb(si,ii,ti-1/3)*255}},rgb2hsl:({r:ti,g:ei,b:ni},ri)=>{ti/=255,ei/=255,ni/=255;const ii=Math.max(ti,ei,ni),si=Math.min(ti,ei,ni),oi=(ii+si)/2;if(ri==="l")return oi*100;if(ii===si)return 0;const ai=ii-si,ci=oi>.5?ai/(2-ii-si):ai/(ii+si);if(ri==="s")return ci*100;switch(ii){case ti:return((ei-ni)/ai+(ei<ni?6:0))*60;case ei:return((ni-ti)/ai+2)*60;case ni:return((ti-ei)/ai+4)*60;default:return-1}}},Lang={clamp:(ti,ei,ni)=>ei>ni?Math.min(ei,Math.max(ni,ti)):Math.min(ni,Math.max(ei,ti)),round:ti=>Math.round(ti*1e10)/1e10},Unit={dec2hex:ti=>{const ei=Math.round(ti).toString(16);return ei.length>1?ei:`0${ei}`}},Utils={channel:Channel,lang:Lang,unit:Unit},DEC2HEX={};for(let ti=0;ti<=255;ti++)DEC2HEX[ti]=Utils.unit.dec2hex(ti);const TYPE={ALL:0,RGB:1,HSL:2};class Type{constructor(){this.type=TYPE.ALL}get(){return this.type}set(ei){if(this.type&&this.type!==ei)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=ei}reset(){this.type=TYPE.ALL}is(ei){return this.type===ei}}class Channels{constructor(ei,ni){this.color=ni,this.changed=!1,this.data=ei,this.type=new Type}set(ei,ni){return this.color=ni,this.changed=!1,this.data=ei,this.type.type=TYPE.ALL,this}_ensureHSL(){const ei=this.data,{h:ni,s:ri,l:ii}=ei;ni===void 0&&(ei.h=Utils.channel.rgb2hsl(ei,"h")),ri===void 0&&(ei.s=Utils.channel.rgb2hsl(ei,"s")),ii===void 0&&(ei.l=Utils.channel.rgb2hsl(ei,"l"))}_ensureRGB(){const ei=this.data,{r:ni,g:ri,b:ii}=ei;ni===void 0&&(ei.r=Utils.channel.hsl2rgb(ei,"r")),ri===void 0&&(ei.g=Utils.channel.hsl2rgb(ei,"g")),ii===void 0&&(ei.b=Utils.channel.hsl2rgb(ei,"b"))}get r(){const ei=this.data,ni=ei.r;return!this.type.is(TYPE.HSL)&&ni!==void 0?ni:(this._ensureHSL(),Utils.channel.hsl2rgb(ei,"r"))}get g(){const ei=this.data,ni=ei.g;return!this.type.is(TYPE.HSL)&&ni!==void 0?ni:(this._ensureHSL(),Utils.channel.hsl2rgb(ei,"g"))}get b(){const ei=this.data,ni=ei.b;return!this.type.is(TYPE.HSL)&&ni!==void 0?ni:(this._ensureHSL(),Utils.channel.hsl2rgb(ei,"b"))}get h(){const ei=this.data,ni=ei.h;return!this.type.is(TYPE.RGB)&&ni!==void 0?ni:(this._ensureRGB(),Utils.channel.rgb2hsl(ei,"h"))}get s(){const ei=this.data,ni=ei.s;return!this.type.is(TYPE.RGB)&&ni!==void 0?ni:(this._ensureRGB(),Utils.channel.rgb2hsl(ei,"s"))}get l(){const ei=this.data,ni=ei.l;return!this.type.is(TYPE.RGB)&&ni!==void 0?ni:(this._ensureRGB(),Utils.channel.rgb2hsl(ei,"l"))}get a(){return this.data.a}set r(ei){this.type.set(TYPE.RGB),this.changed=!0,this.data.r=ei}set g(ei){this.type.set(TYPE.RGB),this.changed=!0,this.data.g=ei}set b(ei){this.type.set(TYPE.RGB),this.changed=!0,this.data.b=ei}set h(ei){this.type.set(TYPE.HSL),this.changed=!0,this.data.h=ei}set s(ei){this.type.set(TYPE.HSL),this.changed=!0,this.data.s=ei}set l(ei){this.type.set(TYPE.HSL),this.changed=!0,this.data.l=ei}set a(ei){this.changed=!0,this.data.a=ei}}const channels=new Channels({r:0,g:0,b:0,a:0},"transparent"),Hex={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:ti=>{if(ti.charCodeAt(0)!==35)return;const ei=ti.match(Hex.re);if(!ei)return;const ni=ei[1],ri=parseInt(ni,16),ii=ni.length,si=ii%4===0,oi=ii>4,ai=oi?1:17,ci=oi?8:4,ui=si?0:-1,li=oi?255:15;return channels.set({r:(ri>>ci*(ui+3)&li)*ai,g:(ri>>ci*(ui+2)&li)*ai,b:(ri>>ci*(ui+1)&li)*ai,a:si?(ri&li)*ai/255:1},ti)},stringify:ti=>{const{r:ei,g:ni,b:ri,a:ii}=ti;return ii<1?`#${DEC2HEX[Math.round(ei)]}${DEC2HEX[Math.round(ni)]}${DEC2HEX[Math.round(ri)]}${DEC2HEX[Math.round(ii*255)]}`:`#${DEC2HEX[Math.round(ei)]}${DEC2HEX[Math.round(ni)]}${DEC2HEX[Math.round(ri)]}`}},HSL={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:ti=>{const ei=ti.match(HSL.hueRe);if(ei){const[,ni,ri]=ei;switch(ri){case"grad":return Utils.channel.clamp.h(parseFloat(ni)*.9);case"rad":return Utils.channel.clamp.h(parseFloat(ni)*180/Math.PI);case"turn":return Utils.channel.clamp.h(parseFloat(ni)*360)}}return Utils.channel.clamp.h(parseFloat(ti))},parse:ti=>{const ei=ti.charCodeAt(0);if(ei!==104&&ei!==72)return;const ni=ti.match(HSL.re);if(!ni)return;const[,ri,ii,si,oi,ai]=ni;return channels.set({h:HSL._hue2deg(ri),s:Utils.channel.clamp.s(parseFloat(ii)),l:Utils.channel.clamp.l(parseFloat(si)),a:oi?Utils.channel.clamp.a(ai?parseFloat(oi)/100:parseFloat(oi)):1},ti)},stringify:ti=>{const{h:ei,s:ni,l:ri,a:ii}=ti;return ii<1?`hsla(${Utils.lang.round(ei)}, ${Utils.lang.round(ni)}%, ${Utils.lang.round(ri)}%, ${ii})`:`hsl(${Utils.lang.round(ei)}, ${Utils.lang.round(ni)}%, ${Utils.lang.round(ri)}%)`}},Keyword={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:ti=>{ti=ti.toLowerCase();const ei=Keyword.colors[ti];if(ei)return Hex.parse(ei)},stringify:ti=>{const ei=Hex.stringify(ti);for(const ni in Keyword.colors)if(Keyword.colors[ni]===ei)return ni}},RGB={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:ti=>{const ei=ti.charCodeAt(0);if(ei!==114&&ei!==82)return;const ni=ti.match(RGB.re);if(!ni)return;const[,ri,ii,si,oi,ai,ci,ui,li]=ni;return channels.set({r:Utils.channel.clamp.r(ii?parseFloat(ri)*2.55:parseFloat(ri)),g:Utils.channel.clamp.g(oi?parseFloat(si)*2.55:parseFloat(si)),b:Utils.channel.clamp.b(ci?parseFloat(ai)*2.55:parseFloat(ai)),a:ui?Utils.channel.clamp.a(li?parseFloat(ui)/100:parseFloat(ui)):1},ti)},stringify:ti=>{const{r:ei,g:ni,b:ri,a:ii}=ti;return ii<1?`rgba(${Utils.lang.round(ei)}, ${Utils.lang.round(ni)}, ${Utils.lang.round(ri)}, ${Utils.lang.round(ii)})`:`rgb(${Utils.lang.round(ei)}, ${Utils.lang.round(ni)}, ${Utils.lang.round(ri)})`}},Color={format:{keyword:Keyword,hex:Hex,rgb:RGB,rgba:RGB,hsl:HSL,hsla:HSL},parse:ti=>{if(typeof ti!="string")return ti;const ei=Hex.parse(ti)||RGB.parse(ti)||HSL.parse(ti)||Keyword.parse(ti);if(ei)return ei;throw new Error(`Unsupported color format: "${ti}"`)},stringify:ti=>!ti.changed&&ti.color?ti.color:ti.type.is(TYPE.HSL)||ti.data.r===void 0?HSL.stringify(ti):ti.a<1||!Number.isInteger(ti.r)||!Number.isInteger(ti.g)||!Number.isInteger(ti.b)?RGB.stringify(ti):Hex.stringify(ti)},change=(ti,ei)=>{const ni=Color.parse(ti);for(const ri in ei)ni[ri]=Utils.channel.clamp[ri](ei[ri]);return Color.stringify(ni)},toHex=ti=>Color.format.hex.stringify(Color.parse(ti)),adjustChannel=(ti,ei,ni)=>{const ri=Color.parse(ti),ii=ri[ei],si=Utils.channel.clamp[ei](ii+ni);return ii!==si&&(ri[ei]=si),Color.stringify(ri)},transparentize=(ti,ei)=>adjustChannel(ti,"a",-ei),adjust=(ti,ei)=>{const ni=Color.parse(ti),ri={};for(const ii in ei)ei[ii]&&(ri[ii]=ni[ii]+ei[ii]);return change(ti,ri)},scale=(ti,ei)=>{const ni=Color.parse(ti),ri={},ii=(si,oi,ai)=>oi>0?(ai-si)*oi/100:si*oi/100;for(const si in ei)ri[si]=ii(ni[si],ei[si],Utils.channel.max[si]);return adjust(ti,ri)};class Node{value;next;constructor(ei){this.value=ei}}class Queue{#e;#t;#n;constructor(){this.clear()}enqueue(ei){const ni=new Node(ei);this.#e?(this.#t.next=ni,this.#t=ni):(this.#e=ni,this.#t=ni),this.#n++}dequeue(){const ei=this.#e;if(ei)return this.#e=this.#e.next,this.#n--,ei.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#t=void 0,this.#n=0}get size(){return this.#n}*[Symbol.iterator](){let ei=this.#e;for(;ei;)yield ei.value,ei=ei.next}}function pLimit(ti){validateConcurrency(ti);const ei=new Queue;let ni=0;const ri=()=>{ni<ti&&ei.size>0&&(ei.dequeue()(),ni++)},ii=()=>{ni--,ri()},si=async(ci,ui,li)=>{const di=(async()=>ci(...li))();ui(di);try{await di}catch{}ii()},oi=(ci,ui,li)=>{new Promise(di=>{ei.enqueue(di)}).then(si.bind(void 0,ci,ui,li)),(async()=>(await Promise.resolve(),ni<ti&&ri()))()},ai=(ci,...ui)=>new Promise(li=>{oi(ci,li,ui)});return Object.defineProperties(ai,{activeCount:{get:()=>ni},pendingCount:{get:()=>ei.size},clearQueue:{value(){ei.clear()}},concurrency:{get:()=>ti,set(ci){validateConcurrency(ci),ti=ci,queueMicrotask(()=>{for(;ni<ti&&ei.size>0;)ri()})}}}),ai}function validateConcurrency(ti){if(!((Number.isInteger(ti)||ti===Number.POSITIVE_INFINITY)&&ti>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var pt=Object.getOwnPropertyNames,ft=Object.getOwnPropertySymbols,gt=Object.prototype.hasOwnProperty;function we(ti,ei){return function(ni,ri,ii){return ti(ni,ri,ii)&&ei(ni,ri,ii)}}function V$1(ti){return function(ei,ni,ri){if(!ei||!ni||typeof ei!="object"||typeof ni!="object")return ti(ei,ni,ri);var ii=ri.cache,si=ii.get(ei),oi=ii.get(ni);if(si&&oi)return si===ni&&oi===ei;ii.set(ei,ni),ii.set(ni,ei);var ai=ti(ei,ni,ri);return ii.delete(ei),ii.delete(ni),ai}}function Ee(ti){return pt(ti).concat(ft(ti))}var be=Object.hasOwn||function(ti,ei){return gt.call(ti,ei)};function P$1(ti,ei){return ti||ei?ti===ei:ti===ei||ti!==ti&&ei!==ei}var Te="_owner",xe=Object.getOwnPropertyDescriptor,$e=Object.keys;function vt(ti,ei,ni){var ri=ti.length;if(ei.length!==ri)return!1;for(;ri-- >0;)if(!ni.equals(ti[ri],ei[ri],ri,ri,ti,ei,ni))return!1;return!0}function mt(ti,ei){return P$1(ti.getTime(),ei.getTime())}function Ce(ti,ei,ni){if(ti.size!==ei.size)return!1;for(var ri={},ii=ti.entries(),si=0,oi,ai;(oi=ii.next())&&!oi.done;){for(var ci=ei.entries(),ui=!1,li=0;(ai=ci.next())&&!ai.done;){var di=oi.value,fi=di[0],pi=di[1],hi=ai.value,vi=hi[0],bi=hi[1];!ui&&!ri[li]&&(ui=ni.equals(fi,vi,si,li,ti,ei,ni)&&ni.equals(pi,bi,fi,vi,ti,ei,ni))&&(ri[li]=!0),li++}if(!ui)return!1;si++}return!0}function yt(ti,ei,ni){var ri=$e(ti),ii=ri.length;if($e(ei).length!==ii)return!1;for(var si;ii-- >0;)if(si=ri[ii],si===Te&&(ti.$$typeof||ei.$$typeof)&&ti.$$typeof!==ei.$$typeof||!be(ei,si)||!ni.equals(ti[si],ei[si],si,si,ti,ei,ni))return!1;return!0}function R$2(ti,ei,ni){var ri=Ee(ti),ii=ri.length;if(Ee(ei).length!==ii)return!1;for(var si,oi,ai;ii-- >0;)if(si=ri[ii],si===Te&&(ti.$$typeof||ei.$$typeof)&&ti.$$typeof!==ei.$$typeof||!be(ei,si)||!ni.equals(ti[si],ei[si],si,si,ti,ei,ni)||(oi=xe(ti,si),ai=xe(ei,si),(oi||ai)&&(!oi||!ai||oi.configurable!==ai.configurable||oi.enumerable!==ai.enumerable||oi.writable!==ai.writable)))return!1;return!0}function wt(ti,ei){return P$1(ti.valueOf(),ei.valueOf())}function Et(ti,ei){return ti.source===ei.source&&ti.flags===ei.flags}function ze(ti,ei,ni){if(ti.size!==ei.size)return!1;for(var ri={},ii=ti.values(),si,oi;(si=ii.next())&&!si.done;){for(var ai=ei.values(),ci=!1,ui=0;(oi=ai.next())&&!oi.done;)!ci&&!ri[ui]&&(ci=ni.equals(si.value,oi.value,si.value,oi.value,ti,ei,ni))&&(ri[ui]=!0),ui++;if(!ci)return!1}return!0}function bt(ti,ei){var ni=ti.length;if(ei.length!==ni)return!1;for(;ni-- >0;)if(ti[ni]!==ei[ni])return!1;return!0}var Tt="[object Arguments]",xt="[object Boolean]",$t="[object Date]",Ct="[object Map]",zt="[object Number]",kt="[object Object]",At="[object RegExp]",Dt="[object Set]",Nt="[object String]",qt=Array.isArray,ke=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,Ae=Object.assign,Bt=Object.prototype.toString.call.bind(Object.prototype.toString);function St(ti){var ei=ti.areArraysEqual,ni=ti.areDatesEqual,ri=ti.areMapsEqual,ii=ti.areObjectsEqual,si=ti.arePrimitiveWrappersEqual,oi=ti.areRegExpsEqual,ai=ti.areSetsEqual,ci=ti.areTypedArraysEqual;return function(ui,li,di){if(ui===li)return!0;if(ui==null||li==null||typeof ui!="object"||typeof li!="object")return ui!==ui&&li!==li;var fi=ui.constructor;if(fi!==li.constructor)return!1;if(fi===Object)return ii(ui,li,di);if(qt(ui))return ei(ui,li,di);if(ke!=null&&ke(ui))return ci(ui,li,di);if(fi===Date)return ni(ui,li,di);if(fi===RegExp)return oi(ui,li,di);if(fi===Map)return ri(ui,li,di);if(fi===Set)return ai(ui,li,di);var pi=Bt(ui);return pi===$t?ni(ui,li,di):pi===At?oi(ui,li,di):pi===Ct?ri(ui,li,di):pi===Dt?ai(ui,li,di):pi===kt?typeof ui.then!="function"&&typeof li.then!="function"&&ii(ui,li,di):pi===Tt?ii(ui,li,di):pi===xt||pi===zt||pi===Nt?si(ui,li,di):!1}}function Mt(ti){var ei=ti.circular,ni=ti.createCustomConfig,ri=ti.strict,ii={areArraysEqual:ri?R$2:vt,areDatesEqual:mt,areMapsEqual:ri?we(Ce,R$2):Ce,areObjectsEqual:ri?R$2:yt,arePrimitiveWrappersEqual:wt,areRegExpsEqual:Et,areSetsEqual:ri?we(ze,R$2):ze,areTypedArraysEqual:ri?R$2:bt};if(ni&&(ii=Ae({},ii,ni(ii))),ei){var si=V$1(ii.areArraysEqual),oi=V$1(ii.areMapsEqual),ai=V$1(ii.areObjectsEqual),ci=V$1(ii.areSetsEqual);ii=Ae({},ii,{areArraysEqual:si,areMapsEqual:oi,areObjectsEqual:ai,areSetsEqual:ci})}return ii}function It(ti){return function(ei,ni,ri,ii,si,oi,ai){return ti(ei,ni,ai)}}function Lt(ti){var ei=ti.circular,ni=ti.comparator,ri=ti.createState,ii=ti.equals,si=ti.strict;if(ri)return function(ai,ci){var ui=ri(),li=ui.cache,di=li===void 0?ei?new WeakMap:void 0:li,fi=ui.meta;return ni(ai,ci,{cache:di,equals:ii,meta:fi,strict:si})};if(ei)return function(ai,ci){return ni(ai,ci,{cache:new WeakMap,equals:ii,meta:void 0,strict:si})};var oi={cache:void 0,equals:ii,meta:void 0,strict:si};return function(ai,ci){return ni(ai,ci,oi)}}var Ot=M();M({strict:!0}),M({circular:!0}),M({circular:!0,strict:!0}),M({createInternalComparator:function(){return P$1}}),M({strict:!0,createInternalComparator:function(){return P$1}}),M({circular:!0,createInternalComparator:function(){return P$1}}),M({circular:!0,createInternalComparator:function(){return P$1},strict:!0});function M(ti){ti===void 0&&(ti={});var ei=ti.circular,ni=ei===void 0?!1:ei,ri=ti.createInternalComparator,ii=ti.createState,si=ti.strict,oi=si===void 0?!1:si,ai=Mt(ti),ci=St(ai),ui=ri?ri(ci):It(ci);return Lt({circular:ni,comparator:ci,createState:ii,equals:ui,strict:oi})}function De(ti,ei){const ni=ti.nodes.map(ii=>{const si=ei.nodes[ii.id];if(!si)return ii;const{x:oi,y:ai,width:ci,height:ui}=si;return{...ii,width:ci,height:ui,position:[oi,ai]}}),ri=ti.edges.map(ii=>{const si=ei.edges[ii.id];return si?{...ii,...si}:ii});return{...ti,bounds:{x:ei.x,y:ei.y,width:ei.width,height:ei.height},nodes:ni,edges:ri}}const Ne=(ti,ei)=>ti.width>ei.width+10||ti.height>ei.height+10;function Pt(ti,ei){if(ti.hash===ei.hash)return{diagram:De(ti,ei)};if(Ot(ti.autoLayout,ei.autoLayout)&&ti.nodes.every(ri=>{const ii=ei.nodes[ri.id];return!!ii&&(ri.children.length>0&&ii.isCompound||ri.children.length===0&&!ii.isCompound)&&(ii.isCompound||Ne(ri,ii)===!1)})&&ti.edges.every(ri=>{const ii=ei.edges[ri.id];return!!ii&&(!ri.labelBBox&&!ii.labelBBox||!!ri.labelBBox&&!!ii.labelBBox&&ri.labelBBox.width<=ii.labelBBox.width&&ri.labelBBox.height<=ii.labelBBox.height)}))return{diagram:De(ti,ei)};const ni=ti.nodes.reduce((ri,ii)=>{const si=ei.nodes[ii.id];if(ii.children.length>0||!si)return ri;const oi={id:ii.id,center:{x:Math.round(si.x+si.width/2),y:Math.round(si.y+si.height/2)}};return si.isCompound||Ne(ii,si)||(oi.fixedsize={width:si.width,height:si.height}),ri.push(oi),ri},[]);return{relayout:{x:ei.x,y:ei.y,height:ei.height,nodes:ni,edges:t$1(ei.edges).flatMap(([ri,ii])=>ii.dotpos?{id:ri,dotpos:ii.dotpos}:[])}}}function $$1(ti){return ti.children.length>0}function b$1(ti){switch(ti){case"open":return"vee";default:return ti}}function N$2(ti){return Array.isArray(ti)?[N$2(ti[0]),N$2(ti[1])]:(index_DafVOuVd.u(isFinite(ti),`Invalid not finite point value ${ti}`),Math.round(ti))}const qe=ti=>(index_DafVOuVd.u(isFinite(ti),`Invalid not finite inch value ${ti}`),Math.floor(ti*72)),v$3=ti=>Math.ceil(ti/72*1e3)/1e3,C$2=ti=>Math.ceil(ti);C$2(40).toString();function Be(ti,ei){return toHex(scale(ti,{l:-35-5*ei,s:-15-5*ei}))}function Gt(ti){return toHex(transparentize(ti,.3))}function Rt(ti){return ti.trim().replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function ie(ti,ei,ni){let ri=ut(ti,{width:ei,indent:"",escape:Rt}).split(`
210
- `);return n$5(ni)&&ni>0&&ri.length>ni&&(ri=ri.slice(0,ni-1)),ri}function I$2({text:ti,maxchars:ei,fontsize:ni,maxLines:ri,bold:ii,color:si}){let oi=ie(ti,ei,ri).join("<BR/>");ii&&(oi=`<B>${oi}</B>`);const ai=si?` COLOR="${si}"`:"";return`<FONT POINT-SIZE="${C$2(ni)}"${ai}>${oi}</FONT>`}function jt(ti,ei){const ni=n$7(ti.icon),ri=[I$2({text:ti.title,fontsize:19,maxchars:35,maxLines:3})];if(n$7(ti.technology)&&ri.push(I$2({text:ti.technology,fontsize:12,maxchars:ni?35:45,maxLines:1,color:ei.loContrast})),n$7(ti.description)&&ri.push(I$2({text:ti.description,fontsize:14,maxchars:ni?35:45,maxLines:5,color:ei.loContrast})),ri.length===1&&!ni)return`<${ri[0]}>`;const ii=ni?(si,oi,ai)=>{let ci=`<TD ALIGN="TEXT" BALIGN="LEFT">${si}</TD>`;if(oi===0){const ui=ai.length>1?` ROWSPAN="${ai.length}"`:"";let li=76;(ti.shape==="queue"||ti.shape==="mobile")&&(li+=20),ci=`<TD${ui} WIDTH="${li}"> </TD>${ci}`,ci=`${ci}<TD${ui} WIDTH="16"> </TD>`}return`<TR>${ci}</TR>`}:si=>`<TR><TD>${si}</TD></TR>`;return`<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="6">${ri.map(ii).join("")}</TABLE>>`}function _t(ti,ei){const ni=I$2({text:ti.title.toUpperCase(),maxchars:50,fontsize:11,maxLines:1,bold:!0,color:ei});return ni.includes("<BR/>")?`<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD ALIGN="TEXT" BALIGN="LEFT">${ni}</TD></TR></TABLE>>`:`<${ni}>`}const j$2=40,se=`BGCOLOR="${Te$2.relationships[index_DafVOuVd.x].labelBgColor}A0"`;function Se({label:ti,technology:ei}){const ni=[];if(n$7(ti)&&ni.push(I$2({text:ti,maxchars:j$2,fontsize:14,maxLines:5,bold:ti==="[...]"})),n$7(ei)&&ni.push(I$2({text:`[ ${ei} ]`,fontsize:12,maxLines:1,maxchars:j$2})),ni.length===0)return null;const ri=ni.map(ii=>`<TR><TD ALIGN="TEXT" BALIGN="LEFT">${ii}</TD></TR>`).join("");return`<<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" ${se}>${ri}</TABLE>>`}function Ft(ti,ei){const ni=`<TABLE BORDER="0" CELLPADDING="6" ${se}><TR><TD WIDTH="20" HEIGHT="20"><FONT POINT-SIZE="${C$2(14)}"><B>${ti}</B></FONT></TD></TR></TABLE>`;return n$7(ei)?`<${['<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">',"<TR>",`<TD>${ni}</TD>`,`<TD ${se} CELLPADDING="2">`,I$2({text:ei,maxchars:j$2,fontsize:14}),"</TD>","</TR>","</TABLE>"].join("")}>`:`<${ni}>`}const oe="dashed",ae=Te$2.font;class le{constructor(ei){this.view=ei,this.compoundIds=new Set(ei.nodes.filter($$1).map(ii=>ii.id)),this.edgesWithCompounds=new Set(this.compoundIds.size>0?ei.edges.filter(ii=>this.compoundIds.has(ii.source)||this.compoundIds.has(ii.target)).map(ii=>ii.id):[]);const ni=new Map;for(const ii of ei.edges)ni.set(ii.id,index_DafVOuVd.K(ii.source,ii.target));this.edgeDistances=ni;const ri=this.graphvizModel=this.createGraph();this.applyNodeAttributes(ri.attributes.node),this.applyEdgeAttributes(ri.attributes.edge)}ids=new Set;subgraphs=new Map;nodes=new Map;edges=new Map;compoundIds;edgesWithCompounds;edgeDistances;graphvizModel;get hasEdgesWithCompounds(){return this.edgesWithCompounds.size>0}postBuild(ei){}build(ei){const ni=(ii,si)=>{const oi=this.nodeId(ii),ai=this.elementToSubgraph(ii,si.subgraph(oi));this.subgraphs.set(ii.id,ai);for(const ci of ii.children){const ui=this.viewElement(ci);if($$1(ui))ni(ui,ai);else{const li=index_DafVOuVd.J(this.getGraphNode(ui.id),`Graphviz Node not found for ${ui.id}`);ai.node(li.id)}}},ri=[];for(const ii of this.view.nodes)if($$1(ii))n$6(ii.parent)&&ri.push(ii);else{const si=this.nodeId(ii),oi=this.elementToNode(ii,ei.node(si));this.nodes.set(ii.id,oi)}for(const ii of ri)ni(ii,ei);for(const ii of this.view.edges){const si=this.addEdge(ii,ei);si&&this.edges.set(ii.id,si)}}print(){const ei=this.graphvizModel;return this.build(ei),this.postBuild(ei),toDot(this.graphvizModel,{print:{indentStyle:"space",indentSize:2}})}createGraph(){const ei=this.view.autoLayout,ni=digraph({[attribute.bgcolor]:"transparent",[attribute.layout]:"dot",[attribute.compound]:!0,[attribute.rankdir]:ei.direction,[attribute.TBbalance]:"min",[attribute.splines]:"spline",[attribute.outputorder]:"nodesfirst",[attribute.nodesep]:v$3(ei.nodeSep??110),[attribute.ranksep]:v$3(ei.rankSep??120),[attribute.pack]:C$2(ei.rankSep??120),[attribute.packmode]:"array_3",[attribute.pad]:v$3(15),[attribute.fontname]:ae});return ni.attributes.graph.apply({[attribute.fontsize]:C$2(15),[attribute.labeljust]:ei.direction==="RL"?"r":"l",[attribute.labelloc]:ei.direction==="BT"?"b":"t",[attribute.margin]:50.1}),ni}applyNodeAttributes(ei){ei.apply({[attribute.fontname]:ae,[attribute.shape]:"rect",[attribute.width]:v$3(320),[attribute.height]:v$3(180),[attribute.style]:"filled",[attribute.penwidth]:0})}applyEdgeAttributes(ei){ei.apply({[attribute.arrowsize]:.75,[attribute.fontname]:ae,[attribute.fontsize]:C$2(14),[attribute.penwidth]:C$2(2),[attribute.color]:Te$2.relationships[index_DafVOuVd.x].lineColor,[attribute.fontcolor]:Te$2.relationships[index_DafVOuVd.x].labelColor})}checkNodeId(ei,ni=!1){return ni?ei="cluster_"+ei:ei.toLowerCase().startsWith("cluster")&&(ei="nd_"+ei),this.ids.has(ei)?null:(this.ids.add(ei),ei)}nodeId(ei){const ni=$$1(ei);let ri=index_DafVOuVd.N(ei.id).toLowerCase(),ii=this.checkNodeId(ri,ni);if(ii!==null)return ii;let si=ei.id,oi;for(;oi=index_DafVOuVd.S(si);){if(ri=index_DafVOuVd.N(oi).toLowerCase()+"_"+ri,ii=this.checkNodeId(ri,ni),ii!==null)return ii;si=oi}ri=index_DafVOuVd.N(ei.id).toLowerCase();let ai=1;do ii=this.checkNodeId(ri+"_"+ai++,ni);while(ii===null);return ii}elementToSubgraph(ei,ni){index_DafVOuVd.u($$1(ei),"node should be compound"),index_DafVOuVd.u(e$2(ei.depth),"node.depth should be defined");const ri=this.getElementColorValues(ei.color),ii=Gt(ri.loContrast);return ni.apply({[attribute.likec4_id]:ei.id,[attribute.likec4_level]:ei.level,[attribute.likec4_depth]:ei.depth,[attribute.fillcolor]:Be(ri.fill,ei.depth),[attribute.color]:Be(ri.stroke,ei.depth),[attribute.style]:"filled",[attribute.margin]:C$2(ei.children.length>1?40:32)}),n$4(ei.title.trim())||ni.set(attribute.label,_t(ei,ii)),ni}elementToNode(ei,ni){index_DafVOuVd.u(!$$1(ei),"node should not be compound");const ri=n$7(ei.icon),ii=this.getElementColorValues(ei.color);switch(ni.attributes.apply({[attribute.likec4_id]:ei.id,[attribute.likec4_level]:ei.level,[attribute.fillcolor]:ii.fill,[attribute.fontcolor]:ii.hiContrast,[attribute.color]:ii.stroke,[attribute.margin]:`${v$3(ri?10:26)},${v$3(26)}`}),ei.shape){case"cylinder":case"storage":{ni.attributes.apply({[attribute.margin]:`${v$3(ri?10:26)},${v$3(0)}`,[attribute.penwidth]:C$2(2),[attribute.shape]:"cylinder"});break}case"browser":{ni.attributes.apply({[attribute.margin]:`${v$3(ri?10:30)},${v$3(32)}`});break}case"mobile":{ni.attributes.apply({[attribute.margin]:`${v$3(ri?10:30)},${v$3(26)}`});break}case"queue":{ni.attributes.apply({[attribute.width]:v$3(320),[attribute.height]:v$3(165),[attribute.margin]:`${v$3(ri?10:30)},${v$3(26)}`});break}}return ni.attributes.set(attribute.label,jt(ei,ii)),ni}leafElements(ei){return ei===null?this.view.nodes.filter(ni=>!$$1(ni)):this.viewElement(ei).children.flatMap(ni=>{const ri=this.viewElement(ni);return $$1(ri)?this.leafElements(ri.id):ri})}descendants(ei){return ei===null?this.view.nodes.slice():this.viewElement(ei).children.flatMap(ni=>{const ri=this.viewElement(ni);return[ri,...this.descendants(ri.id)]})}viewElement(ei){return index_DafVOuVd.J(this.view.nodes.find(ni=>ni.id===ei),`Node ${ei} not found`)}getGraphNode(ei){return this.nodes.get(ei)??null}getSubgraph(ei){return this.subgraphs.get(ei)??null}edgeEndpoint(ei,ni){let ri=this.viewElement(ei),ii=this.getGraphNode(ei),si;return ii||(index_DafVOuVd.u($$1(ri),"endpoint node should be compound"),si=this.getSubgraph(ei)?.id,index_DafVOuVd.u(si,`subgraph ${ei} not found`),ri=index_DafVOuVd.J(ni(this.leafElements(ei)),`leaf element in ${ei} not found`),ii=index_DafVOuVd.J(this.getGraphNode(ri.id),`source graphviz node ${ri.id} not found`)),[ri,ii,si]}findInternalEdges(ei){if(ei===null)return this.view.edges.slice();const ni=this.viewElement(ei);return x$1(this.descendants(ei),u$5(ri=>a$6(ri.inEdges,ri.outEdges)),i$b(),d$2(a$6(ni.inEdges,ni.outEdges)),m$1(ri=>this.view.edges.find(ii=>ii.id===ri)),T$2(n$7))}withoutCompoundEdges(ei){return this.edgesWithCompounds.size===0?ei:{...ei,inEdges:ei.inEdges.filter(ni=>!this.edgesWithCompounds.has(ni)),outEdges:ei.outEdges.filter(ni=>!this.edgesWithCompounds.has(ni))}}assignGroups(){const ei=x$1(this.view.nodes,T$2($$1),m$1(ri=>ri.id),m$2(index_DafVOuVd.w),t$6(),m$1(ri=>{const ii=this.findInternalEdges(ri).filter(si=>si.source!==si.target&&!this.compoundIds.has(si.source)&&!this.compoundIds.has(si.target));return{id:ri,edges:ii}}),T$2(({edges:ri})=>ri.length>1&&ri.length<8),l$9(4)),ni=new Set;for(const ri of ei){const ii=ri.edges.filter(si=>!ni.has(si.source)&&!ni.has(si.target));for(const si of ii)try{const oi=index_DafVOuVd.J(this.getGraphNode(si.source),`Graphviz Node not found for ${si.source}`),ai=index_DafVOuVd.J(this.getGraphNode(si.target),`Graphviz Node not found for ${si.target}`);ni.add(si.source),ni.add(si.target),oi.attributes.set(attribute.group,ri.id),ai.attributes.set(attribute.group,ri.id)}catch(oi){Ye.error(oi)}}}applyManualLayout({height:ei,...ni}){const ri=ni.x<0?-ni.x:0,ii=ni.y<0?-ni.y:0,si=ri>0||ii>0;for(const{id:oi,...ai}of ni.nodes){const ci=this.getGraphNode(oi);if(!ci)continue;const ui=v$3(ai.center.x)+ri,li=v$3(ei-ai.center.y);ai.fixedsize?ci.attributes.apply({[attribute.pos]:`${ui},${li}!`,[attribute.pin]:!0,[attribute.width]:v$3(ai.fixedsize.width),[attribute.height]:v$3(ai.fixedsize.height),[attribute.fixedsize]:!0}):ci.attributes.set(attribute.pos,`${ui},${li}`)}for(const[oi,ai]of this.edges.entries()){ai.attributes.delete(attribute.weight),ai.attributes.delete(attribute.minlen),ai.attributes.delete(attribute.constraint);const ci=ni.edges.find(ui=>ui.id===oi)?.dotpos;ci&&!si&&ai.attributes.set(attribute.pos,ci)}return this.graphvizModel.apply({[attribute.layout]:"fdp",[attribute.overlap]:"vpsc",[attribute.sep]:"+50,50",[attribute.esep]:"+10,10",[attribute.start]:"random2",[attribute.splines]:"compound"}),this.graphvizModel.delete(attribute.compound),this.graphvizModel.delete(attribute.rankdir),this.graphvizModel.delete(attribute.nodesep),this.graphvizModel.delete(attribute.ranksep),this.graphvizModel.delete(attribute.pack),this.graphvizModel.delete(attribute.pad),this.graphvizModel.delete(attribute.packmode),this.graphvizModel.attributes.graph.delete(attribute.margin),this}getRelationshipColorValues(ei){return a$b(ei)?Te$2.relationships[ei]:this.view.customColorDefinitions[ei]?.relationships??Te$2.relationships[index_DafVOuVd.U]}getElementColorValues(ei){return a$b(ei)?Te$2.elements[ei]:this.view.customColorDefinitions[ei]?.elements??Te$2.elements[index_DafVOuVd.U]}}class Wt extends le{createGraph(){const ei=super.createGraph(),ni=this.view.autoLayout;return ei.delete(attribute.TBbalance),ei.apply({[attribute.nodesep]:v$3(ni.nodeSep??130),[attribute.ranksep]:v$3(ni.rankSep??130)}),ei}postBuild(ei){x$1(this.view.nodes,m$1(ni=>({node:ni,graphvizNode:this.getGraphNode(ni.id)})),i$5(({node:ni,graphvizNode:ri})=>{if(ri!=null)return index_DafVOuVd.h.modelRef(ni)??void 0}),r$8(),T$2(i$a(2)),u$4(ni=>{ei.subgraph({[attribute.rank]:"same"},ri=>{for(const{graphvizNode:ii}of ni)ri.node(index_DafVOuVd.J(ii).id)})}),r$6(()=>{ei.set(attribute.newrank,!0),ei.set(attribute.clusterrank,"global"),ei.delete(attribute.pack),ei.delete(attribute.packmode)}))}elementToSubgraph(ei,ni){const ri=super.elementToSubgraph(ei,ni);return ei.children.length>1&&ri.set(attribute.margin,C$2(50)),ri}addEdge(ei,ni){const[ri,ii]=[ei.source,ei.target],[si,oi,ai]=this.edgeEndpoint(ri,wi=>a$9(wi)),[ci,ui,li]=this.edgeEndpoint(ii,d$3),di=l$6(li)||l$6(ai),fi=ni.edge([oi,ui],{[attribute.likec4_id]:ei.id,[attribute.style]:ei.line??oe});li&&fi.attributes.set(attribute.lhead,li),ai&&fi.attributes.set(attribute.ltail,ai);const pi=this.edgeDistances.get(ei.id)??0,hi=[...si.inEdges,...si.outEdges,...ci.inEdges,...ci.outEdges].reduce((wi,Ri)=>Math.max(wi,this.edgeDistances.get(Ri)??0),0);hi-pi>1&&fi.attributes.set(attribute.weight,hi-pi);const vi=Se(ei);if(vi&&fi.attributes.set(di?attribute.xlabel:attribute.label,vi),ei.color){const wi=this.getRelationshipColorValues(ei.color);fi.attributes.apply({[attribute.color]:wi.lineColor,[attribute.fontcolor]:wi.labelColor})}let[bi,gi]=[ei.head??index_DafVOuVd.B,ei.tail??"none"];return bi==="none"&&gi==="none"?(fi.attributes.apply({[attribute.arrowtail]:"none",[attribute.arrowhead]:"none",[attribute.dir]:"none"}),fi):ei.dir==="both"?(fi.attributes.apply({[attribute.arrowhead]:b$1(bi),[attribute.arrowtail]:b$1(ei.tail??bi),[attribute.dir]:"both"}),!di&&index_DafVOuVd.h.modelRef(si)!==index_DafVOuVd.h.modelRef(ci)&&fi.attributes.set(attribute.constraint,!1),fi):(bi!==index_DafVOuVd.B&&fi.attributes.set(attribute.arrowhead,b$1(bi)),gi!=="none"&&fi.attributes.set(attribute.arrowtail,b$1(gi)),fi)}}class ce extends le{static toDot(ei){return new ce(ei).print()}postBuild(ei){ei.set(attribute.TBbalance,"max"),index_DafVOuVd.E(this.edgesWithCompounds,ni=>this.view.edges.some(ri=>ri.id===ni&&ri.label))&&(ei.delete(attribute.pack),ei.delete(attribute.packmode))}addEdge(ei,ni){const{nodes:ri}=this.view,[ii,si]=ei.dir==="back"?[ei.target,ei.source]:[ei.source,ei.target],[oi,ai,ci]=this.edgeEndpoint(ii,ki=>a$9(ki)),[ui,li,di]=this.edgeEndpoint(si,d$3),fi=ni.edge([ai,li],{[attribute.likec4_id]:ei.id,[attribute.style]:ei.line??oe});if(di&&fi.attributes.set(attribute.lhead,di),ci&&fi.attributes.set(attribute.ltail,ci),ei.color&&ei.color!==index_DafVOuVd.x){const ki=this.getRelationshipColorValues(ei.color);fi.attributes.apply({[attribute.color]:ki.lineColor,[attribute.fontcolor]:ki.labelColor})}const pi=index_DafVOuVd.H(ei.id),hi=Ft(pi,ei.label?.trim());fi.attributes.set(attribute.label,hi);const vi=this.edgeDistances.get(ei.id)??0,bi=[...oi.inEdges,...oi.outEdges,...ui.inEdges,...ui.outEdges].reduce((ki,Ai)=>Math.max(ki,this.edgeDistances.get(Ai)??0),0);bi-vi>1&&fi.attributes.set(attribute.weight,bi-vi);const gi=ri.findIndex(ki=>ki.id===ii);ri.findIndex(ki=>ki.id===si)<gi&&ei.dir!=="back"&&fi.attributes.apply({[attribute.constraint]:!1});let[wi,Ri]=[ei.head??index_DafVOuVd.B,ei.tail??"none"];return ei.dir==="back"?(fi.attributes.apply({[attribute.arrowtail]:b$1(wi),[attribute.minlen]:0,[attribute.dir]:"back"}),Ri!=="none"&&fi.attributes.apply({[attribute.arrowhead]:b$1(Ri),[attribute.dir]:"both"}),fi):wi==="none"&&Ri==="none"||wi!=="none"&&Ri!=="none"?(fi.attributes.apply({[attribute.arrowhead]:b$1(wi),[attribute.arrowtail]:b$1(Ri),[attribute.dir]:"both"}),fi):wi==="none"?(fi.attributes.delete(attribute.arrowhead),fi.attributes.apply({[attribute.arrowtail]:b$1(Ri),[attribute.minlen]:0,[attribute.dir]:"back"}),fi):(wi!==index_DafVOuVd.B&&fi.attributes.set(attribute.arrowhead,b$1(wi)),fi)}}class Jt extends le{postBuild(ei){this.assignGroups();const ni=new Set,ri=this.view.nodes.reduce((ii,si)=>($$1(si)&&(ni.add(si.id),ii.push(si)),ii),[]);for(const ii of ri){const si=x$1(ii.children,T$2(ui=>!this.compoundIds.has(ui)),m$1(ui=>this.viewElement(ui)),T$2(ui=>ui.inEdges.length===0&&ui.outEdges.length===0));if(si.length<=2)continue;let oi=2;switch(!0){case si.length>11:oi=4;break;case si.length>4:oi=3;break}const ai=index_DafVOuVd.J(this.getSubgraph(ii.id),`Subgraph not found for ${ii.id}`);let ci=null;f$4(si,oi).forEach(ui=>{const li=ui.length>1?ai.createSubgraph({[attribute.rank]:"same"}):null;ui.forEach((di,fi)=>{const pi=this.getGraphNode(di.id);pi&&(li?.node(pi.id),fi===0&&(ci&&ai.edge([ci,pi],{[attribute.style]:"invis"}),ci=pi))})})}index_DafVOuVd.E(this.edgesWithCompounds,ii=>this.view.edges.some(si=>si.id===ii&&si.label))&&(ei.delete(attribute.pack),ei.delete(attribute.packmode))}addEdge(ei,ni){const ri=this.view.edges,[ii,si]=ei.dir==="back"?[ei.target,ei.source]:[ei.source,ei.target],[oi,ai,ci]=this.edgeEndpoint(ii,Ai=>a$9(Ai)),[ui,li,di]=this.edgeEndpoint(si,d$3),fi=ei.parent,pi=ni.edge([ai,li],{[attribute.likec4_id]:ei.id,[attribute.style]:ei.line??oe});di&&pi.attributes.set(attribute.lhead,di),ci&&pi.attributes.set(attribute.ltail,ci);const hi=l$6(di)||l$6(ci),vi=this.edgeDistances.get(ei.id)??0,bi=[...oi.inEdges,...oi.outEdges,...ui.inEdges,...ui.outEdges].reduce((Ai,Ni)=>Math.max(Ai,this.edgeDistances.get(Ni)??0),0);bi-vi>1&&pi.attributes.set(attribute.weight,bi-vi);const gi=Se(ei);if(gi&&pi.attributes.set(hi?attribute.xlabel:attribute.label,gi),ei.color){const Ai=this.getRelationshipColorValues(ei.color);pi.attributes.apply({[attribute.color]:Ai.lineColor,[attribute.fontcolor]:Ai.labelColor})}let[wi,Ri]=[ei.head??index_DafVOuVd.B,ei.tail??"none"];if(ei.dir==="back")return pi.attributes.apply({[attribute.arrowtail]:b$1(wi),[attribute.dir]:"back"}),Ri!=="none"&&pi.attributes.apply({[attribute.arrowhead]:b$1(Ri),[attribute.dir]:"both",[attribute.minlen]:0}),pi;if(wi==="none"&&Ri==="none")return pi.attributes.apply({[attribute.arrowtail]:"none",[attribute.arrowhead]:"none",[attribute.dir]:"none",[attribute.minlen]:0,[attribute.constraint]:!1}),pi;if(wi!=="none"&&Ri!=="none")return pi.attributes.apply({[attribute.arrowhead]:b$1(wi),[attribute.arrowtail]:b$1(Ri),[attribute.dir]:"both",[attribute.minlen]:0}),pi;if(wi!==index_DafVOuVd.B&&pi.attributes.set(attribute.arrowhead,b$1(wi)),Ri!=="none"&&pi.attributes.set(attribute.arrowtail,b$1(Ri)),ri.length===1)return pi;let ki;return fi===null&&oi.parent==null&&ui.parent==null?ki=ri.filter(Ai=>{if(Ai.id===ei.id||Ai.parent!==null||Ai.source===ei.source&&Ai.target===ei.target||Ai.source===ei.target&&Ai.target===ei.source)return!1;const Ni=this.viewElement(Ai.source),_i=this.viewElement(Ai.target);return $$1(Ni)||$$1(_i)?!1:Ni.parent==null&&_i.parent==null}):ki=this.findInternalEdges(fi).filter(Ai=>!(Ai.id===ei.id||Ai.source===ei.source&&Ai.target===ei.target||Ai.source===ei.target&&Ai.target===ei.source)),ki.length===0&&(fi===null||this.leafElements(fi).length<=3)&&pi.attributes.set(attribute.minlen,0),pi}}function U(ti){const[ei,ni,ri,ii]=ti?ti.split(",").map(ai=>N$2(+ai)):[0,0,0,0],si=Math.round(ri-ei),oi=Math.round(ni-ii);return{x:Math.round(ei),y:Math.round(ii),width:si,height:oi}}function Ht(ti){try{const[ei,ni]=ti.split(",");return{x:N$2(parseFloat(ei)),y:N$2(parseFloat(ni))}}catch(ei){throw new Error(`Failed on parsing pos: ${ti}`,{cause:ei})}}function Me(ti){const{x:ei,y:ni}=Ht(ti.pos),ri=qe(parseFloat(ti.width)),ii=qe(parseFloat(ti.height));return{x:ei-Math.round(ri/2),y:ni-Math.round(ii/2),width:ri,height:ii}}function Ie(ti,[ei,ni]=[0,0]){if(!ti||ti.length===0)return null;let ri=1/0,ii=1/0,si=-1/0,oi=-1/0,ai=13;try{for(const ui of ti){if(ui.op==="F"){ai=N$2(ui.size);continue}if(ui.op==="T"){let li=N$2(ui.pt[0])-ei,di=N$2(ui.width);switch(ui.align){case"r":li-=di;break;case"c":li-=Math.round(di/2);break}ri=Math.min(ri,li),si=Math.max(si,li+di);let fi=N$2(ui.pt[1])-ni;ii=Math.min(ii,Math.round(fi-ai)),oi=Math.max(oi,fi)}}}catch(ui){return Ye.warn(`Failed on parsing label draw ops: ${ui}
211
- ${JSON.stringify(ti,null,2)}`),null}if(ri===1/0)return null;const ci=2;return{x:ri-ci,y:ii-ci,width:si-ri+2*ci,height:oi-ii+2*ci}}function Le({_draw_:ti,likec4_id:ei="???"},ni="<unknown view>"){try{const ri=ti.filter(si=>si.op.toLowerCase()==="b");index_DafVOuVd.u(i$a(ri,1),`view ${ni} edge ${ei} should have at least one bezier draw op`),ri.length>1&&Ye.warn(`view ${ni} edge ${ei} has more than one bezier draw op, using the first one only`);const ii=ri[0].points.map(si=>N$2(si));return index_DafVOuVd.u(i$a(ii,2),`view ${ni} edge ${ei} should have at least two points`),ii}catch(ri){throw new Error(`failed on parsing view ${ni} edge ${ei} _draw_:
209
+ `&&(pi=pi.slice(0,pi.length-1)),ci(pi)}).join(ai);return ii.trim===!0&&(fi=ei(fi)),fi};function ni(ri){return ri}return wordWrap}var wordWrapExports=requireWordWrap();const ut=getDefaultExportFromCjs(wordWrapExports),Channel={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:ti=>ti>=255?255:ti<0?0:ti,g:ti=>ti>=255?255:ti<0?0:ti,b:ti=>ti>=255?255:ti<0?0:ti,h:ti=>ti%360,s:ti=>ti>=100?100:ti<0?0:ti,l:ti=>ti>=100?100:ti<0?0:ti,a:ti=>ti>=1?1:ti<0?0:ti},toLinear:ti=>{const ei=ti/255;return ti>.03928?Math.pow((ei+.055)/1.055,2.4):ei/12.92},hue2rgb:(ti,ei,ni)=>(ni<0&&(ni+=1),ni>1&&(ni-=1),ni<1/6?ti+(ei-ti)*6*ni:ni<1/2?ei:ni<2/3?ti+(ei-ti)*(2/3-ni)*6:ti),hsl2rgb:({h:ti,s:ei,l:ni},ri)=>{if(!ei)return ni*2.55;ti/=360,ei/=100,ni/=100;const ii=ni<.5?ni*(1+ei):ni+ei-ni*ei,si=2*ni-ii;switch(ri){case"r":return Channel.hue2rgb(si,ii,ti+1/3)*255;case"g":return Channel.hue2rgb(si,ii,ti)*255;case"b":return Channel.hue2rgb(si,ii,ti-1/3)*255}},rgb2hsl:({r:ti,g:ei,b:ni},ri)=>{ti/=255,ei/=255,ni/=255;const ii=Math.max(ti,ei,ni),si=Math.min(ti,ei,ni),oi=(ii+si)/2;if(ri==="l")return oi*100;if(ii===si)return 0;const ai=ii-si,ci=oi>.5?ai/(2-ii-si):ai/(ii+si);if(ri==="s")return ci*100;switch(ii){case ti:return((ei-ni)/ai+(ei<ni?6:0))*60;case ei:return((ni-ti)/ai+2)*60;case ni:return((ti-ei)/ai+4)*60;default:return-1}}},Lang={clamp:(ti,ei,ni)=>ei>ni?Math.min(ei,Math.max(ni,ti)):Math.min(ni,Math.max(ei,ti)),round:ti=>Math.round(ti*1e10)/1e10},Unit={dec2hex:ti=>{const ei=Math.round(ti).toString(16);return ei.length>1?ei:`0${ei}`}},Utils={channel:Channel,lang:Lang,unit:Unit},DEC2HEX={};for(let ti=0;ti<=255;ti++)DEC2HEX[ti]=Utils.unit.dec2hex(ti);const TYPE={ALL:0,RGB:1,HSL:2};class Type{constructor(){this.type=TYPE.ALL}get(){return this.type}set(ei){if(this.type&&this.type!==ei)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=ei}reset(){this.type=TYPE.ALL}is(ei){return this.type===ei}}class Channels{constructor(ei,ni){this.color=ni,this.changed=!1,this.data=ei,this.type=new Type}set(ei,ni){return this.color=ni,this.changed=!1,this.data=ei,this.type.type=TYPE.ALL,this}_ensureHSL(){const ei=this.data,{h:ni,s:ri,l:ii}=ei;ni===void 0&&(ei.h=Utils.channel.rgb2hsl(ei,"h")),ri===void 0&&(ei.s=Utils.channel.rgb2hsl(ei,"s")),ii===void 0&&(ei.l=Utils.channel.rgb2hsl(ei,"l"))}_ensureRGB(){const ei=this.data,{r:ni,g:ri,b:ii}=ei;ni===void 0&&(ei.r=Utils.channel.hsl2rgb(ei,"r")),ri===void 0&&(ei.g=Utils.channel.hsl2rgb(ei,"g")),ii===void 0&&(ei.b=Utils.channel.hsl2rgb(ei,"b"))}get r(){const ei=this.data,ni=ei.r;return!this.type.is(TYPE.HSL)&&ni!==void 0?ni:(this._ensureHSL(),Utils.channel.hsl2rgb(ei,"r"))}get g(){const ei=this.data,ni=ei.g;return!this.type.is(TYPE.HSL)&&ni!==void 0?ni:(this._ensureHSL(),Utils.channel.hsl2rgb(ei,"g"))}get b(){const ei=this.data,ni=ei.b;return!this.type.is(TYPE.HSL)&&ni!==void 0?ni:(this._ensureHSL(),Utils.channel.hsl2rgb(ei,"b"))}get h(){const ei=this.data,ni=ei.h;return!this.type.is(TYPE.RGB)&&ni!==void 0?ni:(this._ensureRGB(),Utils.channel.rgb2hsl(ei,"h"))}get s(){const ei=this.data,ni=ei.s;return!this.type.is(TYPE.RGB)&&ni!==void 0?ni:(this._ensureRGB(),Utils.channel.rgb2hsl(ei,"s"))}get l(){const ei=this.data,ni=ei.l;return!this.type.is(TYPE.RGB)&&ni!==void 0?ni:(this._ensureRGB(),Utils.channel.rgb2hsl(ei,"l"))}get a(){return this.data.a}set r(ei){this.type.set(TYPE.RGB),this.changed=!0,this.data.r=ei}set g(ei){this.type.set(TYPE.RGB),this.changed=!0,this.data.g=ei}set b(ei){this.type.set(TYPE.RGB),this.changed=!0,this.data.b=ei}set h(ei){this.type.set(TYPE.HSL),this.changed=!0,this.data.h=ei}set s(ei){this.type.set(TYPE.HSL),this.changed=!0,this.data.s=ei}set l(ei){this.type.set(TYPE.HSL),this.changed=!0,this.data.l=ei}set a(ei){this.changed=!0,this.data.a=ei}}const channels=new Channels({r:0,g:0,b:0,a:0},"transparent"),Hex={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:ti=>{if(ti.charCodeAt(0)!==35)return;const ei=ti.match(Hex.re);if(!ei)return;const ni=ei[1],ri=parseInt(ni,16),ii=ni.length,si=ii%4===0,oi=ii>4,ai=oi?1:17,ci=oi?8:4,ui=si?0:-1,li=oi?255:15;return channels.set({r:(ri>>ci*(ui+3)&li)*ai,g:(ri>>ci*(ui+2)&li)*ai,b:(ri>>ci*(ui+1)&li)*ai,a:si?(ri&li)*ai/255:1},ti)},stringify:ti=>{const{r:ei,g:ni,b:ri,a:ii}=ti;return ii<1?`#${DEC2HEX[Math.round(ei)]}${DEC2HEX[Math.round(ni)]}${DEC2HEX[Math.round(ri)]}${DEC2HEX[Math.round(ii*255)]}`:`#${DEC2HEX[Math.round(ei)]}${DEC2HEX[Math.round(ni)]}${DEC2HEX[Math.round(ri)]}`}},HSL={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:ti=>{const ei=ti.match(HSL.hueRe);if(ei){const[,ni,ri]=ei;switch(ri){case"grad":return Utils.channel.clamp.h(parseFloat(ni)*.9);case"rad":return Utils.channel.clamp.h(parseFloat(ni)*180/Math.PI);case"turn":return Utils.channel.clamp.h(parseFloat(ni)*360)}}return Utils.channel.clamp.h(parseFloat(ti))},parse:ti=>{const ei=ti.charCodeAt(0);if(ei!==104&&ei!==72)return;const ni=ti.match(HSL.re);if(!ni)return;const[,ri,ii,si,oi,ai]=ni;return channels.set({h:HSL._hue2deg(ri),s:Utils.channel.clamp.s(parseFloat(ii)),l:Utils.channel.clamp.l(parseFloat(si)),a:oi?Utils.channel.clamp.a(ai?parseFloat(oi)/100:parseFloat(oi)):1},ti)},stringify:ti=>{const{h:ei,s:ni,l:ri,a:ii}=ti;return ii<1?`hsla(${Utils.lang.round(ei)}, ${Utils.lang.round(ni)}%, ${Utils.lang.round(ri)}%, ${ii})`:`hsl(${Utils.lang.round(ei)}, ${Utils.lang.round(ni)}%, ${Utils.lang.round(ri)}%)`}},Keyword={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:ti=>{ti=ti.toLowerCase();const ei=Keyword.colors[ti];if(ei)return Hex.parse(ei)},stringify:ti=>{const ei=Hex.stringify(ti);for(const ni in Keyword.colors)if(Keyword.colors[ni]===ei)return ni}},RGB={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:ti=>{const ei=ti.charCodeAt(0);if(ei!==114&&ei!==82)return;const ni=ti.match(RGB.re);if(!ni)return;const[,ri,ii,si,oi,ai,ci,ui,li]=ni;return channels.set({r:Utils.channel.clamp.r(ii?parseFloat(ri)*2.55:parseFloat(ri)),g:Utils.channel.clamp.g(oi?parseFloat(si)*2.55:parseFloat(si)),b:Utils.channel.clamp.b(ci?parseFloat(ai)*2.55:parseFloat(ai)),a:ui?Utils.channel.clamp.a(li?parseFloat(ui)/100:parseFloat(ui)):1},ti)},stringify:ti=>{const{r:ei,g:ni,b:ri,a:ii}=ti;return ii<1?`rgba(${Utils.lang.round(ei)}, ${Utils.lang.round(ni)}, ${Utils.lang.round(ri)}, ${Utils.lang.round(ii)})`:`rgb(${Utils.lang.round(ei)}, ${Utils.lang.round(ni)}, ${Utils.lang.round(ri)})`}},Color={format:{keyword:Keyword,hex:Hex,rgb:RGB,rgba:RGB,hsl:HSL,hsla:HSL},parse:ti=>{if(typeof ti!="string")return ti;const ei=Hex.parse(ti)||RGB.parse(ti)||HSL.parse(ti)||Keyword.parse(ti);if(ei)return ei;throw new Error(`Unsupported color format: "${ti}"`)},stringify:ti=>!ti.changed&&ti.color?ti.color:ti.type.is(TYPE.HSL)||ti.data.r===void 0?HSL.stringify(ti):ti.a<1||!Number.isInteger(ti.r)||!Number.isInteger(ti.g)||!Number.isInteger(ti.b)?RGB.stringify(ti):Hex.stringify(ti)},change=(ti,ei)=>{const ni=Color.parse(ti);for(const ri in ei)ni[ri]=Utils.channel.clamp[ri](ei[ri]);return Color.stringify(ni)},toHex=ti=>Color.format.hex.stringify(Color.parse(ti)),adjustChannel=(ti,ei,ni)=>{const ri=Color.parse(ti),ii=ri[ei],si=Utils.channel.clamp[ei](ii+ni);return ii!==si&&(ri[ei]=si),Color.stringify(ri)},transparentize=(ti,ei)=>adjustChannel(ti,"a",-ei),adjust=(ti,ei)=>{const ni=Color.parse(ti),ri={};for(const ii in ei)ei[ii]&&(ri[ii]=ni[ii]+ei[ii]);return change(ti,ri)},scale=(ti,ei)=>{const ni=Color.parse(ti),ri={},ii=(si,oi,ai)=>oi>0?(ai-si)*oi/100:si*oi/100;for(const si in ei)ri[si]=ii(ni[si],ei[si],Utils.channel.max[si]);return adjust(ti,ri)};class Node{value;next;constructor(ei){this.value=ei}}class Queue{#e;#t;#n;constructor(){this.clear()}enqueue(ei){const ni=new Node(ei);this.#e?(this.#t.next=ni,this.#t=ni):(this.#e=ni,this.#t=ni),this.#n++}dequeue(){const ei=this.#e;if(ei)return this.#e=this.#e.next,this.#n--,ei.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#t=void 0,this.#n=0}get size(){return this.#n}*[Symbol.iterator](){let ei=this.#e;for(;ei;)yield ei.value,ei=ei.next}}function pLimit(ti){validateConcurrency(ti);const ei=new Queue;let ni=0;const ri=()=>{ni<ti&&ei.size>0&&(ei.dequeue()(),ni++)},ii=()=>{ni--,ri()},si=async(ci,ui,li)=>{const di=(async()=>ci(...li))();ui(di);try{await di}catch{}ii()},oi=(ci,ui,li)=>{new Promise(di=>{ei.enqueue(di)}).then(si.bind(void 0,ci,ui,li)),(async()=>(await Promise.resolve(),ni<ti&&ri()))()},ai=(ci,...ui)=>new Promise(li=>{oi(ci,li,ui)});return Object.defineProperties(ai,{activeCount:{get:()=>ni},pendingCount:{get:()=>ei.size},clearQueue:{value(){ei.clear()}},concurrency:{get:()=>ti,set(ci){validateConcurrency(ci),ti=ci,queueMicrotask(()=>{for(;ni<ti&&ei.size>0;)ri()})}}}),ai}function validateConcurrency(ti){if(!((Number.isInteger(ti)||ti===Number.POSITIVE_INFINITY)&&ti>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var pt=Object.getOwnPropertyNames,ft=Object.getOwnPropertySymbols,gt=Object.prototype.hasOwnProperty;function we(ti,ei){return function(ni,ri,ii){return ti(ni,ri,ii)&&ei(ni,ri,ii)}}function V$1(ti){return function(ei,ni,ri){if(!ei||!ni||typeof ei!="object"||typeof ni!="object")return ti(ei,ni,ri);var ii=ri.cache,si=ii.get(ei),oi=ii.get(ni);if(si&&oi)return si===ni&&oi===ei;ii.set(ei,ni),ii.set(ni,ei);var ai=ti(ei,ni,ri);return ii.delete(ei),ii.delete(ni),ai}}function Ee(ti){return pt(ti).concat(ft(ti))}var be=Object.hasOwn||function(ti,ei){return gt.call(ti,ei)};function P$1(ti,ei){return ti||ei?ti===ei:ti===ei||ti!==ti&&ei!==ei}var Te="_owner",xe=Object.getOwnPropertyDescriptor,$e=Object.keys;function vt(ti,ei,ni){var ri=ti.length;if(ei.length!==ri)return!1;for(;ri-- >0;)if(!ni.equals(ti[ri],ei[ri],ri,ri,ti,ei,ni))return!1;return!0}function mt(ti,ei){return P$1(ti.getTime(),ei.getTime())}function Ce(ti,ei,ni){if(ti.size!==ei.size)return!1;for(var ri={},ii=ti.entries(),si=0,oi,ai;(oi=ii.next())&&!oi.done;){for(var ci=ei.entries(),ui=!1,li=0;(ai=ci.next())&&!ai.done;){var di=oi.value,fi=di[0],pi=di[1],hi=ai.value,vi=hi[0],bi=hi[1];!ui&&!ri[li]&&(ui=ni.equals(fi,vi,si,li,ti,ei,ni)&&ni.equals(pi,bi,fi,vi,ti,ei,ni))&&(ri[li]=!0),li++}if(!ui)return!1;si++}return!0}function yt(ti,ei,ni){var ri=$e(ti),ii=ri.length;if($e(ei).length!==ii)return!1;for(var si;ii-- >0;)if(si=ri[ii],si===Te&&(ti.$$typeof||ei.$$typeof)&&ti.$$typeof!==ei.$$typeof||!be(ei,si)||!ni.equals(ti[si],ei[si],si,si,ti,ei,ni))return!1;return!0}function R$2(ti,ei,ni){var ri=Ee(ti),ii=ri.length;if(Ee(ei).length!==ii)return!1;for(var si,oi,ai;ii-- >0;)if(si=ri[ii],si===Te&&(ti.$$typeof||ei.$$typeof)&&ti.$$typeof!==ei.$$typeof||!be(ei,si)||!ni.equals(ti[si],ei[si],si,si,ti,ei,ni)||(oi=xe(ti,si),ai=xe(ei,si),(oi||ai)&&(!oi||!ai||oi.configurable!==ai.configurable||oi.enumerable!==ai.enumerable||oi.writable!==ai.writable)))return!1;return!0}function wt(ti,ei){return P$1(ti.valueOf(),ei.valueOf())}function Et(ti,ei){return ti.source===ei.source&&ti.flags===ei.flags}function ze(ti,ei,ni){if(ti.size!==ei.size)return!1;for(var ri={},ii=ti.values(),si,oi;(si=ii.next())&&!si.done;){for(var ai=ei.values(),ci=!1,ui=0;(oi=ai.next())&&!oi.done;)!ci&&!ri[ui]&&(ci=ni.equals(si.value,oi.value,si.value,oi.value,ti,ei,ni))&&(ri[ui]=!0),ui++;if(!ci)return!1}return!0}function bt(ti,ei){var ni=ti.length;if(ei.length!==ni)return!1;for(;ni-- >0;)if(ti[ni]!==ei[ni])return!1;return!0}var Tt="[object Arguments]",xt="[object Boolean]",$t="[object Date]",Ct="[object Map]",zt="[object Number]",kt="[object Object]",At="[object RegExp]",Dt="[object Set]",Nt="[object String]",qt=Array.isArray,ke=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,Ae=Object.assign,Bt=Object.prototype.toString.call.bind(Object.prototype.toString);function St(ti){var ei=ti.areArraysEqual,ni=ti.areDatesEqual,ri=ti.areMapsEqual,ii=ti.areObjectsEqual,si=ti.arePrimitiveWrappersEqual,oi=ti.areRegExpsEqual,ai=ti.areSetsEqual,ci=ti.areTypedArraysEqual;return function(ui,li,di){if(ui===li)return!0;if(ui==null||li==null||typeof ui!="object"||typeof li!="object")return ui!==ui&&li!==li;var fi=ui.constructor;if(fi!==li.constructor)return!1;if(fi===Object)return ii(ui,li,di);if(qt(ui))return ei(ui,li,di);if(ke!=null&&ke(ui))return ci(ui,li,di);if(fi===Date)return ni(ui,li,di);if(fi===RegExp)return oi(ui,li,di);if(fi===Map)return ri(ui,li,di);if(fi===Set)return ai(ui,li,di);var pi=Bt(ui);return pi===$t?ni(ui,li,di):pi===At?oi(ui,li,di):pi===Ct?ri(ui,li,di):pi===Dt?ai(ui,li,di):pi===kt?typeof ui.then!="function"&&typeof li.then!="function"&&ii(ui,li,di):pi===Tt?ii(ui,li,di):pi===xt||pi===zt||pi===Nt?si(ui,li,di):!1}}function Mt(ti){var ei=ti.circular,ni=ti.createCustomConfig,ri=ti.strict,ii={areArraysEqual:ri?R$2:vt,areDatesEqual:mt,areMapsEqual:ri?we(Ce,R$2):Ce,areObjectsEqual:ri?R$2:yt,arePrimitiveWrappersEqual:wt,areRegExpsEqual:Et,areSetsEqual:ri?we(ze,R$2):ze,areTypedArraysEqual:ri?R$2:bt};if(ni&&(ii=Ae({},ii,ni(ii))),ei){var si=V$1(ii.areArraysEqual),oi=V$1(ii.areMapsEqual),ai=V$1(ii.areObjectsEqual),ci=V$1(ii.areSetsEqual);ii=Ae({},ii,{areArraysEqual:si,areMapsEqual:oi,areObjectsEqual:ai,areSetsEqual:ci})}return ii}function It(ti){return function(ei,ni,ri,ii,si,oi,ai){return ti(ei,ni,ai)}}function Lt(ti){var ei=ti.circular,ni=ti.comparator,ri=ti.createState,ii=ti.equals,si=ti.strict;if(ri)return function(ai,ci){var ui=ri(),li=ui.cache,di=li===void 0?ei?new WeakMap:void 0:li,fi=ui.meta;return ni(ai,ci,{cache:di,equals:ii,meta:fi,strict:si})};if(ei)return function(ai,ci){return ni(ai,ci,{cache:new WeakMap,equals:ii,meta:void 0,strict:si})};var oi={cache:void 0,equals:ii,meta:void 0,strict:si};return function(ai,ci){return ni(ai,ci,oi)}}var Ot=M();M({strict:!0}),M({circular:!0}),M({circular:!0,strict:!0}),M({createInternalComparator:function(){return P$1}}),M({strict:!0,createInternalComparator:function(){return P$1}}),M({circular:!0,createInternalComparator:function(){return P$1}}),M({circular:!0,createInternalComparator:function(){return P$1},strict:!0});function M(ti){ti===void 0&&(ti={});var ei=ti.circular,ni=ei===void 0?!1:ei,ri=ti.createInternalComparator,ii=ti.createState,si=ti.strict,oi=si===void 0?!1:si,ai=Mt(ti),ci=St(ai),ui=ri?ri(ci):It(ci);return Lt({circular:ni,comparator:ci,createState:ii,equals:ui,strict:oi})}function De(ti,ei){const ni=ti.nodes.map(ii=>{const si=ei.nodes[ii.id];if(!si)return ii;const{x:oi,y:ai,width:ci,height:ui}=si;return{...ii,width:ci,height:ui,position:[oi,ai]}}),ri=ti.edges.map(ii=>{const si=ei.edges[ii.id];return si?{...ii,...si}:ii});return{...ti,bounds:{x:ei.x,y:ei.y,width:ei.width,height:ei.height},nodes:ni,edges:ri}}const Ne=(ti,ei)=>ti.width>ei.width+10||ti.height>ei.height+10;function Pt(ti,ei){if(ti.hash===ei.hash)return{diagram:De(ti,ei)};if(Ot(ti.autoLayout,ei.autoLayout)&&ti.nodes.every(ri=>{const ii=ei.nodes[ri.id];return!!ii&&(ri.children.length>0&&ii.isCompound||ri.children.length===0&&!ii.isCompound)&&(ii.isCompound||Ne(ri,ii)===!1)})&&ti.edges.every(ri=>{const ii=ei.edges[ri.id];return!!ii&&(!ri.labelBBox&&!ii.labelBBox||!!ri.labelBBox&&!!ii.labelBBox&&ri.labelBBox.width<=ii.labelBBox.width&&ri.labelBBox.height<=ii.labelBBox.height)}))return{diagram:De(ti,ei)};const ni=ti.nodes.reduce((ri,ii)=>{const si=ei.nodes[ii.id];if(ii.children.length>0||!si)return ri;const oi={id:ii.id,center:{x:Math.round(si.x+si.width/2),y:Math.round(si.y+si.height/2)}};return si.isCompound||Ne(ii,si)||(oi.fixedsize={width:si.width,height:si.height}),ri.push(oi),ri},[]);return{relayout:{x:ei.x,y:ei.y,height:ei.height,nodes:ni,edges:t$1(ei.edges).flatMap(([ri,ii])=>ii.dotpos?{id:ri,dotpos:ii.dotpos}:[])}}}function $$1(ti){return ti.children.length>0}function b$1(ti){switch(ti){case"open":return"vee";default:return ti}}function N$2(ti){return Array.isArray(ti)?[N$2(ti[0]),N$2(ti[1])]:(index_KOeaSlL8.o(isFinite(ti),`Invalid not finite point value ${ti}`),Math.round(ti))}const qe=ti=>(index_KOeaSlL8.o(isFinite(ti),`Invalid not finite inch value ${ti}`),Math.floor(ti*72)),v$3=ti=>Math.ceil(ti/72*1e3)/1e3,C$2=ti=>Math.ceil(ti);C$2(40).toString();function Be(ti,ei){return toHex(scale(ti,{l:-35-5*ei,s:-15-5*ei}))}function Gt(ti){return toHex(transparentize(ti,.3))}function Rt(ti){return ti.trim().replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function ie(ti,ei,ni){let ri=ut(ti,{width:ei,indent:"",escape:Rt}).split(`
210
+ `);return n$5(ni)&&ni>0&&ri.length>ni&&(ri=ri.slice(0,ni-1)),ri}function I$2({text:ti,maxchars:ei,fontsize:ni,maxLines:ri,bold:ii,color:si}){let oi=ie(ti,ei,ri).join("<BR/>");ii&&(oi=`<B>${oi}</B>`);const ai=si?` COLOR="${si}"`:"";return`<FONT POINT-SIZE="${C$2(ni)}"${ai}>${oi}</FONT>`}function jt(ti,ei){const ni=n$7(ti.icon),ri=[I$2({text:ti.title,fontsize:19,maxchars:35,maxLines:3})];if(n$7(ti.technology)&&ri.push(I$2({text:ti.technology,fontsize:12,maxchars:ni?35:45,maxLines:1,color:ei.loContrast})),n$7(ti.description)&&ri.push(I$2({text:ti.description,fontsize:14,maxchars:ni?35:45,maxLines:5,color:ei.loContrast})),ri.length===1&&!ni)return`<${ri[0]}>`;const ii=ni?(si,oi,ai)=>{let ci=`<TD ALIGN="TEXT" BALIGN="LEFT">${si}</TD>`;if(oi===0){const ui=ai.length>1?` ROWSPAN="${ai.length}"`:"";let li=76;(ti.shape==="queue"||ti.shape==="mobile")&&(li+=20),ci=`<TD${ui} WIDTH="${li}"> </TD>${ci}`,ci=`${ci}<TD${ui} WIDTH="16"> </TD>`}return`<TR>${ci}</TR>`}:si=>`<TR><TD>${si}</TD></TR>`;return`<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="6">${ri.map(ii).join("")}</TABLE>>`}function _t(ti,ei){const ni=I$2({text:ti.title.toUpperCase(),maxchars:50,fontsize:11,maxLines:1,bold:!0,color:ei});return ni.includes("<BR/>")?`<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD ALIGN="TEXT" BALIGN="LEFT">${ni}</TD></TR></TABLE>>`:`<${ni}>`}const j$2=40,se=`BGCOLOR="${Te$2.relationships[index_KOeaSlL8.E].labelBgColor}A0"`;function Se({label:ti,technology:ei}){const ni=[];if(n$7(ti)&&ni.push(I$2({text:ti,maxchars:j$2,fontsize:14,maxLines:5,bold:ti==="[...]"})),n$7(ei)&&ni.push(I$2({text:`[ ${ei} ]`,fontsize:12,maxLines:1,maxchars:j$2})),ni.length===0)return null;const ri=ni.map(ii=>`<TR><TD ALIGN="TEXT" BALIGN="LEFT">${ii}</TD></TR>`).join("");return`<<TABLE BORDER="0" CELLPADDING="3" CELLSPACING="0" ${se}>${ri}</TABLE>>`}function Ft(ti,ei){const ni=`<TABLE BORDER="0" CELLPADDING="6" ${se}><TR><TD WIDTH="20" HEIGHT="20"><FONT POINT-SIZE="${C$2(14)}"><B>${ti}</B></FONT></TD></TR></TABLE>`;return n$7(ei)?`<${['<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">',"<TR>",`<TD>${ni}</TD>`,`<TD ${se} CELLPADDING="2">`,I$2({text:ei,maxchars:j$2,fontsize:14}),"</TD>","</TR>","</TABLE>"].join("")}>`:`<${ni}>`}const oe="dashed",ae=Te$2.font;class le{constructor(ei){this.view=ei,this.compoundIds=new Set(ei.nodes.filter($$1).map(ii=>ii.id)),this.edgesWithCompounds=new Set(this.compoundIds.size>0?ei.edges.filter(ii=>this.compoundIds.has(ii.source)||this.compoundIds.has(ii.target)).map(ii=>ii.id):[]);const ni=new Map;for(const ii of ei.edges)ni.set(ii.id,index_KOeaSlL8.N(ii.source,ii.target));this.edgeDistances=ni;const ri=this.graphvizModel=this.createGraph();this.applyNodeAttributes(ri.attributes.node),this.applyEdgeAttributes(ri.attributes.edge)}ids=new Set;subgraphs=new Map;nodes=new Map;edges=new Map;compoundIds;edgesWithCompounds;edgeDistances;graphvizModel;get hasEdgesWithCompounds(){return this.edgesWithCompounds.size>0}postBuild(ei){}build(ei){const ni=(ii,si)=>{const oi=this.nodeId(ii),ai=this.elementToSubgraph(ii,si.subgraph(oi));this.subgraphs.set(ii.id,ai);for(const ci of ii.children){const ui=this.viewElement(ci);if($$1(ui))ni(ui,ai);else{const li=index_KOeaSlL8.M(this.getGraphNode(ui.id),`Graphviz Node not found for ${ui.id}`);ai.node(li.id)}}},ri=[];for(const ii of this.view.nodes)if($$1(ii))n$6(ii.parent)&&ri.push(ii);else{const si=this.nodeId(ii),oi=this.elementToNode(ii,ei.node(si));this.nodes.set(ii.id,oi)}for(const ii of ri)ni(ii,ei);for(const ii of this.view.edges){const si=this.addEdge(ii,ei);si&&this.edges.set(ii.id,si)}}print(){const ei=this.graphvizModel;return this.build(ei),this.postBuild(ei),toDot(this.graphvizModel,{print:{indentStyle:"space",indentSize:2}})}createGraph(){const ei=this.view.autoLayout,ni=digraph({[attribute.bgcolor]:"transparent",[attribute.layout]:"dot",[attribute.compound]:!0,[attribute.rankdir]:ei.direction,[attribute.TBbalance]:"min",[attribute.splines]:"spline",[attribute.outputorder]:"nodesfirst",[attribute.nodesep]:v$3(ei.nodeSep??110),[attribute.ranksep]:v$3(ei.rankSep??120),[attribute.pack]:C$2(ei.rankSep??120),[attribute.packmode]:"array_3",[attribute.pad]:v$3(15),[attribute.fontname]:ae});return ni.attributes.graph.apply({[attribute.fontsize]:C$2(15),[attribute.labeljust]:ei.direction==="RL"?"r":"l",[attribute.labelloc]:ei.direction==="BT"?"b":"t",[attribute.margin]:50.1}),ni}applyNodeAttributes(ei){ei.apply({[attribute.fontname]:ae,[attribute.shape]:"rect",[attribute.width]:v$3(320),[attribute.height]:v$3(180),[attribute.style]:"filled",[attribute.penwidth]:0})}applyEdgeAttributes(ei){ei.apply({[attribute.arrowsize]:.75,[attribute.fontname]:ae,[attribute.fontsize]:C$2(14),[attribute.penwidth]:C$2(2),[attribute.color]:Te$2.relationships[index_KOeaSlL8.E].lineColor,[attribute.fontcolor]:Te$2.relationships[index_KOeaSlL8.E].labelColor})}checkNodeId(ei,ni=!1){return ni?ei="cluster_"+ei:ei.toLowerCase().startsWith("cluster")&&(ei="nd_"+ei),this.ids.has(ei)?null:(this.ids.add(ei),ei)}nodeId(ei){const ni=$$1(ei);let ri=index_KOeaSlL8.R(ei.id).toLowerCase(),ii=this.checkNodeId(ri,ni);if(ii!==null)return ii;let si=ei.id,oi;for(;oi=index_KOeaSlL8.S(si);){if(ri=index_KOeaSlL8.R(oi).toLowerCase()+"_"+ri,ii=this.checkNodeId(ri,ni),ii!==null)return ii;si=oi}ri=index_KOeaSlL8.R(ei.id).toLowerCase();let ai=1;do ii=this.checkNodeId(ri+"_"+ai++,ni);while(ii===null);return ii}elementToSubgraph(ei,ni){index_KOeaSlL8.o($$1(ei),"node should be compound"),index_KOeaSlL8.o(e$2(ei.depth),"node.depth should be defined");const ri=this.getElementColorValues(ei.color),ii=Gt(ri.loContrast);return ni.apply({[attribute.likec4_id]:ei.id,[attribute.likec4_level]:ei.level,[attribute.likec4_depth]:ei.depth,[attribute.fillcolor]:Be(ri.fill,ei.depth),[attribute.color]:Be(ri.stroke,ei.depth),[attribute.style]:"filled",[attribute.margin]:C$2(ei.children.length>1?40:32)}),n$4(ei.title.trim())||ni.set(attribute.label,_t(ei,ii)),ni}elementToNode(ei,ni){index_KOeaSlL8.o(!$$1(ei),"node should not be compound");const ri=n$7(ei.icon),ii=this.getElementColorValues(ei.color);switch(ni.attributes.apply({[attribute.likec4_id]:ei.id,[attribute.likec4_level]:ei.level,[attribute.fillcolor]:ii.fill,[attribute.fontcolor]:ii.hiContrast,[attribute.color]:ii.stroke,[attribute.margin]:`${v$3(ri?10:26)},${v$3(26)}`}),ei.shape){case"cylinder":case"storage":{ni.attributes.apply({[attribute.margin]:`${v$3(ri?10:26)},${v$3(0)}`,[attribute.penwidth]:C$2(2),[attribute.shape]:"cylinder"});break}case"browser":{ni.attributes.apply({[attribute.margin]:`${v$3(ri?10:30)},${v$3(32)}`});break}case"mobile":{ni.attributes.apply({[attribute.margin]:`${v$3(ri?10:30)},${v$3(26)}`});break}case"queue":{ni.attributes.apply({[attribute.width]:v$3(320),[attribute.height]:v$3(165),[attribute.margin]:`${v$3(ri?10:30)},${v$3(26)}`});break}}return ni.attributes.set(attribute.label,jt(ei,ii)),ni}leafElements(ei){return ei===null?this.view.nodes.filter(ni=>!$$1(ni)):this.viewElement(ei).children.flatMap(ni=>{const ri=this.viewElement(ni);return $$1(ri)?this.leafElements(ri.id):ri})}descendants(ei){return ei===null?this.view.nodes.slice():this.viewElement(ei).children.flatMap(ni=>{const ri=this.viewElement(ni);return[ri,...this.descendants(ri.id)]})}viewElement(ei){return index_KOeaSlL8.M(this.view.nodes.find(ni=>ni.id===ei),`Node ${ei} not found`)}getGraphNode(ei){return this.nodes.get(ei)??null}getSubgraph(ei){return this.subgraphs.get(ei)??null}edgeEndpoint(ei,ni){let ri=this.viewElement(ei),ii=this.getGraphNode(ei),si;return ii||(index_KOeaSlL8.o($$1(ri),"endpoint node should be compound"),si=this.getSubgraph(ei)?.id,index_KOeaSlL8.o(si,`subgraph ${ei} not found`),ri=index_KOeaSlL8.M(ni(this.leafElements(ei)),`leaf element in ${ei} not found`),ii=index_KOeaSlL8.M(this.getGraphNode(ri.id),`source graphviz node ${ri.id} not found`)),[ri,ii,si]}findInternalEdges(ei){if(ei===null)return this.view.edges.slice();const ni=this.viewElement(ei);return x$1(this.descendants(ei),u$5(ri=>a$6(ri.inEdges,ri.outEdges)),i$b(),d$2(a$6(ni.inEdges,ni.outEdges)),m$1(ri=>this.view.edges.find(ii=>ii.id===ri)),T$2(n$7))}withoutCompoundEdges(ei){return this.edgesWithCompounds.size===0?ei:{...ei,inEdges:ei.inEdges.filter(ni=>!this.edgesWithCompounds.has(ni)),outEdges:ei.outEdges.filter(ni=>!this.edgesWithCompounds.has(ni))}}assignGroups(){const ei=x$1(this.view.nodes,T$2($$1),m$1(ri=>ri.id),m$2(index_KOeaSlL8.x),t$6(),m$1(ri=>{const ii=this.findInternalEdges(ri).filter(si=>si.source!==si.target&&!this.compoundIds.has(si.source)&&!this.compoundIds.has(si.target));return{id:ri,edges:ii}}),T$2(({edges:ri})=>ri.length>1&&ri.length<8),l$9(4)),ni=new Set;for(const ri of ei){const ii=ri.edges.filter(si=>!ni.has(si.source)&&!ni.has(si.target));for(const si of ii)try{const oi=index_KOeaSlL8.M(this.getGraphNode(si.source),`Graphviz Node not found for ${si.source}`),ai=index_KOeaSlL8.M(this.getGraphNode(si.target),`Graphviz Node not found for ${si.target}`);ni.add(si.source),ni.add(si.target),oi.attributes.set(attribute.group,ri.id),ai.attributes.set(attribute.group,ri.id)}catch(oi){Ye.error(oi)}}}applyManualLayout({height:ei,...ni}){const ri=ni.x<0?-ni.x:0,ii=ni.y<0?-ni.y:0,si=ri>0||ii>0;for(const{id:oi,...ai}of ni.nodes){const ci=this.getGraphNode(oi);if(!ci)continue;const ui=v$3(ai.center.x)+ri,li=v$3(ei-ai.center.y);ai.fixedsize?ci.attributes.apply({[attribute.pos]:`${ui},${li}!`,[attribute.pin]:!0,[attribute.width]:v$3(ai.fixedsize.width),[attribute.height]:v$3(ai.fixedsize.height),[attribute.fixedsize]:!0}):ci.attributes.set(attribute.pos,`${ui},${li}`)}for(const[oi,ai]of this.edges.entries()){ai.attributes.delete(attribute.weight),ai.attributes.delete(attribute.minlen),ai.attributes.delete(attribute.constraint);const ci=ni.edges.find(ui=>ui.id===oi)?.dotpos;ci&&!si&&ai.attributes.set(attribute.pos,ci)}return this.graphvizModel.apply({[attribute.layout]:"fdp",[attribute.overlap]:"vpsc",[attribute.sep]:"+50,50",[attribute.esep]:"+10,10",[attribute.start]:"random2",[attribute.splines]:"compound"}),this.graphvizModel.delete(attribute.compound),this.graphvizModel.delete(attribute.rankdir),this.graphvizModel.delete(attribute.nodesep),this.graphvizModel.delete(attribute.ranksep),this.graphvizModel.delete(attribute.pack),this.graphvizModel.delete(attribute.pad),this.graphvizModel.delete(attribute.packmode),this.graphvizModel.attributes.graph.delete(attribute.margin),this}getRelationshipColorValues(ei){return a$b(ei)?Te$2.relationships[ei]:this.view.customColorDefinitions[ei]?.relationships??Te$2.relationships[index_KOeaSlL8.Z]}getElementColorValues(ei){return a$b(ei)?Te$2.elements[ei]:this.view.customColorDefinitions[ei]?.elements??Te$2.elements[index_KOeaSlL8.Z]}}class Wt extends le{createGraph(){const ei=super.createGraph(),ni=this.view.autoLayout;return ei.delete(attribute.TBbalance),ei.apply({[attribute.nodesep]:v$3(ni.nodeSep??130),[attribute.ranksep]:v$3(ni.rankSep??130)}),ei}postBuild(ei){x$1(this.view.nodes,m$1(ni=>({node:ni,graphvizNode:this.getGraphNode(ni.id)})),i$5(({node:ni,graphvizNode:ri})=>{if(ri!=null)return index_KOeaSlL8.i.modelRef(ni)??void 0}),r$8(),T$2(i$a(2)),u$4(ni=>{ei.subgraph({[attribute.rank]:"same"},ri=>{for(const{graphvizNode:ii}of ni)ri.node(index_KOeaSlL8.M(ii).id)})}),r$6(()=>{ei.set(attribute.newrank,!0),ei.set(attribute.clusterrank,"global"),ei.delete(attribute.pack),ei.delete(attribute.packmode)}))}elementToSubgraph(ei,ni){const ri=super.elementToSubgraph(ei,ni);return ei.children.length>1&&ri.set(attribute.margin,C$2(50)),ri}addEdge(ei,ni){const[ri,ii]=[ei.source,ei.target],[si,oi,ai]=this.edgeEndpoint(ri,wi=>a$9(wi)),[ci,ui,li]=this.edgeEndpoint(ii,d$3),di=l$6(li)||l$6(ai),fi=ni.edge([oi,ui],{[attribute.likec4_id]:ei.id,[attribute.style]:ei.line??oe});li&&fi.attributes.set(attribute.lhead,li),ai&&fi.attributes.set(attribute.ltail,ai);const pi=this.edgeDistances.get(ei.id)??0,hi=[...si.inEdges,...si.outEdges,...ci.inEdges,...ci.outEdges].reduce((wi,Ri)=>Math.max(wi,this.edgeDistances.get(Ri)??0),0);hi-pi>1&&fi.attributes.set(attribute.weight,hi-pi);const vi=Se(ei);if(vi&&fi.attributes.set(di?attribute.xlabel:attribute.label,vi),ei.color){const wi=this.getRelationshipColorValues(ei.color);fi.attributes.apply({[attribute.color]:wi.lineColor,[attribute.fontcolor]:wi.labelColor})}let[bi,gi]=[ei.head??index_KOeaSlL8.H,ei.tail??"none"];return bi==="none"&&gi==="none"?(fi.attributes.apply({[attribute.arrowtail]:"none",[attribute.arrowhead]:"none",[attribute.dir]:"none"}),fi):ei.dir==="both"?(fi.attributes.apply({[attribute.arrowhead]:b$1(bi),[attribute.arrowtail]:b$1(ei.tail??bi),[attribute.dir]:"both"}),!di&&index_KOeaSlL8.i.modelRef(si)!==index_KOeaSlL8.i.modelRef(ci)&&fi.attributes.set(attribute.constraint,!1),fi):(bi!==index_KOeaSlL8.H&&fi.attributes.set(attribute.arrowhead,b$1(bi)),gi!=="none"&&fi.attributes.set(attribute.arrowtail,b$1(gi)),fi)}}class ce extends le{static toDot(ei){return new ce(ei).print()}postBuild(ei){ei.set(attribute.TBbalance,"max"),index_KOeaSlL8.J(this.edgesWithCompounds,ni=>this.view.edges.some(ri=>ri.id===ni&&ri.label))&&(ei.delete(attribute.pack),ei.delete(attribute.packmode))}addEdge(ei,ni){const{nodes:ri}=this.view,[ii,si]=ei.dir==="back"?[ei.target,ei.source]:[ei.source,ei.target],[oi,ai,ci]=this.edgeEndpoint(ii,ki=>a$9(ki)),[ui,li,di]=this.edgeEndpoint(si,d$3),fi=ni.edge([ai,li],{[attribute.likec4_id]:ei.id,[attribute.style]:ei.line??oe});if(di&&fi.attributes.set(attribute.lhead,di),ci&&fi.attributes.set(attribute.ltail,ci),ei.color&&ei.color!==index_KOeaSlL8.E){const ki=this.getRelationshipColorValues(ei.color);fi.attributes.apply({[attribute.color]:ki.lineColor,[attribute.fontcolor]:ki.labelColor})}const pi=index_KOeaSlL8.K(ei.id),hi=Ft(pi,ei.label?.trim());fi.attributes.set(attribute.label,hi);const vi=this.edgeDistances.get(ei.id)??0,bi=[...oi.inEdges,...oi.outEdges,...ui.inEdges,...ui.outEdges].reduce((ki,Ai)=>Math.max(ki,this.edgeDistances.get(Ai)??0),0);bi-vi>1&&fi.attributes.set(attribute.weight,bi-vi);const gi=ri.findIndex(ki=>ki.id===ii);ri.findIndex(ki=>ki.id===si)<gi&&ei.dir!=="back"&&fi.attributes.apply({[attribute.constraint]:!1});let[wi,Ri]=[ei.head??index_KOeaSlL8.H,ei.tail??"none"];return ei.dir==="back"?(fi.attributes.apply({[attribute.arrowtail]:b$1(wi),[attribute.minlen]:0,[attribute.dir]:"back"}),Ri!=="none"&&fi.attributes.apply({[attribute.arrowhead]:b$1(Ri),[attribute.dir]:"both"}),fi):wi==="none"&&Ri==="none"||wi!=="none"&&Ri!=="none"?(fi.attributes.apply({[attribute.arrowhead]:b$1(wi),[attribute.arrowtail]:b$1(Ri),[attribute.dir]:"both"}),fi):wi==="none"?(fi.attributes.delete(attribute.arrowhead),fi.attributes.apply({[attribute.arrowtail]:b$1(Ri),[attribute.minlen]:0,[attribute.dir]:"back"}),fi):(wi!==index_KOeaSlL8.H&&fi.attributes.set(attribute.arrowhead,b$1(wi)),fi)}}class Jt extends le{postBuild(ei){this.assignGroups();const ni=new Set,ri=this.view.nodes.reduce((ii,si)=>($$1(si)&&(ni.add(si.id),ii.push(si)),ii),[]);for(const ii of ri){const si=x$1(ii.children,T$2(ui=>!this.compoundIds.has(ui)),m$1(ui=>this.viewElement(ui)),T$2(ui=>ui.inEdges.length===0&&ui.outEdges.length===0));if(si.length<=2)continue;let oi=2;switch(!0){case si.length>11:oi=4;break;case si.length>4:oi=3;break}const ai=index_KOeaSlL8.M(this.getSubgraph(ii.id),`Subgraph not found for ${ii.id}`);let ci=null;f$4(si,oi).forEach(ui=>{const li=ui.length>1?ai.createSubgraph({[attribute.rank]:"same"}):null;ui.forEach((di,fi)=>{const pi=this.getGraphNode(di.id);pi&&(li?.node(pi.id),fi===0&&(ci&&ai.edge([ci,pi],{[attribute.style]:"invis"}),ci=pi))})})}index_KOeaSlL8.J(this.edgesWithCompounds,ii=>this.view.edges.some(si=>si.id===ii&&si.label))&&(ei.delete(attribute.pack),ei.delete(attribute.packmode))}addEdge(ei,ni){const ri=this.view.edges,[ii,si]=ei.dir==="back"?[ei.target,ei.source]:[ei.source,ei.target],[oi,ai,ci]=this.edgeEndpoint(ii,Ai=>a$9(Ai)),[ui,li,di]=this.edgeEndpoint(si,d$3),fi=ei.parent,pi=ni.edge([ai,li],{[attribute.likec4_id]:ei.id,[attribute.style]:ei.line??oe});di&&pi.attributes.set(attribute.lhead,di),ci&&pi.attributes.set(attribute.ltail,ci);const hi=l$6(di)||l$6(ci),vi=this.edgeDistances.get(ei.id)??0,bi=[...oi.inEdges,...oi.outEdges,...ui.inEdges,...ui.outEdges].reduce((Ai,Ni)=>Math.max(Ai,this.edgeDistances.get(Ni)??0),0);bi-vi>1&&pi.attributes.set(attribute.weight,bi-vi);const gi=Se(ei);if(gi&&pi.attributes.set(hi?attribute.xlabel:attribute.label,gi),ei.color){const Ai=this.getRelationshipColorValues(ei.color);pi.attributes.apply({[attribute.color]:Ai.lineColor,[attribute.fontcolor]:Ai.labelColor})}let[wi,Ri]=[ei.head??index_KOeaSlL8.H,ei.tail??"none"];if(ei.dir==="back")return pi.attributes.apply({[attribute.arrowtail]:b$1(wi),[attribute.dir]:"back"}),Ri!=="none"&&pi.attributes.apply({[attribute.arrowhead]:b$1(Ri),[attribute.dir]:"both",[attribute.minlen]:0}),pi;if(wi==="none"&&Ri==="none")return pi.attributes.apply({[attribute.arrowtail]:"none",[attribute.arrowhead]:"none",[attribute.dir]:"none",[attribute.minlen]:0,[attribute.constraint]:!1}),pi;if(wi!=="none"&&Ri!=="none")return pi.attributes.apply({[attribute.arrowhead]:b$1(wi),[attribute.arrowtail]:b$1(Ri),[attribute.dir]:"both",[attribute.minlen]:0}),pi;if(wi!==index_KOeaSlL8.H&&pi.attributes.set(attribute.arrowhead,b$1(wi)),Ri!=="none"&&pi.attributes.set(attribute.arrowtail,b$1(Ri)),ri.length===1)return pi;let ki;return fi===null&&oi.parent==null&&ui.parent==null?ki=ri.filter(Ai=>{if(Ai.id===ei.id||Ai.parent!==null||Ai.source===ei.source&&Ai.target===ei.target||Ai.source===ei.target&&Ai.target===ei.source)return!1;const Ni=this.viewElement(Ai.source),_i=this.viewElement(Ai.target);return $$1(Ni)||$$1(_i)?!1:Ni.parent==null&&_i.parent==null}):ki=this.findInternalEdges(fi).filter(Ai=>!(Ai.id===ei.id||Ai.source===ei.source&&Ai.target===ei.target||Ai.source===ei.target&&Ai.target===ei.source)),ki.length===0&&(fi===null||this.leafElements(fi).length<=3)&&pi.attributes.set(attribute.minlen,0),pi}}function U(ti){const[ei,ni,ri,ii]=ti?ti.split(",").map(ai=>N$2(+ai)):[0,0,0,0],si=Math.round(ri-ei),oi=Math.round(ni-ii);return{x:Math.round(ei),y:Math.round(ii),width:si,height:oi}}function Ht(ti){try{const[ei,ni]=ti.split(",");return{x:N$2(parseFloat(ei)),y:N$2(parseFloat(ni))}}catch(ei){throw new Error(`Failed on parsing pos: ${ti}`,{cause:ei})}}function Me(ti){const{x:ei,y:ni}=Ht(ti.pos),ri=qe(parseFloat(ti.width)),ii=qe(parseFloat(ti.height));return{x:ei-Math.round(ri/2),y:ni-Math.round(ii/2),width:ri,height:ii}}function Ie(ti,[ei,ni]=[0,0]){if(!ti||ti.length===0)return null;let ri=1/0,ii=1/0,si=-1/0,oi=-1/0,ai=13;try{for(const ui of ti){if(ui.op==="F"){ai=N$2(ui.size);continue}if(ui.op==="T"){let li=N$2(ui.pt[0])-ei,di=N$2(ui.width);switch(ui.align){case"r":li-=di;break;case"c":li-=Math.round(di/2);break}ri=Math.min(ri,li),si=Math.max(si,li+di);let fi=N$2(ui.pt[1])-ni;ii=Math.min(ii,Math.round(fi-ai)),oi=Math.max(oi,fi)}}}catch(ui){return Ye.warn(`Failed on parsing label draw ops: ${ui}
211
+ ${JSON.stringify(ti,null,2)}`),null}if(ri===1/0)return null;const ci=2;return{x:ri-ci,y:ii-ci,width:si-ri+2*ci,height:oi-ii+2*ci}}function Le({_draw_:ti,likec4_id:ei="???"},ni="<unknown view>"){try{const ri=ti.filter(si=>si.op.toLowerCase()==="b");index_KOeaSlL8.o(i$a(ri,1),`view ${ni} edge ${ei} should have at least one bezier draw op`),ri.length>1&&Ye.warn(`view ${ni} edge ${ei} has more than one bezier draw op, using the first one only`);const ii=ri[0].points.map(si=>N$2(si));return index_KOeaSlL8.o(i$a(ii,2),`view ${ni} edge ${ei} should have at least two points`),ii}catch(ri){throw new Error(`failed on parsing view ${ni} edge ${ei} _draw_:
212
212
  ${JSON.stringify(ti,null,2)}`,{cause:ri})}}function Xt(ti,{id:ei,source:ni,target:ri,dir:ii,label:si,description:oi,...ai},ci){const ui=Ie(ti._ldraw_??ti._tldraw_??ti._hldraw_),li=ti.dir==="back"||ii==="back";return si=si?ie(si,j$2).join(`
213
213
  `):null,oi=oi?ie(oi,j$2).join(`
214
- `):void 0,{id:ei,source:ni,target:ri,label:si,...n$7(oi)&&{description:oi},...n$7(ti.pos)&&{dotpos:ti.pos},points:Le(ti,ci),labelBBox:ui,...li?{dir:"back"}:{},...ai}}function ue(ti,ei){const ni=JSON.parse(ti),ri=U(ni.bb),{nodes:ii,edges:si,manualLayout:oi,...ai}=ei,ci={...ai,bounds:ri,nodes:[],edges:[]},ui=ni.objects??[];for(const di of ii){const fi=ui.find(pi=>pi.likec4_id===di.id);index_DafVOuVd.u(fi,`View ${ai.id} node ${di.id} not found in graphviz output`);try{const{x:pi,y:hi,width:vi,height:bi}="bb"in fi?U(fi.bb):Me(fi),gi=[pi,hi];ci.nodes.push({...di,position:gi,width:vi,height:bi,labelBBox:Ie(fi._ldraw_,gi)??{x:pi,y:hi,width:vi,height:bi}})}catch(pi){throw new Error(`Failed on parsing node ${di.id}:
215
- ${JSON.stringify(fi,null,2)}`,{cause:pi})}}const li=ni.edges??[];for(const di of si){const fi=li.find(pi=>pi.likec4_id===di.id);if(!fi){Ye.warn(`View ${ai.id} edge ${di.id} not found in graphviz output, skipping`);continue}ci.edges.push(Xt(fi,di,ai.id))}return ci}const Y=ti=>String(ti+1).padStart(2,"0");function Vt(ti){const ei=JSON.parse(ti),ni=U(ei.bb),ri={nodes:[],edges:[],bounds:ni},ii=new Map,si=ei.objects??[];for(const oi of si){if(!oi.likec4_type)continue;const ai=Y(oi._gvid),ci=oi.likec4_path??"",ui=ii.get(oi._gvid),{x:li,y:di,width:fi,height:pi}="bb"in oi?U(oi.bb):Me(oi),hi={x:li,y:di};if(oi.likec4_type==="view")index_DafVOuVd.u(oi.likec4_id,`View ${oi} has no likec4_id`),ri.nodes.push({id:ai,type:"view",parentId:ui?.id??null,height:pi,width:fi,position:hi,label:oi.label??"",viewId:oi.likec4_id});else{const vi={id:ai,type:oi.likec4_type,parentId:ui?.id??null,height:pi,width:fi,position:hi,path:ci,label:oi.label??""},bi=[..."subgraphs"in oi?oi.subgraphs:[],..."nodes"in oi?oi.nodes:[]];for(const gi of bi)ii.set(gi,vi);ri.nodes.push(vi)}}for(const oi of ei.edges??[])try{const ai=Y(oi.tail),ci=Y(oi.head);ri.edges.push({id:`link${Y(oi._gvid)}`,source:ai,target:ci,points:Le(oi)})}catch(ai){Ye.warn(ai)}return ri}const Oe=Te$2.font,Z="/";class de{static toDot(ei){return new de(ei).print()}subgraphs=new Map;graphvizModel;constructor(ei){const ni=this.graphvizModel=strict.graph({[attribute.layout]:"osage",[attribute.pack]:C$2(100),[attribute.packmode]:"array_ltc",[attribute.pad]:v$3(15),[attribute.fontname]:Oe,[attribute.splines]:"polyline",[attribute.esep]:"+20"});ni.attributes.graph.apply({[attribute.fontsize]:C$2(20),[attribute.labeljust]:"l",[attribute.labelloc]:"t"}),ni.attributes.node.apply({[attribute.fontname]:Oe,[attribute.shape]:"rect",[attribute.width]:v$3(400),[attribute.height]:v$3(300),[attribute.fixedsize]:!0,[attribute.fontsize]:10}),ni.attributes.edge.apply({[attribute.penwidth]:C$2(2)});const ri=new Set(ei.map(ci=>ci.relativePath??""));let ii=0,si=[...ei];const oi=ri.size>1;oi&&si.sort((ci,ui)=>{const li=ci.relativePath?.split(Z)??[""],di=ui.relativePath?.split(Z)??[""];li.push(ci.title??"Untitled"),di.push(ui.title??"Untitled");const fi=li.length,pi=di.length;switch(ii=Math.max(ii,fi,pi),!0){case fi>pi:return-1;case fi<pi:return 1;default:{for(let hi=0;hi<fi;hi++){const vi=li[hi].localeCompare(di[hi]);if(vi!==0)return vi}return 0}}});const ai=new Map;si.forEach((ci,ui)=>{this.addView(oi?ci:{...ci,relativePath:""},ui+ii);const li=ci.nodes.reduce((di,fi)=>(fi.navigateTo&&di.add(fi.navigateTo),di),new Set);li.size>0&&ai.set(ci.id,li)});for(const[ci,ui]of ai)for(const li of ui)ni.edge([ci,li])}getParentForPath(ei){if(ei==="")return this.graphvizModel;const ni=ei.toLowerCase();let ri=this.subgraphs.get(ni);if(!ri){const ii=ni.endsWith(".c4")||ni.endsWith(".likec4"),si=ei.includes(Z)?ei.slice(0,ei.lastIndexOf(Z)):"";ri=this.getParentForPath(si).subgraph("cluster"+String(this.subgraphs.size+1),{[attribute.likec4_type]:ii?"file":"folder",[attribute.likec4_path]:ei,[attribute.sortv]:this.subgraphs.size,[attribute.label]:n$7(si)?ei.slice(si.length+1):ei}),this.subgraphs.set(ni,ri)}return ri}addView(ei,ni=0){return this.getParentForPath(ei.relativePath??"").node(ei.id,{[attribute.likec4_type]:"view",[attribute.likec4_id]:ei.id,[attribute.sortv]:ni,[attribute.label]:ei.title||"Untitled"})}print(){return toDot(this.graphvizModel,{print:{indentStyle:"space",indentSize:2}})}}const Pe=ti=>{switch(!0){case index_DafVOuVd.v.isDynamic(ti):return new ce(ti);case index_DafVOuVd.v.isDeployment(ti):return new Wt(ti);case index_DafVOuVd.v.isElement(ti):return new Jt(ti);default:index_DafVOuVd.l(ti)}};class Ut{constructor(ei){this.graphviz=ei}get port(){return this.graphviz}changePort(ei){this.graphviz=ei}async layout(ei){try{let ni=await this.dot(ei);const ri=await this.graphviz.layoutJson(ni);let ii=ue(ri,ei);if(ei.manualLayout){const si=Pt(ii,ei.manualLayout);if(si.diagram)ii=si.diagram;else{if(si.relayout.nodes.length>0){const oi=Pe(ei);if(oi.hasEdgesWithCompounds)Ye.warn(`Manual layout for view ${ei.id} is ignored, as edges with compounds are not supported`);else{oi.applyManualLayout(si.relayout);const ai=await this.graphviz.layoutJson(oi.print());ii=ue(ai,ei)}}ii.hasLayoutDrift=!0}}return ni=ni.split(`
214
+ `):void 0,{id:ei,source:ni,target:ri,label:si,...n$7(oi)&&{description:oi},...n$7(ti.pos)&&{dotpos:ti.pos},points:Le(ti,ci),labelBBox:ui,...li?{dir:"back"}:{},...ai}}function ue(ti,ei){const ni=JSON.parse(ti),ri=U(ni.bb),{nodes:ii,edges:si,manualLayout:oi,...ai}=ei,ci={...ai,bounds:ri,nodes:[],edges:[]},ui=ni.objects??[];for(const di of ii){const fi=ui.find(pi=>pi.likec4_id===di.id);index_KOeaSlL8.o(fi,`View ${ai.id} node ${di.id} not found in graphviz output`);try{const{x:pi,y:hi,width:vi,height:bi}="bb"in fi?U(fi.bb):Me(fi),gi=[pi,hi];ci.nodes.push({...di,position:gi,width:vi,height:bi,labelBBox:Ie(fi._ldraw_,gi)??{x:pi,y:hi,width:vi,height:bi}})}catch(pi){throw new Error(`Failed on parsing node ${di.id}:
215
+ ${JSON.stringify(fi,null,2)}`,{cause:pi})}}const li=ni.edges??[];for(const di of si){const fi=li.find(pi=>pi.likec4_id===di.id);if(!fi){Ye.warn(`View ${ai.id} edge ${di.id} not found in graphviz output, skipping`);continue}ci.edges.push(Xt(fi,di,ai.id))}return ci}const Y=ti=>String(ti+1).padStart(2,"0");function Vt(ti){const ei=JSON.parse(ti),ni=U(ei.bb),ri={nodes:[],edges:[],bounds:ni},ii=new Map,si=ei.objects??[];for(const oi of si){if(!oi.likec4_type)continue;const ai=Y(oi._gvid),ci=oi.likec4_path??"",ui=ii.get(oi._gvid),{x:li,y:di,width:fi,height:pi}="bb"in oi?U(oi.bb):Me(oi),hi={x:li,y:di};if(oi.likec4_type==="view")index_KOeaSlL8.o(oi.likec4_id,`View ${oi} has no likec4_id`),ri.nodes.push({id:ai,type:"view",parentId:ui?.id??null,height:pi,width:fi,position:hi,label:oi.label??"",viewId:oi.likec4_id});else{const vi={id:ai,type:oi.likec4_type,parentId:ui?.id??null,height:pi,width:fi,position:hi,path:ci,label:oi.label??""},bi=[..."subgraphs"in oi?oi.subgraphs:[],..."nodes"in oi?oi.nodes:[]];for(const gi of bi)ii.set(gi,vi);ri.nodes.push(vi)}}for(const oi of ei.edges??[])try{const ai=Y(oi.tail),ci=Y(oi.head);ri.edges.push({id:`link${Y(oi._gvid)}`,source:ai,target:ci,points:Le(oi)})}catch(ai){Ye.warn(ai)}return ri}const Oe=Te$2.font,Z="/";class de{static toDot(ei){return new de(ei).print()}subgraphs=new Map;graphvizModel;constructor(ei){const ni=this.graphvizModel=strict.graph({[attribute.layout]:"osage",[attribute.pack]:C$2(100),[attribute.packmode]:"array_ltc",[attribute.pad]:v$3(15),[attribute.fontname]:Oe,[attribute.splines]:"polyline",[attribute.esep]:"+20"});ni.attributes.graph.apply({[attribute.fontsize]:C$2(20),[attribute.labeljust]:"l",[attribute.labelloc]:"t"}),ni.attributes.node.apply({[attribute.fontname]:Oe,[attribute.shape]:"rect",[attribute.width]:v$3(400),[attribute.height]:v$3(300),[attribute.fixedsize]:!0,[attribute.fontsize]:10}),ni.attributes.edge.apply({[attribute.penwidth]:C$2(2)});const ri=new Set(ei.map(ci=>ci.relativePath??""));let ii=0,si=[...ei];const oi=ri.size>1;oi&&si.sort((ci,ui)=>{const li=ci.relativePath?.split(Z)??[""],di=ui.relativePath?.split(Z)??[""];li.push(ci.title??"Untitled"),di.push(ui.title??"Untitled");const fi=li.length,pi=di.length;switch(ii=Math.max(ii,fi,pi),!0){case fi>pi:return-1;case fi<pi:return 1;default:{for(let hi=0;hi<fi;hi++){const vi=li[hi].localeCompare(di[hi]);if(vi!==0)return vi}return 0}}});const ai=new Map;si.forEach((ci,ui)=>{this.addView(oi?ci:{...ci,relativePath:""},ui+ii);const li=ci.nodes.reduce((di,fi)=>(fi.navigateTo&&di.add(fi.navigateTo),di),new Set);li.size>0&&ai.set(ci.id,li)});for(const[ci,ui]of ai)for(const li of ui)ni.edge([ci,li])}getParentForPath(ei){if(ei==="")return this.graphvizModel;const ni=ei.toLowerCase();let ri=this.subgraphs.get(ni);if(!ri){const ii=ni.endsWith(".c4")||ni.endsWith(".likec4"),si=ei.includes(Z)?ei.slice(0,ei.lastIndexOf(Z)):"";ri=this.getParentForPath(si).subgraph("cluster"+String(this.subgraphs.size+1),{[attribute.likec4_type]:ii?"file":"folder",[attribute.likec4_path]:ei,[attribute.sortv]:this.subgraphs.size,[attribute.label]:n$7(si)?ei.slice(si.length+1):ei}),this.subgraphs.set(ni,ri)}return ri}addView(ei,ni=0){return this.getParentForPath(ei.relativePath??"").node(ei.id,{[attribute.likec4_type]:"view",[attribute.likec4_id]:ei.id,[attribute.sortv]:ni,[attribute.label]:ei.title||"Untitled"})}print(){return toDot(this.graphvizModel,{print:{indentStyle:"space",indentSize:2}})}}const Pe=ti=>{switch(!0){case index_KOeaSlL8.k.isDynamic(ti):return new ce(ti);case index_KOeaSlL8.k.isDeployment(ti):return new Wt(ti);case index_KOeaSlL8.k.isElement(ti):return new Jt(ti);default:index_KOeaSlL8.n(ti)}};class Ut{constructor(ei){this.graphviz=ei}get port(){return this.graphviz}changePort(ei){this.graphviz=ei}async layout(ei){try{let ni=await this.dot(ei);const ri=await this.graphviz.layoutJson(ni);let ii=ue(ri,ei);if(ei.manualLayout){const si=Pt(ii,ei.manualLayout);if(si.diagram)ii=si.diagram;else{if(si.relayout.nodes.length>0){const oi=Pe(ei);if(oi.hasEdgesWithCompounds)Ye.warn(`Manual layout for view ${ei.id} is ignored, as edges with compounds are not supported`);else{oi.applyManualLayout(si.relayout);const ai=await this.graphviz.layoutJson(oi.print());ii=ue(ai,ei)}}ii.hasLayoutDrift=!0}}return ni=ni.split(`
216
216
  `).filter(si=>!(si.includes("margin")&&si.includes("50.1"))).join(`
217
217
  `),{dot:ni,diagram:ii}}catch(ni){throw new Error(`Error during layout: ${ei.id}`,{cause:ni})}}async svg(ei){let ni=await this.dot(ei);return ni=ni.split(`
218
218
  `).filter(ri=>!(ri.includes("margin")&&ri.includes("50.1"))).join(`
219
- `),{svg:await this.graphviz.svg(ni),dot:ni}}async dot(ei){let ni=Pe(ei).print();if(!index_DafVOuVd.v.isElement(ei))return ni;try{return await this.graphviz.unflatten(ni)}catch(ri){return Ye.warn(`Error during unflatten: ${ei.id}`,ri),ni}}async layoutOverviewGraph(ei){if(ei.length===0)return Promise.resolve({nodes:[],edges:[],bounds:{x:0,y:0,width:10,height:10}});const ni=de.toDot(ei),ri=await this.graphviz.layoutJson(ni);return Vt(ri)}}const Yt=pLimit(1);let _$1=class io{static _graphviz=null;graphviz(){return Promise.resolve().then(()=>io._graphviz??=wasmGraphviz.Graphviz.load())}async attempt(ei,ni){return await Yt(async()=>{const ri=Ye.withTag("graphviz-wasm");try{return await ni()}catch(ii){ri.error(`FAILED GraphvizWasmAdapter: ${ei}`,ii),wasmGraphviz.Graphviz.unload(),io._graphviz=null}ri.warn("Retrying..."),await E$2(50,300);try{return await ni()}finally{wasmGraphviz.Graphviz.unload(),io._graphviz=null}})}async unflatten(ei){return await this.attempt(`unflatten
219
+ `),{svg:await this.graphviz.svg(ni),dot:ni}}async dot(ei){let ni=Pe(ei).print();if(!index_KOeaSlL8.k.isElement(ei))return ni;try{return await this.graphviz.unflatten(ni)}catch(ri){return Ye.warn(`Error during unflatten: ${ei.id}`,ri),ni}}async layoutOverviewGraph(ei){if(ei.length===0)return Promise.resolve({nodes:[],edges:[],bounds:{x:0,y:0,width:10,height:10}});const ni=de.toDot(ei),ri=await this.graphviz.layoutJson(ni);return Vt(ri)}}const Yt=pLimit(1);let _$1=class io{static _graphviz=null;graphviz(){return Promise.resolve().then(()=>io._graphviz??=wasmGraphviz.Graphviz.load())}async attempt(ei,ni){return await Yt(async()=>{const ri=Ye.withTag("graphviz-wasm");try{return await ni()}catch(ii){ri.error(`FAILED GraphvizWasmAdapter: ${ei}`,ii),wasmGraphviz.Graphviz.unload(),io._graphviz=null}ri.warn("Retrying..."),await E$2(50,300);try{return await ni()}finally{wasmGraphviz.Graphviz.unload(),io._graphviz=null}})}async unflatten(ei){return await this.attempt(`unflatten
220
220
  ${ei}`,async()=>(await this.graphviz()).unflatten(ei,1,!1,3).replaceAll(/\t\[/g," [").replaceAll(/\t/g," "))}async acyclic(ei){return await this.attempt(`acyclic
221
221
  ${ei}`,async()=>{const ni=(await this.graphviz()).acyclic(ei,!0);return ni.acyclic&&ni.outFile||ei})}async layoutJson(ei){return await this.attempt(`dot
222
222
  ${ei}`,async()=>(await this.graphviz()).layout(ei,"json",void 0,{yInvert:!0}))}async svg(ei){return await this.attempt(`svg
223
- ${ei}`,async()=>(await this.graphviz()).layout(ei,"svg"))}};const DeploymentElement="DeploymentElement";function isDeploymentElement(ti){return reflection.isInstance(ti,DeploymentElement)}const DeploymentViewRule="DeploymentViewRule";function isDeploymentViewRule(ti){return reflection.isInstance(ti,DeploymentViewRule)}const DynamicViewRule="DynamicViewRule";function isDynamicViewRule(ti){return reflection.isInstance(ti,DynamicViewRule)}const ElementExpression="ElementExpression";function isElementExpression(ti){return reflection.isInstance(ti,ElementExpression)}const ElementPredicate="ElementPredicate";function isElementPredicate(ti){return reflection.isInstance(ti,ElementPredicate)}const ElementPredicateOrWhere="ElementPredicateOrWhere";function isElementPredicateOrWhere(ti){return reflection.isInstance(ti,ElementPredicateOrWhere)}const ElementProperty="ElementProperty";function isElementProperty(ti){return reflection.isInstance(ti,ElementProperty)}const ExpressionV2="ExpressionV2";function isExpressionV2(ti){return reflection.isInstance(ti,ExpressionV2)}const FqnExpr="FqnExpr";function isFqnExpr(ti){return reflection.isInstance(ti,FqnExpr)}const FqnReferenceable="FqnReferenceable",LikeC4View="LikeC4View";function isLikeC4View(ti){return reflection.isInstance(ti,LikeC4View)}const MetadataProperty="MetadataProperty";function isMetadataProperty(ti){return reflection.isInstance(ti,MetadataProperty)}const Predicate="Predicate";function isPredicate(ti){return reflection.isInstance(ti,Predicate)}const Referenceable="Referenceable",RelationExpr="RelationExpr";function isRelationExpr(ti){return reflection.isInstance(ti,RelationExpr)}const RelationExpression="RelationExpression";function isRelationExpression(ti){return reflection.isInstance(ti,RelationExpression)}const RelationPredicate="RelationPredicate";function isRelationPredicate(ti){return reflection.isInstance(ti,RelationPredicate)}const RelationPredicateOrWhere="RelationPredicateOrWhere";function isRelationPredicateOrWhere(ti){return reflection.isInstance(ti,RelationPredicateOrWhere)}const RelationProperty="RelationProperty",RelationshipStyleProperty="RelationshipStyleProperty";function isRelationshipStyleProperty(ti){return reflection.isInstance(ti,RelationshipStyleProperty)}const StringProperty="StringProperty";function isStringProperty(ti){return reflection.isInstance(ti,StringProperty)}const StyleProperty="StyleProperty";function isStyleProperty(ti){return reflection.isInstance(ti,StyleProperty)}const ViewProperty="ViewProperty";function isViewProperty(ti){return reflection.isInstance(ti,ViewProperty)}const ViewRule="ViewRule";function isViewRule(ti){return reflection.isInstance(ti,ViewRule)}const ViewRulePredicate="ViewRulePredicate";function isViewRulePredicate(ti){return reflection.isInstance(ti,ViewRulePredicate)}const ViewRuleStyleOrGlobalRef="ViewRuleStyleOrGlobalRef";function isViewRuleStyleOrGlobalRef(ti){return reflection.isInstance(ti,ViewRuleStyleOrGlobalRef)}const WhereElement="WhereElement";function isWhereElement(ti){return reflection.isInstance(ti,WhereElement)}const WhereElementExpression="WhereElementExpression";function isWhereElementExpression(ti){return reflection.isInstance(ti,WhereElementExpression)}const WhereExpression="WhereExpression",WhereKindEqual="WhereKindEqual";function isWhereKindEqual(ti){return reflection.isInstance(ti,WhereKindEqual)}const WhereRelation="WhereRelation";function isWhereRelation(ti){return reflection.isInstance(ti,WhereRelation)}const WhereRelationExpression="WhereRelationExpression";function isWhereRelationExpression(ti){return reflection.isInstance(ti,WhereRelationExpression)}const WhereTagEqual="WhereTagEqual";function isWhereTagEqual(ti){return reflection.isInstance(ti,WhereTagEqual)}const ArrowProperty="ArrowProperty";function isArrowProperty(ti){return reflection.isInstance(ti,ArrowProperty)}const BorderProperty="BorderProperty";function isBorderProperty(ti){return reflection.isInstance(ti,BorderProperty)}const ColorProperty="ColorProperty";function isColorProperty(ti){return reflection.isInstance(ti,ColorProperty)}const CustomColor="CustomColor",CustomElementProperties="CustomElementProperties";function isCustomElementProperties(ti){return reflection.isInstance(ti,CustomElementProperties)}const CustomRelationProperties="CustomRelationProperties";function isCustomRelationProperties(ti){return reflection.isInstance(ti,CustomRelationProperties)}const DeployedInstance="DeployedInstance";function isDeployedInstance(ti){return reflection.isInstance(ti,DeployedInstance)}const DeployedInstanceBody="DeployedInstanceBody",DeploymentNode="DeploymentNode";function isDeploymentNode(ti){return reflection.isInstance(ti,DeploymentNode)}const DeploymentNodeBody="DeploymentNodeBody",DeploymentNodeKind="DeploymentNodeKind",DeploymentRelation="DeploymentRelation";function isDeploymentRelation(ti){return reflection.isInstance(ti,DeploymentRelation)}const DeploymentRelationBody="DeploymentRelationBody",DeploymentView="DeploymentView";function isDeploymentView(ti){return reflection.isInstance(ti,DeploymentView)}const DeploymentViewBody="DeploymentViewBody",DeploymentViewRulePredicate="DeploymentViewRulePredicate";function isDeploymentViewRulePredicate(ti){return reflection.isInstance(ti,DeploymentViewRulePredicate)}const DeploymentViewRulePredicateExpression="DeploymentViewRulePredicateExpression",DeploymentViewRuleStyle="DeploymentViewRuleStyle";function isDeploymentViewRuleStyle(ti){return reflection.isInstance(ti,DeploymentViewRuleStyle)}const DirectedRelationExpr="DirectedRelationExpr";function isDirectedRelationExpr(ti){return reflection.isInstance(ti,DirectedRelationExpr)}const DirectedRelationExpression="DirectedRelationExpression";function isDirectedRelationExpression(ti){return reflection.isInstance(ti,DirectedRelationExpression)}const DynamicView="DynamicView";function isDynamicView(ti){return reflection.isInstance(ti,DynamicView)}const DynamicViewBody="DynamicViewBody";function isDynamicViewBody(ti){return reflection.isInstance(ti,DynamicViewBody)}const DynamicViewGlobalPredicateRef="DynamicViewGlobalPredicateRef";function isDynamicViewGlobalPredicateRef(ti){return reflection.isInstance(ti,DynamicViewGlobalPredicateRef)}const DynamicViewIncludePredicate="DynamicViewIncludePredicate";function isDynamicViewIncludePredicate(ti){return reflection.isInstance(ti,DynamicViewIncludePredicate)}const DynamicViewParallelSteps="DynamicViewParallelSteps";function isDynamicViewParallelSteps(ti){return reflection.isInstance(ti,DynamicViewParallelSteps)}const DynamicViewPredicateIterator="DynamicViewPredicateIterator";function isDynamicViewPredicateIterator(ti){return reflection.isInstance(ti,DynamicViewPredicateIterator)}const DynamicViewRef="DynamicViewRef",DynamicViewStep="DynamicViewStep";function isDynamicViewStep(ti){return reflection.isInstance(ti,DynamicViewStep)}const Element="Element";function isElement(ti){return reflection.isInstance(ti,Element)}const ElementBody="ElementBody";function isElementBody(ti){return reflection.isInstance(ti,ElementBody)}const ElementDescedantsExpression="ElementDescedantsExpression";function isElementDescedantsExpression(ti){return reflection.isInstance(ti,ElementDescedantsExpression)}const ElementExpressionsIterator="ElementExpressionsIterator";function isElementExpressionsIterator(ti){return reflection.isInstance(ti,ElementExpressionsIterator)}const ElementKind="ElementKind";function isElementKind(ti){return reflection.isInstance(ti,ElementKind)}const ElementKindExpression="ElementKindExpression";function isElementKindExpression(ti){return reflection.isInstance(ti,ElementKindExpression)}const ElementPredicateWhere="ElementPredicateWhere";function isElementPredicateWhere(ti){return reflection.isInstance(ti,ElementPredicateWhere)}const ElementPredicateWith="ElementPredicateWith";function isElementPredicateWith(ti){return reflection.isInstance(ti,ElementPredicateWith)}const ElementRef="ElementRef";function isElementRef(ti){return reflection.isInstance(ti,ElementRef)}const ElementStringProperty="ElementStringProperty";function isElementStringProperty(ti){return reflection.isInstance(ti,ElementStringProperty)}const ElementStyleProperty="ElementStyleProperty";function isElementStyleProperty(ti){return reflection.isInstance(ti,ElementStyleProperty)}const ElementTagExpression="ElementTagExpression";function isElementTagExpression(ti){return reflection.isInstance(ti,ElementTagExpression)}const ElementView="ElementView";function isElementView(ti){return reflection.isInstance(ti,ElementView)}const ElementViewBody="ElementViewBody";function isElementViewBody(ti){return reflection.isInstance(ti,ElementViewBody)}const ElementViewRef="ElementViewRef",ExcludePredicate="ExcludePredicate";function isExcludePredicate(ti){return reflection.isInstance(ti,ExcludePredicate)}const ExpandElementExpression="ExpandElementExpression";function isExpandElementExpression(ti){return reflection.isInstance(ti,ExpandElementExpression)}const ExtendElement="ExtendElement";function isExtendElement(ti){return reflection.isInstance(ti,ExtendElement)}const ExtendElementBody="ExtendElementBody";function isExtendElementBody(ti){return reflection.isInstance(ti,ExtendElementBody)}const FqnElementRef="FqnElementRef";function isFqnElementRef(ti){return reflection.isInstance(ti,FqnElementRef)}const FqnExpressions="FqnExpressions",FqnRef="FqnRef";function isFqnRef(ti){return reflection.isInstance(ti,FqnRef)}const FqnRefExpr="FqnRefExpr";function isFqnRefExpr(ti){return reflection.isInstance(ti,FqnRefExpr)}const GlobalDynamicPredicateGroup="GlobalDynamicPredicateGroup";function isGlobalDynamicPredicateGroup(ti){return reflection.isInstance(ti,GlobalDynamicPredicateGroup)}const GlobalPredicateGroup="GlobalPredicateGroup";function isGlobalPredicateGroup(ti){return reflection.isInstance(ti,GlobalPredicateGroup)}const Globals="Globals";function isGlobals(ti){return reflection.isInstance(ti,Globals)}const GlobalStyle="GlobalStyle";function isGlobalStyle(ti){return reflection.isInstance(ti,GlobalStyle)}const GlobalStyleGroup="GlobalStyleGroup";function isGlobalStyleGroup(ti){return reflection.isInstance(ti,GlobalStyleGroup)}const GlobalStyleId="GlobalStyleId",IconProperty="IconProperty";function isIconProperty(ti){return reflection.isInstance(ti,IconProperty)}const IncludePredicate="IncludePredicate";function isIncludePredicate(ti){return reflection.isInstance(ti,IncludePredicate)}const IncomingRelationExpr="IncomingRelationExpr";function isIncomingRelationExpr(ti){return reflection.isInstance(ti,IncomingRelationExpr)}const IncomingRelationExpression="IncomingRelationExpression";function isIncomingRelationExpression(ti){return reflection.isInstance(ti,IncomingRelationExpression)}const InOutRelationExpr="InOutRelationExpr";function isInOutRelationExpr(ti){return reflection.isInstance(ti,InOutRelationExpr)}const InOutRelationExpression="InOutRelationExpression";function isInOutRelationExpression(ti){return reflection.isInstance(ti,InOutRelationExpression)}const LibIcon="LibIcon";function isLibIcon(ti){return reflection.isInstance(ti,LibIcon)}const LikeC4Grammar$1="LikeC4Grammar";function isLikeC4Grammar(ti){return reflection.isInstance(ti,LikeC4Grammar$1)}const LikeC4Lib="LikeC4Lib";function isLikeC4Lib(ti){return reflection.isInstance(ti,LikeC4Lib)}const LineProperty="LineProperty";function isLineProperty(ti){return reflection.isInstance(ti,LineProperty)}const LinkProperty="LinkProperty";function isLinkProperty(ti){return reflection.isInstance(ti,LinkProperty)}const MetadataAttribute="MetadataAttribute";function isMetadataAttribute(ti){return reflection.isInstance(ti,MetadataAttribute)}const MetadataBody="MetadataBody";function isMetadataBody(ti){return reflection.isInstance(ti,MetadataBody)}const Model="Model";function isModel(ti){return reflection.isInstance(ti,Model)}const ModelDeployments="ModelDeployments",ModelViews="ModelViews";function isModelViews(ti){return reflection.isInstance(ti,ModelViews)}const NavigateToProperty="NavigateToProperty";function isNavigateToProperty(ti){return reflection.isInstance(ti,NavigateToProperty)}const NotationProperty="NotationProperty";function isNotationProperty(ti){return reflection.isInstance(ti,NotationProperty)}const NotesProperty="NotesProperty";function isNotesProperty(ti){return reflection.isInstance(ti,NotesProperty)}const OpacityProperty="OpacityProperty";function isOpacityProperty(ti){return reflection.isInstance(ti,OpacityProperty)}const OutgoingRelationExpr="OutgoingRelationExpr";function isOutgoingRelationExpr(ti){return reflection.isInstance(ti,OutgoingRelationExpr)}const OutgoingRelationExpression="OutgoingRelationExpression";function isOutgoingRelationExpression(ti){return reflection.isInstance(ti,OutgoingRelationExpression)}const Predicates="Predicates";function isPredicates(ti){return reflection.isInstance(ti,Predicates)}const Relation="Relation";function isRelation(ti){return reflection.isInstance(ti,Relation)}const RelationBody="RelationBody";function isRelationBody(ti){return reflection.isInstance(ti,RelationBody)}const RelationNavigateToProperty="RelationNavigateToProperty";function isRelationNavigateToProperty(ti){return reflection.isInstance(ti,RelationNavigateToProperty)}const RelationPredicateWhere="RelationPredicateWhere";function isRelationPredicateWhere(ti){return reflection.isInstance(ti,RelationPredicateWhere)}const RelationPredicateWith="RelationPredicateWith";function isRelationPredicateWith(ti){return reflection.isInstance(ti,RelationPredicateWith)}const RelationshipKind="RelationshipKind";function isRelationshipKind(ti){return reflection.isInstance(ti,RelationshipKind)}const RelationStringProperty="RelationStringProperty";function isRelationStringProperty(ti){return reflection.isInstance(ti,RelationStringProperty)}const RelationStyleProperty="RelationStyleProperty";function isRelationStyleProperty(ti){return reflection.isInstance(ti,RelationStyleProperty)}const ShapeProperty="ShapeProperty";function isShapeProperty(ti){return reflection.isInstance(ti,ShapeProperty)}const SpecificationColor="SpecificationColor";function isSpecificationColor(ti){return reflection.isInstance(ti,SpecificationColor)}const SpecificationDeploymentNodeKind="SpecificationDeploymentNodeKind";function isSpecificationDeploymentNodeKind(ti){return reflection.isInstance(ti,SpecificationDeploymentNodeKind)}const SpecificationElementKind="SpecificationElementKind";function isSpecificationElementKind(ti){return reflection.isInstance(ti,SpecificationElementKind)}const SpecificationElementStringProperty="SpecificationElementStringProperty";function isSpecificationElementStringProperty(ti){return reflection.isInstance(ti,SpecificationElementStringProperty)}const SpecificationRelationshipKind="SpecificationRelationshipKind";function isSpecificationRelationshipKind(ti){return reflection.isInstance(ti,SpecificationRelationshipKind)}const SpecificationRelationshipStringProperty="SpecificationRelationshipStringProperty";function isSpecificationRelationshipStringProperty(ti){return reflection.isInstance(ti,SpecificationRelationshipStringProperty)}const SpecificationRule="SpecificationRule";function isSpecificationRule(ti){return reflection.isInstance(ti,SpecificationRule)}const SpecificationTag="SpecificationTag";function isSpecificationTag(ti){return reflection.isInstance(ti,SpecificationTag)}const Tag="Tag";function isTag(ti){return reflection.isInstance(ti,Tag)}const Tags="Tags";function isTags(ti){return reflection.isInstance(ti,Tags)}const ViewRef="ViewRef",ViewRuleAutoLayout="ViewRuleAutoLayout";function isViewRuleAutoLayout(ti){return reflection.isInstance(ti,ViewRuleAutoLayout)}const ViewRuleGlobalPredicateRef="ViewRuleGlobalPredicateRef";function isViewRuleGlobalPredicateRef(ti){return reflection.isInstance(ti,ViewRuleGlobalPredicateRef)}const ViewRuleGlobalStyle="ViewRuleGlobalStyle";function isViewRuleGlobalStyle(ti){return reflection.isInstance(ti,ViewRuleGlobalStyle)}const ViewRuleGroup="ViewRuleGroup";function isViewRuleGroup(ti){return reflection.isInstance(ti,ViewRuleGroup)}const ViewRuleStyle="ViewRuleStyle";function isViewRuleStyle(ti){return reflection.isInstance(ti,ViewRuleStyle)}const ViewStringProperty="ViewStringProperty";function isViewStringProperty(ti){return reflection.isInstance(ti,ViewStringProperty)}const WhereBinaryExpression="WhereBinaryExpression";function isWhereBinaryExpression(ti){return reflection.isInstance(ti,WhereBinaryExpression)}const WhereElementKind="WhereElementKind";function isWhereElementKind(ti){return reflection.isInstance(ti,WhereElementKind)}const WhereElementNegation="WhereElementNegation";function isWhereElementNegation(ti){return reflection.isInstance(ti,WhereElementNegation)}const WhereElementTag="WhereElementTag";function isWhereElementTag(ti){return reflection.isInstance(ti,WhereElementTag)}const WhereRelationKind="WhereRelationKind";function isWhereRelationKind(ti){return reflection.isInstance(ti,WhereRelationKind)}const WhereRelationNegation="WhereRelationNegation";function isWhereRelationNegation(ti){return reflection.isInstance(ti,WhereRelationNegation)}const WhereRelationTag="WhereRelationTag";function isWhereRelationTag(ti){return reflection.isInstance(ti,WhereRelationTag)}const WildcardExpression="WildcardExpression";function isWildcardExpression(ti){return reflection.isInstance(ti,WildcardExpression)}class LikeC4AstReflection extends AbstractAstReflection{getAllTypes(){return[ArrowProperty,BorderProperty,ColorProperty,CustomColor,CustomElementProperties,CustomRelationProperties,DeployedInstance,DeployedInstanceBody,DeploymentElement,DeploymentNode,DeploymentNodeBody,DeploymentNodeKind,DeploymentRelation,DeploymentRelationBody,DeploymentView,DeploymentViewBody,DeploymentViewRule,DeploymentViewRulePredicate,DeploymentViewRulePredicateExpression,DeploymentViewRuleStyle,DirectedRelationExpr,DirectedRelationExpression,DynamicView,DynamicViewBody,DynamicViewGlobalPredicateRef,DynamicViewIncludePredicate,DynamicViewParallelSteps,DynamicViewPredicateIterator,DynamicViewRef,DynamicViewRule,DynamicViewStep,Element,ElementBody,ElementDescedantsExpression,ElementExpression,ElementExpressionsIterator,ElementKind,ElementKindExpression,ElementPredicate,ElementPredicateOrWhere,ElementPredicateWhere,ElementPredicateWith,ElementProperty,ElementRef,ElementStringProperty,ElementStyleProperty,ElementTagExpression,ElementView,ElementViewBody,ElementViewRef,ExcludePredicate,ExpandElementExpression,ExpressionV2,ExtendElement,ExtendElementBody,FqnElementRef,FqnExpr,FqnExpressions,FqnRef,FqnRefExpr,FqnReferenceable,GlobalDynamicPredicateGroup,GlobalPredicateGroup,GlobalStyle,GlobalStyleGroup,GlobalStyleId,Globals,IconProperty,InOutRelationExpr,InOutRelationExpression,IncludePredicate,IncomingRelationExpr,IncomingRelationExpression,LibIcon,LikeC4Grammar$1,LikeC4Lib,LikeC4View,LineProperty,LinkProperty,MetadataAttribute,MetadataBody,MetadataProperty,Model,ModelDeployments,ModelViews,NavigateToProperty,NotationProperty,NotesProperty,OpacityProperty,OutgoingRelationExpr,OutgoingRelationExpression,Predicate,Predicates,Referenceable,Relation,RelationBody,RelationExpr,RelationExpression,RelationNavigateToProperty,RelationPredicate,RelationPredicateOrWhere,RelationPredicateWhere,RelationPredicateWith,RelationProperty,RelationStringProperty,RelationStyleProperty,RelationshipKind,RelationshipStyleProperty,ShapeProperty,SpecificationColor,SpecificationDeploymentNodeKind,SpecificationElementKind,SpecificationElementStringProperty,SpecificationRelationshipKind,SpecificationRelationshipStringProperty,SpecificationRule,SpecificationTag,StringProperty,StyleProperty,Tag,Tags,ViewProperty,ViewRef,ViewRule,ViewRuleAutoLayout,ViewRuleGlobalPredicateRef,ViewRuleGlobalStyle,ViewRuleGroup,ViewRulePredicate,ViewRuleStyle,ViewRuleStyleOrGlobalRef,ViewStringProperty,WhereBinaryExpression,WhereElement,WhereElementExpression,WhereElementKind,WhereElementNegation,WhereElementTag,WhereExpression,WhereKindEqual,WhereRelation,WhereRelationExpression,WhereRelationKind,WhereRelationNegation,WhereRelationTag,WhereTagEqual,WildcardExpression]}computeIsSubtype(ei,ni){switch(ei){case ArrowProperty:case LineProperty:return this.isSubtype(RelationshipStyleProperty,ni);case BorderProperty:case OpacityProperty:case ShapeProperty:return this.isSubtype(StyleProperty,ni);case ColorProperty:return this.isSubtype(RelationshipStyleProperty,ni)||this.isSubtype(StyleProperty,ni);case DeployedInstance:case DeploymentNode:return this.isSubtype(DeploymentElement,ni)||this.isSubtype(Referenceable,ni);case DeploymentView:case DynamicView:case ElementView:return this.isSubtype(LikeC4View,ni);case DeploymentViewRulePredicate:case DeploymentViewRuleStyle:return this.isSubtype(DeploymentViewRule,ni);case DirectedRelationExpr:case IncomingRelationExpr:case InOutRelationExpr:case OutgoingRelationExpr:return this.isSubtype(RelationExpr,ni);case DirectedRelationExpression:case IncomingRelationExpression:case InOutRelationExpression:case OutgoingRelationExpression:return this.isSubtype(RelationExpression,ni);case DynamicViewGlobalPredicateRef:case DynamicViewIncludePredicate:return this.isSubtype(DynamicViewRule,ni);case Element:return this.isSubtype(FqnReferenceable,ni)||this.isSubtype(Referenceable,ni);case ElementDescedantsExpression:case ElementKindExpression:case ElementRef:case ElementTagExpression:case ExpandElementExpression:return this.isSubtype(ElementExpression,ni);case ElementExpression:case ElementPredicateWhere:return this.isSubtype(ElementPredicateOrWhere,ni);case ElementPredicate:case RelationPredicate:return this.isSubtype(Predicate,ni);case ElementPredicateOrWhere:case ElementPredicateWith:return this.isSubtype(ElementPredicate,ni);case ElementStringProperty:return this.isSubtype(ElementProperty,ni)||this.isSubtype(StringProperty,ni);case ElementStyleProperty:return this.isSubtype(ElementProperty,ni);case ExcludePredicate:case IncludePredicate:return this.isSubtype(ViewRulePredicate,ni);case ExtendElement:case Referenceable:return this.isSubtype(FqnReferenceable,ni);case FqnExpr:case RelationExpr:return this.isSubtype(ExpressionV2,ni);case FqnRefExpr:return this.isSubtype(FqnExpr,ni);case IconProperty:return this.isSubtype(ElementProperty,ni)||this.isSubtype(StyleProperty,ni);case LinkProperty:return this.isSubtype(ElementProperty,ni)||this.isSubtype(RelationProperty,ni)||this.isSubtype(ViewProperty,ni);case MetadataAttribute:case NotationProperty:case NotesProperty:case SpecificationElementStringProperty:case SpecificationRelationshipStringProperty:return this.isSubtype(StringProperty,ni);case MetadataBody:return this.isSubtype(MetadataProperty,ni);case MetadataProperty:return this.isSubtype(ElementProperty,ni)||this.isSubtype(RelationProperty,ni);case RelationExpression:case RelationPredicateWhere:return this.isSubtype(RelationPredicateOrWhere,ni);case RelationNavigateToProperty:case RelationStyleProperty:return this.isSubtype(RelationProperty,ni);case RelationPredicateOrWhere:case RelationPredicateWith:return this.isSubtype(RelationPredicate,ni);case RelationStringProperty:return this.isSubtype(RelationProperty,ni)||this.isSubtype(StringProperty,ni);case ViewRuleAutoLayout:return this.isSubtype(DeploymentViewRule,ni)||this.isSubtype(DynamicViewRule,ni)||this.isSubtype(ViewRule,ni);case ViewRuleGlobalPredicateRef:case ViewRuleGroup:case ViewRulePredicate:return this.isSubtype(ViewRule,ni);case ViewRuleGlobalStyle:case ViewRuleStyle:return this.isSubtype(ViewRuleStyleOrGlobalRef,ni);case ViewRuleStyleOrGlobalRef:return this.isSubtype(DynamicViewRule,ni)||this.isSubtype(ViewRule,ni);case ViewStringProperty:return this.isSubtype(StringProperty,ni)||this.isSubtype(ViewProperty,ni);case WhereBinaryExpression:return this.isSubtype(WhereElementExpression,ni)||this.isSubtype(WhereRelationExpression,ni);case WhereElement:case WhereElementNegation:return this.isSubtype(WhereElementExpression,ni);case WhereElementExpression:case WhereRelationExpression:return this.isSubtype(WhereExpression,ni);case WhereElementKind:return this.isSubtype(WhereElement,ni)||this.isSubtype(WhereKindEqual,ni);case WhereElementTag:return this.isSubtype(WhereElement,ni)||this.isSubtype(WhereTagEqual,ni);case WhereRelation:case WhereRelationNegation:return this.isSubtype(WhereRelationExpression,ni);case WhereRelationKind:return this.isSubtype(WhereKindEqual,ni)||this.isSubtype(WhereRelation,ni);case WhereRelationTag:return this.isSubtype(WhereRelation,ni)||this.isSubtype(WhereTagEqual,ni);case WildcardExpression:return this.isSubtype(ElementExpression,ni)||this.isSubtype(FqnExpr,ni);default:return!1}}getReferenceType(ei){const ni=`${ei.container.$type}:${ei.property}`;switch(ni){case"ColorProperty:customColor":return CustomColor;case"DeploymentNode:kind":return DeploymentNodeKind;case"DeploymentRelation:kind":case"DynamicViewStep:kind":case"OutgoingRelationExpr:kind":case"OutgoingRelationExpression:kind":case"Relation:kind":case"WhereRelationKind:value":return RelationshipKind;case"DynamicViewGlobalPredicateRef:predicate":return GlobalDynamicPredicateGroup;case"DynamicViewRef:view":return DynamicView;case"Element:kind":case"ElementKindExpression:kind":case"WhereElementKind:value":return ElementKind;case"ElementRef:el":case"FqnElementRef:el":return Element;case"ElementTagExpression:tag":case"Tags:values":case"WhereElementTag:value":case"WhereRelationTag:value":return Tag;case"ElementViewRef:view":return ElementView;case"FqnRef:value":return Referenceable;case"IconProperty:libicon":return LibIcon;case"ViewRef:view":return LikeC4View;case"ViewRuleGlobalPredicateRef:predicate":return GlobalPredicateGroup;case"ViewRuleGlobalStyle:style":return GlobalStyleId;default:throw new Error(`${ni} is not a valid reference id.`)}}getTypeMetaData(ei){switch(ei){case ArrowProperty:return{name:ArrowProperty,properties:[{name:"key"},{name:"value"}]};case BorderProperty:return{name:BorderProperty,properties:[{name:"key"},{name:"value"}]};case ColorProperty:return{name:ColorProperty,properties:[{name:"customColor"},{name:"key"},{name:"themeColor"}]};case CustomColor:return{name:CustomColor,properties:[{name:"name"}]};case CustomElementProperties:return{name:CustomElementProperties,properties:[{name:"props",defaultValue:[]}]};case CustomRelationProperties:return{name:CustomRelationProperties,properties:[{name:"props",defaultValue:[]}]};case DeployedInstance:return{name:DeployedInstance,properties:[{name:"body"},{name:"element"},{name:"name"},{name:"title"}]};case DeployedInstanceBody:return{name:DeployedInstanceBody,properties:[{name:"props",defaultValue:[]},{name:"tags"}]};case DeploymentNode:return{name:DeploymentNode,properties:[{name:"body"},{name:"kind"},{name:"name"},{name:"title"}]};case DeploymentNodeBody:return{name:DeploymentNodeBody,properties:[{name:"elements",defaultValue:[]},{name:"props",defaultValue:[]},{name:"tags"}]};case DeploymentNodeKind:return{name:DeploymentNodeKind,properties:[{name:"name"}]};case DeploymentRelation:return{name:DeploymentRelation,properties:[{name:"body"},{name:"kind"},{name:"source"},{name:"tags"},{name:"target"},{name:"technology"},{name:"title"}]};case DeploymentRelationBody:return{name:DeploymentRelationBody,properties:[{name:"props",defaultValue:[]},{name:"tags"}]};case DeploymentView:return{name:DeploymentView,properties:[{name:"body"},{name:"name"}]};case DeploymentViewBody:return{name:DeploymentViewBody,properties:[{name:"props",defaultValue:[]},{name:"rules",defaultValue:[]},{name:"tags"}]};case DeploymentViewRulePredicate:return{name:DeploymentViewRulePredicate,properties:[{name:"expr"},{name:"isInclude",defaultValue:!1}]};case DeploymentViewRulePredicateExpression:return{name:DeploymentViewRulePredicateExpression,properties:[{name:"prev"},{name:"value"}]};case DeploymentViewRuleStyle:return{name:DeploymentViewRuleStyle,properties:[{name:"props",defaultValue:[]},{name:"targets"}]};case DirectedRelationExpr:return{name:DirectedRelationExpr,properties:[{name:"source"},{name:"target"}]};case DirectedRelationExpression:return{name:DirectedRelationExpression,properties:[{name:"source"},{name:"target"}]};case DynamicView:return{name:DynamicView,properties:[{name:"body"},{name:"name"}]};case DynamicViewBody:return{name:DynamicViewBody,properties:[{name:"props",defaultValue:[]},{name:"rules",defaultValue:[]},{name:"steps",defaultValue:[]},{name:"tags"}]};case DynamicViewGlobalPredicateRef:return{name:DynamicViewGlobalPredicateRef,properties:[{name:"predicate"}]};case DynamicViewIncludePredicate:return{name:DynamicViewIncludePredicate,properties:[{name:"predicates"}]};case DynamicViewParallelSteps:return{name:DynamicViewParallelSteps,properties:[{name:"steps",defaultValue:[]}]};case DynamicViewPredicateIterator:return{name:DynamicViewPredicateIterator,properties:[{name:"prev"},{name:"value"}]};case DynamicViewRef:return{name:DynamicViewRef,properties:[{name:"view"}]};case DynamicViewStep:return{name:DynamicViewStep,properties:[{name:"custom"},{name:"isBackward",defaultValue:!1},{name:"kind"},{name:"source"},{name:"target"},{name:"title"}]};case Element:return{name:Element,properties:[{name:"body"},{name:"kind"},{name:"name"},{name:"props",defaultValue:[]}]};case ElementBody:return{name:ElementBody,properties:[{name:"elements",defaultValue:[]},{name:"props",defaultValue:[]},{name:"tags"}]};case ElementDescedantsExpression:return{name:ElementDescedantsExpression,properties:[{name:"parent"},{name:"suffix"}]};case ElementExpressionsIterator:return{name:ElementExpressionsIterator,properties:[{name:"prev"},{name:"value"}]};case ElementKind:return{name:ElementKind,properties:[{name:"name"}]};case ElementKindExpression:return{name:ElementKindExpression,properties:[{name:"isEqual",defaultValue:!1},{name:"kind"}]};case ElementPredicateWhere:return{name:ElementPredicateWhere,properties:[{name:"subject"},{name:"where"}]};case ElementPredicateWith:return{name:ElementPredicateWith,properties:[{name:"custom"},{name:"subject"}]};case ElementRef:return{name:ElementRef,properties:[{name:"el"},{name:"parent"}]};case ElementStringProperty:return{name:ElementStringProperty,properties:[{name:"key"},{name:"value"}]};case ElementStyleProperty:return{name:ElementStyleProperty,properties:[{name:"key"},{name:"props",defaultValue:[]}]};case ElementTagExpression:return{name:ElementTagExpression,properties:[{name:"isEqual",defaultValue:!1},{name:"tag"}]};case ElementView:return{name:ElementView,properties:[{name:"body"},{name:"extends"},{name:"name"},{name:"viewOf"}]};case ElementViewBody:return{name:ElementViewBody,properties:[{name:"props",defaultValue:[]},{name:"rules",defaultValue:[]},{name:"tags"}]};case ElementViewRef:return{name:ElementViewRef,properties:[{name:"view"}]};case ExcludePredicate:return{name:ExcludePredicate,properties:[{name:"predicates"}]};case ExpandElementExpression:return{name:ExpandElementExpression,properties:[{name:"expand"}]};case ExtendElement:return{name:ExtendElement,properties:[{name:"body"},{name:"element"}]};case ExtendElementBody:return{name:ExtendElementBody,properties:[{name:"elements",defaultValue:[]}]};case FqnElementRef:return{name:FqnElementRef,properties:[{name:"el"},{name:"parent"}]};case FqnExpressions:return{name:FqnExpressions,properties:[{name:"prev"},{name:"value"}]};case FqnRef:return{name:FqnRef,properties:[{name:"parent"},{name:"value"}]};case FqnRefExpr:return{name:FqnRefExpr,properties:[{name:"ref"},{name:"selector"}]};case GlobalDynamicPredicateGroup:return{name:GlobalDynamicPredicateGroup,properties:[{name:"name"},{name:"predicates",defaultValue:[]}]};case GlobalPredicateGroup:return{name:GlobalPredicateGroup,properties:[{name:"name"},{name:"predicates",defaultValue:[]}]};case Globals:return{name:Globals,properties:[{name:"name"},{name:"predicates",defaultValue:[]},{name:"styles",defaultValue:[]}]};case GlobalStyle:return{name:GlobalStyle,properties:[{name:"id"},{name:"props",defaultValue:[]},{name:"target"}]};case GlobalStyleGroup:return{name:GlobalStyleGroup,properties:[{name:"id"},{name:"styles",defaultValue:[]}]};case GlobalStyleId:return{name:GlobalStyleId,properties:[{name:"name"}]};case IconProperty:return{name:IconProperty,properties:[{name:"key"},{name:"libicon"},{name:"value"}]};case IncludePredicate:return{name:IncludePredicate,properties:[{name:"predicates"}]};case IncomingRelationExpr:return{name:IncomingRelationExpr,properties:[{name:"to"}]};case IncomingRelationExpression:return{name:IncomingRelationExpression,properties:[{name:"to"}]};case InOutRelationExpr:return{name:InOutRelationExpr,properties:[{name:"inout"}]};case InOutRelationExpression:return{name:InOutRelationExpression,properties:[{name:"inout"}]};case LibIcon:return{name:LibIcon,properties:[{name:"name"}]};case LikeC4Grammar$1:return{name:LikeC4Grammar$1,properties:[{name:"deployments",defaultValue:[]},{name:"globals",defaultValue:[]},{name:"likec4lib",defaultValue:[]},{name:"models",defaultValue:[]},{name:"specifications",defaultValue:[]},{name:"views",defaultValue:[]}]};case LikeC4Lib:return{name:LikeC4Lib,properties:[{name:"icons",defaultValue:[]}]};case LineProperty:return{name:LineProperty,properties:[{name:"key"},{name:"value"}]};case LinkProperty:return{name:LinkProperty,properties:[{name:"key"},{name:"title"},{name:"value"}]};case MetadataAttribute:return{name:MetadataAttribute,properties:[{name:"key"},{name:"value"}]};case MetadataBody:return{name:MetadataBody,properties:[{name:"props",defaultValue:[]}]};case Model:return{name:Model,properties:[{name:"elements",defaultValue:[]},{name:"name"}]};case ModelDeployments:return{name:ModelDeployments,properties:[{name:"elements",defaultValue:[]},{name:"name"}]};case ModelViews:return{name:ModelViews,properties:[{name:"name"},{name:"styles",defaultValue:[]},{name:"views",defaultValue:[]}]};case NavigateToProperty:return{name:NavigateToProperty,properties:[{name:"key"},{name:"value"}]};case NotationProperty:return{name:NotationProperty,properties:[{name:"key"},{name:"value"}]};case NotesProperty:return{name:NotesProperty,properties:[{name:"key"},{name:"value"}]};case OpacityProperty:return{name:OpacityProperty,properties:[{name:"key"},{name:"value"}]};case OutgoingRelationExpr:return{name:OutgoingRelationExpr,properties:[{name:"from"},{name:"isBidirectional",defaultValue:!1},{name:"kind"}]};case OutgoingRelationExpression:return{name:OutgoingRelationExpression,properties:[{name:"from"},{name:"isBidirectional",defaultValue:!1},{name:"kind"}]};case Predicates:return{name:Predicates,properties:[{name:"prev"},{name:"value"}]};case Relation:return{name:Relation,properties:[{name:"body"},{name:"kind"},{name:"source"},{name:"tags"},{name:"target"},{name:"technology"},{name:"title"}]};case RelationBody:return{name:RelationBody,properties:[{name:"props",defaultValue:[]},{name:"tags"}]};case RelationNavigateToProperty:return{name:RelationNavigateToProperty,properties:[{name:"key"},{name:"value"}]};case RelationPredicateWhere:return{name:RelationPredicateWhere,properties:[{name:"subject"},{name:"where"}]};case RelationPredicateWith:return{name:RelationPredicateWith,properties:[{name:"custom"},{name:"subject"}]};case RelationshipKind:return{name:RelationshipKind,properties:[{name:"name"}]};case RelationStringProperty:return{name:RelationStringProperty,properties:[{name:"key"},{name:"value"}]};case RelationStyleProperty:return{name:RelationStyleProperty,properties:[{name:"key"},{name:"props",defaultValue:[]}]};case ShapeProperty:return{name:ShapeProperty,properties:[{name:"key"},{name:"value"}]};case SpecificationColor:return{name:SpecificationColor,properties:[{name:"color"},{name:"name"}]};case SpecificationDeploymentNodeKind:return{name:SpecificationDeploymentNodeKind,properties:[{name:"kind"},{name:"props",defaultValue:[]}]};case SpecificationElementKind:return{name:SpecificationElementKind,properties:[{name:"kind"},{name:"props",defaultValue:[]}]};case SpecificationElementStringProperty:return{name:SpecificationElementStringProperty,properties:[{name:"key"},{name:"value"}]};case SpecificationRelationshipKind:return{name:SpecificationRelationshipKind,properties:[{name:"kind"},{name:"props",defaultValue:[]}]};case SpecificationRelationshipStringProperty:return{name:SpecificationRelationshipStringProperty,properties:[{name:"key"},{name:"value"}]};case SpecificationRule:return{name:SpecificationRule,properties:[{name:"colors",defaultValue:[]},{name:"deploymentNodes",defaultValue:[]},{name:"elements",defaultValue:[]},{name:"name"},{name:"relationships",defaultValue:[]},{name:"tags",defaultValue:[]}]};case SpecificationTag:return{name:SpecificationTag,properties:[{name:"tag"}]};case Tag:return{name:Tag,properties:[{name:"name"}]};case Tags:return{name:Tags,properties:[{name:"prev"},{name:"values",defaultValue:[]}]};case ViewRef:return{name:ViewRef,properties:[{name:"view"}]};case ViewRuleAutoLayout:return{name:ViewRuleAutoLayout,properties:[{name:"direction"},{name:"nodeSep"},{name:"rankSep"}]};case ViewRuleGlobalPredicateRef:return{name:ViewRuleGlobalPredicateRef,properties:[{name:"predicate"}]};case ViewRuleGlobalStyle:return{name:ViewRuleGlobalStyle,properties:[{name:"style"}]};case ViewRuleGroup:return{name:ViewRuleGroup,properties:[{name:"groupRules",defaultValue:[]},{name:"props",defaultValue:[]},{name:"title"}]};case ViewRuleStyle:return{name:ViewRuleStyle,properties:[{name:"props",defaultValue:[]},{name:"target"}]};case ViewStringProperty:return{name:ViewStringProperty,properties:[{name:"key"},{name:"value"}]};case WhereBinaryExpression:return{name:WhereBinaryExpression,properties:[{name:"left"},{name:"operator"},{name:"right"}]};case WhereElementKind:return{name:WhereElementKind,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WhereElementNegation:return{name:WhereElementNegation,properties:[{name:"value"}]};case WhereElementTag:return{name:WhereElementTag,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WhereRelationKind:return{name:WhereRelationKind,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WhereRelationNegation:return{name:WhereRelationNegation,properties:[{name:"value"}]};case WhereRelationTag:return{name:WhereRelationTag,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WildcardExpression:return{name:WildcardExpression,properties:[{name:"isWildcard",defaultValue:!1}]};default:return{name:ei,properties:[]}}}}const reflection=new LikeC4AstReflection;let e;const LikeC4Grammar=()=>e??(e=loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"LikeC4","rules":[{"$type":"ParserRule","name":"LikeC4Grammar","entry":true,"definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"specifications","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"models","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"views","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[]}},{"$type":"Assignment","feature":"globals","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@118"},"arguments":[]}},{"$type":"Assignment","feature":"deployments","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@95"},"arguments":[]}},{"$type":"Assignment","feature":"likec4lib","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LikeC4Lib","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"likec4lib"},{"$type":"Keyword","value":"{"},{"$type":"Keyword","value":"icons"},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"icons","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LibIcon","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@141"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Tag","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationshipKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColor","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNodeKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRule","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"specification"}},{"$type":"Keyword","value":"{"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"relationships","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"colors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"deploymentNodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationElementKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"element"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationElementStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"notation"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationDeploymentNodeKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"deploymentNode"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationTag","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"tag"},{"$type":"Assignment","feature":"tag","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationColor","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"color"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"color","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRelationshipKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"relationship"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRelationshipStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"notation"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Model","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"model"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":true},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Element","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false}}]}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":false},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@124"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@127"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElement","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"extend"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElementBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":true},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnElementRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnElementRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@159"},"arguments":[]},{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@159"},"arguments":[]},{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Tags","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"Tags"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"*"}],"cardinality":"*"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Relation","parameters":[{"$type":"Parameter","name":"isExplicit"}],"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","guardCondition":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@26/parameters@0"}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}}]},{"$type":"Group","guardCondition":{"$type":"Negation","value":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@26/parameters@0"}}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},"cardinality":"?"}]}]},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Keyword","value":"->"}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Assignment","feature":"technology","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"wildcard":false},{"$type":"ParserRule","name":"RelationBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@94"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@124"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationStyleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"style"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataProperty","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"metadata"},{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataAttribute","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ModelViews","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"views"}},{"$type":"Keyword","value":"{"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"views","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]}},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@87"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LikeC4ViewRule","returnType":{"$ref":"#/types@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@103"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"extends"},{"$type":"Assignment","feature":"extends","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"of"},{"$type":"Assignment","feature":"viewOf","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}}]}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"dynamic"},{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@0"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@36"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@37"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@43"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@43"},"arguments":[]},"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"steps","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@49"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}]}},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@124"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewLayoutDirection","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"TopBottom"},{"$type":"Keyword","value":"LeftRight"},{"$type":"Keyword","value":"BottomTop"},{"$type":"Keyword","value":"RightLeft"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@54"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@47"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@87"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@125"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@130"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@126"},"arguments":[]}]},"cardinality":"*"},{"$type":"Assignment","feature":"groupRules","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@47"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@82"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@83"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@87"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewParallelSteps","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"parallel"},{"$type":"Keyword","value":"par"}]},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"steps","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewStep","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBackward","operator":"?=","terminal":{"$type":"Keyword","value":"<-"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@92"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRulePredicate","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"IncludePredicate"}},{"$type":"Keyword","value":"include"},{"$type":"Assignment","feature":"predicates","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ExcludePredicate"}},{"$type":"Keyword","value":"exclude"},{"$type":"Assignment","feature":"predicates","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Predicates","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@53"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"Predicates"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@53"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Predicate","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@67"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGlobalPredicateRef","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"predicate"},{"$type":"Assignment","feature":"predicate","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@119"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicate","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@56"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicates","inferredType":{"$type":"InferredType","name":"ElementPredicate"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@57"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementPredicateWith"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"with"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@91"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicateOrWhere","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementPredicateWhere"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@58"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementExpression","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@59"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementOr","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@60"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"or"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@60"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementAnd","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@61"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"and"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@61"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementPrimary","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"RuleCall","rule":{"$ref":"#/rules@58"},"arguments":[]},{"$type":"Keyword","value":")"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@62"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@63"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementNegation","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"not"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@58"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElement","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereElementTag"}},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereElementKind"}},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementExpression","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@66"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementSelectorExpression","inferredType":{"$type":"InferredType","name":"ElementExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WildcardExpression"}},{"$type":"Assignment","feature":"isWildcard","operator":"?=","terminal":{"$type":"Keyword","value":"*"}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementTagExpression"}},{"$type":"Keyword","value":"element.tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},{"$type":"Assignment","feature":"tag","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementKindExpression"}},{"$type":"Keyword","value":"element.kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementDescedantsExpression","inferredType":{"$type":"InferredType","name":"ElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ExpandElementExpression"},"feature":"expand","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementDescedantsExpression"},"feature":"parent","operator":"="},{"$type":"Assignment","feature":"suffix","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]}}]}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicate","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@68"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicates","inferredType":{"$type":"InferredType","name":"RelationPredicate"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@69"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationPredicateWith"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"with"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@92"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicateOrWhere","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@76"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationPredicateWhere"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationExpression","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@71"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationOr","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@72"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"or"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@72"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationAnd","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@73"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"and"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@73"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationPrimary","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]},{"$type":"Keyword","value":")"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@74"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@75"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationNegation","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"not"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelation","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationTag"}},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationKind"}},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationExpression","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@77"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@79"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"InOutRelationExpressions","inferredType":{"$type":"InferredType","name":"RelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@78"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"InOutRelationExpression"},"feature":"inout","operator":"="},{"$type":"Keyword","value":"->"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IncomingRelationExpression","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DirectedRelationExpressions","inferredType":{"$type":"InferredType","name":"RelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@80"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DirectedRelationExpression"},"feature":"source","operator":"="},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OutgoingRelationExpression","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBidirectional","operator":"?=","terminal":{"$type":"Keyword","value":"<->"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementExpressionsIterator","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementExpressionsIterator"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewIncludePredicate","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"include"},{"$type":"Assignment","feature":"predicates","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@84"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewGlobalPredicateRef","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"predicate"},{"$type":"Assignment","feature":"predicate","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@120"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewPredicateIterator","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DynamicViewPredicateIterator"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@81"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGlobalStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"style","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@121"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleStyleOrGlobalRef","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@85"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@86"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleAutoLayout","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"autoLayout"},{"$type":"Assignment","feature":"direction","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"rankSep","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]}},{"$type":"Assignment","feature":"nodeSep","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NotationProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"notation"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NotesProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"notes"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomElementProperties","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@93"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomRelationProperties","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@94"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@90"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NavigateToProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"navigateTo"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationNavigateToProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"navigateTo"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@40"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ModelDeployments","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"deployment"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@96"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@101"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNode","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}}]}]},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@97"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNodeBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@98"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@101"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@96"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeployedInstance","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}],"cardinality":"?"},{"$type":"Keyword","value":"instanceOf"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@99"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeployedInstanceBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@159"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentRelation","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@100"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@100"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Assignment","feature":"technology","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@102"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentRelationBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"deployment"},{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@104"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@43"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@105"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@107"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@106"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRuleStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"targets","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@117"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRulePredicate","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isInclude","operator":"?=","terminal":{"$type":"Keyword","value":"include"}},{"$type":"Keyword","value":"exclude"}]},{"$type":"Assignment","feature":"expr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@108"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRulePredicateExpression","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@109"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DeploymentViewRulePredicateExpression"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@109"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExpressionV2","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@112"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExpr","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WildcardExpression"}},{"$type":"Assignment","feature":"isWildcard","operator":"?=","terminal":{"$type":"Keyword","value":"*"}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnRefExpr","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"ref","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@100"},"arguments":[]}},{"$type":"Assignment","feature":"selector","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]}]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationExpr","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@113"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@115"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"InOutRelationExpr","inferredType":{"$type":"InferredType","name":"RelationExpr"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@114"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"InOutRelationExpr"},"feature":"inout","operator":"="},{"$type":"Keyword","value":"->"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IncomingRelationExpr","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DirectedRelationExpr","inferredType":{"$type":"InferredType","name":"RelationExpr"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@116"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DirectedRelationExpr"},"feature":"source","operator":"="},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OutgoingRelationExpr","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBidirectional","operator":"?=","terminal":{"$type":"Keyword","value":"<->"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExpressions","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnExpressions"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Globals","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"global"}},{"$type":"Keyword","value":"{"},{"$type":"Group","elements":[{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@119"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@120"},"arguments":[]}]},"cardinality":"*"},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@122"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@123"},"arguments":[]}]},"cardinality":"*"}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalPredicateGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"predicateGroup"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalDynamicPredicateGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"dynamicPredicateGroup"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@82"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyleId","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@121"},"arguments":[]}},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@81"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyleGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"styleGroup"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@121"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@85"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LinkProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"link"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@142"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ColorProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"color"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"themeColor","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@138"},"arguments":[]}},{"$type":"Assignment","feature":"customColor","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OpacityProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"opacity"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"icon"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"libicon","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@141"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"none"},{"$type":"RuleCall","rule":{"$ref":"#/rules@142"},"arguments":[]}]}}]},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ShapeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"shape"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BorderStyleValue","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@136"},"arguments":[]},{"$type":"Keyword","value":"none"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BorderProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"border"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@129"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"StyleProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@125"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@130"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@126"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@127"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementStyleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"style"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"line"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@136"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ArrowProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"head"},{"$type":"Keyword","value":"tail"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@137"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationshipStyleProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@125"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@133"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@134"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineOptions","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"solid"},{"$type":"Keyword","value":"dashed"},{"$type":"Keyword","value":"dotted"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ArrowType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"none"},{"$type":"Keyword","value":"normal"},{"$type":"Keyword","value":"onormal"},{"$type":"Keyword","value":"dot"},{"$type":"Keyword","value":"odot"},{"$type":"Keyword","value":"diamond"},{"$type":"Keyword","value":"odiamond"},{"$type":"Keyword","value":"crow"},{"$type":"Keyword","value":"open"},{"$type":"Keyword","value":"vee"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ThemeColor","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"primary"},{"$type":"Keyword","value":"secondary"},{"$type":"Keyword","value":"muted"},{"$type":"Keyword","value":"slate"},{"$type":"Keyword","value":"blue"},{"$type":"Keyword","value":"indigo"},{"$type":"Keyword","value":"sky"},{"$type":"Keyword","value":"red"},{"$type":"Keyword","value":"gray"},{"$type":"Keyword","value":"green"},{"$type":"Keyword","value":"amber"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementShape","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rectangle"},{"$type":"Keyword","value":"person"},{"$type":"Keyword","value":"browser"},{"$type":"Keyword","value":"mobile"},{"$type":"Keyword","value":"cylinder"},{"$type":"Keyword","value":"storage"},{"$type":"Keyword","value":"queue"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColorValue","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@158"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@167"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconId","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@153"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Uri","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@155"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TagId","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@158"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DotId","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@160"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColorId","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@137"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@136"},"arguments":[]},{"$type":"Keyword","value":"element"},{"$type":"Keyword","value":"model"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Id","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@138"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@137"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@136"},"arguments":[]},{"$type":"Keyword","value":"element"},{"$type":"Keyword","value":"model"},{"$type":"Keyword","value":"group"},{"$type":"Keyword","value":"node"},{"$type":"Keyword","value":"deployment"},{"$type":"Keyword","value":"instance"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EqOperator","fragment":true,"definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@161"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"is"}},{"$type":"Assignment","feature":"not","operator":"?=","terminal":{"$type":"Keyword","value":"not"},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IsEqual","fragment":true,"definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isEqual","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@161"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","hidden":true,"name":"BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/[\\\\r\\\\n]+/"},"fragment":false},{"$type":"TerminalRule","name":"LIB_ICON","definition":{"$type":"RegexToken","regex":"/(aws|azure|gcp|tech):[-\\\\w]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"URI_WITH_SCHEMA","definition":{"$type":"RegexToken","regex":"/\\\\w+:\\\\/\\\\/\\\\S+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"URI_RELATIVE","definition":{"$type":"RegexToken","regex":"/\\\\.{0,2}\\\\/[^\\\\/]\\\\S+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DotUnderscore","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\._(?![_a-zA-Z])/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DotWildcard","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\.\\\\*{1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Hash","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"#"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"StickyDot","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\./"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Dot","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"."}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NotEqual","definition":{"$type":"RegexToken","regex":"/\\\\!\\\\={1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Eq","definition":{"$type":"RegexToken","regex":"/\\\\={1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Percent","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\d+%/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"String","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"IdTerminal","definition":{"$type":"RegexToken","regex":"/[_]*[a-zA-Z][-\\\\w]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Number","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/\\\\b\\\\d+\\\\b/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Hex","definition":{"$type":"RegexToken","regex":"/\\\\b[a-zA-Z0-9]+\\\\b/"},"fragment":false,"hidden":false}],"types":[{"$type":"Type","name":"LikeC4View","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@36"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@37"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@103"}}]}},{"$type":"Type","name":"StringProperty","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@20"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@44"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@29"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@33"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@10"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@89"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@90"}}]}},{"$type":"Type","name":"WhereTagEqual","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@63/definition/elements@0/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@75/definition/elements@0/elements@0/inferredType"}}]}},{"$type":"Type","name":"WhereKindEqual","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@63/definition/elements@1/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@75/definition/elements@1/elements@0/inferredType"}}]}},{"$type":"Type","name":"WhereExpression","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@58"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@70"}}]}},{"$type":"Type","name":"DeploymentElement","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@96"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@98"}}]}},{"$type":"Type","name":"Referenceable","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@96"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@98"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@17"}}]}},{"$type":"Type","name":"FqnReferenceable","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/types@6"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@17"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@21"}}]}}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"interfaces":[],"usedGrammars":[]}`)),LikeC4LanguageMetaData={languageId:"likec4",fileExtensions:[".c4",".likec4",".like-c4"],caseInsensitive:!1,mode:"production"},parserConfig={skipValidations:!0,recoveryEnabled:!0,nodeLocationTracking:"full"},LikeC4GeneratedSharedModule={AstReflection:()=>new LikeC4AstReflection},LikeC4GeneratedModule={Grammar:()=>LikeC4Grammar(),LanguageMetaData:()=>LikeC4LanguageMetaData,parser:{ParserConfig:()=>parserConfig}};function elementRef(ti){return ti.el.ref}function getFqnElementRef(ti){const ei=[ti.el.$refText];let ni=ti.parent;for(;ni;)ei.push(ni.el.$refText),ni=ni.parent;return ei.length===1?ei[0]:ei.reverse().join(".")}const l$2=Symbol.for("idattr"),ViewOps={writeId(ti,ei){return ti[l$2]=ei,ti},readId(ti){return ti[l$2]}},ElementOps={writeId(ti,ei){return n$6(ei)?ti[l$2]=void 0:ti[l$2]=ei,ti},readId(ti){return ti[l$2]}};function isLikeC4LangiumDocument(ti){return ti.textDocument.languageId===LikeC4LanguageMetaData.languageId}function isFqnIndexedDocument(ti){return isLikeC4LangiumDocument(ti)&&ti.state>=DocumentState.IndexedContent&&!!ti.c4fqnIndex}function isParsedLikeC4LangiumDocument(ti){return isLikeC4LangiumDocument(ti)&&ti.state==DocumentState.Validated&&!!ti.c4Specification&&!!ti.c4Elements&&!!ti.c4Relations&&!!ti.c4Views&&!!ti.c4fqnIndex&&!!ti.c4Deployments&&!!ti.c4DeploymentRelations}function*streamModel(ti){const ei=S$3.from(ti.parseResult.value.models.flatMap(ii=>ii.elements)),ni=[];let ri;for(;ri=ei.shift();){if(isRelation(ri)){ni.push(ri);continue}if(isExtendElement(ri)){if(ri.body&&ri.body.elements.length>0)for(const ii of ri.body.elements)ei.push(ii);continue}if(ri.body&&ri.body.elements.length>0)for(const ii of ri.body.elements)ei.push(ii);yield ri}yield*ni}function*streamDeploymentModel(ti){const ei=S$3.from(ti.parseResult.value.deployments.flatMap(ii=>ii.elements)),ni=[];let ri;for(;ri=ei.shift();){if(isDeploymentRelation(ri)){ni.push(ri);continue}if(isDeploymentNode(ri)&&ri.body&&ri.body.elements.length>0)for(const ii of ri.body.elements)ei.push(ii);yield ri}yield*ni}function resolveRelationPoints(ti){const ei=elementRef(ti.target);if(!ei)throw new Error("RelationRefError: Invalid reference to target");if(n$5(ti.source)){const ni=elementRef(ti.source);if(!ni)throw new Error("RelationRefError: Invalid reference to source");return{source:ni,target:ei}}if(!isElementBody(ti.$container))throw new Error("RelationRefError: Invalid container for sourceless relation");return{source:ti.$container.$container,target:ei}}function parseAstOpacityProperty({value:ti}){const ei=parseFloat(ti);return isNaN(ei)?100:u$2(ei,{min:0,max:100})}function toElementStyle(ti,ei){const ni={};if(!ti||ti.length===0)return ni;for(const ri of ti)if(ei(ri))switch(!0){case isBorderProperty(ri):{n$7(ri.value)&&(ni.border=ri.value);break}case isColorProperty(ri):{const ii=toColor(ri);n$7(ii)&&(ni.color=ii);break}case isShapeProperty(ri):{n$7(ri.value)&&(ni.shape=ri.value);break}case isIconProperty(ri):{const ii=ri.libicon?.ref?.name??ri.value;n$7(ii)&&(ni.icon=ii);break}case isOpacityProperty(ri):{ni.opacity=parseAstOpacityProperty(ri);break}default:index_DafVOuVd.l(ri)}return ni}function toRelationshipStyle(ti,ei){const ni={};if(!ti||ti.length===0)return ni;for(const ri of ti)if(ei(ri))switch(!0){case isColorProperty(ri):{const ii=toColor(ri);n$7(ii)&&(ni.color=ii);break}case isLineProperty(ri):{ni.line=ri.value;break}case isArrowProperty(ri):{switch(ri.key){case"head":{ni.head=ri.value;break}case"tail":{ni.tail=ri.value;break}default:index_DafVOuVd.l(ri)}break}default:index_DafVOuVd.l(ri)}return ni}function toRelationshipStyleExcludeDefaults(ti,ei){const{color:ni,line:ri,head:ii,tail:si}=toRelationshipStyle(ti?.filter(isRelationshipStyleProperty),ei);return{...ni&&ni!==index_DafVOuVd.x?{color:ni}:{},...ri&&ri!==index_DafVOuVd.V?{line:ri}:{},...ii&&ii!==index_DafVOuVd.B?{head:ii}:{},...si?{tail:si}:{}}}function toColor(ti){return ti?.themeColor??ti?.customColor?.$refText}function toAutoLayout(ti){const ei=ti.rankSep,ni=ti.nodeSep;let ri;switch(ti.direction){case"TopBottom":{ri="TB";break}case"BottomTop":{ri="BT";break}case"LeftRight":{ri="LR";break}case"RightLeft":{ri="RL";break}default:index_DafVOuVd.l(ti.direction)}return{direction:ri,...ni&&{nodeSep:ni},...ei&&{rankSep:ei}}}function toAstViewLayoutDirection(ti){switch(ti){case"TB":return"TopBottom";case"BT":return"BottomTop";case"LR":return"LeftRight";case"RL":return"RightLeft";default:index_DafVOuVd.l(ti)}}function elementExpressionFromPredicate(ti){if(isElementExpression(ti))return ti;if(isElementPredicateWhere(ti))return ti.subject;if(isElementPredicateWith(ti))return elementExpressionFromPredicate(ti.subject);index_DafVOuVd.l(ti)}class LikeC4DocumentationProvider{parser;locator;constructor(ei){this.parser=ei.likec4.ModelParser,this.locator=ei.likec4.ModelLocator}getDocumentation(ei){try{if(isDeploymentNode(ei)){const ni=getDocument(ei),ri=this.parser.forDocument(ni).parseDeploymentNode(ei),ii=[ri.id];return ri.title!==ei.name&&ii.push(" ",`**${ri.title}**`),ii.join(`
223
+ ${ei}`,async()=>(await this.graphviz()).layout(ei,"svg"))}};const DeploymentElement="DeploymentElement";function isDeploymentElement(ti){return reflection.isInstance(ti,DeploymentElement)}const DeploymentViewRule="DeploymentViewRule";function isDeploymentViewRule(ti){return reflection.isInstance(ti,DeploymentViewRule)}const DynamicViewRule="DynamicViewRule";function isDynamicViewRule(ti){return reflection.isInstance(ti,DynamicViewRule)}const ElementExpression="ElementExpression";function isElementExpression(ti){return reflection.isInstance(ti,ElementExpression)}const ElementPredicate="ElementPredicate";function isElementPredicate(ti){return reflection.isInstance(ti,ElementPredicate)}const ElementPredicateOrWhere="ElementPredicateOrWhere";function isElementPredicateOrWhere(ti){return reflection.isInstance(ti,ElementPredicateOrWhere)}const ElementProperty="ElementProperty";function isElementProperty(ti){return reflection.isInstance(ti,ElementProperty)}const ExpressionV2="ExpressionV2";function isExpressionV2(ti){return reflection.isInstance(ti,ExpressionV2)}const FqnExpr="FqnExpr";function isFqnExpr(ti){return reflection.isInstance(ti,FqnExpr)}const FqnReferenceable="FqnReferenceable",LikeC4View="LikeC4View";function isLikeC4View(ti){return reflection.isInstance(ti,LikeC4View)}const MetadataProperty="MetadataProperty";function isMetadataProperty(ti){return reflection.isInstance(ti,MetadataProperty)}const Predicate="Predicate";function isPredicate(ti){return reflection.isInstance(ti,Predicate)}const Referenceable="Referenceable",RelationExpr="RelationExpr";function isRelationExpr(ti){return reflection.isInstance(ti,RelationExpr)}const RelationExpression="RelationExpression";function isRelationExpression(ti){return reflection.isInstance(ti,RelationExpression)}const RelationPredicate="RelationPredicate";function isRelationPredicate(ti){return reflection.isInstance(ti,RelationPredicate)}const RelationPredicateOrWhere="RelationPredicateOrWhere";function isRelationPredicateOrWhere(ti){return reflection.isInstance(ti,RelationPredicateOrWhere)}const RelationPredicateOrWhereV2="RelationPredicateOrWhereV2",RelationProperty="RelationProperty",RelationshipStyleProperty="RelationshipStyleProperty";function isRelationshipStyleProperty(ti){return reflection.isInstance(ti,RelationshipStyleProperty)}const StringProperty="StringProperty";function isStringProperty(ti){return reflection.isInstance(ti,StringProperty)}const StyleProperty="StyleProperty";function isStyleProperty(ti){return reflection.isInstance(ti,StyleProperty)}const ViewProperty="ViewProperty";function isViewProperty(ti){return reflection.isInstance(ti,ViewProperty)}const ViewRule="ViewRule";function isViewRule(ti){return reflection.isInstance(ti,ViewRule)}const ViewRulePredicate="ViewRulePredicate";function isViewRulePredicate(ti){return reflection.isInstance(ti,ViewRulePredicate)}const ViewRuleStyleOrGlobalRef="ViewRuleStyleOrGlobalRef";function isViewRuleStyleOrGlobalRef(ti){return reflection.isInstance(ti,ViewRuleStyleOrGlobalRef)}const WhereElement="WhereElement";function isWhereElement(ti){return reflection.isInstance(ti,WhereElement)}const WhereElementExpression="WhereElementExpression";function isWhereElementExpression(ti){return reflection.isInstance(ti,WhereElementExpression)}const WhereExpression="WhereExpression",WhereKindEqual="WhereKindEqual";function isWhereKindEqual(ti){return reflection.isInstance(ti,WhereKindEqual)}const WhereRelation="WhereRelation";function isWhereRelation(ti){return reflection.isInstance(ti,WhereRelation)}const WhereRelationExpression="WhereRelationExpression";function isWhereRelationExpression(ti){return reflection.isInstance(ti,WhereRelationExpression)}const WhereTagEqual="WhereTagEqual";function isWhereTagEqual(ti){return reflection.isInstance(ti,WhereTagEqual)}const ArrowProperty="ArrowProperty";function isArrowProperty(ti){return reflection.isInstance(ti,ArrowProperty)}const BorderProperty="BorderProperty";function isBorderProperty(ti){return reflection.isInstance(ti,BorderProperty)}const ColorProperty="ColorProperty";function isColorProperty(ti){return reflection.isInstance(ti,ColorProperty)}const CustomColor="CustomColor",CustomElementProperties="CustomElementProperties";function isCustomElementProperties(ti){return reflection.isInstance(ti,CustomElementProperties)}const CustomRelationProperties="CustomRelationProperties";function isCustomRelationProperties(ti){return reflection.isInstance(ti,CustomRelationProperties)}const DeployedInstance="DeployedInstance";function isDeployedInstance(ti){return reflection.isInstance(ti,DeployedInstance)}const DeployedInstanceBody="DeployedInstanceBody",DeploymentNode="DeploymentNode";function isDeploymentNode(ti){return reflection.isInstance(ti,DeploymentNode)}const DeploymentNodeBody="DeploymentNodeBody",DeploymentNodeKind="DeploymentNodeKind",DeploymentRelation="DeploymentRelation";function isDeploymentRelation(ti){return reflection.isInstance(ti,DeploymentRelation)}const DeploymentRelationBody="DeploymentRelationBody",DeploymentView="DeploymentView";function isDeploymentView(ti){return reflection.isInstance(ti,DeploymentView)}const DeploymentViewBody="DeploymentViewBody",DeploymentViewRulePredicate="DeploymentViewRulePredicate";function isDeploymentViewRulePredicate(ti){return reflection.isInstance(ti,DeploymentViewRulePredicate)}const DeploymentViewRulePredicateExpression="DeploymentViewRulePredicateExpression",DeploymentViewRuleStyle="DeploymentViewRuleStyle";function isDeploymentViewRuleStyle(ti){return reflection.isInstance(ti,DeploymentViewRuleStyle)}const DirectedRelationExpr="DirectedRelationExpr";function isDirectedRelationExpr(ti){return reflection.isInstance(ti,DirectedRelationExpr)}const DirectedRelationExpression="DirectedRelationExpression";function isDirectedRelationExpression(ti){return reflection.isInstance(ti,DirectedRelationExpression)}const DynamicView="DynamicView";function isDynamicView(ti){return reflection.isInstance(ti,DynamicView)}const DynamicViewBody="DynamicViewBody";function isDynamicViewBody(ti){return reflection.isInstance(ti,DynamicViewBody)}const DynamicViewGlobalPredicateRef="DynamicViewGlobalPredicateRef";function isDynamicViewGlobalPredicateRef(ti){return reflection.isInstance(ti,DynamicViewGlobalPredicateRef)}const DynamicViewIncludePredicate="DynamicViewIncludePredicate";function isDynamicViewIncludePredicate(ti){return reflection.isInstance(ti,DynamicViewIncludePredicate)}const DynamicViewParallelSteps="DynamicViewParallelSteps";function isDynamicViewParallelSteps(ti){return reflection.isInstance(ti,DynamicViewParallelSteps)}const DynamicViewPredicateIterator="DynamicViewPredicateIterator";function isDynamicViewPredicateIterator(ti){return reflection.isInstance(ti,DynamicViewPredicateIterator)}const DynamicViewRef="DynamicViewRef",DynamicViewStep="DynamicViewStep";function isDynamicViewStep(ti){return reflection.isInstance(ti,DynamicViewStep)}const Element="Element";function isElement(ti){return reflection.isInstance(ti,Element)}const ElementBody="ElementBody";function isElementBody(ti){return reflection.isInstance(ti,ElementBody)}const ElementDescedantsExpression="ElementDescedantsExpression";function isElementDescedantsExpression(ti){return reflection.isInstance(ti,ElementDescedantsExpression)}const ElementExpressionsIterator="ElementExpressionsIterator";function isElementExpressionsIterator(ti){return reflection.isInstance(ti,ElementExpressionsIterator)}const ElementKind="ElementKind";function isElementKind(ti){return reflection.isInstance(ti,ElementKind)}const ElementKindExpression="ElementKindExpression";function isElementKindExpression(ti){return reflection.isInstance(ti,ElementKindExpression)}const ElementPredicateWhere="ElementPredicateWhere";function isElementPredicateWhere(ti){return reflection.isInstance(ti,ElementPredicateWhere)}const ElementPredicateWith="ElementPredicateWith";function isElementPredicateWith(ti){return reflection.isInstance(ti,ElementPredicateWith)}const ElementRef="ElementRef";function isElementRef(ti){return reflection.isInstance(ti,ElementRef)}const ElementStringProperty="ElementStringProperty";function isElementStringProperty(ti){return reflection.isInstance(ti,ElementStringProperty)}const ElementStyleProperty="ElementStyleProperty";function isElementStyleProperty(ti){return reflection.isInstance(ti,ElementStyleProperty)}const ElementTagExpression="ElementTagExpression";function isElementTagExpression(ti){return reflection.isInstance(ti,ElementTagExpression)}const ElementView="ElementView";function isElementView(ti){return reflection.isInstance(ti,ElementView)}const ElementViewBody="ElementViewBody";function isElementViewBody(ti){return reflection.isInstance(ti,ElementViewBody)}const ElementViewRef="ElementViewRef",ExcludePredicate="ExcludePredicate";function isExcludePredicate(ti){return reflection.isInstance(ti,ExcludePredicate)}const ExpandElementExpression="ExpandElementExpression";function isExpandElementExpression(ti){return reflection.isInstance(ti,ExpandElementExpression)}const ExtendElement="ExtendElement";function isExtendElement(ti){return reflection.isInstance(ti,ExtendElement)}const ExtendElementBody="ExtendElementBody";function isExtendElementBody(ti){return reflection.isInstance(ti,ExtendElementBody)}const FqnElementRef="FqnElementRef";function isFqnElementRef(ti){return reflection.isInstance(ti,FqnElementRef)}const FqnExpressions="FqnExpressions",FqnRef="FqnRef";function isFqnRef(ti){return reflection.isInstance(ti,FqnRef)}const FqnRefExpr="FqnRefExpr";function isFqnRefExpr(ti){return reflection.isInstance(ti,FqnRefExpr)}const GlobalDynamicPredicateGroup="GlobalDynamicPredicateGroup";function isGlobalDynamicPredicateGroup(ti){return reflection.isInstance(ti,GlobalDynamicPredicateGroup)}const GlobalPredicateGroup="GlobalPredicateGroup";function isGlobalPredicateGroup(ti){return reflection.isInstance(ti,GlobalPredicateGroup)}const Globals="Globals";function isGlobals(ti){return reflection.isInstance(ti,Globals)}const GlobalStyle="GlobalStyle";function isGlobalStyle(ti){return reflection.isInstance(ti,GlobalStyle)}const GlobalStyleGroup="GlobalStyleGroup";function isGlobalStyleGroup(ti){return reflection.isInstance(ti,GlobalStyleGroup)}const GlobalStyleId="GlobalStyleId",IconProperty="IconProperty";function isIconProperty(ti){return reflection.isInstance(ti,IconProperty)}const IncludePredicate="IncludePredicate";function isIncludePredicate(ti){return reflection.isInstance(ti,IncludePredicate)}const IncomingRelationExpr="IncomingRelationExpr";function isIncomingRelationExpr(ti){return reflection.isInstance(ti,IncomingRelationExpr)}const IncomingRelationExpression="IncomingRelationExpression";function isIncomingRelationExpression(ti){return reflection.isInstance(ti,IncomingRelationExpression)}const InOutRelationExpr="InOutRelationExpr";function isInOutRelationExpr(ti){return reflection.isInstance(ti,InOutRelationExpr)}const InOutRelationExpression="InOutRelationExpression";function isInOutRelationExpression(ti){return reflection.isInstance(ti,InOutRelationExpression)}const LibIcon="LibIcon";function isLibIcon(ti){return reflection.isInstance(ti,LibIcon)}const LikeC4Grammar$1="LikeC4Grammar";function isLikeC4Grammar(ti){return reflection.isInstance(ti,LikeC4Grammar$1)}const LikeC4Lib="LikeC4Lib";function isLikeC4Lib(ti){return reflection.isInstance(ti,LikeC4Lib)}const LineProperty="LineProperty";function isLineProperty(ti){return reflection.isInstance(ti,LineProperty)}const LinkProperty="LinkProperty";function isLinkProperty(ti){return reflection.isInstance(ti,LinkProperty)}const MetadataAttribute="MetadataAttribute";function isMetadataAttribute(ti){return reflection.isInstance(ti,MetadataAttribute)}const MetadataBody="MetadataBody";function isMetadataBody(ti){return reflection.isInstance(ti,MetadataBody)}const Model="Model";function isModel(ti){return reflection.isInstance(ti,Model)}const ModelDeployments="ModelDeployments",ModelViews="ModelViews";function isModelViews(ti){return reflection.isInstance(ti,ModelViews)}const NavigateToProperty="NavigateToProperty";function isNavigateToProperty(ti){return reflection.isInstance(ti,NavigateToProperty)}const NotationProperty="NotationProperty";function isNotationProperty(ti){return reflection.isInstance(ti,NotationProperty)}const NotesProperty="NotesProperty";function isNotesProperty(ti){return reflection.isInstance(ti,NotesProperty)}const OpacityProperty="OpacityProperty";function isOpacityProperty(ti){return reflection.isInstance(ti,OpacityProperty)}const OutgoingRelationExpr="OutgoingRelationExpr";function isOutgoingRelationExpr(ti){return reflection.isInstance(ti,OutgoingRelationExpr)}const OutgoingRelationExpression="OutgoingRelationExpression";function isOutgoingRelationExpression(ti){return reflection.isInstance(ti,OutgoingRelationExpression)}const Predicates="Predicates";function isPredicates(ti){return reflection.isInstance(ti,Predicates)}const Relation="Relation";function isRelation(ti){return reflection.isInstance(ti,Relation)}const RelationBody="RelationBody";function isRelationBody(ti){return reflection.isInstance(ti,RelationBody)}const RelationNavigateToProperty="RelationNavigateToProperty";function isRelationNavigateToProperty(ti){return reflection.isInstance(ti,RelationNavigateToProperty)}const RelationPredicateWhere="RelationPredicateWhere";function isRelationPredicateWhere(ti){return reflection.isInstance(ti,RelationPredicateWhere)}const RelationPredicateWhereV2="RelationPredicateWhereV2";function isRelationPredicateWhereV2(ti){return reflection.isInstance(ti,RelationPredicateWhereV2)}const RelationPredicateWith="RelationPredicateWith";function isRelationPredicateWith(ti){return reflection.isInstance(ti,RelationPredicateWith)}const RelationshipKind="RelationshipKind";function isRelationshipKind(ti){return reflection.isInstance(ti,RelationshipKind)}const RelationStringProperty="RelationStringProperty";function isRelationStringProperty(ti){return reflection.isInstance(ti,RelationStringProperty)}const RelationStyleProperty="RelationStyleProperty";function isRelationStyleProperty(ti){return reflection.isInstance(ti,RelationStyleProperty)}const ShapeProperty="ShapeProperty";function isShapeProperty(ti){return reflection.isInstance(ti,ShapeProperty)}const SpecificationColor="SpecificationColor";function isSpecificationColor(ti){return reflection.isInstance(ti,SpecificationColor)}const SpecificationDeploymentNodeKind="SpecificationDeploymentNodeKind";function isSpecificationDeploymentNodeKind(ti){return reflection.isInstance(ti,SpecificationDeploymentNodeKind)}const SpecificationElementKind="SpecificationElementKind";function isSpecificationElementKind(ti){return reflection.isInstance(ti,SpecificationElementKind)}const SpecificationElementStringProperty="SpecificationElementStringProperty";function isSpecificationElementStringProperty(ti){return reflection.isInstance(ti,SpecificationElementStringProperty)}const SpecificationRelationshipKind="SpecificationRelationshipKind";function isSpecificationRelationshipKind(ti){return reflection.isInstance(ti,SpecificationRelationshipKind)}const SpecificationRelationshipStringProperty="SpecificationRelationshipStringProperty";function isSpecificationRelationshipStringProperty(ti){return reflection.isInstance(ti,SpecificationRelationshipStringProperty)}const SpecificationRule="SpecificationRule";function isSpecificationRule(ti){return reflection.isInstance(ti,SpecificationRule)}const SpecificationTag="SpecificationTag";function isSpecificationTag(ti){return reflection.isInstance(ti,SpecificationTag)}const Tag="Tag";function isTag(ti){return reflection.isInstance(ti,Tag)}const Tags="Tags";function isTags(ti){return reflection.isInstance(ti,Tags)}const ViewRef="ViewRef",ViewRuleAutoLayout="ViewRuleAutoLayout";function isViewRuleAutoLayout(ti){return reflection.isInstance(ti,ViewRuleAutoLayout)}const ViewRuleGlobalPredicateRef="ViewRuleGlobalPredicateRef";function isViewRuleGlobalPredicateRef(ti){return reflection.isInstance(ti,ViewRuleGlobalPredicateRef)}const ViewRuleGlobalStyle="ViewRuleGlobalStyle";function isViewRuleGlobalStyle(ti){return reflection.isInstance(ti,ViewRuleGlobalStyle)}const ViewRuleGroup="ViewRuleGroup";function isViewRuleGroup(ti){return reflection.isInstance(ti,ViewRuleGroup)}const ViewRuleStyle="ViewRuleStyle";function isViewRuleStyle(ti){return reflection.isInstance(ti,ViewRuleStyle)}const ViewStringProperty="ViewStringProperty";function isViewStringProperty(ti){return reflection.isInstance(ti,ViewStringProperty)}const WhereBinaryExpression="WhereBinaryExpression";function isWhereBinaryExpression(ti){return reflection.isInstance(ti,WhereBinaryExpression)}const WhereElementKind="WhereElementKind";function isWhereElementKind(ti){return reflection.isInstance(ti,WhereElementKind)}const WhereElementNegation="WhereElementNegation";function isWhereElementNegation(ti){return reflection.isInstance(ti,WhereElementNegation)}const WhereElementTag="WhereElementTag";function isWhereElementTag(ti){return reflection.isInstance(ti,WhereElementTag)}const WhereRelationKind="WhereRelationKind";function isWhereRelationKind(ti){return reflection.isInstance(ti,WhereRelationKind)}const WhereRelationNegation="WhereRelationNegation";function isWhereRelationNegation(ti){return reflection.isInstance(ti,WhereRelationNegation)}const WhereRelationTag="WhereRelationTag";function isWhereRelationTag(ti){return reflection.isInstance(ti,WhereRelationTag)}const WildcardExpression="WildcardExpression";function isWildcardExpression(ti){return reflection.isInstance(ti,WildcardExpression)}class LikeC4AstReflection extends AbstractAstReflection{getAllTypes(){return[ArrowProperty,BorderProperty,ColorProperty,CustomColor,CustomElementProperties,CustomRelationProperties,DeployedInstance,DeployedInstanceBody,DeploymentElement,DeploymentNode,DeploymentNodeBody,DeploymentNodeKind,DeploymentRelation,DeploymentRelationBody,DeploymentView,DeploymentViewBody,DeploymentViewRule,DeploymentViewRulePredicate,DeploymentViewRulePredicateExpression,DeploymentViewRuleStyle,DirectedRelationExpr,DirectedRelationExpression,DynamicView,DynamicViewBody,DynamicViewGlobalPredicateRef,DynamicViewIncludePredicate,DynamicViewParallelSteps,DynamicViewPredicateIterator,DynamicViewRef,DynamicViewRule,DynamicViewStep,Element,ElementBody,ElementDescedantsExpression,ElementExpression,ElementExpressionsIterator,ElementKind,ElementKindExpression,ElementPredicate,ElementPredicateOrWhere,ElementPredicateWhere,ElementPredicateWith,ElementProperty,ElementRef,ElementStringProperty,ElementStyleProperty,ElementTagExpression,ElementView,ElementViewBody,ElementViewRef,ExcludePredicate,ExpandElementExpression,ExpressionV2,ExtendElement,ExtendElementBody,FqnElementRef,FqnExpr,FqnExpressions,FqnRef,FqnRefExpr,FqnReferenceable,GlobalDynamicPredicateGroup,GlobalPredicateGroup,GlobalStyle,GlobalStyleGroup,GlobalStyleId,Globals,IconProperty,InOutRelationExpr,InOutRelationExpression,IncludePredicate,IncomingRelationExpr,IncomingRelationExpression,LibIcon,LikeC4Grammar$1,LikeC4Lib,LikeC4View,LineProperty,LinkProperty,MetadataAttribute,MetadataBody,MetadataProperty,Model,ModelDeployments,ModelViews,NavigateToProperty,NotationProperty,NotesProperty,OpacityProperty,OutgoingRelationExpr,OutgoingRelationExpression,Predicate,Predicates,Referenceable,Relation,RelationBody,RelationExpr,RelationExpression,RelationNavigateToProperty,RelationPredicate,RelationPredicateOrWhere,RelationPredicateOrWhereV2,RelationPredicateWhere,RelationPredicateWhereV2,RelationPredicateWith,RelationProperty,RelationStringProperty,RelationStyleProperty,RelationshipKind,RelationshipStyleProperty,ShapeProperty,SpecificationColor,SpecificationDeploymentNodeKind,SpecificationElementKind,SpecificationElementStringProperty,SpecificationRelationshipKind,SpecificationRelationshipStringProperty,SpecificationRule,SpecificationTag,StringProperty,StyleProperty,Tag,Tags,ViewProperty,ViewRef,ViewRule,ViewRuleAutoLayout,ViewRuleGlobalPredicateRef,ViewRuleGlobalStyle,ViewRuleGroup,ViewRulePredicate,ViewRuleStyle,ViewRuleStyleOrGlobalRef,ViewStringProperty,WhereBinaryExpression,WhereElement,WhereElementExpression,WhereElementKind,WhereElementNegation,WhereElementTag,WhereExpression,WhereKindEqual,WhereRelation,WhereRelationExpression,WhereRelationKind,WhereRelationNegation,WhereRelationTag,WhereTagEqual,WildcardExpression]}computeIsSubtype(ei,ni){switch(ei){case ArrowProperty:case LineProperty:return this.isSubtype(RelationshipStyleProperty,ni);case BorderProperty:case OpacityProperty:case ShapeProperty:return this.isSubtype(StyleProperty,ni);case ColorProperty:return this.isSubtype(RelationshipStyleProperty,ni)||this.isSubtype(StyleProperty,ni);case DeployedInstance:case DeploymentNode:return this.isSubtype(DeploymentElement,ni)||this.isSubtype(Referenceable,ni);case DeploymentView:case DynamicView:case ElementView:return this.isSubtype(LikeC4View,ni);case DeploymentViewRulePredicate:case DeploymentViewRuleStyle:return this.isSubtype(DeploymentViewRule,ni);case DirectedRelationExpr:case IncomingRelationExpr:case InOutRelationExpr:case OutgoingRelationExpr:return this.isSubtype(RelationExpr,ni);case DirectedRelationExpression:case IncomingRelationExpression:case InOutRelationExpression:case OutgoingRelationExpression:return this.isSubtype(RelationExpression,ni);case DynamicViewGlobalPredicateRef:case DynamicViewIncludePredicate:return this.isSubtype(DynamicViewRule,ni);case Element:return this.isSubtype(FqnReferenceable,ni)||this.isSubtype(Referenceable,ni);case ElementDescedantsExpression:case ElementKindExpression:case ElementRef:case ElementTagExpression:case ExpandElementExpression:return this.isSubtype(ElementExpression,ni);case ElementExpression:case ElementPredicateWhere:return this.isSubtype(ElementPredicateOrWhere,ni);case ElementPredicate:case RelationPredicate:return this.isSubtype(Predicate,ni);case ElementPredicateOrWhere:case ElementPredicateWith:return this.isSubtype(ElementPredicate,ni);case ElementStringProperty:return this.isSubtype(ElementProperty,ni)||this.isSubtype(StringProperty,ni);case ElementStyleProperty:return this.isSubtype(ElementProperty,ni);case ExcludePredicate:case IncludePredicate:return this.isSubtype(ViewRulePredicate,ni);case ExtendElement:case Referenceable:return this.isSubtype(FqnReferenceable,ni);case FqnExpr:case RelationPredicateOrWhereV2:return this.isSubtype(ExpressionV2,ni);case FqnRefExpr:return this.isSubtype(FqnExpr,ni);case IconProperty:return this.isSubtype(ElementProperty,ni)||this.isSubtype(StyleProperty,ni);case LinkProperty:return this.isSubtype(ElementProperty,ni)||this.isSubtype(RelationProperty,ni)||this.isSubtype(ViewProperty,ni);case MetadataAttribute:case NotationProperty:case NotesProperty:case SpecificationElementStringProperty:case SpecificationRelationshipStringProperty:return this.isSubtype(StringProperty,ni);case MetadataBody:return this.isSubtype(MetadataProperty,ni);case MetadataProperty:return this.isSubtype(ElementProperty,ni)||this.isSubtype(RelationProperty,ni);case RelationExpr:case RelationPredicateWhereV2:return this.isSubtype(RelationPredicateOrWhereV2,ni);case RelationExpression:case RelationPredicateWhere:return this.isSubtype(RelationPredicateOrWhere,ni);case RelationNavigateToProperty:case RelationStyleProperty:return this.isSubtype(RelationProperty,ni);case RelationPredicateOrWhere:case RelationPredicateWith:return this.isSubtype(RelationPredicate,ni);case RelationStringProperty:return this.isSubtype(RelationProperty,ni)||this.isSubtype(StringProperty,ni);case ViewRuleAutoLayout:return this.isSubtype(DeploymentViewRule,ni)||this.isSubtype(DynamicViewRule,ni)||this.isSubtype(ViewRule,ni);case ViewRuleGlobalPredicateRef:case ViewRuleGroup:case ViewRulePredicate:return this.isSubtype(ViewRule,ni);case ViewRuleGlobalStyle:case ViewRuleStyle:return this.isSubtype(ViewRuleStyleOrGlobalRef,ni);case ViewRuleStyleOrGlobalRef:return this.isSubtype(DynamicViewRule,ni)||this.isSubtype(ViewRule,ni);case ViewStringProperty:return this.isSubtype(StringProperty,ni)||this.isSubtype(ViewProperty,ni);case WhereBinaryExpression:return this.isSubtype(WhereElementExpression,ni)||this.isSubtype(WhereRelationExpression,ni);case WhereElement:case WhereElementNegation:return this.isSubtype(WhereElementExpression,ni);case WhereElementExpression:case WhereRelationExpression:return this.isSubtype(WhereExpression,ni);case WhereElementKind:return this.isSubtype(WhereElement,ni)||this.isSubtype(WhereKindEqual,ni);case WhereElementTag:return this.isSubtype(WhereElement,ni)||this.isSubtype(WhereTagEqual,ni);case WhereRelation:case WhereRelationNegation:return this.isSubtype(WhereRelationExpression,ni);case WhereRelationKind:return this.isSubtype(WhereKindEqual,ni)||this.isSubtype(WhereRelation,ni);case WhereRelationTag:return this.isSubtype(WhereRelation,ni)||this.isSubtype(WhereTagEqual,ni);case WildcardExpression:return this.isSubtype(ElementExpression,ni)||this.isSubtype(FqnExpr,ni);default:return!1}}getReferenceType(ei){const ni=`${ei.container.$type}:${ei.property}`;switch(ni){case"ColorProperty:customColor":return CustomColor;case"DeploymentNode:kind":return DeploymentNodeKind;case"DeploymentRelation:kind":case"DynamicViewStep:kind":case"OutgoingRelationExpr:kind":case"OutgoingRelationExpression:kind":case"Relation:kind":case"WhereRelationKind:value":return RelationshipKind;case"DynamicViewGlobalPredicateRef:predicate":return GlobalDynamicPredicateGroup;case"DynamicViewRef:view":return DynamicView;case"Element:kind":case"ElementKindExpression:kind":case"WhereElementKind:value":return ElementKind;case"ElementRef:el":case"FqnElementRef:el":return Element;case"ElementTagExpression:tag":case"Tags:values":case"WhereElementTag:value":case"WhereRelationTag:value":return Tag;case"ElementViewRef:view":return ElementView;case"FqnRef:value":return Referenceable;case"IconProperty:libicon":return LibIcon;case"ViewRef:view":return LikeC4View;case"ViewRuleGlobalPredicateRef:predicate":return GlobalPredicateGroup;case"ViewRuleGlobalStyle:style":return GlobalStyleId;default:throw new Error(`${ni} is not a valid reference id.`)}}getTypeMetaData(ei){switch(ei){case ArrowProperty:return{name:ArrowProperty,properties:[{name:"key"},{name:"value"}]};case BorderProperty:return{name:BorderProperty,properties:[{name:"key"},{name:"value"}]};case ColorProperty:return{name:ColorProperty,properties:[{name:"customColor"},{name:"key"},{name:"themeColor"}]};case CustomColor:return{name:CustomColor,properties:[{name:"name"}]};case CustomElementProperties:return{name:CustomElementProperties,properties:[{name:"props",defaultValue:[]}]};case CustomRelationProperties:return{name:CustomRelationProperties,properties:[{name:"props",defaultValue:[]}]};case DeployedInstance:return{name:DeployedInstance,properties:[{name:"body"},{name:"element"},{name:"name"},{name:"title"}]};case DeployedInstanceBody:return{name:DeployedInstanceBody,properties:[{name:"props",defaultValue:[]},{name:"tags"}]};case DeploymentNode:return{name:DeploymentNode,properties:[{name:"body"},{name:"kind"},{name:"name"},{name:"title"}]};case DeploymentNodeBody:return{name:DeploymentNodeBody,properties:[{name:"elements",defaultValue:[]},{name:"props",defaultValue:[]},{name:"tags"}]};case DeploymentNodeKind:return{name:DeploymentNodeKind,properties:[{name:"name"}]};case DeploymentRelation:return{name:DeploymentRelation,properties:[{name:"body"},{name:"kind"},{name:"source"},{name:"tags"},{name:"target"},{name:"technology"},{name:"title"}]};case DeploymentRelationBody:return{name:DeploymentRelationBody,properties:[{name:"props",defaultValue:[]},{name:"tags"}]};case DeploymentView:return{name:DeploymentView,properties:[{name:"body"},{name:"name"}]};case DeploymentViewBody:return{name:DeploymentViewBody,properties:[{name:"props",defaultValue:[]},{name:"rules",defaultValue:[]},{name:"tags"}]};case DeploymentViewRulePredicate:return{name:DeploymentViewRulePredicate,properties:[{name:"expr"},{name:"isInclude",defaultValue:!1}]};case DeploymentViewRulePredicateExpression:return{name:DeploymentViewRulePredicateExpression,properties:[{name:"prev"},{name:"value"}]};case DeploymentViewRuleStyle:return{name:DeploymentViewRuleStyle,properties:[{name:"props",defaultValue:[]},{name:"targets"}]};case DirectedRelationExpr:return{name:DirectedRelationExpr,properties:[{name:"source"},{name:"target"}]};case DirectedRelationExpression:return{name:DirectedRelationExpression,properties:[{name:"source"},{name:"target"}]};case DynamicView:return{name:DynamicView,properties:[{name:"body"},{name:"name"}]};case DynamicViewBody:return{name:DynamicViewBody,properties:[{name:"props",defaultValue:[]},{name:"rules",defaultValue:[]},{name:"steps",defaultValue:[]},{name:"tags"}]};case DynamicViewGlobalPredicateRef:return{name:DynamicViewGlobalPredicateRef,properties:[{name:"predicate"}]};case DynamicViewIncludePredicate:return{name:DynamicViewIncludePredicate,properties:[{name:"predicates"}]};case DynamicViewParallelSteps:return{name:DynamicViewParallelSteps,properties:[{name:"steps",defaultValue:[]}]};case DynamicViewPredicateIterator:return{name:DynamicViewPredicateIterator,properties:[{name:"prev"},{name:"value"}]};case DynamicViewRef:return{name:DynamicViewRef,properties:[{name:"view"}]};case DynamicViewStep:return{name:DynamicViewStep,properties:[{name:"custom"},{name:"isBackward",defaultValue:!1},{name:"kind"},{name:"source"},{name:"target"},{name:"title"}]};case Element:return{name:Element,properties:[{name:"body"},{name:"kind"},{name:"name"},{name:"props",defaultValue:[]}]};case ElementBody:return{name:ElementBody,properties:[{name:"elements",defaultValue:[]},{name:"props",defaultValue:[]},{name:"tags"}]};case ElementDescedantsExpression:return{name:ElementDescedantsExpression,properties:[{name:"parent"},{name:"suffix"}]};case ElementExpressionsIterator:return{name:ElementExpressionsIterator,properties:[{name:"prev"},{name:"value"}]};case ElementKind:return{name:ElementKind,properties:[{name:"name"}]};case ElementKindExpression:return{name:ElementKindExpression,properties:[{name:"isEqual",defaultValue:!1},{name:"kind"}]};case ElementPredicateWhere:return{name:ElementPredicateWhere,properties:[{name:"subject"},{name:"where"}]};case ElementPredicateWith:return{name:ElementPredicateWith,properties:[{name:"custom"},{name:"subject"}]};case ElementRef:return{name:ElementRef,properties:[{name:"el"},{name:"parent"}]};case ElementStringProperty:return{name:ElementStringProperty,properties:[{name:"key"},{name:"value"}]};case ElementStyleProperty:return{name:ElementStyleProperty,properties:[{name:"key"},{name:"props",defaultValue:[]}]};case ElementTagExpression:return{name:ElementTagExpression,properties:[{name:"isEqual",defaultValue:!1},{name:"tag"}]};case ElementView:return{name:ElementView,properties:[{name:"body"},{name:"extends"},{name:"name"},{name:"viewOf"}]};case ElementViewBody:return{name:ElementViewBody,properties:[{name:"props",defaultValue:[]},{name:"rules",defaultValue:[]},{name:"tags"}]};case ElementViewRef:return{name:ElementViewRef,properties:[{name:"view"}]};case ExcludePredicate:return{name:ExcludePredicate,properties:[{name:"predicates"}]};case ExpandElementExpression:return{name:ExpandElementExpression,properties:[{name:"expand"}]};case ExtendElement:return{name:ExtendElement,properties:[{name:"body"},{name:"element"}]};case ExtendElementBody:return{name:ExtendElementBody,properties:[{name:"elements",defaultValue:[]}]};case FqnElementRef:return{name:FqnElementRef,properties:[{name:"el"},{name:"parent"}]};case FqnExpressions:return{name:FqnExpressions,properties:[{name:"prev"},{name:"value"}]};case FqnRef:return{name:FqnRef,properties:[{name:"parent"},{name:"value"}]};case FqnRefExpr:return{name:FqnRefExpr,properties:[{name:"ref"},{name:"selector"}]};case GlobalDynamicPredicateGroup:return{name:GlobalDynamicPredicateGroup,properties:[{name:"name"},{name:"predicates",defaultValue:[]}]};case GlobalPredicateGroup:return{name:GlobalPredicateGroup,properties:[{name:"name"},{name:"predicates",defaultValue:[]}]};case Globals:return{name:Globals,properties:[{name:"name"},{name:"predicates",defaultValue:[]},{name:"styles",defaultValue:[]}]};case GlobalStyle:return{name:GlobalStyle,properties:[{name:"id"},{name:"props",defaultValue:[]},{name:"target"}]};case GlobalStyleGroup:return{name:GlobalStyleGroup,properties:[{name:"id"},{name:"styles",defaultValue:[]}]};case GlobalStyleId:return{name:GlobalStyleId,properties:[{name:"name"}]};case IconProperty:return{name:IconProperty,properties:[{name:"key"},{name:"libicon"},{name:"value"}]};case IncludePredicate:return{name:IncludePredicate,properties:[{name:"predicates"}]};case IncomingRelationExpr:return{name:IncomingRelationExpr,properties:[{name:"to"}]};case IncomingRelationExpression:return{name:IncomingRelationExpression,properties:[{name:"to"}]};case InOutRelationExpr:return{name:InOutRelationExpr,properties:[{name:"inout"}]};case InOutRelationExpression:return{name:InOutRelationExpression,properties:[{name:"inout"}]};case LibIcon:return{name:LibIcon,properties:[{name:"name"}]};case LikeC4Grammar$1:return{name:LikeC4Grammar$1,properties:[{name:"deployments",defaultValue:[]},{name:"globals",defaultValue:[]},{name:"likec4lib",defaultValue:[]},{name:"models",defaultValue:[]},{name:"specifications",defaultValue:[]},{name:"views",defaultValue:[]}]};case LikeC4Lib:return{name:LikeC4Lib,properties:[{name:"icons",defaultValue:[]}]};case LineProperty:return{name:LineProperty,properties:[{name:"key"},{name:"value"}]};case LinkProperty:return{name:LinkProperty,properties:[{name:"key"},{name:"title"},{name:"value"}]};case MetadataAttribute:return{name:MetadataAttribute,properties:[{name:"key"},{name:"value"}]};case MetadataBody:return{name:MetadataBody,properties:[{name:"props",defaultValue:[]}]};case Model:return{name:Model,properties:[{name:"elements",defaultValue:[]},{name:"name"}]};case ModelDeployments:return{name:ModelDeployments,properties:[{name:"elements",defaultValue:[]},{name:"name"}]};case ModelViews:return{name:ModelViews,properties:[{name:"name"},{name:"styles",defaultValue:[]},{name:"views",defaultValue:[]}]};case NavigateToProperty:return{name:NavigateToProperty,properties:[{name:"key"},{name:"value"}]};case NotationProperty:return{name:NotationProperty,properties:[{name:"key"},{name:"value"}]};case NotesProperty:return{name:NotesProperty,properties:[{name:"key"},{name:"value"}]};case OpacityProperty:return{name:OpacityProperty,properties:[{name:"key"},{name:"value"}]};case OutgoingRelationExpr:return{name:OutgoingRelationExpr,properties:[{name:"from"},{name:"isBidirectional",defaultValue:!1},{name:"kind"}]};case OutgoingRelationExpression:return{name:OutgoingRelationExpression,properties:[{name:"from"},{name:"isBidirectional",defaultValue:!1},{name:"kind"}]};case Predicates:return{name:Predicates,properties:[{name:"prev"},{name:"value"}]};case Relation:return{name:Relation,properties:[{name:"body"},{name:"kind"},{name:"source"},{name:"tags"},{name:"target"},{name:"technology"},{name:"title"}]};case RelationBody:return{name:RelationBody,properties:[{name:"props",defaultValue:[]},{name:"tags"}]};case RelationNavigateToProperty:return{name:RelationNavigateToProperty,properties:[{name:"key"},{name:"value"}]};case RelationPredicateWhere:return{name:RelationPredicateWhere,properties:[{name:"subject"},{name:"where"}]};case RelationPredicateWhereV2:return{name:RelationPredicateWhereV2,properties:[{name:"subject"},{name:"where"}]};case RelationPredicateWith:return{name:RelationPredicateWith,properties:[{name:"custom"},{name:"subject"}]};case RelationshipKind:return{name:RelationshipKind,properties:[{name:"name"}]};case RelationStringProperty:return{name:RelationStringProperty,properties:[{name:"key"},{name:"value"}]};case RelationStyleProperty:return{name:RelationStyleProperty,properties:[{name:"key"},{name:"props",defaultValue:[]}]};case ShapeProperty:return{name:ShapeProperty,properties:[{name:"key"},{name:"value"}]};case SpecificationColor:return{name:SpecificationColor,properties:[{name:"color"},{name:"name"}]};case SpecificationDeploymentNodeKind:return{name:SpecificationDeploymentNodeKind,properties:[{name:"kind"},{name:"props",defaultValue:[]}]};case SpecificationElementKind:return{name:SpecificationElementKind,properties:[{name:"kind"},{name:"props",defaultValue:[]}]};case SpecificationElementStringProperty:return{name:SpecificationElementStringProperty,properties:[{name:"key"},{name:"value"}]};case SpecificationRelationshipKind:return{name:SpecificationRelationshipKind,properties:[{name:"kind"},{name:"props",defaultValue:[]}]};case SpecificationRelationshipStringProperty:return{name:SpecificationRelationshipStringProperty,properties:[{name:"key"},{name:"value"}]};case SpecificationRule:return{name:SpecificationRule,properties:[{name:"colors",defaultValue:[]},{name:"deploymentNodes",defaultValue:[]},{name:"elements",defaultValue:[]},{name:"name"},{name:"relationships",defaultValue:[]},{name:"tags",defaultValue:[]}]};case SpecificationTag:return{name:SpecificationTag,properties:[{name:"tag"}]};case Tag:return{name:Tag,properties:[{name:"name"}]};case Tags:return{name:Tags,properties:[{name:"prev"},{name:"values",defaultValue:[]}]};case ViewRef:return{name:ViewRef,properties:[{name:"view"}]};case ViewRuleAutoLayout:return{name:ViewRuleAutoLayout,properties:[{name:"direction"},{name:"nodeSep"},{name:"rankSep"}]};case ViewRuleGlobalPredicateRef:return{name:ViewRuleGlobalPredicateRef,properties:[{name:"predicate"}]};case ViewRuleGlobalStyle:return{name:ViewRuleGlobalStyle,properties:[{name:"style"}]};case ViewRuleGroup:return{name:ViewRuleGroup,properties:[{name:"groupRules",defaultValue:[]},{name:"props",defaultValue:[]},{name:"title"}]};case ViewRuleStyle:return{name:ViewRuleStyle,properties:[{name:"props",defaultValue:[]},{name:"target"}]};case ViewStringProperty:return{name:ViewStringProperty,properties:[{name:"key"},{name:"value"}]};case WhereBinaryExpression:return{name:WhereBinaryExpression,properties:[{name:"left"},{name:"operator"},{name:"right"}]};case WhereElementKind:return{name:WhereElementKind,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WhereElementNegation:return{name:WhereElementNegation,properties:[{name:"value"}]};case WhereElementTag:return{name:WhereElementTag,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WhereRelationKind:return{name:WhereRelationKind,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WhereRelationNegation:return{name:WhereRelationNegation,properties:[{name:"value"}]};case WhereRelationTag:return{name:WhereRelationTag,properties:[{name:"not",defaultValue:!1},{name:"operator"},{name:"value"}]};case WildcardExpression:return{name:WildcardExpression,properties:[{name:"isWildcard",defaultValue:!1}]};default:return{name:ei,properties:[]}}}}const reflection=new LikeC4AstReflection;let e;const LikeC4Grammar=()=>e??(e=loadGrammarFromJson(`{"$type":"Grammar","isDeclared":true,"name":"LikeC4","rules":[{"$type":"ParserRule","name":"LikeC4Grammar","entry":true,"definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"specifications","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"models","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"views","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[]}},{"$type":"Assignment","feature":"globals","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@119"},"arguments":[]}},{"$type":"Assignment","feature":"deployments","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@95"},"arguments":[]}},{"$type":"Assignment","feature":"likec4lib","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LikeC4Lib","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"likec4lib"},{"$type":"Keyword","value":"{"},{"$type":"Keyword","value":"icons"},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"icons","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LibIcon","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@142"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Tag","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationshipKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColor","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNodeKind","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRule","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"specification"}},{"$type":"Keyword","value":"{"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"relationships","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"colors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"deploymentNodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationElementKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"element"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@133"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationElementStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"notation"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationDeploymentNodeKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"deploymentNode"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@133"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationTag","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"tag"},{"$type":"Assignment","feature":"tag","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationColor","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"color"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"color","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@141"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRelationshipKind","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"relationship"},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@136"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"SpecificationRelationshipStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"notation"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Model","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"model"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":true},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Element","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false}}]}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":false},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@133"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@125"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElement","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"extend"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExtendElementBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[{"$type":"NamedArgument","value":{"$type":"BooleanLiteral","true":true},"calledByName":false}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnElementRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnElementRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@160"},"arguments":[]},{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@160"},"arguments":[]},{"$type":"Assignment","feature":"el","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@17"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Tags","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"Tags"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"values","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"*"}],"cardinality":"*"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Relation","parameters":[{"$type":"Parameter","name":"isExplicit"}],"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","guardCondition":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@26/parameters@0"}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}}]},{"$type":"Group","guardCondition":{"$type":"Negation","value":{"$type":"ParameterReference","parameter":{"$ref":"#/rules@26/parameters@0"}}},"elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},"cardinality":"?"}]}]},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Keyword","value":"->"}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Assignment","feature":"technology","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"wildcard":false},{"$type":"ParserRule","name":"RelationBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@94"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@125"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"technology"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationStyleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"style"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@136"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataProperty","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"metadata"},{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"MetadataAttribute","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ModelViews","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"views"}},{"$type":"Keyword","value":"{"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"views","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]}},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@87"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LikeC4ViewRule","returnType":{"$ref":"#/types@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@103"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"extends"},{"$type":"Assignment","feature":"extends","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"of"},{"$type":"Assignment","feature":"viewOf","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}}]}],"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"dynamic"},{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@0"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@36"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewRef","definition":{"$type":"Assignment","feature":"view","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@37"},"deprecatedSyntax":false}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@43"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@43"},"arguments":[]},"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"steps","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@49"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}]}},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@125"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewStringProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"title"},{"$type":"Keyword","value":"description"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewLayoutDirection","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"TopBottom"},{"$type":"Keyword","value":"LeftRight"},{"$type":"Keyword","value":"BottomTop"},{"$type":"Keyword","value":"RightLeft"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@54"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@47"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@87"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@126"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@127"},"arguments":[]}]},"cardinality":"*"},{"$type":"Assignment","feature":"groupRules","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@47"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@82"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@83"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@87"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewParallelSteps","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"parallel"},{"$type":"Keyword","value":"par"}]},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"steps","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewStep","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBackward","operator":"?=","terminal":{"$type":"Keyword","value":"<-"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@92"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRulePredicate","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"IncludePredicate"}},{"$type":"Keyword","value":"include"},{"$type":"Assignment","feature":"predicates","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ExcludePredicate"}},{"$type":"Keyword","value":"exclude"},{"$type":"Assignment","feature":"predicates","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Predicates","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@53"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"Predicates"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@53"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Predicate","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@67"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGlobalPredicateRef","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"predicate"},{"$type":"Assignment","feature":"predicate","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@120"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicate","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@56"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicates","inferredType":{"$type":"InferredType","name":"ElementPredicate"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@57"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementPredicateWith"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"with"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@91"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementPredicateOrWhere","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementPredicateWhere"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@58"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementExpression","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@59"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementOr","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@60"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"or"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@60"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementAnd","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@61"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"and"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@61"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementPrimary","inferredType":{"$type":"InferredType","name":"WhereElementExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"RuleCall","rule":{"$ref":"#/rules@58"},"arguments":[]},{"$type":"Keyword","value":")"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@62"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@63"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElementNegation","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"not"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@58"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereElement","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereElementTag"}},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereElementKind"}},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementExpression","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@65"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@66"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementSelectorExpression","inferredType":{"$type":"InferredType","name":"ElementExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WildcardExpression"}},{"$type":"Assignment","feature":"isWildcard","operator":"?=","terminal":{"$type":"Keyword","value":"*"}}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementTagExpression"}},{"$type":"Keyword","value":"element.tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]},{"$type":"Assignment","feature":"tag","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementKindExpression"}},{"$type":"Keyword","value":"element.kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@149"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@3"},"deprecatedSyntax":false},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementDescedantsExpression","inferredType":{"$type":"InferredType","name":"ElementExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ExpandElementExpression"},"feature":"expand","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementDescedantsExpression"},"feature":"parent","operator":"="},{"$type":"Assignment","feature":"suffix","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@158"},"arguments":[]}}]}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicate","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@68"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicates","inferredType":{"$type":"InferredType","name":"RelationPredicate"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@69"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationPredicateWith"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"with"},{"$type":"Assignment","feature":"custom","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@92"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicateOrWhere","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@76"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationPredicateWhere"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationExpression","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@71"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationOr","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@72"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"or"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@72"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationAnd","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@73"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereBinaryExpression"},"feature":"left","operator":"="},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"and"}},{"$type":"Assignment","feature":"right","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@73"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationPrimary","inferredType":{"$type":"InferredType","name":"WhereRelationExpression"},"definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]},{"$type":"Keyword","value":")"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@74"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@75"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelationNegation","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"not"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WhereRelation","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationTag"}},{"$type":"Keyword","value":"tag"},{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@4"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@144"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WhereRelationKind"}},{"$type":"Keyword","value":"kind"},{"$type":"RuleCall","rule":{"$ref":"#/rules@148"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationExpression","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@77"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@79"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"InOutRelationExpressions","inferredType":{"$type":"InferredType","name":"RelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@78"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"InOutRelationExpression"},"feature":"inout","operator":"="},{"$type":"Keyword","value":"->"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IncomingRelationExpression","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DirectedRelationExpressions","inferredType":{"$type":"InferredType","name":"RelationExpression"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@80"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DirectedRelationExpression"},"feature":"source","operator":"="},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OutgoingRelationExpression","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBidirectional","operator":"?=","terminal":{"$type":"Keyword","value":"<->"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},"deprecatedSyntax":false}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementExpressionsIterator","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"ElementExpressionsIterator"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@64"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewIncludePredicate","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"include"},{"$type":"Assignment","feature":"predicates","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@84"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewGlobalPredicateRef","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"predicate"},{"$type":"Assignment","feature":"predicate","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@121"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DynamicViewPredicateIterator","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DynamicViewPredicateIterator"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@55"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@81"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleGlobalStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"global"},{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"style","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@122"},"deprecatedSyntax":false}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleStyleOrGlobalRef","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@85"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@86"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ViewRuleAutoLayout","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"autoLayout"},{"$type":"Assignment","feature":"direction","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"rankSep","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@167"},"arguments":[]}},{"$type":"Assignment","feature":"nodeSep","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@167"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NotationProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"notation"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NotesProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"notes"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomElementProperties","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@93"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomRelationProperties","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@94"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@90"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@136"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NavigateToProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"navigateTo"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationNavigateToProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"navigateTo"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@40"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ModelDeployments","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"deployment"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@96"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@101"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNode","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@7"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}}]}]},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@97"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentNodeBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@98"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@101"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@96"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeployedInstance","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]}],"cardinality":"?"},{"$type":"Keyword","value":"instanceOf"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@99"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeployedInstanceBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnRef","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnRef"},"feature":"parent","operator":"="},{"$type":"RuleCall","rule":{"$ref":"#/rules@160"},"arguments":[]},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/types@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentRelation","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"source","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@100"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@100"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]}},{"$type":"Assignment","feature":"technology","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@102"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentRelationBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentView","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"deployment"},{"$type":"Keyword","value":"view"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}},{"$type":"Assignment","feature":"body","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@104"},"arguments":[]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewBody","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"tags","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@43"},"arguments":[]},"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@105"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRule","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@107"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@106"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@88"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRuleStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"targets","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@118"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRulePredicate","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isInclude","operator":"?=","terminal":{"$type":"Keyword","value":"include"}},{"$type":"Keyword","value":"exclude"}]},{"$type":"Assignment","feature":"expr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@108"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DeploymentViewRulePredicateExpression","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@109"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DeploymentViewRulePredicateExpression"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@109"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ExpressionV2","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@110"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationPredicateOrWhereV2","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@113"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"RelationPredicateWhereV2"},"feature":"subject","operator":"="},{"$type":"Keyword","value":"where"},{"$type":"Assignment","feature":"where","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@70"},"arguments":[]},"cardinality":"?"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExpr","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"WildcardExpression"}},{"$type":"Assignment","feature":"isWildcard","operator":"?=","terminal":{"$type":"Keyword","value":"*"}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@112"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnRefExpr","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"ref","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@100"},"arguments":[]}},{"$type":"Assignment","feature":"selector","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@157"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@158"},"arguments":[]}]},"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationExpr","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@114"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@116"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"InOutRelationExpr","inferredType":{"$type":"InferredType","name":"RelationExpr"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@115"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"InOutRelationExpr"},"feature":"inout","operator":"="},{"$type":"Keyword","value":"->"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IncomingRelationExpr","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DirectedRelationExpr","inferredType":{"$type":"InferredType","name":"RelationExpr"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@117"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"DirectedRelationExpr"},"feature":"source","operator":"="},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OutgoingRelationExpr","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isBidirectional","operator":"?=","terminal":{"$type":"Keyword","value":"<->"}},{"$type":"Keyword","value":"->"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-["},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":"]->"}]},{"$type":"Assignment","feature":"kind","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@5"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@145"},"arguments":[]},"deprecatedSyntax":false}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"FqnExpressions","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Action","inferredType":{"$type":"InferredType","name":"FqnExpressions"},"feature":"prev","operator":"="},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@111"},"arguments":[]},"cardinality":"?"}],"cardinality":"*"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Globals","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"global"}},{"$type":"Keyword","value":"{"},{"$type":"Group","elements":[{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@120"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@121"},"arguments":[]}]},"cardinality":"*"},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@123"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@124"},"arguments":[]}]},"cardinality":"*"}],"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalPredicateGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"predicateGroup"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalDynamicPredicateGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"dynamicPredicateGroup"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"predicates","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@82"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyleId","definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyle","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"style"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@122"},"arguments":[]}},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@81"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@89"},"arguments":[]}]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"GlobalStyleGroup","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"styleGroup"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@122"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"styles","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@85"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LinkProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"link"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@165"},"arguments":[]},"cardinality":"?"},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ColorProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"color"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"themeColor","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]}},{"$type":"Assignment","feature":"customColor","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@6"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@146"},"arguments":[]},"deprecatedSyntax":false}}]},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"OpacityProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"opacity"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@164"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"icon"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"libicon","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@142"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"none"},{"$type":"RuleCall","rule":{"$ref":"#/rules@143"},"arguments":[]}]}}]},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ShapeProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"shape"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BorderStyleValue","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@137"},"arguments":[]},{"$type":"Keyword","value":"none"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BorderProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"border"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@130"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"StyleProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@126"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@129"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@131"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@127"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@128"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementStyleProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"style"}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"props","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@132"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Keyword","value":"line"}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@137"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ArrowProperty","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"key","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"head"},{"$type":"Keyword","value":"tail"}]}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@138"},"arguments":[]}},{"$type":"Keyword","value":";","cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RelationshipStyleProperty","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@126"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@134"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@135"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineOptions","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"solid"},{"$type":"Keyword","value":"dashed"},{"$type":"Keyword","value":"dotted"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ArrowType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"none"},{"$type":"Keyword","value":"normal"},{"$type":"Keyword","value":"onormal"},{"$type":"Keyword","value":"dot"},{"$type":"Keyword","value":"odot"},{"$type":"Keyword","value":"diamond"},{"$type":"Keyword","value":"odiamond"},{"$type":"Keyword","value":"crow"},{"$type":"Keyword","value":"open"},{"$type":"Keyword","value":"vee"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ThemeColor","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"primary"},{"$type":"Keyword","value":"secondary"},{"$type":"Keyword","value":"muted"},{"$type":"Keyword","value":"slate"},{"$type":"Keyword","value":"blue"},{"$type":"Keyword","value":"indigo"},{"$type":"Keyword","value":"sky"},{"$type":"Keyword","value":"red"},{"$type":"Keyword","value":"gray"},{"$type":"Keyword","value":"green"},{"$type":"Keyword","value":"amber"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ElementShape","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rectangle"},{"$type":"Keyword","value":"person"},{"$type":"Keyword","value":"browser"},{"$type":"Keyword","value":"mobile"},{"$type":"Keyword","value":"cylinder"},{"$type":"Keyword","value":"storage"},{"$type":"Keyword","value":"queue"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColorValue","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@159"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@168"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@167"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IconId","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@154"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Uri","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@155"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@156"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TagId","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@159"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DotId","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@161"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@147"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CustomColorId","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@138"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@137"},"arguments":[]},{"$type":"Keyword","value":"element"},{"$type":"Keyword","value":"model"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Id","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@166"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@140"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@139"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@138"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@137"},"arguments":[]},{"$type":"Keyword","value":"element"},{"$type":"Keyword","value":"model"},{"$type":"Keyword","value":"group"},{"$type":"Keyword","value":"node"},{"$type":"Keyword","value":"deployment"},{"$type":"Keyword","value":"instance"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EqOperator","fragment":true,"definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"is"}},{"$type":"Assignment","feature":"not","operator":"?=","terminal":{"$type":"Keyword","value":"not"},"cardinality":"?"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"IsEqual","fragment":true,"definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"isEqual","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@163"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@162"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","hidden":true,"name":"BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/[\\\\r\\\\n]+/"},"fragment":false},{"$type":"TerminalRule","name":"LIB_ICON","definition":{"$type":"RegexToken","regex":"/(aws|azure|gcp|tech):[-\\\\w]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"URI_WITH_SCHEMA","definition":{"$type":"RegexToken","regex":"/\\\\w+:\\\\/\\\\/\\\\S+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"URI_RELATIVE","definition":{"$type":"RegexToken","regex":"/\\\\.{0,2}\\\\/[^\\\\/]\\\\S+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DotUnderscore","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\._(?![_a-zA-Z])/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DotWildcard","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\.\\\\*{1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Hash","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"#"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"StickyDot","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\./"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Dot","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"."}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NotEqual","definition":{"$type":"RegexToken","regex":"/\\\\!\\\\={1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Eq","definition":{"$type":"RegexToken","regex":"/\\\\={1,2}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Percent","definition":{"$type":"RegexToken","regex":"/\\\\b\\\\d+%/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"String","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"IdTerminal","definition":{"$type":"RegexToken","regex":"/[_]*[a-zA-Z][-\\\\w]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Number","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/\\\\b\\\\d+\\\\b/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"Hex","definition":{"$type":"RegexToken","regex":"/\\\\b[a-zA-Z0-9]+\\\\b/"},"fragment":false,"hidden":false}],"types":[{"$type":"Type","name":"LikeC4View","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@36"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@37"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@103"}}]}},{"$type":"Type","name":"StringProperty","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@20"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@44"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@29"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@33"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@10"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@89"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@90"}}]}},{"$type":"Type","name":"WhereTagEqual","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@63/definition/elements@0/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@75/definition/elements@0/elements@0/inferredType"}}]}},{"$type":"Type","name":"WhereKindEqual","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@63/definition/elements@1/elements@0/inferredType"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@75/definition/elements@1/elements@0/inferredType"}}]}},{"$type":"Type","name":"WhereExpression","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@58"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@70"}}]}},{"$type":"Type","name":"DeploymentElement","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@96"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@98"}}]}},{"$type":"Type","name":"Referenceable","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/rules@96"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@98"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@17"}}]}},{"$type":"Type","name":"FqnReferenceable","type":{"$type":"UnionType","types":[{"$type":"SimpleType","typeRef":{"$ref":"#/types@6"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@17"}},{"$type":"SimpleType","typeRef":{"$ref":"#/rules@21"}}]}}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"interfaces":[],"usedGrammars":[]}`)),LikeC4LanguageMetaData={languageId:"likec4",fileExtensions:[".c4",".likec4",".like-c4"],caseInsensitive:!1,mode:"production"},parserConfig={skipValidations:!0,recoveryEnabled:!0,nodeLocationTracking:"full"},LikeC4GeneratedSharedModule={AstReflection:()=>new LikeC4AstReflection},LikeC4GeneratedModule={Grammar:()=>LikeC4Grammar(),LanguageMetaData:()=>LikeC4LanguageMetaData,parser:{ParserConfig:()=>parserConfig}};function elementRef(ti){return ti.el.ref}function getFqnElementRef(ti){const ei=[ti.el.$refText];let ni=ti.parent;for(;ni;)ei.push(ni.el.$refText),ni=ni.parent;return ei.length===1?ei[0]:ei.reverse().join(".")}const l$2=Symbol.for("idattr"),ViewOps={writeId(ti,ei){return ti[l$2]=ei,ti},readId(ti){return ti[l$2]}},ElementOps={writeId(ti,ei){return n$6(ei)?ti[l$2]=void 0:ti[l$2]=ei,ti},readId(ti){return ti[l$2]}};function isLikeC4LangiumDocument(ti){return ti.textDocument.languageId===LikeC4LanguageMetaData.languageId}function isFqnIndexedDocument(ti){return isLikeC4LangiumDocument(ti)&&ti.state>=DocumentState.IndexedContent&&!!ti.c4fqnIndex}function isParsedLikeC4LangiumDocument(ti){return isLikeC4LangiumDocument(ti)&&ti.state==DocumentState.Validated&&!!ti.c4Specification&&!!ti.c4Elements&&!!ti.c4Relations&&!!ti.c4Views&&!!ti.c4fqnIndex&&!!ti.c4Deployments&&!!ti.c4DeploymentRelations}function*streamModel(ti){const ei=S$3.from(ti.parseResult.value.models.flatMap(ii=>ii.elements)),ni=[];let ri;for(;ri=ei.shift();){if(isRelation(ri)){ni.push(ri);continue}if(isExtendElement(ri)){if(ri.body&&ri.body.elements.length>0)for(const ii of ri.body.elements)ei.push(ii);continue}if(ri.body&&ri.body.elements.length>0)for(const ii of ri.body.elements)ei.push(ii);yield ri}yield*ni}function*streamDeploymentModel(ti){const ei=S$3.from(ti.parseResult.value.deployments.flatMap(ii=>ii.elements)),ni=[];let ri;for(;ri=ei.shift();){if(isDeploymentRelation(ri)){ni.push(ri);continue}if(isDeploymentNode(ri)&&ri.body&&ri.body.elements.length>0)for(const ii of ri.body.elements)ei.push(ii);yield ri}yield*ni}function resolveRelationPoints(ti){const ei=elementRef(ti.target);if(!ei)throw new Error("RelationRefError: Invalid reference to target");if(n$5(ti.source)){const ni=elementRef(ti.source);if(!ni)throw new Error("RelationRefError: Invalid reference to source");return{source:ni,target:ei}}if(!isElementBody(ti.$container))throw new Error("RelationRefError: Invalid container for sourceless relation");return{source:ti.$container.$container,target:ei}}function parseAstOpacityProperty({value:ti}){const ei=parseFloat(ti);return isNaN(ei)?100:u$2(ei,{min:0,max:100})}function toElementStyle(ti,ei){const ni={};if(!ti||ti.length===0)return ni;for(const ri of ti)if(ei(ri))switch(!0){case isBorderProperty(ri):{n$7(ri.value)&&(ni.border=ri.value);break}case isColorProperty(ri):{const ii=toColor(ri);n$7(ii)&&(ni.color=ii);break}case isShapeProperty(ri):{n$7(ri.value)&&(ni.shape=ri.value);break}case isIconProperty(ri):{const ii=ri.libicon?.ref?.name??ri.value;n$7(ii)&&(ni.icon=ii);break}case isOpacityProperty(ri):{ni.opacity=parseAstOpacityProperty(ri);break}default:index_KOeaSlL8.n(ri)}return ni}function toRelationshipStyle(ti,ei){const ni={};if(!ti||ti.length===0)return ni;for(const ri of ti)if(ei(ri))switch(!0){case isColorProperty(ri):{const ii=toColor(ri);n$7(ii)&&(ni.color=ii);break}case isLineProperty(ri):{ni.line=ri.value;break}case isArrowProperty(ri):{switch(ri.key){case"head":{ni.head=ri.value;break}case"tail":{ni.tail=ri.value;break}default:index_KOeaSlL8.n(ri)}break}default:index_KOeaSlL8.n(ri)}return ni}function toRelationshipStyleExcludeDefaults(ti,ei){const{color:ni,line:ri,head:ii,tail:si}=toRelationshipStyle(ti?.filter(isRelationshipStyleProperty),ei);return{...ni&&ni!==index_KOeaSlL8.E?{color:ni}:{},...ri&&ri!==index_KOeaSlL8.X?{line:ri}:{},...ii&&ii!==index_KOeaSlL8.H?{head:ii}:{},...si?{tail:si}:{}}}function toColor(ti){return ti?.themeColor??ti?.customColor?.$refText}function toAutoLayout(ti){const ei=ti.rankSep,ni=ti.nodeSep;let ri;switch(ti.direction){case"TopBottom":{ri="TB";break}case"BottomTop":{ri="BT";break}case"LeftRight":{ri="LR";break}case"RightLeft":{ri="RL";break}default:index_KOeaSlL8.n(ti.direction)}return{direction:ri,...ni&&{nodeSep:ni},...ei&&{rankSep:ei}}}function toAstViewLayoutDirection(ti){switch(ti){case"TB":return"TopBottom";case"BT":return"BottomTop";case"LR":return"LeftRight";case"RL":return"RightLeft";default:index_KOeaSlL8.n(ti)}}function elementExpressionFromPredicate(ti){if(isElementExpression(ti))return ti;if(isElementPredicateWhere(ti))return ti.subject;if(isElementPredicateWith(ti))return elementExpressionFromPredicate(ti.subject);index_KOeaSlL8.n(ti)}class LikeC4DocumentationProvider{parser;locator;constructor(ei){this.parser=ei.likec4.ModelParser,this.locator=ei.likec4.ModelLocator}getDocumentation(ei){try{if(isDeploymentNode(ei)){const ni=getDocument(ei),ri=this.parser.forDocument(ni).parseDeploymentNode(ei),ii=[ri.id];return ri.title!==ei.name&&ii.push(" ",`**${ri.title}**`),ii.join(`
224
224
  `)}if(isDeployedInstance(ei)){const ni=getDocument(ei),ri=this.parser.forDocument(ni).parseDeployedInstance(ei),ii=this.locator.getParsedElement(ri.element),si=[ri.id,`_instance of_ ${ri.element}`];return ii&&si.push(" ",`**${ii.title}**`),si.join(`
225
225
  `)}if(isElement(ei)){const ni=getDocument(ei),ri=this.parser.forDocument(ni).parseElement(ei);return ri?[ri.id," ",`**${ri.title}**`].join(`
226
226
  `):void 0}}catch(ni){logWarnError(ni)}}}function areOverlap(ti,ei){return[ti,ei]=compareRanges(ti,ei)>0?[ei,ti]:[ti,ei],isInRagne(ti.range,ei.range.start)}function compareRanges(ti,ei){const ni=ti.range.start.line-ei.range.start.line;return ni!==0?ni:ti.range.start.character-ei.range.start.character}function isInRagne(ti,ei){return!(ei.line<ti.start.line||ei.line>ti.end.line||ei.line==ti.start.line&&ei.character<ti.start.character||ei.line==ti.end.line&&ei.character>ti.end.character)}function isMultiline(ti){return ti.range.start.line!=ti.range.end.line}const r$1={newLine:Formatting.newLine({allowMore:!0}),oneSpace:Formatting.oneSpace(),noSpace:Formatting.noSpace(),indent:Formatting.indent({allowMore:!0}),noIndent:Formatting.noIndent()};class LikeC4Formatter extends AbstractFormatter{format(ei){this.removeIndentFromTopLevelStatements(ei),this.indentContentInBraces(ei),this.formatSpecificationRule(ei),this.formatGlobals(ei),this.formatElementDeclaration(ei),this.formatRelation(ei),this.formatMetadataProperty(ei),this.formatView(ei),this.formatViewRuleGroup(ei),this.formatViewRuleGlobalStyle(ei),this.formatIncludeExcludeExpressions(ei),this.formatWhereExpression(ei),this.formatAutolayoutProperty(ei),this.formatWithPredicate(ei),this.formatViewRuleStyle(ei),this.formatLeafProperty(ei),this.formatLinkProperty(ei),this.formatNavigateToProperty(ei),this.formatTags(ei)}formatTags(ei){this.on(ei,isTags,(ni,ri)=>{ri.cst(findNodesForProperty(ni.$cstNode,"values").slice(1)).prepend(r$1.oneSpace),ri.keywords(",").prepend(r$1.noSpace).append(r$1.oneSpace)})}formatRelation(ei){this.on(ei,isRelation,(ni,ri)=>{const ii=ni?.source?.$cstNode?[ni?.source?.$cstNode]:[];ri.cst(ii).append(r$1.oneSpace),ri.keywords("]->").prepend(r$1.noSpace),ri.keywords("-[").append(r$1.noSpace),ri.nodes(...T$2([ni.target,ni.tags],n$7)).prepend(r$1.oneSpace),ri.properties("title","technology").prepend(r$1.oneSpace)}),this.on(ei,isDynamicViewStep,(ni,ri)=>{ri.keywords("->","<-").surround(r$1.oneSpace);const ii=ri.property("kind");ii.nodes[0]?.text.startsWith(".")&&ii.surround(r$1.oneSpace),ri.keywords("]->").prepend(r$1.noSpace).append(r$1.oneSpace),ri.keywords("-[").prepend(r$1.oneSpace).append(r$1.noSpace),ri.properties("title").prepend(r$1.oneSpace)}),this.on(ei,isDirectedRelationExpression)?.property("target").prepend(r$1.oneSpace),this.on(ei,isOutgoingRelationExpression,(ni,ri)=>{ri.property("from").append(r$1.oneSpace),ri.keywords("]->").prepend(r$1.noSpace),ri.keywords("-[").append(r$1.noSpace)}),this.on(ei,isIncomingRelationExpression)?.keywords("->").append(r$1.oneSpace),this.on(ei,isInOutRelationExpression)?.keyword("->").prepend(r$1.oneSpace)}removeIndentFromTopLevelStatements(ei){(isModel(ei)||isSpecificationRule(ei)||isModelViews(ei)||isLikeC4Lib(ei)||isGlobals(ei))&&this.getNodeFormatter(ei).keywords("specification","model","views","likec4lib","global").prepend(r$1.noIndent)}indentContentInBraces(ei){if(isLikeC4Lib(ei)||isSpecificationRule(ei)||isSpecificationElementKind(ei)||isSpecificationRelationshipKind(ei)||isGlobals(ei)||isGlobalStyle(ei)||isGlobalStyleGroup(ei)||isModel(ei)||isElementBody(ei)||isExtendElementBody(ei)||isRelationBody(ei)||isRelationStyleProperty(ei)||isMetadataBody(ei)||isModelViews(ei)||isElementViewBody(ei)||isDynamicViewBody(ei)||isViewRuleStyle(ei)||isViewRuleGroup(ei)||isCustomElementProperties(ei)||isCustomRelationProperties(ei)||isElementStyleProperty(ei)||isDynamicViewParallelSteps(ei)){const ni=this.getNodeFormatter(ei),ri=ni.keywords("{"),ii=ni.keywords("}"),si=ni.interior(ri,ii);let oi=null;for(const ai of si.nodes)(!oi||!areOverlap(oi,ai))&&ni.cst([ai]).prepend(r$1.indent),oi=ai;ri.prepend(r$1.noIndent).prepend(r$1.oneSpace),ii.prepend(r$1.noIndent).prepend(Formatting.newLine({allowMore:!0}))}}appendKeywordsWithSpace(ei){this.on(ei,isElementKind)?.keywords("element").append(r$1.oneSpace)}formatView(ei){this.on(ei,isElementView,(ni,ri)=>{(ni.extends||ni.viewOf||ni.name)&&ri.keywords("view").append(r$1.oneSpace),ri.keywords("of","extends").surround(r$1.oneSpace)}),this.on(ei,isDynamicView)?.keywords("dynamic","view").append(r$1.oneSpace)}formatLeafProperty(ei){if(isElementStringProperty(ei)||isRelationStringProperty(ei)||isViewStringProperty(ei)||isNotationProperty(ei)||isSpecificationElementStringProperty(ei)||isSpecificationRelationshipStringProperty(ei)||isColorProperty(ei)||isLineProperty(ei)||isArrowProperty(ei)||isIconProperty(ei)||isShapeProperty(ei)||isBorderProperty(ei)||isOpacityProperty(ei)){const ni=this.getNodeFormatter(ei),ri=ni.keyword(":"),ii=ni.keywords("title","description","technology","notation","color","line","head","tail","icon","shape","border","opacity");ri.nodes.length===0?ii.append(r$1.oneSpace):ri.prepend(r$1.noSpace).append(r$1.oneSpace),ni.keyword(";").prepend(r$1.noSpace).append(r$1.newLine)}}formatLinkProperty(ei){this.on(ei,isLinkProperty,(ni,ri)=>{ri.keyword("link").append(r$1.oneSpace),ri.property("value").append(r$1.oneSpace),ri.keyword(":").prepend(r$1.noSpace).append(r$1.oneSpace),ri.keyword(";").prepend(r$1.noSpace).append(r$1.newLine)})}formatNavigateToProperty(ei){this.on(ei,isNavigateToProperty)?.property("key").append(r$1.oneSpace)}formatAutolayoutProperty(ei){this.on(ei,isViewRuleAutoLayout,(ni,ri)=>{ri.keyword("autoLayout").append(r$1.oneSpace),ri.property("rankSep").prepend(r$1.oneSpace),ri.property("nodeSep").prepend(r$1.oneSpace)})}formatMetadataProperty(ei){this.on(ei,isMetadataAttribute,(ni,ri)=>{ri.property("key").append(r$1.oneSpace),ri.keyword(":").prepend(r$1.noSpace).append(r$1.oneSpace),ri.keyword(";").prepend(r$1.noSpace).append(r$1.newLine)})}formatElementDeclaration(ei){this.on(ei,isElement,(ni,ri)=>{const ii=findNodeForProperty(ni.$cstNode,"kind"),si=findNodeForProperty(ni.$cstNode,"name");si&&ii&&(compareRanges(si,ii)>0?ri.cst([ii]).append(r$1.oneSpace):(ri.cst([si]).append(r$1.oneSpace),ri.cst([ii]).prepend(r$1.oneSpace))),ri.properties("props").prepend(r$1.oneSpace)})}formatGlobals(ei){this.on(ei,isGlobalStyle,(ni,ri)=>{ri.keyword("style").append(r$1.oneSpace),ri.property("id").append(r$1.oneSpace)}),this.on(ei,isGlobalStyleGroup,(ni,ri)=>{ri.keyword("styleGroup").append(r$1.oneSpace)})}formatSpecificationRule(ei){if((isSpecificationElementKind(ei)||isSpecificationRelationshipKind(ei)||isSpecificationTag(ei))&&this.getNodeFormatter(ei).keywords("element","relationship","tag").append(r$1.oneSpace),isSpecificationColor(ei)){const ni=this.getNodeFormatter(ei);ni.keyword("color").append(r$1.oneSpace),ni.property("name").append(r$1.oneSpace)}}formatWithPredicate(ei){const ni=this.getNodeFormatter(ei);(isElementPredicateWith(ei)||isRelationPredicateWith(ei))&&ni.keyword("with").prepend(r$1.oneSpace)}formatViewRuleGlobalStyle(ei){this.on(ei,isViewRuleGlobalStyle,(ni,ri)=>{ri.keywords("global","style").append(r$1.oneSpace)})}formatViewRuleGroup(ei){this.on(ei,isViewRuleGroup,(ni,ri)=>{ri.keyword("group").append(r$1.oneSpace)})}formatViewRuleStyle(ei){this.on(ei,isViewRuleStyle)?.keyword("style").append(r$1.oneSpace),this.on(ei,isElementExpressionsIterator)?.keyword(",").prepend(r$1.noSpace).append(r$1.oneSpace)}formatWhereExpression(ei){if((isRelationPredicateOrWhere(ei)||isElementPredicateOrWhere(ei))&&this.getNodeFormatter(ei).keyword("where").append(r$1.oneSpace),(isWhereRelationExpression(ei)||isWhereElementExpression(ei))&&this.getNodeFormatter(ei).property("operator").surround(r$1.oneSpace),(isWhereElementNegation(ei)||isWhereRelationNegation(ei))&&this.getNodeFormatter(ei).keyword("not").append(r$1.oneSpace),isWhereElement(ei)||isWhereElementTag(ei)||isWhereElementKind(ei)||isWhereRelation(ei)||isWhereRelationTag(ei)||isWhereRelationKind(ei)){const ni=this.getNodeFormatter(ei);ni.property("operator").surround(r$1.oneSpace),ni.property("not").surround(r$1.oneSpace)}}formatIncludeExcludeExpressions(ei){if(isDynamicViewRule(ei)||isIncludePredicate(ei)||isExcludePredicate(ei)){const ni=this.getNodeFormatter(ei);(!ei.$cstNode||!isMultiline(ei.$cstNode))&&ni.keywords("include","exclude").append(r$1.oneSpace)}if(isDynamicViewPredicateIterator(ei)||isPredicates(ei)||isPredicates(ei)){const ni=this.getNodeFormatter(ei),ri=this.findPredicateExpressionRoot(ei),ii=ri?.$cstNode&&isMultiline(ri?.$cstNode);ii&&ni.property("value").prepend(r$1.indent),ni.keyword(",").prepend(r$1.noSpace).append(ii?r$1.newLine:r$1.oneSpace)}}findPredicateExpressionRoot(ei){let ni=ei.$container;for(;;){if(!ni||isDynamicViewRule(ni)||isIncludePredicate(ni)||isExcludePredicate(ni))return ni;ni=ni.$container}}on(ei,ni,ri){const ii=ni(ei)?this.getNodeFormatter(ei):void 0;return ri&&ii&&ri(ei,ii),ii}}class LikeC4CodeLensProvider{constructor(ei){this.services=ei}async provideCodeLens(ei,ni,ri){return ei.state!==DocumentState.Validated&&(logger.debug(`Waiting for document ${ei.uri.path} to be validated`),await this.services.shared.workspace.DocumentBuilder.waitUntil(DocumentState.Validated,ei.uri,ri),logger.debug(`Document ${ei.uri.path} is validated`)),isParsedLikeC4LangiumDocument(ei)?ei.parseResult.value.views.flatMap(ii=>ii.views).flatMap(ii=>{const si=ViewOps.readId(ii),oi=ii.$cstNode?.range;return!oi||!si?[]:{range:{start:oi.start,end:{line:oi.start.line,character:oi.start.character+4}},command:{command:"likec4.open-preview",arguments:[si],title:"open preview"}}}):void 0}}class LikeC4CompletionProvider extends DefaultCompletionProvider{completionOptions={triggerCharacters:["."]};completionForKeyword(ei,ni,ri){if(this.filterKeyword(ei,ni)){if(ni.value==="deployment"&&hasContainerOfType(ei.node,isModelViews))return ri(ei,{label:ni.value,detail:"Insert deployment view",kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:["deployment view ${1:view_${TM_FILENAME_BASE}_${CURRENT_SECOND}} {"," title '${2:Untitled}'"," "," include $0","}"].join(`
@@ -236,20 +236,20 @@ ${ei}`,async()=>(await this.graphviz()).layout(ei,"svg"))}};const DeploymentElem
236
236
  \${1|color,shape,border,opacity,icon|} $0
237
237
  }`});if(ni.value==="extend")return ri(ei,{label:ni.value,detail:"Extend another view",kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:`extend \${1:element} {
238
238
  $0
239
- }`});if(ni.value==="autoLayout")return ri(ei,{label:ni.value,kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:"autoLayout ${1|TopBottom,BottomTop,LeftRight,RightLeft|}$0"});ri(ei,{label:ni.value,kind:this.getKeywordCompletionItemKind(ni),detail:"Keyword",sortText:"1"})}}}class LikeC4DocumentHighlightProvider extends DefaultDocumentHighlightProvider{createDocumentHighlight(ei){return mainExports$2.DocumentHighlight.create(ei.segment.range,mainExports$2.DocumentHighlightKind.Read)}}const PROTOCOL_STRICT_REGEX=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,PROTOCOL_REGEX=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,PROTOCOL_RELATIVE_REGEX=/^([/\\]\s*){2,}[^/\\]/;function isRelative(ti){return["./","../"].some(ei=>ti.startsWith(ei))}function hasProtocol(ti,ei={}){return typeof ei=="boolean"&&(ei={acceptRelative:ei}),ei.strict?PROTOCOL_STRICT_REGEX.test(ti):PROTOCOL_REGEX.test(ti)||(ei.acceptRelative?PROTOCOL_RELATIVE_REGEX.test(ti):!1)}function hasTrailingSlash(ti="",ei){return ti.endsWith("/")}function withoutTrailingSlash(ti="",ei){return(hasTrailingSlash(ti)?ti.slice(0,-1):ti)||"/"}function withTrailingSlash(ti="",ei){return ti.endsWith("/")?ti:ti+"/"}function hasLeadingSlash(ti=""){return ti.startsWith("/")}function withoutLeadingSlash(ti=""){return(hasLeadingSlash(ti)?ti.slice(1):ti)||"/"}function withLeadingSlash(ti=""){return hasLeadingSlash(ti)?ti:"/"+ti}function withoutBase(ti,ei){if(isEmptyURL(ei))return ti;const ni=withoutTrailingSlash(ei);if(!ti.startsWith(ni))return ti;const ri=ti.slice(ni.length);return ri[0]==="/"?ri:"/"+ri}function isEmptyURL(ti){return!ti||ti==="/"}function parsePath(ti=""){const[ei="",ni="",ri=""]=(ti.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:ei,search:ni,hash:ri}}class LikeC4DocumentLinkProvider{constructor(ei){this.services=ei}getDocumentLinks(ei,ni){return isParsedLikeC4LangiumDocument(ei)?streamAllContents(ei.parseResult.value).filter(isLinkProperty).map(ri=>{try{const ii=findNodeForProperty(ri.$cstNode,"value")?.range,si=this.resolveLink(ei,ri.value);if(ii&&hasProtocol(si))return{range:ii,target:si}}catch(ii){logWarnError(ii)}return null}).nonNullable().toArray():[]}resolveLink(ei,ni){if(hasProtocol(ni)||hasLeadingSlash(ni))return ni;const ri=isRelative(ni)?new URL(ei.uri.toString(!0)):this.services.shared.workspace.WorkspaceManager.workspaceURL;return new URL(ni,ri).toString()}relativeLink(ei,ni){if(hasLeadingSlash(ni))return withoutLeadingSlash(ni);if(isRelative(ni)){const ri=new URL(ei.uri.toString(!0)),ii=new URL(ni,ri).toString();return withoutLeadingSlash(withoutBase(ii,this.services.shared.workspace.WorkspaceManager.workspaceURL.toString()))}return null}}class LikeC4DocumentSymbolProvider{constructor(ei){this.services=ei,this.nodeKindProvider=ei.shared.lsp.NodeKindProvider,this.parser=ei.likec4.ModelParser,this.locator=ei.likec4.ModelLocator,this.nameProvider=ei.references.NameProvider}nodeKindProvider;nameProvider;parser;locator;getSymbols({parseResult:{value:{specifications:ei,models:ni,deployments:ri,views:ii,likec4lib:si}}}){return[...si.map(oi=>()=>this.getLikec4LibSymbol(oi)),...ei.map(oi=>()=>this.getSpecSymbol(oi)),...ni.map(oi=>()=>this.getModelSymbol(oi)),...ri.map(oi=>()=>this.getDeploymentModelSymbol(oi)),...ii.map(oi=>()=>this.getModelViewsSymbol(oi))].flatMap(oi=>{try{return oi()??[]}catch(ai){return logWarnError(ai),[]}})}getLikec4LibSymbol(ei){const ni=ei?.$cstNode;if(!ni)return[];const ri=ei.icons.map(ii=>this.getLibIconSymbol(ii)).filter(n$7);return ri.length===0?[]:[{kind:SymbolKind.Namespace,name:"icons",range:ni.range,selectionRange:findNodeForKeyword(ni,"icons")?.range??ni.range,children:ri}]}getSpecSymbol(ei){const ni=ei?.$cstNode;if(!ni)return[];const ri=findNodeForProperty(ni,"name");if(!ri)return[];const ii=x$1([...ei.elements,...ei.tags,...ei.relationships],m$1(si=>{try{if(isSpecificationElementKind(si)||isSpecificationRelationshipKind(si)||isSpecificationDeploymentNodeKind(si))return this.getKindSymbol(si);if(isSpecificationTag(si))return this.getTagSymbol(si)}catch(oi){return logWarnError(oi),null}index_DafVOuVd.l(si)}),T$2(n$7));return ii.length===0?[]:[{kind:SymbolKind.Namespace,name:ei.name,range:ni.range,selectionRange:ri.range,children:ii}]}getModelSymbol(ei){const ni=ei.$cstNode;if(!ni)return[];const ri=findNodeForProperty(ni,"name");return ri?[{kind:this.symbolKind(ei),name:ei.name,range:ni.range,selectionRange:ri.range,children:ei.elements.flatMap(ii=>this.getElementsSymbol(ii))}]:[]}getDeploymentModelSymbol(ei){const ni=ei.$cstNode;if(!ni)return[];const ri=findNodeForProperty(ni,"name");return ri?[{kind:this.symbolKind(ei),name:ei.name,range:ni.range,selectionRange:ri.range,children:ei.elements.flatMap(ii=>this.getDeploymentElementSymbol(ii))}]:[]}getElementsSymbol(ei){try{if(isExtendElement(ei))return this.getExtendElementSymbol(ei);if(isElement(ei))return this.getElementSymbol(ei)}catch(ni){logWarnError(ni)}return[]}getExtendElementSymbol(ei){const ni=ei.$cstNode,ri=ei.element.$cstNode,ii=ei.body;return!ni||!ri?[]:[{kind:this.symbolKind(ei),name:getFqnElementRef(ei.element),range:ni.range,selectionRange:ri.range,children:ii.elements.flatMap(si=>this.getElementsSymbol(si))}]}getElementSymbol(ei){const ni=ei.$cstNode,ri=findNodeForProperty(ni,"name");if(!ri||!ni)return[];const ii=ei.name,si=ei.kind.$refText;return[{kind:this.symbolKind(ei),name:ii,range:ni.range,selectionRange:ri.range,detail:si,children:ei.body?.elements.flatMap(oi=>this.getElementsSymbol(oi))??[]}]}getModelViewsSymbol(ei){const ni=ei.$cstNode,ri=findNodeForProperty(ni,"name");return!ri||!ni?[]:[{kind:this.symbolKind(ei),name:ei.name,range:ni.range,selectionRange:ri.range,children:ei.views.flatMap(ii=>this.getViewSymbol(ii))}]}getKindSymbol(ei){return!ei.$cstNode||!ei.kind.$cstNode||n$4(ei.kind.name)?null:{kind:this.symbolKind(ei),name:ei.kind.name,range:ei.$cstNode.range,selectionRange:ei.kind.$cstNode.range}}getTagSymbol(ei){return!ei.$cstNode||!ei.tag.$cstNode||n$4(ei.tag.name)?null:{kind:this.symbolKind(ei),name:"#"+ei.tag.name,range:ei.$cstNode.range,selectionRange:ei.tag.$cstNode.range}}getLibIconSymbol(ei){return!ei.$cstNode||n$4(ei.name)?null:{kind:this.symbolKind(ei),name:ei.name,range:ei.$cstNode.range,selectionRange:ei.$cstNode.range}}getViewSymbol(ei){const ni=ei?.$cstNode;if(!ni)return[];const ri=ei.name?findNodeForProperty(ni,"name"):null;return ri?[{kind:this.symbolKind(ei),name:ri.text,range:ni.range,selectionRange:ri.range,children:[]}]:[]}getDeploymentElementSymbol(ei){try{if(isDeploymentNode(ei))return this.getDeploymentNodeSymbol(ei);if(isDeployedInstance(ei))return this.getDeployedInstanceSymbol(ei)}catch(ni){logWarnError(ni)}return[]}getDeploymentNodeSymbol(ei){const ni=ei.$cstNode,ri=this.nameProvider.getNameNode(ei);if(!ri||!ni)return[];const ii=this.nameProvider.getNameStrict(ei),si=ei.kind.$refText;return[{kind:this.symbolKind(ei),name:ii,range:ni.range,selectionRange:ri.range,detail:si,children:ei.body?.elements.flatMap(oi=>this.getDeploymentElementSymbol(oi))??[]}]}getDeployedInstanceSymbol(ei){const ni=ei.$cstNode,ri=this.nameProvider.getNameNode(ei);if(!ri||!ni)return[];const ii=getDocument(ei),si=this.parser.forDocument(ii).parseDeployedInstance(ei),oi=this.nameProvider.getNameStrict(ei),ai="instance of "+si.element;return[{kind:this.symbolKind(ei),name:oi,range:ni.range,selectionRange:ri.range,detail:ai,children:[]}]}symbolKind(ei){return this.nodeKindProvider.getSymbolKind(ei)}}var minIndent$1,hasRequiredMinIndent;function requireMinIndent(){return hasRequiredMinIndent||(hasRequiredMinIndent=1,minIndent$1=ti=>{const ei=ti.match(/^[ \t]*(?=\S)/gm);return ei?ei.reduce((ni,ri)=>Math.min(ni,ri.length),1/0):0}),minIndent$1}var minIndentExports=requireMinIndent();const minIndent=getDefaultExportFromCjs(minIndentExports);function stripIndent(ti){const ei=minIndent(ti);if(ei===0)return ti;const ni=new RegExp(`^[ \\t]{${ei}}`,"gm");return ti.replace(ni,"")}class LikeC4HoverProvider extends AstNodeHoverProvider{parser;locator;constructor(ei){super(ei),this.parser=ei.likec4.ModelParser,this.locator=ei.likec4.ModelLocator}getAstNodeHoverContent(ei){if(isTag(ei))return{contents:{kind:"markdown",value:stripIndent(`
239
+ }`});if(ni.value==="autoLayout")return ri(ei,{label:ni.value,kind:CompletionItemKind.Class,insertTextFormat:InsertTextFormat.Snippet,insertText:"autoLayout ${1|TopBottom,BottomTop,LeftRight,RightLeft|}$0"});ri(ei,{label:ni.value,kind:this.getKeywordCompletionItemKind(ni),detail:"Keyword",sortText:"1"})}}}class LikeC4DocumentHighlightProvider extends DefaultDocumentHighlightProvider{createDocumentHighlight(ei){return mainExports$2.DocumentHighlight.create(ei.segment.range,mainExports$2.DocumentHighlightKind.Read)}}const PROTOCOL_STRICT_REGEX=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,PROTOCOL_REGEX=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,PROTOCOL_RELATIVE_REGEX=/^([/\\]\s*){2,}[^/\\]/;function isRelative(ti){return["./","../"].some(ei=>ti.startsWith(ei))}function hasProtocol(ti,ei={}){return typeof ei=="boolean"&&(ei={acceptRelative:ei}),ei.strict?PROTOCOL_STRICT_REGEX.test(ti):PROTOCOL_REGEX.test(ti)||(ei.acceptRelative?PROTOCOL_RELATIVE_REGEX.test(ti):!1)}function hasTrailingSlash(ti="",ei){return ti.endsWith("/")}function withoutTrailingSlash(ti="",ei){return(hasTrailingSlash(ti)?ti.slice(0,-1):ti)||"/"}function withTrailingSlash(ti="",ei){return ti.endsWith("/")?ti:ti+"/"}function hasLeadingSlash(ti=""){return ti.startsWith("/")}function withoutLeadingSlash(ti=""){return(hasLeadingSlash(ti)?ti.slice(1):ti)||"/"}function withLeadingSlash(ti=""){return hasLeadingSlash(ti)?ti:"/"+ti}function withoutBase(ti,ei){if(isEmptyURL(ei))return ti;const ni=withoutTrailingSlash(ei);if(!ti.startsWith(ni))return ti;const ri=ti.slice(ni.length);return ri[0]==="/"?ri:"/"+ri}function isEmptyURL(ti){return!ti||ti==="/"}function parsePath(ti=""){const[ei="",ni="",ri=""]=(ti.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:ei,search:ni,hash:ri}}class LikeC4DocumentLinkProvider{constructor(ei){this.services=ei}getDocumentLinks(ei,ni){return isParsedLikeC4LangiumDocument(ei)?streamAllContents(ei.parseResult.value).filter(isLinkProperty).map(ri=>{try{const ii=findNodeForProperty(ri.$cstNode,"value")?.range,si=this.resolveLink(ei,ri.value);if(ii&&hasProtocol(si))return{range:ii,target:si}}catch(ii){logWarnError(ii)}return null}).nonNullable().toArray():[]}resolveLink(ei,ni){if(hasProtocol(ni)||hasLeadingSlash(ni))return ni;const ri=isRelative(ni)?new URL(ei.uri.toString(!0)):this.services.shared.workspace.WorkspaceManager.workspaceURL;return new URL(ni,ri).toString()}relativeLink(ei,ni){if(hasLeadingSlash(ni))return withoutLeadingSlash(ni);if(isRelative(ni)){const ri=new URL(ei.uri.toString(!0)),ii=new URL(ni,ri).toString();return withoutLeadingSlash(withoutBase(ii,this.services.shared.workspace.WorkspaceManager.workspaceURL.toString()))}return null}}class LikeC4DocumentSymbolProvider{constructor(ei){this.services=ei,this.nodeKindProvider=ei.shared.lsp.NodeKindProvider,this.parser=ei.likec4.ModelParser,this.locator=ei.likec4.ModelLocator,this.nameProvider=ei.references.NameProvider}nodeKindProvider;nameProvider;parser;locator;getSymbols({parseResult:{value:{specifications:ei,models:ni,deployments:ri,views:ii,likec4lib:si}}}){return[...si.map(oi=>()=>this.getLikec4LibSymbol(oi)),...ei.map(oi=>()=>this.getSpecSymbol(oi)),...ni.map(oi=>()=>this.getModelSymbol(oi)),...ri.map(oi=>()=>this.getDeploymentModelSymbol(oi)),...ii.map(oi=>()=>this.getModelViewsSymbol(oi))].flatMap(oi=>{try{return oi()??[]}catch(ai){return logWarnError(ai),[]}})}getLikec4LibSymbol(ei){const ni=ei?.$cstNode;if(!ni)return[];const ri=ei.icons.map(ii=>this.getLibIconSymbol(ii)).filter(n$7);return ri.length===0?[]:[{kind:SymbolKind.Namespace,name:"icons",range:ni.range,selectionRange:findNodeForKeyword(ni,"icons")?.range??ni.range,children:ri}]}getSpecSymbol(ei){const ni=ei?.$cstNode;if(!ni)return[];const ri=findNodeForProperty(ni,"name");if(!ri)return[];const ii=x$1([...ei.elements,...ei.tags,...ei.relationships],m$1(si=>{try{if(isSpecificationElementKind(si)||isSpecificationRelationshipKind(si)||isSpecificationDeploymentNodeKind(si))return this.getKindSymbol(si);if(isSpecificationTag(si))return this.getTagSymbol(si)}catch(oi){return logWarnError(oi),null}index_KOeaSlL8.n(si)}),T$2(n$7));return ii.length===0?[]:[{kind:SymbolKind.Namespace,name:ei.name,range:ni.range,selectionRange:ri.range,children:ii}]}getModelSymbol(ei){const ni=ei.$cstNode;if(!ni)return[];const ri=findNodeForProperty(ni,"name");return ri?[{kind:this.symbolKind(ei),name:ei.name,range:ni.range,selectionRange:ri.range,children:ei.elements.flatMap(ii=>this.getElementsSymbol(ii))}]:[]}getDeploymentModelSymbol(ei){const ni=ei.$cstNode;if(!ni)return[];const ri=findNodeForProperty(ni,"name");return ri?[{kind:this.symbolKind(ei),name:ei.name,range:ni.range,selectionRange:ri.range,children:ei.elements.flatMap(ii=>this.getDeploymentElementSymbol(ii))}]:[]}getElementsSymbol(ei){try{if(isExtendElement(ei))return this.getExtendElementSymbol(ei);if(isElement(ei))return this.getElementSymbol(ei)}catch(ni){logWarnError(ni)}return[]}getExtendElementSymbol(ei){const ni=ei.$cstNode,ri=ei.element.$cstNode,ii=ei.body;return!ni||!ri?[]:[{kind:this.symbolKind(ei),name:getFqnElementRef(ei.element),range:ni.range,selectionRange:ri.range,children:ii.elements.flatMap(si=>this.getElementsSymbol(si))}]}getElementSymbol(ei){const ni=ei.$cstNode,ri=findNodeForProperty(ni,"name");if(!ri||!ni)return[];const ii=ei.name,si=ei.kind.$refText;return[{kind:this.symbolKind(ei),name:ii,range:ni.range,selectionRange:ri.range,detail:si,children:ei.body?.elements.flatMap(oi=>this.getElementsSymbol(oi))??[]}]}getModelViewsSymbol(ei){const ni=ei.$cstNode,ri=findNodeForProperty(ni,"name");return!ri||!ni?[]:[{kind:this.symbolKind(ei),name:ei.name,range:ni.range,selectionRange:ri.range,children:ei.views.flatMap(ii=>this.getViewSymbol(ii))}]}getKindSymbol(ei){return!ei.$cstNode||!ei.kind.$cstNode||n$4(ei.kind.name)?null:{kind:this.symbolKind(ei),name:ei.kind.name,range:ei.$cstNode.range,selectionRange:ei.kind.$cstNode.range}}getTagSymbol(ei){return!ei.$cstNode||!ei.tag.$cstNode||n$4(ei.tag.name)?null:{kind:this.symbolKind(ei),name:"#"+ei.tag.name,range:ei.$cstNode.range,selectionRange:ei.tag.$cstNode.range}}getLibIconSymbol(ei){return!ei.$cstNode||n$4(ei.name)?null:{kind:this.symbolKind(ei),name:ei.name,range:ei.$cstNode.range,selectionRange:ei.$cstNode.range}}getViewSymbol(ei){const ni=ei?.$cstNode;if(!ni)return[];const ri=ei.name?findNodeForProperty(ni,"name"):null;return ri?[{kind:this.symbolKind(ei),name:ri.text,range:ni.range,selectionRange:ri.range,children:[]}]:[]}getDeploymentElementSymbol(ei){try{if(isDeploymentNode(ei))return this.getDeploymentNodeSymbol(ei);if(isDeployedInstance(ei))return this.getDeployedInstanceSymbol(ei)}catch(ni){logWarnError(ni)}return[]}getDeploymentNodeSymbol(ei){const ni=ei.$cstNode,ri=this.nameProvider.getNameNode(ei);if(!ri||!ni)return[];const ii=this.nameProvider.getNameStrict(ei),si=ei.kind.$refText;return[{kind:this.symbolKind(ei),name:ii,range:ni.range,selectionRange:ri.range,detail:si,children:ei.body?.elements.flatMap(oi=>this.getDeploymentElementSymbol(oi))??[]}]}getDeployedInstanceSymbol(ei){const ni=ei.$cstNode,ri=this.nameProvider.getNameNode(ei);if(!ri||!ni)return[];const ii=getDocument(ei),si=this.parser.forDocument(ii).parseDeployedInstance(ei),oi=this.nameProvider.getNameStrict(ei),ai="instance of "+si.element;return[{kind:this.symbolKind(ei),name:oi,range:ni.range,selectionRange:ri.range,detail:ai,children:[]}]}symbolKind(ei){return this.nodeKindProvider.getSymbolKind(ei)}}var minIndent$1,hasRequiredMinIndent;function requireMinIndent(){return hasRequiredMinIndent||(hasRequiredMinIndent=1,minIndent$1=ti=>{const ei=ti.match(/^[ \t]*(?=\S)/gm);return ei?ei.reduce((ni,ri)=>Math.min(ni,ri.length),1/0):0}),minIndent$1}var minIndentExports=requireMinIndent();const minIndent=getDefaultExportFromCjs(minIndentExports);function stripIndent(ti){const ei=minIndent(ti);if(ei===0)return ti;const ni=new RegExp(`^[ \\t]{${ei}}`,"gm");return ti.replace(ni,"")}class LikeC4HoverProvider extends AstNodeHoverProvider{parser;locator;constructor(ei){super(ei),this.parser=ei.likec4.ModelParser,this.locator=ei.likec4.ModelLocator}getAstNodeHoverContent(ei){if(isTag(ei))return{contents:{kind:"markdown",value:stripIndent(`
240
240
  tag: \`${ei.name}\`
241
241
  `)}};if(isDeploymentNode(ei)){const ni=getDocument(ei),ri=this.parser.forDocument(ni).parseDeploymentNode(ei),ii=[ri.id+" "];return ri.title!==ei.name&&ii.push(`### ${ri.title}`),ii.push("Deployment: `"+ri.kind+"` "),{contents:{kind:"markdown",value:ii.join(`
242
242
  `)}}}if(isDeployedInstance(ei)){const ni=getDocument(ei),ri=this.parser.forDocument(ni).parseDeployedInstance(ei),ii=this.locator.getParsedElement(ri.element),si=[ri.id+" ",`instance of \`${ri.element}\``];return ii&&si.push(`### ${ii.title}`,"Element: `"+ii.kind+"` "),{contents:{kind:"markdown",value:si.join(`
243
243
  `)}}}if(isElement(ei)){const ni=this.locator.getParsedElement(ei);return ni?{contents:{kind:"markdown",value:[ni.id,`### ${ni.title}`,"Element: `"+ni.kind+"` "].join(`
244
- `)}}:void 0}}}class LikeC4SemanticTokenProvider extends AbstractSemanticTokenProvider{highlightElement(ei,ni){if(isElement(ei)||isDeploymentNode(ei))return this.highlightNameAndKind(ei,ni);if(isDeployedInstance(ei)){"name"in ei&&ni({node:ei,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isLikeC4View(ei))return this.highlightView(ei,ni);if(isRelationshipKind(ei))return ni({node:ei,property:"name",type:SemanticTokenTypes.function});if(isLibIcon(ei))return ni({node:ei,property:"name",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]}),"prune";if(isOutgoingRelationExpression(ei)&&"kind"in ei){ni({node:ei,property:"kind",type:SemanticTokenTypes.function});return}if(isRelation(ei)&&"kind"in ei&&ni({node:ei,property:"kind",type:SemanticTokenTypes.function}),isNavigateToProperty(ei)||isRelationNavigateToProperty(ei))return ni({node:ei,property:"key",type:SemanticTokenTypes.property}),ni({node:ei,property:"value",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),"prune";if((isElementDescedantsExpression(ei)||isWildcardExpression(ei))&&ei.$cstNode)return ni({cst:ei.$cstNode,type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),"prune";if(isFqnRefExpr(ei)){ei.selector&&ni({node:ei,property:"selector",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isWhereRelationKind(ei)&&n$7(ei.value)){ni({node:ei,property:"value",type:SemanticTokenTypes.function});return}if((isWhereElement(ei)||isWhereRelation(ei))&&n$7(ei.value)){ni({node:ei,property:"value",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isElementKindExpression(ei)&&n$7(ei.kind))return ni({node:ei,property:"kind",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]}),"prune";if(isElementTagExpression(ei)&&n$7(ei.tag))return ni({node:ei,property:"tag",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]}),"prune";if(isFqnRef(ei))return ni({node:ei,property:"value",type:ei.parent?SemanticTokenTypes.property:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),ei.parent?void 0:"prune";if(isElementRef(ei)||isFqnElementRef(ei))return ni({node:ei,property:"el",type:ei.parent?SemanticTokenTypes.property:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),ei.parent?void 0:"prune";if(isSpecificationColor(ei)){ni({node:ei,keyword:"color",type:SemanticTokenTypes.keyword}),ni({node:ei,property:"name",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly]});return}if((isSpecificationElementKind(ei)||isSpecificationRelationshipKind(ei)||isSpecificationDeploymentNodeKind(ei))&&ni({node:ei,property:"kind",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly]}),isTags(ei))return ni({node:ei,property:"values",type:SemanticTokenTypes.interface});if(isTag(ei))return ni({node:ei,property:"name",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]});if((isRelationStyleProperty(ei)||isElementStyleProperty(ei)&&isElementBody(ei.$container))&&ni({node:ei,property:"key",type:SemanticTokenTypes.property}),isOpacityProperty(ei))return ni({node:ei,property:"key",type:SemanticTokenTypes.property}),ni({node:ei,property:"value",type:SemanticTokenTypes.number}),"prune";if(isLinkProperty(ei)||isIconProperty(ei)||isStringProperty(ei))return ni({node:ei,property:"key",type:SemanticTokenTypes.property}),isIconProperty(ei)&&(ei.libicon||ei.value==="none")?(ni({node:ei,property:ei.libicon?"libicon":"value",type:SemanticTokenTypes.enum,modifier:[SemanticTokenModifiers.defaultLibrary]}),"prune"):("value"in ei&&ei.value&&ni({node:ei,property:"value",type:SemanticTokenTypes.string}),"prune");if(isColorProperty(ei)||isShapeProperty(ei)||isArrowProperty(ei)||isLineProperty(ei)||isBorderProperty(ei))return ni({node:ei,property:"key",type:SemanticTokenTypes.property}),"value"in ei&&ni({node:ei,property:"value",type:SemanticTokenTypes.enum}),"prune"}highlightNameAndKind(ei,ni){ni({node:ei,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly]}),ni({node:ei,property:"kind",type:SemanticTokenTypes.keyword,modifier:[]})}highlightView(ei,ni){ei.name&&ni({node:ei,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly,"local"]})}}const S$1=Symbol.for("DeploymentsIndex");class DeploymentsIndex{constructor(ei){this.services=ei,this.Names=ei.references.NameProvider,this.langiumDocuments=ei.shared.workspace.LangiumDocuments,ei.shared.workspace.DocumentBuilder.onBuildPhase(DocumentState.IndexedContent,(ni,ri)=>{for(const ii of ni)delete ii[S$1]})}Names;langiumDocuments;documents(){return this.langiumDocuments.all.filter(ei=>isLikeC4LangiumDocument(ei)&&ei.state>=DocumentState.IndexedContent)}get(ei){return ei.state<DocumentState.IndexedContent&&logWarnError(`Document ${ei.uri.path} is not indexed`),ei[S$1]??=this.createDocumentIndex(ei)}nested(ei){const ni=this.getFqn(ei);return this.documents().flatMap(ri=>this.get(ri).nested(ni))}byFqn(ei){return this.documents().flatMap(ni=>this.get(ni).byFqn(ei))}getFqn(ei){let ni=ElementOps.readId(ei);if(n$7(ni))return ni;const ri=[this.Names.getNameStrict(ei)];let ii=ei,si;for(;si=getContainerOfType(ii.$container,isDeploymentNode);)ri.push(this.Names.getNameStrict(si)),ii=si;return ni=ri.reduceRight((oi,ai)=>`${oi}.${ai}`),ElementOps.writeId(ei,ni),ni}createDocumentIndex(ei){const ni=ei.parseResult.value.deployments.flatMap(li=>li.elements);if(ni.length===0)return DocumentDeploymentsIndex.EMPTY;const ri=new Array,ii=new MultiMap,si=new MultiMap,oi=this.Names,ai=this.services.workspace.AstNodeDescriptionProvider,ci=li=>{const di={...ai.createDescription(li.node,li.name,ei),fqn:li.fqn};return ElementOps.writeId(li.node,li.fqn),si.add(li.fqn,di),di},ui=(li,di)=>{const fi=[],pi=li.body?.elements;if(!pi||pi.length===0)return[];const hi=new Set;for(const vi of pi)if(!isDeploymentRelation(vi))try{const bi=oi.getName(vi);if(n$7(bi)){const gi=`${di}.${bi}`,wi=ci({node:vi,name:bi,fqn:gi});ii.add(di,wi),hi.add(wi.name),isDeploymentNode(vi)&&vi.body&&fi.push(...ui(vi,gi))}}catch(bi){logWarnError(bi)}return fi.length>0&&x$1(fi,i$5(p$8("name")),i$6((vi,bi)=>{vi.length>1||hi.has(bi)||ii.add(di,vi[0])})),ii.get(di)};for(const li of ni)try{if(isDeploymentRelation(li))continue;const di=oi.getName(li);n$7(di)&&(ri.push(ci({node:li,name:di,fqn:di})),ui(li,di))}catch(di){logWarnError(di)}return new DocumentDeploymentsIndex(ri,ii,si)}}class DocumentDeploymentsIndex{constructor(ei,ni,ri){this._rootNodes=ei,this._nested=ni,this._byfqn=ri}static EMPTY=new DocumentDeploymentsIndex([],new MultiMap,new MultiMap);rootNodes(){return this._rootNodes}byFqn(ei){return this._byfqn.get(ei)}nested(ei){return this._nested.get(ei)}unique(){const ei=[];return x$1([...this._byfqn.values()],i$5(p$8("name")),i$6(ni=>{ni.length===1&&ei.push(ni[0])})),ei}}const{findNodeForProperty:R$1}=c$4,{toDocumentSegment:d}=q$1;function w$2(ti,ei,ni){const ri=R$1(ei.$cstNode,"name");return{documentUri:ni.uri,name:ei.name,...ei.$cstNode&&{selectionSegment:d(ei.$cstNode)},...ri&&{nameSegment:d(ri)},path:ti.getAstNodePath(ei),type:Element}}function computeDocumentFqn(ti,ei){const ni=ti.c4fqnIndex=new MultiMap,ri=ti.parseResult.value.models.flatMap(ai=>ai.elements);if(ri.length===0)return;const ii=ei.workspace.AstNodeLocator,si=S$3.from(ri.map(ai=>[ai,null]));let oi;for(;oi=si.shift();)try{const[ai,ci]=oi;if(isRelation(ai))continue;if(isExtendElement(ai)){if(n$5(ai.body)&&!n$4(ai.body.elements)){const ui=getFqnElementRef(ai.element);for(const li of ai.body.elements)isRelation(li)||si.push([li,ui])}continue}if(isElement(ai)){const ui=index_DafVOuVd.X(ai.name,ci);if(ni.add(ui,{...w$2(ii,ai,ti),fqn:ui}),ElementOps.writeId(ai,ui),n$5(ai.body)&&!n$4(ai.body.elements))for(const li of ai.body.elements)isRelation(li)||si.push([li,ui]);continue}index_DafVOuVd.l(ai)}catch(ai){logError$1(ai)}}class FqnIndex{constructor(ei){this.services=ei,this.langiumDocuments=ei.shared.workspace.LangiumDocuments,ei.shared.workspace.DocumentBuilder.onBuildPhase(DocumentState.IndexedContent,async(ni,ri)=>{for(const ii of ni)if(isLikeC4LangiumDocument(ii)){delete ii.c4fqnIndex,delete ii.c4Elements,delete ii.c4Specification,delete ii.c4Relations,delete ii.c4Views;try{computeDocumentFqn(ii,ei)}catch(si){logWarnError(si)}}return await Promise.resolve()}),logger.debug("[FqnIndex] Created")}langiumDocuments;get documents(){return this.langiumDocuments.all.filter(isFqnIndexedDocument)}entries(ei){return this.documents.flatMap(ni=>ni.c4fqnIndex.keys().filter(ei).flatMap(ri=>ni.c4fqnIndex.get(ri)))}getFqn(ei){return ElementOps.readId(ei)??null}byFqn(ei){return this.documents.flatMap(ni=>ni.c4fqnIndex.get(ei))}directChildrenOf(ei){return stream([ei]).flatMap(ni=>{const ri=this.entries(ii=>index_DafVOuVd.S(ii)===ni).map(ii=>[ii.name,ii]).toArray();return ri.length===0?[]:new MultiMap(ri).entriesGroupedByKey().flatMap(([ii,si])=>si.length===1?si:[]).iterator()})}uniqueDescedants(ei){return new StreamImpl(()=>{const ni=`${ei}.`,ri=new Set,ii=[],si=new MultiMap;if(this.entries(oi=>oi.startsWith(ni)).forEach(oi=>{const ai=index_DafVOuVd.N(oi.fqn),ci={...oi,name:ai};index_DafVOuVd.S(oi.fqn)===ei?(ri.add(ai),si.add(ai,ci)):ii.push(ci)}),si.size+ii.length===0)return null;for(const oi of ii)ri.has(oi.name)||si.add(oi.name,oi);return si.entriesGroupedByKey().flatMap(([oi,ai])=>ai.length===1?ai:[]).iterator()},ni=>ni?ni.next():DONE_RESULT)}}function v$2(ti){const ei=new index_DafVOuVd.Y({type:"directed"}),ni=[];for(const ri of index_DafVOuVd.a0(ti))ei.addNode(ri.id,{view:ri}),index_DafVOuVd.a1(ri)&&ni.push(ri);if(ni.length===0)return ti;for(const ri of ni){if(!ei.hasNode(ri.extends)){console.warn(`View "${ri.id}" extends from "${ri.extends}" which does not exist`);continue}if(index_DafVOuVd.a2(ei,ri.id,ri.extends)){console.warn(`View "${ri.id}" extends from "${ri.extends}" which creates a cycle`);continue}ei.addDirectedEdge(ri.id,ri.extends)}return index_DafVOuVd.a3.topologicalSort(ei).reverse().reduce((ri,ii)=>{const si=ei.getNodeAttribute(ii,"view");if(!index_DafVOuVd.a1(si))return ri[si.id]=si,ri;const oi=ri[si.extends];return!oi||!index_DafVOuVd.a4(oi)||(ri[si.id]={...oi,...si,rules:[...oi.rules,...si.rules]}),ri},{})}var getOwnPropertyNames=Object.getOwnPropertyNames,getOwnPropertySymbols=Object.getOwnPropertySymbols,hasOwnProperty=Object.prototype.hasOwnProperty;function combineComparators(ti,ei){return function(ri,ii,si){return ti(ri,ii,si)&&ei(ri,ii,si)}}function createIsCircular(ti){return function(ni,ri,ii){if(!ni||!ri||typeof ni!="object"||typeof ri!="object")return ti(ni,ri,ii);var si=ii.cache,oi=si.get(ni),ai=si.get(ri);if(oi&&ai)return oi===ri&&ai===ni;si.set(ni,ri),si.set(ri,ni);var ci=ti(ni,ri,ii);return si.delete(ni),si.delete(ri),ci}}function getStrictProperties(ti){return getOwnPropertyNames(ti).concat(getOwnPropertySymbols(ti))}var hasOwn=Object.hasOwn||function(ti,ei){return hasOwnProperty.call(ti,ei)};function sameValueZeroEqual(ti,ei){return ti||ei?ti===ei:ti===ei||ti!==ti&&ei!==ei}var OWNER="_owner",getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,keys=Object.keys;function areArraysEqual(ti,ei,ni){var ri=ti.length;if(ei.length!==ri)return!1;for(;ri-- >0;)if(!ni.equals(ti[ri],ei[ri],ri,ri,ti,ei,ni))return!1;return!0}function areDatesEqual(ti,ei){return sameValueZeroEqual(ti.getTime(),ei.getTime())}function areMapsEqual(ti,ei,ni){if(ti.size!==ei.size)return!1;for(var ri={},ii=ti.entries(),si=0,oi,ai;(oi=ii.next())&&!oi.done;){for(var ci=ei.entries(),ui=!1,li=0;(ai=ci.next())&&!ai.done;){var di=oi.value,fi=di[0],pi=di[1],hi=ai.value,vi=hi[0],bi=hi[1];!ui&&!ri[li]&&(ui=ni.equals(fi,vi,si,li,ti,ei,ni)&&ni.equals(pi,bi,fi,vi,ti,ei,ni))&&(ri[li]=!0),li++}if(!ui)return!1;si++}return!0}function areObjectsEqual(ti,ei,ni){var ri=keys(ti),ii=ri.length;if(keys(ei).length!==ii)return!1;for(var si;ii-- >0;)if(si=ri[ii],si===OWNER&&(ti.$$typeof||ei.$$typeof)&&ti.$$typeof!==ei.$$typeof||!hasOwn(ei,si)||!ni.equals(ti[si],ei[si],si,si,ti,ei,ni))return!1;return!0}function areObjectsEqualStrict(ti,ei,ni){var ri=getStrictProperties(ti),ii=ri.length;if(getStrictProperties(ei).length!==ii)return!1;for(var si,oi,ai;ii-- >0;)if(si=ri[ii],si===OWNER&&(ti.$$typeof||ei.$$typeof)&&ti.$$typeof!==ei.$$typeof||!hasOwn(ei,si)||!ni.equals(ti[si],ei[si],si,si,ti,ei,ni)||(oi=getOwnPropertyDescriptor(ti,si),ai=getOwnPropertyDescriptor(ei,si),(oi||ai)&&(!oi||!ai||oi.configurable!==ai.configurable||oi.enumerable!==ai.enumerable||oi.writable!==ai.writable)))return!1;return!0}function arePrimitiveWrappersEqual(ti,ei){return sameValueZeroEqual(ti.valueOf(),ei.valueOf())}function areRegExpsEqual(ti,ei){return ti.source===ei.source&&ti.flags===ei.flags}function areSetsEqual(ti,ei,ni){if(ti.size!==ei.size)return!1;for(var ri={},ii=ti.values(),si,oi;(si=ii.next())&&!si.done;){for(var ai=ei.values(),ci=!1,ui=0;(oi=ai.next())&&!oi.done;)!ci&&!ri[ui]&&(ci=ni.equals(si.value,oi.value,si.value,oi.value,ti,ei,ni))&&(ri[ui]=!0),ui++;if(!ci)return!1}return!0}function areTypedArraysEqual(ti,ei){var ni=ti.length;if(ei.length!==ni)return!1;for(;ni-- >0;)if(ti[ni]!==ei[ni])return!1;return!0}var ARGUMENTS_TAG="[object Arguments]",BOOLEAN_TAG="[object Boolean]",DATE_TAG="[object Date]",MAP_TAG="[object Map]",NUMBER_TAG="[object Number]",OBJECT_TAG="[object Object]",REG_EXP_TAG="[object RegExp]",SET_TAG="[object Set]",STRING_TAG="[object String]",isArray=Array.isArray,isTypedArray=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,assign=Object.assign,getTag=Object.prototype.toString.call.bind(Object.prototype.toString);function createEqualityComparator(ti){var ei=ti.areArraysEqual,ni=ti.areDatesEqual,ri=ti.areMapsEqual,ii=ti.areObjectsEqual,si=ti.arePrimitiveWrappersEqual,oi=ti.areRegExpsEqual,ai=ti.areSetsEqual,ci=ti.areTypedArraysEqual;return function(li,di,fi){if(li===di)return!0;if(li==null||di==null||typeof li!="object"||typeof di!="object")return li!==li&&di!==di;var pi=li.constructor;if(pi!==di.constructor)return!1;if(pi===Object)return ii(li,di,fi);if(isArray(li))return ei(li,di,fi);if(isTypedArray!=null&&isTypedArray(li))return ci(li,di,fi);if(pi===Date)return ni(li,di,fi);if(pi===RegExp)return oi(li,di,fi);if(pi===Map)return ri(li,di,fi);if(pi===Set)return ai(li,di,fi);var hi=getTag(li);return hi===DATE_TAG?ni(li,di,fi):hi===REG_EXP_TAG?oi(li,di,fi):hi===MAP_TAG?ri(li,di,fi):hi===SET_TAG?ai(li,di,fi):hi===OBJECT_TAG?typeof li.then!="function"&&typeof di.then!="function"&&ii(li,di,fi):hi===ARGUMENTS_TAG?ii(li,di,fi):hi===BOOLEAN_TAG||hi===NUMBER_TAG||hi===STRING_TAG?si(li,di,fi):!1}}function createEqualityComparatorConfig(ti){var ei=ti.circular,ni=ti.createCustomConfig,ri=ti.strict,ii={areArraysEqual:ri?areObjectsEqualStrict:areArraysEqual,areDatesEqual,areMapsEqual:ri?combineComparators(areMapsEqual,areObjectsEqualStrict):areMapsEqual,areObjectsEqual:ri?areObjectsEqualStrict:areObjectsEqual,arePrimitiveWrappersEqual,areRegExpsEqual,areSetsEqual:ri?combineComparators(areSetsEqual,areObjectsEqualStrict):areSetsEqual,areTypedArraysEqual:ri?areObjectsEqualStrict:areTypedArraysEqual};if(ni&&(ii=assign({},ii,ni(ii))),ei){var si=createIsCircular(ii.areArraysEqual),oi=createIsCircular(ii.areMapsEqual),ai=createIsCircular(ii.areObjectsEqual),ci=createIsCircular(ii.areSetsEqual);ii=assign({},ii,{areArraysEqual:si,areMapsEqual:oi,areObjectsEqual:ai,areSetsEqual:ci})}return ii}function createInternalEqualityComparator(ti){return function(ei,ni,ri,ii,si,oi,ai){return ti(ei,ni,ai)}}function createIsEqual(ti){var ei=ti.circular,ni=ti.comparator,ri=ti.createState,ii=ti.equals,si=ti.strict;if(ri)return function(ci,ui){var li=ri(),di=li.cache,fi=di===void 0?ei?new WeakMap:void 0:di,pi=li.meta;return ni(ci,ui,{cache:fi,equals:ii,meta:pi,strict:si})};if(ei)return function(ci,ui){return ni(ci,ui,{cache:new WeakMap,equals:ii,meta:void 0,strict:si})};var oi={cache:void 0,equals:ii,meta:void 0,strict:si};return function(ci,ui){return ni(ci,ui,oi)}}var deepEqual=createCustomEqual();createCustomEqual({strict:!0}),createCustomEqual({circular:!0}),createCustomEqual({circular:!0,strict:!0}),createCustomEqual({createInternalComparator:function(){return sameValueZeroEqual}}),createCustomEqual({strict:!0,createInternalComparator:function(){return sameValueZeroEqual}}),createCustomEqual({circular:!0,createInternalComparator:function(){return sameValueZeroEqual}}),createCustomEqual({circular:!0,createInternalComparator:function(){return sameValueZeroEqual},strict:!0});function createCustomEqual(ti){ti===void 0&&(ti={});var ei=ti.circular,ni=ei===void 0?!1:ei,ri=ti.createInternalComparator,ii=ti.createState,si=ti.strict,oi=si===void 0?!1:si,ai=createEqualityComparatorConfig(ti),ci=createEqualityComparator(ai),ui=ri?ri(ci):createInternalEqualityComparator(ci);return createIsEqual({circular:ni,comparator:ci,createState:ii,equals:ui,strict:oi})}function assignNavigateTo(ti){const ei=new Map;for(const ni of ti)if(index_DafVOuVd.v.isElement(ni)&&ni.viewOf&&n$6(ni.extends)){const ri=ei.get(ni.viewOf)??[];ri.push(ni.id),ei.set(ni.viewOf,ri)}for(const{id:ni,nodes:ri}of ti)for(const ii of ri){const si=index_DafVOuVd.h.modelRef(ii);if(ii.navigateTo||!si)continue;const oi=f$6(ei.get(si)??[],ai=>ai!==ni);oi&&(ii.navigateTo=oi)}return ti}function v$1(ti,ei="/"){const ni=x$1(ti,m$1(ci=>ci.docUri),T$2(n$7),i$b());if(ni.length===0)return"";if(ni.length===1){const ci=parsePath(ni[0]).pathname.split(ei);return ci.length<=1?ei:(ci.pop(),ci.join(ei)+ei)}index_DafVOuVd.u(i$a(ni,2),"Expected at least 2 unique URIs");const[ri,...ii]=ni,si=parsePath(ri).pathname.split(ei);let oi=si.length;for(const ci of ii){if(ci===ri)continue;const ui=parsePath(ci).pathname.split(ei);for(let li=0;li<oi;li++)ui[li]!==si[li]&&(oi=li);if(oi===0)return""}const ai=si.slice(0,oi).join(ei);return ai.endsWith(ei)?ai:ai+ei}function resolveRelativePaths(ti){const ei="/",ni=v$1(ti,ei);return ti.map(ri=>{if(!ri.docUri)return{view:ri,parts:[]};let ii=parsePath(ri.docUri).pathname;return ni.length>0?(index_DafVOuVd.u(ii.startsWith(ni),`Expect path "${ii}" to start with common prefix: "${ni}"`),ii=ii.slice(ni.length)):ii=ii.includes(ei)?ii.slice(ii.lastIndexOf(ei)+1):ii,{view:ri,parts:ii.split(ei)}}).sort((ri,ii)=>{if(ri.parts.length!==ii.parts.length)return ri.parts.length-ii.parts.length;for(let si=0;si<ri.parts.length;si++){const oi=index_DafVOuVd.k(ri.parts[si],ii.parts[si]);if(oi!==0)return oi}return index_DafVOuVd.k(ri.view.title??ri.view.id,ii.view.title??ii.view.id)}).map(({parts:ri,view:ii})=>({...ii,relativePath:ri.join(ei)}))}function ve(ti,ei){const ni={tags:new Set,deployments:{},elements:{},relationships:{},colors:{}},ri={predicates:{},dynamicPredicates:{},styles:{}};for(const gi of ei){const{c4Specification:wi,c4Globals:Ri}=gi;wi.tags.forEach(ki=>ni.tags.add(ki)),Object.assign(ni.elements,wi.elements),Object.assign(ni.relationships,wi.relationships),Object.assign(ni.colors,wi.colors),Object.assign(ni.deployments,wi.deployments),Object.assign(ri.predicates,Ri.predicates),Object.assign(ri.dynamicPredicates,Ri.dynamicPredicates),Object.assign(ri.styles,Ri.styles)}function ii(gi,wi){return m$1(wi,Ri=>{try{const ki=ti.lsp.DocumentLinkProvider.relativeLink(gi,Ri.url);if(ki&&ki!==Ri.url)return{...Ri,relative:ki}}catch(ki){logWarnError(ki)}return Ri})}const si=i$8(ni.colors,gi=>t0(gi.color));function oi(gi){return({tags:wi,links:Ri,style:{color:ki,shape:Ai,icon:Ni,opacity:_i,border:Mi},id:Bi,kind:Xi,title:Ii,description:Ti,technology:$i,metadata:Fi})=>{try{const Wi=ni.elements[Xi];if(!Wi)return logger.warn(`No kind '${Xi}' found for ${Bi}`),null;const Gi=Ri?ii(gi,Ri):null;return ki??=Wi.style.color,Ai??=Wi.style.shape,Ni??=Wi.style.icon,_i??=Wi.style.opacity,Mi??=Wi.style.border,$i??=Wi.technology,{...ki&&{color:ki},...Ai&&{shape:Ai},...Ni&&{icon:Ni},...Fi&&!n$4(Fi)&&{metadata:Fi},...Wi.notation&&{notation:Wi.notation},style:{...Mi&&{border:Mi},...e$2(_i)&&{opacity:_i}},links:Gi,tags:wi??null,technology:$i??null,description:Ti??null,title:Ii,kind:Xi,id:Bi}}catch(Wi){logWarnError(Wi)}return null}}const ai=x$1(ei,u$5(gi=>m$1(gi.c4Elements,oi(gi))),T$2(n$7),index_DafVOuVd.a5,l$8((gi,wi)=>{const Ri=index_DafVOuVd.S(wi.id);return Ri&&n$6(gi[Ri])?(logWarnError(`No parent found for ${wi.id}`),gi):(gi[wi.id]=wi,gi)},{}));function ci(gi){return({astPath:wi,source:Ri,target:ki,kind:Ai,links:Ni,id:_i,...Mi})=>{if(n$6(ai[Ri])||n$6(ai[ki]))return logger.warn(`Invalid relation ${_i} at ${gi.uri.path} ${wi}, source: ${Ri}(${!!ai[Ri]}), target: ${ki}(${!!ai[ki]})`),null;const Bi=Ni?ii(gi,Ni):null;return l$6(Ai)&&Ai in ni.relationships?{...ni.relationships[Ai],...Mi,...Bi&&{links:Bi},source:Ri,target:ki,kind:Ai,id:_i}:{...Bi&&{links:Bi},...Mi,source:Ri,target:ki,id:_i}}}const ui=x$1(ei,u$5(gi=>m$1(gi.c4Relations,ci(gi))),T$2(n$7),m$2(k$3),t$6(),c$3(p$8("id")));function li(gi){return wi=>{if(!index_DafVOuVd.a7.isDeploymentNode(wi)){if(!wi.links||wi.links.length===0)return wi;const Ri=ii(gi,wi.links);return{...wi,links:Ri}}try{const Ri=ni.deployments[wi.kind];if(!Ri)return logger.warn(`No kind '${wi.kind}' found for ${wi.id}`),null;let{technology:ki=Ri.technology,notation:Ai=Ri.notation,links:Ni,style:_i}=wi;return{...wi,...Ai&&{notation:Ai},...ki&&{technology:ki},style:{border:"dashed",opacity:10,...Ri.style,..._i},links:Ni?ii(gi,Ni):null}}catch(Ri){logWarnError(Ri)}return null}}const di=x$1(ei,u$5(gi=>m$1(gi.c4Deployments,li(gi))),T$2(n$7),index_DafVOuVd.a5,l$8((gi,wi)=>{const Ri=index_DafVOuVd.S(wi.id);return Ri&&n$6(gi[Ri])?(logWarnError(`No parent found for deployment element ${wi.id}`),gi):(gi[wi.id]=wi,gi)},{}));function fi(gi){return({astPath:wi,source:Ri,target:ki,kind:Ai,links:Ni,id:_i,...Mi})=>{if(n$6(di[Ri.id])||n$6(di[ki.id]))return logger.warn(`Invalid deployment relation ${_i} at ${gi.uri.path} ${wi}, source: ${Ri.id}(${!!di[Ri.id]}), target: ${ki.id}(${!!di[ki.id]})`),null;const Bi=Ni?ii(gi,Ni):null;return l$6(Ai)&&Ai in ni.relationships?{...ni.relationships[Ai],...Mi,...Bi&&{links:Bi},source:Ri,target:ki,kind:Ai,id:_i}:{...Bi&&{links:Bi},...Mi,source:Ri,target:ki,id:_i}}}const pi=x$1(ei,u$5(gi=>m$1(gi.c4DeploymentRelations,fi(gi))),T$2(n$7),l$8((gi,wi)=>n$5(gi[wi.id])?(logWarnError(`Duplicate deployment relation ${wi.id}`),gi):(gi[wi.id]=wi,gi),{}));function hi(gi){const wi=gi.uri.toString();return Ri=>{let{id:ki,title:Ai,description:Ni,tags:_i,links:Mi,astPath:Bi,...Xi}=Ri;Ri.__==="element"&&n$6(Ai)&&"viewOf"in Ri&&(Ai=ai[Ri.viewOf]?.title??null),n$6(Ai)&&ki==="index"&&(Ai="Landscape view");const Ii=Mi?ii(gi,Mi):null;return{...Xi,customColorDefinitions:si,tags:_i,links:Ii,docUri:wi,description:Ni,title:Ai,id:ki}}}const vi=x$1(ei,u$5(gi=>m$1(gi.c4Views,hi(gi))),resolveRelativePaths);vi.some(gi=>gi.id==="index")||vi.unshift({__:"element",id:"index",title:"Landscape view",description:null,tags:null,links:null,customColorDefinitions:si,rules:[{include:[{wildcard:!0}]}]});const bi=x$1(vi,c$3(p$8("id")),v$2);return{specification:{tags:Array.from(ni.tags),elements:ni.elements,relationships:ni.relationships,deployments:ni.deployments},elements:ai,relations:ui,globals:ri,views:bi,deployments:{elements:di,relations:pi}}}const G$1="ParsedLikeC4Model",j$1="ComputedLikeC4Model";class LikeC4ModelBuilder{constructor(ei){this.services=ei,this.langiumDocuments=ei.shared.workspace.LangiumDocuments;const ni=ei.likec4.ModelParser;ei.shared.workspace.DocumentBuilder.onUpdate((ri,ii)=>{ii.length>0&&this.notifyListeners(ii)}),ei.shared.workspace.DocumentBuilder.onBuildPhase(DocumentState.Validated,async(ri,ii)=>{let si=[];try{logger.debug(`[ModelBuilder] onValidated (${ri.length} docs)`);for(const oi of ri)si.push(ni.parse(oi).uri)}catch(oi){logWarnError(oi)}return si.length>0&&this.notifyListeners(si),await Promise.resolve()}),logger.debug("[ModelBuilder] Created")}langiumDocuments;listeners=[];unsafeSyncBuildModel(){const ei=this.documents();return ei.length===0?(logger.debug("[ModelBuilder] No documents to build model from"),null):this.services.WorkspaceCache.get(G$1,()=>(logger.debug(`[ModelBuilder] buildModel (${ei.length} docs)`),ve(this.services,ei)))}async buildModel(ei){return this.services.WorkspaceCache.get(G$1)||await this.services.shared.workspace.WorkspaceLock.read(async()=>(ei&&await interruptAndCheck(ei),this.unsafeSyncBuildModel()))}previousViews={};unsafeSyncBuildComputedModel(ei){const ni=this.services.WorkspaceCache,ri=this.services.WorkspaceCache;return ni.get(j$1,()=>{const ii=index_DafVOuVd.j.makeCompute(ei),si=[];for(const ai of r$8(ei.views)){const ci=ii(ai);if(!ci.isSuccess){logWarnError(ci.error);continue}si.push(ci.view)}assignNavigateTo(si);const oi=l$7(si,ai=>{const ci=this.previousViews[ai.id],ui=ci&&deepEqual(ai,ci)?ci:ai;return ri.set(z(ai.id),ui),[ai.id,ui]});return this.previousViews={...oi},{...structuredClone(i$9(ei,["specification","elements","relations","globals","deployments"])),views:oi}})}async buildComputedModel(ei){const ni=this.services.WorkspaceCache;return ni.has(j$1)?ni.get(j$1):await this.services.shared.workspace.WorkspaceLock.read(async()=>{ei&&await interruptAndCheck(ei);const ri=this.unsafeSyncBuildModel();return ri?this.unsafeSyncBuildComputedModel(ri):null})}async computeView(ei,ni){const ri=this.services.WorkspaceCache,ii=z(ei);return ri.has(ii)?ri.get(ii):await this.services.shared.workspace.WorkspaceLock.read(async()=>(ni&&await interruptAndCheck(ni),ri.get(ii,()=>{const si=this.unsafeSyncBuildModel(),oi=si?.views[ei];if(!oi)return logger.warn(`[ModelBuilder] Cannot find view ${ei}`),null;const ai=index_DafVOuVd.j.makeCompute(si)(oi);if(!ai.isSuccess)return logWarnError(ai.error),null;let ci=ai.view;const ui=x$1(si.views,r$8(),T$2(index_DafVOuVd.a6),T$2(di=>di.id!==ei),i$5(di=>di.viewOf));for(const di of ci.nodes)if(!di.navigateTo){const fi=ui[di.id];fi&&(di.navigateTo=fi[0].id)}const li=this.previousViews[ei];return li&&deepEqual(ci,li)?ci=li:this.previousViews[ei]=ci,ci})))}onModelParsed(ei){return this.listeners.push(ei),Disposable.create(()=>{const ni=this.listeners.indexOf(ei);ni>=0&&this.listeners.splice(ni,1)})}documents(){return this.langiumDocuments.all.filter(isParsedLikeC4LangiumDocument).toArray()}notifyListeners(ei){for(const ni of this.listeners)try{ni(ei)}catch(ri){logWarnError(ri)}}}function z(ti){return`computed-view-${ti}`}const{findNodeForKeyword:f$2,findNodeForProperty:s$2}=c$4,{getDocument:g$2}=f$9;class LikeC4ModelLocator{constructor(ei){this.services=ei,this.fqnIndex=ei.likec4.FqnIndex,this.deploymentsIndex=ei.likec4.DeploymentsIndex,this.langiumDocuments=ei.shared.workspace.LangiumDocuments}fqnIndex;deploymentsIndex;langiumDocuments;documents(){return this.langiumDocuments.all.filter(isParsedLikeC4LangiumDocument)}getParsedElement(ei){if(t$4(ei)){const ii=ei,si=this.fqnIndex.byFqn(ei).head();if(!si)return null;const oi=this.langiumDocuments.getDocument(si.documentUri);return!oi||!isParsedLikeC4LangiumDocument(oi)?null:oi.c4Elements.find(ai=>ai.id===ii)??null}const ni=this.fqnIndex.getFqn(ei);if(!ni)return null;const ri=g$2(ei);return isParsedLikeC4LangiumDocument(ri)?ri.c4Elements.find(ii=>ii.id===ni)??null:null}locateElement(ei,ni){const ri=this.fqnIndex.byFqn(ei).head(),ii=ri?.nameSegment??ri?.selectionSegment;return!ri||!ii?null:{uri:ri.documentUri.toString(),range:ii.range}}locateDeploymentElement(ei,ni){const ri=this.deploymentsIndex.byFqn(ei).head(),ii=ri?.nameSegment??ri?.selectionSegment;return!ri||!ii?null:{uri:ri.documentUri.toString(),range:ii.range}}locateRelation(ei){for(const ni of this.documents()){const ri=ni.c4Relations.find(oi=>oi.id===ei)??ni.c4DeploymentRelations.find(oi=>oi.id===ei);if(!ri)continue;const ii=this.services.workspace.AstNodeLocator.getAstNode(ni.parseResult.value,ri.astPath);if(!isRelation(ii)&&!isDeploymentRelation(ii))continue;let si=ii.title?s$2(ii.$cstNode,"title"):void 0;if(si??=ii.kind?s$2(ii.$cstNode,"kind"):void 0,si??=s$2(ii.$cstNode,"target"),si??=ii.$cstNode,!!si)return{uri:ni.uri.toString(),range:si.range}}return null}locateViewAst(ei){for(const ni of this.documents()){const ri=ni.c4Views.find(si=>si.id===ei);if(!ri)continue;const ii=this.services.workspace.AstNodeLocator.getAstNode(ni.parseResult.value,ri.astPath);if(isLikeC4View(ii))return{doc:ni,view:ri,viewAst:ii}}return null}locateView(ei){const ni=this.locateViewAst(ei);if(!ni)return null;const ri=ni.viewAst;let ii=ri.name?s$2(ri.$cstNode,"name"):void 0;return ii??=f$2(ri.$cstNode,"view"),ii??=ri.$cstNode,ii?{uri:ni.doc.uri.toString(),range:ii.range}:null}}var defaultWeakMap,hasRequiredDefaultWeakMap;function requireDefaultWeakMap(){if(hasRequiredDefaultWeakMap)return defaultWeakMap;hasRequiredDefaultWeakMap=1;function ti(ei){if(typeof ei!="function")throw new Error("mnemonist/DefaultWeakMap.constructor: expecting a function.");this.items=new WeakMap,this.factory=ei}return ti.prototype.clear=function(){this.items=new WeakMap},ti.prototype.get=function(ei){var ni=this.items.get(ei);return typeof ni>"u"&&(ni=this.factory(ei),this.items.set(ei,ni)),ni},ti.prototype.peek=function(ei){return this.items.get(ei)},ti.prototype.set=function(ei,ni){return this.items.set(ei,ni),this},ti.prototype.has=function(ei){return this.items.has(ei)},ti.prototype.delete=function(ei){return this.items.delete(ei)},ti.prototype.inspect=function(){return this.items},typeof Symbol<"u"&&(ti.prototype[Symbol.for("nodejs.util.inspect.custom")]=ti.prototype.inspect),defaultWeakMap=ti,defaultWeakMap}var defaultWeakMapExports=requireDefaultWeakMap();const a$3=getDefaultExportFromCjs(defaultWeakMapExports),RESERVED_WORDS=["this","it","self","super","likec4lib","global"];function tryOrLog(ti){return async(ei,ni,ri)=>{try{const ii=ti(ei,ni,ri);e$3(ii)&&await ii}catch(ii){logWarnError(ii)}}}const{getDocument:g$1}=f$9,deploymentNodeChecks=ti=>{const ei=ti.likec4.DeploymentsIndex,ni=ti.references.NameProvider;return tryOrLog((ri,ii)=>{const si=ni.getName(ri);if(!si){ii("error","DeploymentNode must be named",{node:ri});return}const oi=index_DafVOuVd.J(ni.getNameNode(ri),"name CstNode not found").range;RESERVED_WORDS.includes(si)&&ii("error",`Reserved word: ${si}`,{node:ri,range:oi});const ai=ei.getFqn(ri);ei.byFqn(ai).limit(2).toArray().length>1&&ii("error",`Duplicate node name "${ai}"`,{node:ri,range:oi})})},deployedInstanceChecks=ti=>{const ei=ti.likec4.DeploymentsIndex,ni=ti.references.NameProvider;return tryOrLog((ri,ii)=>{const si=ni.getName(ri);if(!si){ii("error","Deployed instance must be named, unique inside node",{node:ri});return}const oi=index_DafVOuVd.J(ni.getNameNode(ri),"name CstNode not found").range;RESERVED_WORDS.includes(si)&&ii("error",`Reserved word: ${si}`,{node:ri,range:oi});const ai=ei.getFqn(ri);ei.byFqn(ai).limit(2).toArray().length>1&&ii("error",`Duplicate instance name "${ai}"`,{node:ri,range:oi})})},deploymentRelationChecks=ti=>{const ei=ti.likec4.ModelParser;return tryOrLog((ni,ri)=>{if(!ni.source?.value?.ref){let ci=ni.source?.$cstNode?.text??"";ri("error",`DeploymentRelation source '${ci}' not resolved`,{node:ni,property:"source"});return}if(!ni.target?.value?.ref){let ci=ni.target?.$cstNode?.text??"";ri("error",`DeploymentRelation target '${ci}' not resolved`,{node:ni,property:"target"});return}const ii=g$1(ni),si=ei.forDocument(ii),oi=si.parseFqnRef(ni.source);if(index_DafVOuVd.a8.isModelRef(oi)){ri("error","DeploymentRelation must refer deployment element",{node:ni,property:"source"});return}const ai=si.parseFqnRef(ni.target);if(index_DafVOuVd.a8.isModelRef(ai)){ri("error","DeploymentRelation must refer deployment element",{node:ni,property:"target"});return}index_DafVOuVd.a9(oi.deployment,ai.deployment)&&ri("error","Invalid parent-child relationship",{node:ni})})},dynamicViewRulePredicate=ti=>tryOrLog((ei,ni)=>{const ri=elementExpressionFromPredicate(ei.value);switch(!0){case isElementKindExpression(ri):case isElementTagExpression(ri):case isWildcardExpression(ri):{ni("warning","Predicate is ignored, as not supported in dynamic views",{node:ei});return}}}),dynamicViewStep=ti=>{const ei=ti.likec4.FqnIndex;return tryOrLog((ni,ri)=>{const ii=elementRef(ni.source),si=ii&&ei.getFqn(ii);si||ri("error","Source not found (not parsed/indexed yet)",{node:ni,property:"source"});const oi=elementRef(ni.target),ai=oi&&ei.getFqn(oi);ai||ri("error","Target not found (not parsed/indexed yet)",{node:ni,property:"target"}),si&&ai&&(index_DafVOuVd.aa(si,ai)||index_DafVOuVd.aa(ai,si))&&ri("error","Invalid parent-child relationship",{node:ni})})},{getDocument:p$2}=f$9,elementChecks=ti=>{const ei=ti.likec4.FqnIndex,ni=ti.workspace.AstNodeLocator;return tryOrLog((ri,ii)=>{const si=ei.getFqn(ri);if(!si){ii("error","Not indexed element",{node:ri,property:"name"});return}RESERVED_WORDS.includes(ri.name)&&ii("error",`Reserved word: ${ri.name}`,{node:ri,property:"name"});const oi=p$2(ri).uri,ai=ni.getAstNodePath(ri),ci=ei.byFqn(si).filter(ui=>ui.documentUri!==oi||ui.path!==ai).head();if(ci){const ui=ci.documentUri!==oi;ii("error",`Duplicate element name ${ri.name!==si?ri.name+" ("+si+")":ri.name}`,{node:ri,property:"name",...ui&&{relatedInformation:[{location:{range:ci.nameSegment?.range??ci.selectionSegment?.range,uri:ci.documentUri.toString()},message:"conflicting element"}]}})}})},opacityPropertyRuleChecks=ti=>tryOrLog((ei,ni)=>{const ri=parseFloat(ei.value);(isNaN(ri)||ri<0||ri>100)&&ni("warning","Value ignored, must be between 0% and 100%",{node:ei,property:"value"})}),iconPropertyRuleChecks=ti=>(ei,ni)=>{const ri=ei.$container;ri.props.some(ii=>isIconProperty(ii)&&ii!==ei)&&ni("error","Icon must be defined once",{node:ei}),isElementStyleProperty(ri)&&isElementBody(ri.$container)&&ri.$container.props.some(ii=>isIconProperty(ii))&&ni("warning","Redundant as icon defined on element",{node:ei})},notesPropertyRuleChecks=ti=>(ei,ni)=>{hasContainerOfType(ei,isDynamicViewStep)||ni("error","Notes can be defined only inside dynamic view",{node:ei})},relationChecks=ti=>{const ei=ti.likec4.FqnIndex;return tryOrLog((ni,ri)=>{const ii=elementRef(ni.target),si=ii&&ei.getFqn(ii);si||ri("error","Target not resolved",{node:ni,property:"target"});let oi;if(n$5(ni.source)){if(oi=elementRef(ni.source),!oi)return ri("error","Source not resolved",{node:ni,property:"source"})}else{if(!isElementBody(ni.$container))return ri("error","Sourceless relation must be nested",{node:ni});oi=ni.$container.$container}const ai=ei.getFqn(oi);ai||ri("error","Source not resolved",{node:ni}),ai&&si&&index_DafVOuVd.a9(ai,si)&&ri("error","Invalid parent-child relationship",{node:ni})})},relationBodyChecks=ti=>tryOrLog((ei,ni)=>{ei.$container.tags?.values&&ei.tags?.values&&ni("error","Relation cannot have tags in both header and body",{node:ei.tags})}),specificationRuleChecks=ti=>tryOrLog((ei,ni)=>{ei.$containerIndex&&ei.$containerIndex>0&&ni("warning","Prefer one specification per document",{node:ei,property:"name"})}),modelRuleChecks=ti=>tryOrLog((ei,ni)=>{ei.$containerIndex&&ei.$containerIndex>0&&ni("warning","Prefer one model per document",{node:ei,property:"name"})}),globalsChecks=ti=>tryOrLog((ei,ni)=>{ei.$containerIndex&&ei.$containerIndex>0&&ni("warning","Prefer one global block per document",{node:ei,property:"name"})}),elementKindChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{RESERVED_WORDS.includes(ni.name)&&ri("error",`Reserved word: ${ni.name}`,{node:ni,property:"name"});const ii=ei.allElements(ElementKind).filter(si=>si.name===ni.name&&si.node!==ni).head();if(ii){const si=ii.documentUri!==getDocument(ni).uri;ri("error",`Duplicate element kind '${ni.name}'`,{node:ni,property:"name",...si&&{relatedInformation:[{location:{range:ii.nameSegment.range,uri:ii.documentUri.toString()},message:"conflicting definition"}]}})}})},tagChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{const ii="#"+ni.name,si=ei.allElements(Tag).filter(oi=>oi.name===ii&&oi.node!==ni).head();if(si){const oi=si.documentUri!==getDocument(ni).uri;ri("error",`Duplicate tag '${ni.name}'`,{node:ni,property:"name",...oi&&{relatedInformation:[{location:{range:si.nameSegment.range,uri:si.documentUri.toString()},message:"conflicting definition"}]}})}})},relationshipChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{RESERVED_WORDS.includes(ni.name)&&ri("error",`Reserved word: ${ni.name}`,{node:ni,property:"name"}),ei.allElements(RelationshipKind).filter(ii=>ii.name===ni.name).limit(2).count()>1&&ri("error",`Duplicate RelationshipKind '${ni.name}'`,{node:ni,property:"name"})})},globalPredicateChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{const ii=ei.allElements(GlobalPredicateGroup),si=ei.allElements(GlobalDynamicPredicateGroup);ii.concat(si).filter(oi=>oi.name===ni.name).limit(2).count()>1&&ri("error",`Duplicate GlobalPredicateGroup or GlobalDynamicPredicateGroup name '${ni.name}'`,{node:ni,property:"name"})})},globalStyleIdChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{ei.allElements(GlobalStyleId).filter(ii=>ii.name===ni.name).limit(2).count()>1&&ri("error",`Duplicate GlobalStyleId name '${ni.name}'`,{node:ni,property:"name"})})},viewChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{ni.name&&(RESERVED_WORDS.includes(ni.name)&&ri("error",`Reserved word: ${ni.name}`,{node:ni,property:"name"}),ei.allElements(LikeC4View).filter(ii=>ii.name===ni.name).limit(2).count()>1&&ri("error",`Duplicate view '${ni.name}'`,{node:ni,property:"name"}))})},elementPredicateWithChecks=ti=>tryOrLog((ei,ni)=>{const ri=getContainerOfType(ei,isViewRulePredicate);isExcludePredicate(ri)&&ni("error",'Invalid usage inside "exclude"',{node:ei});const ii=isElementPredicateWhere(ei.subject)?ei.subject.subject:ei.subject;switch(!0){case isElementRef(ii):case isElementDescedantsExpression(ii):case isExpandElementExpression(ii):case isWildcardExpression(ii):return;case isElementKindExpression(ii):case isElementTagExpression(ii):ni("error","Invalid target (expect reference to specific element)",{node:ei,property:"subject"});return;default:index_DafVOuVd.l(ii)}}),expandElementExprChecks=ti=>tryOrLog((ei,ni)=>{hasContainerOfType(ei,isRelationExpression)&&ni("warning","Redundant usage, expand predicate resolves parent element only when used in relations",{node:ei})}),relationExprChecks=ti=>{const ei=ti.likec4.ModelParser;return tryOrLog((ni,ri)=>{if(ni.$container.$type!=="DeploymentViewRulePredicateExpression")return;const ii=getContainerOfType(ni,isDeploymentViewRulePredicate);if(!ii||ii.isInclude!==!0)return;const si=getDocument(ni),oi=ei.forDocument(si),ai="Model reference is allowed in exclude predicate only";if(isDirectedRelationExpr(ni)){index_DafVOuVd.ab.isModelRef(oi.parseFqnExpr(ni.source.from))&&ri("error",ai,{node:ni.source,property:"from"}),index_DafVOuVd.ab.isModelRef(oi.parseFqnExpr(ni.target))&&ri("error",ai,{node:ni,property:"target"});return}let ci;if(isIncomingRelationExpr(ni)?ci=ni.to:isOutgoingRelationExpr(ni)?ci=ni.from:ci=ni.inout.to,index_DafVOuVd.ab.isModelRef(oi.parseFqnExpr(ci))){ri("error",ai,{node:ni});return}})},fqnRefExprChecks=ti=>{const ei=ti.likec4.ModelParser;return tryOrLog((ni,ri)=>{const ii=ni.ref.value.ref;if(n$6(ii)){ri("error","Invalid empty reference",{node:ni});return}const si=getDocument(ni),oi=ei.forDocument(si).parseFqnRefExpr(ni);if(ni.$container.$type==="DeploymentViewRulePredicateExpression"){if(index_DafVOuVd.ab.isModelRef(oi)){ri("error","Deployment view predicate must reference deployment model",{node:ni});return}if(index_DafVOuVd.ab.isDeploymentRef(oi)&&index_DafVOuVd.a8.isInsideInstanceRef(oi.ref)){ri("error","Must reference deployment nodes or instances, but not internals",{node:ni});return}}!isDeploymentNode(ii)&&l$6(ni.selector)&&ri("warning",`Selector '${ni.selector}' applies to deployment nodes only, ignored here`,{node:ni,property:"selector"})})},incomingExpressionChecks=ti=>tryOrLog((ei,ni)=>{if(isWildcardExpression(ei.to)&&!isInOutRelationExpression(ei.$container)){const ri=getContainerOfType(ei,isElementView);n$6(ri?.viewOf)&&ni("warning","Predicate is ignored as it concerns all relationships",{node:ei})}}),outgoingExpressionChecks=ti=>tryOrLog((ei,ni)=>{if(isWildcardExpression(ei.from)&&!isDirectedRelationExpression(ei.$container)){const ri=getContainerOfType(ei,isElementView);n$6(ri?.viewOf)&&ni("warning","Predicate is ignored as it concerns all relationships",{node:ei})}}),relationPredicateWithChecks=ti=>tryOrLog((ei,ni)=>{const ri=getContainerOfType(ei,isViewRulePredicate);isExcludePredicate(ri)&&ni("error",'Invalid usage inside "exclude"',{node:ei})});function F$1(ti){return ei=>ti.some(ni=>ni(ei))}const L$1=F$1([isGlobals,isGlobalPredicateGroup,isGlobalDynamicPredicateGroup,isGlobalStyle,isGlobalStyleGroup,isDynamicViewPredicateIterator,isElementPredicateWith,isRelationPredicateWith,isElementExpression,isRelationExpression,isDynamicViewParallelSteps,isDynamicViewStep,isDeploymentViewRule,isDeploymentViewRulePredicate,isExpressionV2,isRelationExpr,isFqnRefExpr,isViewProperty,isStyleProperty,isPredicate,isTags,isViewRule,isDynamicViewRule,isLikeC4View,isViewRuleStyleOrGlobalRef,isDeployedInstance,isDeploymentNode,isDeploymentRelation,isRelationshipStyleProperty,isMetadataProperty,isRelation,isElementProperty,isStringProperty,isNavigateToProperty,isElement,isExtendElement,isSpecificationElementKind,isSpecificationRelationshipKind,isSpecificationDeploymentNodeKind,isSpecificationTag,isSpecificationColor,isSpecificationRule]),O$1=ti=>{let ei=ti;for(;ei&&!isLikeC4Grammar(ei);){if(L$1(ei))return ei;ei=ei.$container}};function checksFromDiagnostics(ti){const ei=ti.diagnostics?.filter(ri=>ri.severity===DiagnosticSeverity.Error)??[],ni=new WeakSet;for(const{node:ri}of ei){if(n$6(ri)||ni.has(ri))continue;ni.add(ri);const ii=O$1(ri);ii&&ni.add(ii)}return{isValid:ri=>!ni.has(ri),invalidNodes:ni}}function registerValidationChecks(ti){logger.debug("registerValidationChecks"),ti.validation.ValidationRegistry.register({DeployedInstance:deployedInstanceChecks(ti),DeploymentNode:deploymentNodeChecks(ti),DeploymentRelation:deploymentRelationChecks(ti),FqnRefExpr:fqnRefExprChecks(ti),RelationExpr:relationExprChecks(ti),NotesProperty:notesPropertyRuleChecks(),OpacityProperty:opacityPropertyRuleChecks(),IconProperty:iconPropertyRuleChecks(),SpecificationRule:specificationRuleChecks(),Model:modelRuleChecks(),Globals:globalsChecks(),GlobalPredicateGroup:globalPredicateChecks(ti),GlobalDynamicPredicateGroup:globalPredicateChecks(ti),GlobalStyleId:globalStyleIdChecks(ti),DynamicViewStep:dynamicViewStep(ti),LikeC4View:viewChecks(ti),Element:elementChecks(ti),ElementKind:elementKindChecks(ti),Relation:relationChecks(ti),RelationBody:relationBodyChecks(),Tag:tagChecks(ti),DynamicViewPredicateIterator:dynamicViewRulePredicate(),ElementPredicateWith:elementPredicateWithChecks(),RelationPredicateWith:relationPredicateWithChecks(),ExpandElementExpression:expandElementExprChecks(),RelationshipKind:relationshipChecks(ti),IncomingRelationExpression:incomingExpressionChecks(),OutgoingRelationExpression:outgoingExpressionChecks()});const ei=ti.shared.lsp.Connection;ei&&ti.shared.workspace.DocumentBuilder.onUpdate((ni,ri)=>{for(const ii of ri)logger.debug(`clear diagnostics for deleted ${ii.path}`),ei.sendDiagnostics({uri:ii.toString(),diagnostics:[]})})}function toSingleLine(ti){return l$6(ti)?removeIndent(ti).split(`
245
- `).join(" "):void 0}function removeIndent(ti){return l$6(ti)?stripIndent(ti).trim():void 0}class BaseParser{constructor(ei,ni){this.services=ei,this.doc=ni,this.isValid=checksFromDiagnostics(ni).isValid}isValid;resolveFqn(ei){if(isDeploymentElement(ei))return this.services.likec4.DeploymentsIndex.getFqn(ei);if(isExtendElement(ei))return getFqnElementRef(ei.element);const ni=this.services.likec4.FqnIndex.getFqn(ei);return index_DafVOuVd.u(ni,`Not indexed element: ${this.getAstNodePath(ei)}`),ni}getAstNodePath(ei){return this.services.workspace.AstNodeLocator.getAstNodePath(ei)}getMetadata(ei){if(!(!ei||!this.isValid(ei)))return l$7(ei.props,ni=>[ni.key,removeIndent(ni.value)])}convertTags(ei){return this.parseTags(ei)}parseTags(ei){let ni=ei?.tags;if(!ni)return null;const ri=[];for(;ni;){try{if(this.isValid(ni)){const ii=ni.values.map(si=>si.ref?.name).filter(n$7);ii.length>0&&ri.push(...ii)}}catch{}ni=ni.prev}return ri.reverse(),index_DafVOuVd.ac(ri)?ri:null}convertLinks(ei){return this.parseLinks(ei)}parseLinks(ei){if(!(!ei?.props||ei.props.length===0))return x$1(ei.props,T$2(isLinkProperty),u$5(ni=>{if(!this.isValid(ni))return[];const ri=ni.value;if(n$7(ri)){const ii=n$7(ni.title)?toSingleLine(ni.title):void 0;return ii?{url:ri,title:ii}:{url:ri}}return[]}))}}function stringHash(...ti){var ei=ti.length>1?ti.join(":::"):ti[0];return index_DafVOuVd.ad(ei)}function DeploymentModelParser(ti){return class extends ti{parseDeployment(){const ei=this.doc;for(const ni of streamDeploymentModel(ei))try{switch(!0){case isDeploymentRelation(ni):{this.isValid(ni)&&ei.c4DeploymentRelations.push(this.parseDeploymentRelation(ni));break}case isDeployedInstance(ni):ei.c4Deployments.push(this.parseDeployedInstance(ni));break;case isDeploymentNode(ni):{ei.c4Deployments.push(this.parseDeploymentNode(ni));break}default:index_DafVOuVd.l(ni)}}catch(ri){logWarnError(ri)}}parseDeploymentNode(ei){const ni=this.isValid,ri=this.resolveFqn(ei),ii=index_DafVOuVd.J(ei.kind.ref,"DeploymentKind not resolved").name,si=this.convertTags(ei.body),oi=ei.body?.props.find(isElementStyleProperty)?.props,ai=toElementStyle(oi,ni),ci=this.getMetadata(ei.body?.props.find(isMetadataProperty)),ui=x$1(ei.body?.props??[],T$2(ni),T$2(isElementStringProperty),l$7(vi=>[vi.key,vi.value||void 0])),li=removeIndent(ei.title??ui.title),di=removeIndent(ui.description),fi=toSingleLine(ui.technology),pi=this.convertLinks(ei.body),hi=ei.body?.props.find(isIconProperty);if(hi&&ni(hi)){const vi=hi.libicon?.ref?.name??hi.value;n$7(vi)&&(ai.icon=vi)}return{id:ri,kind:ii,title:li??index_DafVOuVd.N(ri),...ci&&{metadata:ci},...si&&{tags:si},...pi&&index_DafVOuVd.ac(pi)&&{links:pi},...n$7(fi)&&{technology:fi},...n$7(di)&&{description:di},style:ai}}parseDeployedInstance(ei){const ni=this.isValid,ri=this.resolveFqn(ei),ii=this.resolveFqn(index_DafVOuVd.J(elementRef(ei.element),"DeployedInstance element not found")),si=this.convertTags(ei.body),oi=ei.body?.props.find(isElementStyleProperty)?.props,ai=toElementStyle(oi,ni),ci=this.getMetadata(ei.body?.props.find(isMetadataProperty)),ui=x$1(ei.body?.props??[],T$2(ni),T$2(isElementStringProperty),l$7(vi=>[vi.key,vi.value||void 0])),li=removeIndent(ei.title??ui.title),di=removeIndent(ui.description),fi=toSingleLine(ui.technology),pi=this.convertLinks(ei.body),hi=ei.body?.props.find(isIconProperty);if(hi&&ni(hi)){const vi=hi.libicon?.ref?.name??hi.value;n$7(vi)&&(ai.icon=vi)}return{id:ri,element:ii,...ci&&{metadata:ci},...li&&{title:li},...si&&{tags:si},...pi&&index_DafVOuVd.ac(pi)&&{links:pi},...n$7(fi)&&{technology:fi},...n$7(di)&&{description:di},style:ai}}parseDeploymentRelation(ei){const ni=this.isValid,ri=this.getAstNodePath(ei),ii=index_DafVOuVd.a8.toDeploymentRef(this.parseFqnRef(ei.source)),si=index_DafVOuVd.a8.toDeploymentRef(this.parseFqnRef(ei.target)),oi=this.convertTags(ei)??this.convertTags(ei.body),ai=this.convertLinks(ei.body),ci=ei.kind?.ref?.name,ui=this.getMetadata(ei.body?.props.find(isMetadataProperty)),li=l$7(ei.body?.props.filter(isRelationStringProperty)??[],bi=>[bi.key,bi.value]),di=x$1(ei.body?.props??[],T$2(isRelationNavigateToProperty),m$1(bi=>bi.value.view.ref?.name),T$2(n$7),d$3()),fi=removeIndent(ei.title??li.title),pi=removeIndent(li.description),hi=toSingleLine(ei.technology)??removeIndent(li.technology),vi=ei.body?.props.find(isRelationStyleProperty);return{id:stringHash("deployment",ri,ii.id,si.id),source:ii,target:si,...fi&&{title:fi},...ui&&{metadata:ui},...n$7(hi)&&{technology:hi},...n$7(pi)&&{description:pi},...ci&&{kind:ci},...oi&&{tags:oi},...index_DafVOuVd.ac(ai)&&{links:ai},...toRelationshipStyleExcludeDefaults(vi?.props,ni),...di&&{navigateTo:di},astPath:ri}}}}function utf8Count(ti){for(var ei=ti.length,ni=0,ri=0;ri<ei;){var ii=ti.charCodeAt(ri++);if(ii&4294967168)if(!(ii&4294965248))ni+=2;else{if(ii>=55296&&ii<=56319&&ri<ei){var si=ti.charCodeAt(ri);(si&64512)===56320&&(++ri,ii=((ii&1023)<<10)+(si&1023)+65536)}ii&4294901760?ni+=4:ni+=3}else{ni++;continue}}return ni}function utf8EncodeJs(ti,ei,ni){for(var ri=ti.length,ii=ni,si=0;si<ri;){var oi=ti.charCodeAt(si++);if(oi&4294967168)if(!(oi&4294965248))ei[ii++]=oi>>6&31|192;else{if(oi>=55296&&oi<=56319&&si<ri){var ai=ti.charCodeAt(si);(ai&64512)===56320&&(++si,oi=((oi&1023)<<10)+(ai&1023)+65536)}oi&4294901760?(ei[ii++]=oi>>18&7|240,ei[ii++]=oi>>12&63|128,ei[ii++]=oi>>6&63|128):(ei[ii++]=oi>>12&15|224,ei[ii++]=oi>>6&63|128)}else{ei[ii++]=oi;continue}ei[ii++]=oi&63|128}}var sharedTextEncoder=new TextEncoder,TEXT_ENCODER_THRESHOLD=50;function utf8EncodeTE(ti,ei,ni){sharedTextEncoder.encodeInto(ti,ei.subarray(ni))}function utf8Encode(ti,ei,ni){ti.length>TEXT_ENCODER_THRESHOLD?utf8EncodeTE(ti,ei,ni):utf8EncodeJs(ti,ei,ni)}var CHUNK_SIZE=4096;function utf8DecodeJs(ti,ei,ni){for(var ri=ei,ii=ri+ni,si=[],oi="";ri<ii;){var ai=ti[ri++];if(!(ai&128))si.push(ai);else if((ai&224)===192){var ci=ti[ri++]&63;si.push((ai&31)<<6|ci)}else if((ai&240)===224){var ci=ti[ri++]&63,ui=ti[ri++]&63;si.push((ai&31)<<12|ci<<6|ui)}else if((ai&248)===240){var ci=ti[ri++]&63,ui=ti[ri++]&63,li=ti[ri++]&63,di=(ai&7)<<18|ci<<12|ui<<6|li;di>65535&&(di-=65536,si.push(di>>>10&1023|55296),di=56320|di&1023),si.push(di)}else si.push(ai);si.length>=CHUNK_SIZE&&(oi+=String.fromCharCode.apply(String,si),si.length=0)}return si.length>0&&(oi+=String.fromCharCode.apply(String,si)),oi}var sharedTextDecoder=new TextDecoder,TEXT_DECODER_THRESHOLD=200;function utf8DecodeTD(ti,ei,ni){var ri=ti.subarray(ei,ei+ni);return sharedTextDecoder.decode(ri)}function utf8Decode(ti,ei,ni){return ni>TEXT_DECODER_THRESHOLD?utf8DecodeTD(ti,ei,ni):utf8DecodeJs(ti,ei,ni)}var ExtData=function(){function ti(ei,ni){this.type=ei,this.data=ni}return ti}(),__extends=function(){var ti=function(ei,ni){return ti=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(ri,ii){ri.__proto__=ii}||function(ri,ii){for(var si in ii)Object.prototype.hasOwnProperty.call(ii,si)&&(ri[si]=ii[si])},ti(ei,ni)};return function(ei,ni){if(typeof ni!="function"&&ni!==null)throw new TypeError("Class extends value "+String(ni)+" is not a constructor or null");ti(ei,ni);function ri(){this.constructor=ei}ei.prototype=ni===null?Object.create(ni):(ri.prototype=ni.prototype,new ri)}}(),DecodeError=function(ti){__extends(ei,ti);function ei(ni){var ri=ti.call(this,ni)||this,ii=Object.create(ei.prototype);return Object.setPrototypeOf(ri,ii),Object.defineProperty(ri,"name",{configurable:!0,enumerable:!1,value:ei.name}),ri}return ei}(Error),UINT32_MAX=4294967295;function setUint64(ti,ei,ni){var ri=ni/4294967296,ii=ni;ti.setUint32(ei,ri),ti.setUint32(ei+4,ii)}function setInt64(ti,ei,ni){var ri=Math.floor(ni/4294967296),ii=ni;ti.setUint32(ei,ri),ti.setUint32(ei+4,ii)}function getInt64(ti,ei){var ni=ti.getInt32(ei),ri=ti.getUint32(ei+4);return ni*4294967296+ri}function getUint64(ti,ei){var ni=ti.getUint32(ei),ri=ti.getUint32(ei+4);return ni*4294967296+ri}var EXT_TIMESTAMP=-1,TIMESTAMP32_MAX_SEC=4294967296-1,TIMESTAMP64_MAX_SEC=17179869184-1;function encodeTimeSpecToTimestamp(ti){var ei=ti.sec,ni=ti.nsec;if(ei>=0&&ni>=0&&ei<=TIMESTAMP64_MAX_SEC)if(ni===0&&ei<=TIMESTAMP32_MAX_SEC){var ri=new Uint8Array(4),ii=new DataView(ri.buffer);return ii.setUint32(0,ei),ri}else{var si=ei/4294967296,oi=ei&4294967295,ri=new Uint8Array(8),ii=new DataView(ri.buffer);return ii.setUint32(0,ni<<2|si&3),ii.setUint32(4,oi),ri}else{var ri=new Uint8Array(12),ii=new DataView(ri.buffer);return ii.setUint32(0,ni),setInt64(ii,4,ei),ri}}function encodeDateToTimeSpec(ti){var ei=ti.getTime(),ni=Math.floor(ei/1e3),ri=(ei-ni*1e3)*1e6,ii=Math.floor(ri/1e9);return{sec:ni+ii,nsec:ri-ii*1e9}}function encodeTimestampExtension(ti){if(ti instanceof Date){var ei=encodeDateToTimeSpec(ti);return encodeTimeSpecToTimestamp(ei)}else return null}function decodeTimestampToTimeSpec(ti){var ei=new DataView(ti.buffer,ti.byteOffset,ti.byteLength);switch(ti.byteLength){case 4:{var ni=ei.getUint32(0),ri=0;return{sec:ni,nsec:ri}}case 8:{var ii=ei.getUint32(0),si=ei.getUint32(4),ni=(ii&3)*4294967296+si,ri=ii>>>2;return{sec:ni,nsec:ri}}case 12:{var ni=getInt64(ei,4),ri=ei.getUint32(0);return{sec:ni,nsec:ri}}default:throw new DecodeError("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(ti.length))}}function decodeTimestampExtension(ti){var ei=decodeTimestampToTimeSpec(ti);return new Date(ei.sec*1e3+ei.nsec/1e6)}var timestampExtension={type:EXT_TIMESTAMP,encode:encodeTimestampExtension,decode:decodeTimestampExtension},ExtensionCodec=function(){function ti(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(timestampExtension)}return ti.prototype.register=function(ei){var ni=ei.type,ri=ei.encode,ii=ei.decode;if(ni>=0)this.encoders[ni]=ri,this.decoders[ni]=ii;else{var si=1+ni;this.builtInEncoders[si]=ri,this.builtInDecoders[si]=ii}},ti.prototype.tryToEncode=function(ei,ni){for(var ri=0;ri<this.builtInEncoders.length;ri++){var ii=this.builtInEncoders[ri];if(ii!=null){var si=ii(ei,ni);if(si!=null){var oi=-1-ri;return new ExtData(oi,si)}}}for(var ri=0;ri<this.encoders.length;ri++){var ii=this.encoders[ri];if(ii!=null){var si=ii(ei,ni);if(si!=null){var oi=ri;return new ExtData(oi,si)}}}return ei instanceof ExtData?ei:null},ti.prototype.decode=function(ei,ni,ri){var ii=ni<0?this.builtInDecoders[-1-ni]:this.decoders[ni];return ii?ii(ei,ni,ri):new ExtData(ni,ei)},ti.defaultCodec=new ti,ti}();function ensureUint8Array(ti){return ti instanceof Uint8Array?ti:ArrayBuffer.isView(ti)?new Uint8Array(ti.buffer,ti.byteOffset,ti.byteLength):ti instanceof ArrayBuffer?new Uint8Array(ti):Uint8Array.from(ti)}function createDataView(ti){if(ti instanceof ArrayBuffer)return new DataView(ti);var ei=ensureUint8Array(ti);return new DataView(ei.buffer,ei.byteOffset,ei.byteLength)}var DEFAULT_MAX_DEPTH=100,DEFAULT_INITIAL_BUFFER_SIZE=2048,Encoder=function(){function ti(ei){var ni,ri,ii,si,oi,ai,ci,ui;this.extensionCodec=(ni=ei?.extensionCodec)!==null&&ni!==void 0?ni:ExtensionCodec.defaultCodec,this.context=ei?.context,this.useBigInt64=(ri=ei?.useBigInt64)!==null&&ri!==void 0?ri:!1,this.maxDepth=(ii=ei?.maxDepth)!==null&&ii!==void 0?ii:DEFAULT_MAX_DEPTH,this.initialBufferSize=(si=ei?.initialBufferSize)!==null&&si!==void 0?si:DEFAULT_INITIAL_BUFFER_SIZE,this.sortKeys=(oi=ei?.sortKeys)!==null&&oi!==void 0?oi:!1,this.forceFloat32=(ai=ei?.forceFloat32)!==null&&ai!==void 0?ai:!1,this.ignoreUndefined=(ci=ei?.ignoreUndefined)!==null&&ci!==void 0?ci:!1,this.forceIntegerToFloat=(ui=ei?.forceIntegerToFloat)!==null&&ui!==void 0?ui:!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}return ti.prototype.reinitializeState=function(){this.pos=0},ti.prototype.encodeSharedRef=function(ei){return this.reinitializeState(),this.doEncode(ei,1),this.bytes.subarray(0,this.pos)},ti.prototype.encode=function(ei){return this.reinitializeState(),this.doEncode(ei,1),this.bytes.slice(0,this.pos)},ti.prototype.doEncode=function(ei,ni){if(ni>this.maxDepth)throw new Error("Too deep objects in depth ".concat(ni));ei==null?this.encodeNil():typeof ei=="boolean"?this.encodeBoolean(ei):typeof ei=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(ei):this.encodeNumber(ei):typeof ei=="string"?this.encodeString(ei):this.useBigInt64&&typeof ei=="bigint"?this.encodeBigInt64(ei):this.encodeObject(ei,ni)},ti.prototype.ensureBufferSizeToWrite=function(ei){var ni=this.pos+ei;this.view.byteLength<ni&&this.resizeBuffer(ni*2)},ti.prototype.resizeBuffer=function(ei){var ni=new ArrayBuffer(ei),ri=new Uint8Array(ni),ii=new DataView(ni);ri.set(this.bytes),this.view=ii,this.bytes=ri},ti.prototype.encodeNil=function(){this.writeU8(192)},ti.prototype.encodeBoolean=function(ei){ei===!1?this.writeU8(194):this.writeU8(195)},ti.prototype.encodeNumber=function(ei){!this.forceIntegerToFloat&&Number.isSafeInteger(ei)?ei>=0?ei<128?this.writeU8(ei):ei<256?(this.writeU8(204),this.writeU8(ei)):ei<65536?(this.writeU8(205),this.writeU16(ei)):ei<4294967296?(this.writeU8(206),this.writeU32(ei)):this.useBigInt64?this.encodeNumberAsFloat(ei):(this.writeU8(207),this.writeU64(ei)):ei>=-32?this.writeU8(224|ei+32):ei>=-128?(this.writeU8(208),this.writeI8(ei)):ei>=-32768?(this.writeU8(209),this.writeI16(ei)):ei>=-2147483648?(this.writeU8(210),this.writeI32(ei)):this.useBigInt64?this.encodeNumberAsFloat(ei):(this.writeU8(211),this.writeI64(ei)):this.encodeNumberAsFloat(ei)},ti.prototype.encodeNumberAsFloat=function(ei){this.forceFloat32?(this.writeU8(202),this.writeF32(ei)):(this.writeU8(203),this.writeF64(ei))},ti.prototype.encodeBigInt64=function(ei){ei>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(ei)):(this.writeU8(211),this.writeBigInt64(ei))},ti.prototype.writeStringHeader=function(ei){if(ei<32)this.writeU8(160+ei);else if(ei<256)this.writeU8(217),this.writeU8(ei);else if(ei<65536)this.writeU8(218),this.writeU16(ei);else if(ei<4294967296)this.writeU8(219),this.writeU32(ei);else throw new Error("Too long string: ".concat(ei," bytes in UTF-8"))},ti.prototype.encodeString=function(ei){var ni=5,ri=utf8Count(ei);this.ensureBufferSizeToWrite(ni+ri),this.writeStringHeader(ri),utf8Encode(ei,this.bytes,this.pos),this.pos+=ri},ti.prototype.encodeObject=function(ei,ni){var ri=this.extensionCodec.tryToEncode(ei,this.context);if(ri!=null)this.encodeExtension(ri);else if(Array.isArray(ei))this.encodeArray(ei,ni);else if(ArrayBuffer.isView(ei))this.encodeBinary(ei);else if(typeof ei=="object")this.encodeMap(ei,ni);else throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(ei)))},ti.prototype.encodeBinary=function(ei){var ni=ei.byteLength;if(ni<256)this.writeU8(196),this.writeU8(ni);else if(ni<65536)this.writeU8(197),this.writeU16(ni);else if(ni<4294967296)this.writeU8(198),this.writeU32(ni);else throw new Error("Too large binary: ".concat(ni));var ri=ensureUint8Array(ei);this.writeU8a(ri)},ti.prototype.encodeArray=function(ei,ni){var ri=ei.length;if(ri<16)this.writeU8(144+ri);else if(ri<65536)this.writeU8(220),this.writeU16(ri);else if(ri<4294967296)this.writeU8(221),this.writeU32(ri);else throw new Error("Too large array: ".concat(ri));for(var ii=0,si=ei;ii<si.length;ii++){var oi=si[ii];this.doEncode(oi,ni+1)}},ti.prototype.countWithoutUndefined=function(ei,ni){for(var ri=0,ii=0,si=ni;ii<si.length;ii++){var oi=si[ii];ei[oi]!==void 0&&ri++}return ri},ti.prototype.encodeMap=function(ei,ni){var ri=Object.keys(ei);this.sortKeys&&ri.sort();var ii=this.ignoreUndefined?this.countWithoutUndefined(ei,ri):ri.length;if(ii<16)this.writeU8(128+ii);else if(ii<65536)this.writeU8(222),this.writeU16(ii);else if(ii<4294967296)this.writeU8(223),this.writeU32(ii);else throw new Error("Too large map object: ".concat(ii));for(var si=0,oi=ri;si<oi.length;si++){var ai=oi[si],ci=ei[ai];this.ignoreUndefined&&ci===void 0||(this.encodeString(ai),this.doEncode(ci,ni+1))}},ti.prototype.encodeExtension=function(ei){var ni=ei.data.length;if(ni===1)this.writeU8(212);else if(ni===2)this.writeU8(213);else if(ni===4)this.writeU8(214);else if(ni===8)this.writeU8(215);else if(ni===16)this.writeU8(216);else if(ni<256)this.writeU8(199),this.writeU8(ni);else if(ni<65536)this.writeU8(200),this.writeU16(ni);else if(ni<4294967296)this.writeU8(201),this.writeU32(ni);else throw new Error("Too large extension object: ".concat(ni));this.writeI8(ei.type),this.writeU8a(ei.data)},ti.prototype.writeU8=function(ei){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,ei),this.pos++},ti.prototype.writeU8a=function(ei){var ni=ei.length;this.ensureBufferSizeToWrite(ni),this.bytes.set(ei,this.pos),this.pos+=ni},ti.prototype.writeI8=function(ei){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,ei),this.pos++},ti.prototype.writeU16=function(ei){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,ei),this.pos+=2},ti.prototype.writeI16=function(ei){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,ei),this.pos+=2},ti.prototype.writeU32=function(ei){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,ei),this.pos+=4},ti.prototype.writeI32=function(ei){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,ei),this.pos+=4},ti.prototype.writeF32=function(ei){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,ei),this.pos+=4},ti.prototype.writeF64=function(ei){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,ei),this.pos+=8},ti.prototype.writeU64=function(ei){this.ensureBufferSizeToWrite(8),setUint64(this.view,this.pos,ei),this.pos+=8},ti.prototype.writeI64=function(ei){this.ensureBufferSizeToWrite(8),setInt64(this.view,this.pos,ei),this.pos+=8},ti.prototype.writeBigUint64=function(ei){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,ei),this.pos+=8},ti.prototype.writeBigInt64=function(ei){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,ei),this.pos+=8},ti}();function encode(ti,ei){var ni=new Encoder(ei);return ni.encodeSharedRef(ti)}function prettyByte(ti){return"".concat(ti<0?"-":"","0x").concat(Math.abs(ti).toString(16).padStart(2,"0"))}var DEFAULT_MAX_KEY_LENGTH=16,DEFAULT_MAX_LENGTH_PER_KEY=16,CachedKeyDecoder=function(){function ti(ei,ni){ei===void 0&&(ei=DEFAULT_MAX_KEY_LENGTH),ni===void 0&&(ni=DEFAULT_MAX_LENGTH_PER_KEY),this.maxKeyLength=ei,this.maxLengthPerKey=ni,this.hit=0,this.miss=0,this.caches=[];for(var ri=0;ri<this.maxKeyLength;ri++)this.caches.push([])}return ti.prototype.canBeCached=function(ei){return ei>0&&ei<=this.maxKeyLength},ti.prototype.find=function(ei,ni,ri){var ii=this.caches[ri-1];e:for(var si=0,oi=ii;si<oi.length;si++){for(var ai=oi[si],ci=ai.bytes,ui=0;ui<ri;ui++)if(ci[ui]!==ei[ni+ui])continue e;return ai.str}return null},ti.prototype.store=function(ei,ni){var ri=this.caches[ei.length-1],ii={bytes:ei,str:ni};ri.length>=this.maxLengthPerKey?ri[Math.random()*ri.length|0]=ii:ri.push(ii)},ti.prototype.decode=function(ei,ni,ri){var ii=this.find(ei,ni,ri);if(ii!=null)return this.hit++,ii;this.miss++;var si=utf8DecodeJs(ei,ni,ri),oi=Uint8Array.prototype.slice.call(ei,ni,ni+ri);return this.store(oi,si),si},ti}(),__awaiter=function(ti,ei,ni,ri){function ii(si){return si instanceof ni?si:new ni(function(oi){oi(si)})}return new(ni||(ni=Promise))(function(si,oi){function ai(li){try{ui(ri.next(li))}catch(di){oi(di)}}function ci(li){try{ui(ri.throw(li))}catch(di){oi(di)}}function ui(li){li.done?si(li.value):ii(li.value).then(ai,ci)}ui((ri=ri.apply(ti,ei||[])).next())})},__generator=function(ti,ei){var ni={label:0,sent:function(){if(si[0]&1)throw si[1];return si[1]},trys:[],ops:[]},ri,ii,si,oi;return oi={next:ai(0),throw:ai(1),return:ai(2)},typeof Symbol=="function"&&(oi[Symbol.iterator]=function(){return this}),oi;function ai(ui){return function(li){return ci([ui,li])}}function ci(ui){if(ri)throw new TypeError("Generator is already executing.");for(;oi&&(oi=0,ui[0]&&(ni=0)),ni;)try{if(ri=1,ii&&(si=ui[0]&2?ii.return:ui[0]?ii.throw||((si=ii.return)&&si.call(ii),0):ii.next)&&!(si=si.call(ii,ui[1])).done)return si;switch(ii=0,si&&(ui=[ui[0]&2,si.value]),ui[0]){case 0:case 1:si=ui;break;case 4:return ni.label++,{value:ui[1],done:!1};case 5:ni.label++,ii=ui[1],ui=[0];continue;case 7:ui=ni.ops.pop(),ni.trys.pop();continue;default:if(si=ni.trys,!(si=si.length>0&&si[si.length-1])&&(ui[0]===6||ui[0]===2)){ni=0;continue}if(ui[0]===3&&(!si||ui[1]>si[0]&&ui[1]<si[3])){ni.label=ui[1];break}if(ui[0]===6&&ni.label<si[1]){ni.label=si[1],si=ui;break}if(si&&ni.label<si[2]){ni.label=si[2],ni.ops.push(ui);break}si[2]&&ni.ops.pop(),ni.trys.pop();continue}ui=ei.call(ti,ni)}catch(li){ui=[6,li],ii=0}finally{ri=si=0}if(ui[0]&5)throw ui[1];return{value:ui[0]?ui[1]:void 0,done:!0}}},__asyncValues=function(ti){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var ei=ti[Symbol.asyncIterator],ni;return ei?ei.call(ti):(ti=typeof __values=="function"?__values(ti):ti[Symbol.iterator](),ni={},ri("next"),ri("throw"),ri("return"),ni[Symbol.asyncIterator]=function(){return this},ni);function ri(si){ni[si]=ti[si]&&function(oi){return new Promise(function(ai,ci){oi=ti[si](oi),ii(ai,ci,oi.done,oi.value)})}}function ii(si,oi,ai,ci){Promise.resolve(ci).then(function(ui){si({value:ui,done:ai})},oi)}},__await=function(ti){return this instanceof __await?(this.v=ti,this):new __await(ti)},__asyncGenerator=function(ti,ei,ni){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var ri=ni.apply(ti,ei||[]),ii,si=[];return ii={},oi("next"),oi("throw"),oi("return"),ii[Symbol.asyncIterator]=function(){return this},ii;function oi(fi){ri[fi]&&(ii[fi]=function(pi){return new Promise(function(hi,vi){si.push([fi,pi,hi,vi])>1||ai(fi,pi)})})}function ai(fi,pi){try{ci(ri[fi](pi))}catch(hi){di(si[0][3],hi)}}function ci(fi){fi.value instanceof __await?Promise.resolve(fi.value.v).then(ui,li):di(si[0][2],fi)}function ui(fi){ai("next",fi)}function li(fi){ai("throw",fi)}function di(fi,pi){fi(pi),si.shift(),si.length&&ai(si[0][0],si[0][1])}},STATE_ARRAY="array",STATE_MAP_KEY="map_key",STATE_MAP_VALUE="map_value",isValidMapKeyType=function(ti){return typeof ti=="string"||typeof ti=="number"},HEAD_BYTE_REQUIRED=-1,EMPTY_VIEW=new DataView(new ArrayBuffer(0)),EMPTY_BYTES=new Uint8Array(EMPTY_VIEW.buffer);try{EMPTY_VIEW.getInt8(0)}catch(ti){if(!(ti instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var DataViewIndexOutOfBoundsError=RangeError,MORE_DATA=new DataViewIndexOutOfBoundsError("Insufficient data"),sharedCachedKeyDecoder=new CachedKeyDecoder,Decoder=function(){function ti(ei){var ni,ri,ii,si,oi,ai,ci;this.totalPos=0,this.pos=0,this.view=EMPTY_VIEW,this.bytes=EMPTY_BYTES,this.headByte=HEAD_BYTE_REQUIRED,this.stack=[],this.extensionCodec=(ni=ei?.extensionCodec)!==null&&ni!==void 0?ni:ExtensionCodec.defaultCodec,this.context=ei?.context,this.useBigInt64=(ri=ei?.useBigInt64)!==null&&ri!==void 0?ri:!1,this.maxStrLength=(ii=ei?.maxStrLength)!==null&&ii!==void 0?ii:UINT32_MAX,this.maxBinLength=(si=ei?.maxBinLength)!==null&&si!==void 0?si:UINT32_MAX,this.maxArrayLength=(oi=ei?.maxArrayLength)!==null&&oi!==void 0?oi:UINT32_MAX,this.maxMapLength=(ai=ei?.maxMapLength)!==null&&ai!==void 0?ai:UINT32_MAX,this.maxExtLength=(ci=ei?.maxExtLength)!==null&&ci!==void 0?ci:UINT32_MAX,this.keyDecoder=ei?.keyDecoder!==void 0?ei.keyDecoder:sharedCachedKeyDecoder}return ti.prototype.reinitializeState=function(){this.totalPos=0,this.headByte=HEAD_BYTE_REQUIRED,this.stack.length=0},ti.prototype.setBuffer=function(ei){this.bytes=ensureUint8Array(ei),this.view=createDataView(this.bytes),this.pos=0},ti.prototype.appendBuffer=function(ei){if(this.headByte===HEAD_BYTE_REQUIRED&&!this.hasRemaining(1))this.setBuffer(ei);else{var ni=this.bytes.subarray(this.pos),ri=ensureUint8Array(ei),ii=new Uint8Array(ni.length+ri.length);ii.set(ni),ii.set(ri,ni.length),this.setBuffer(ii)}},ti.prototype.hasRemaining=function(ei){return this.view.byteLength-this.pos>=ei},ti.prototype.createExtraByteError=function(ei){var ni=this,ri=ni.view,ii=ni.pos;return new RangeError("Extra ".concat(ri.byteLength-ii," of ").concat(ri.byteLength," byte(s) found at buffer[").concat(ei,"]"))},ti.prototype.decode=function(ei){this.reinitializeState(),this.setBuffer(ei);var ni=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return ni},ti.prototype.decodeMulti=function(ei){return __generator(this,function(ni){switch(ni.label){case 0:this.reinitializeState(),this.setBuffer(ei),ni.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return ni.sent(),[3,1];case 3:return[2]}})},ti.prototype.decodeAsync=function(ei){var ni,ri,ii,si,oi,ai,ci;return __awaiter(this,void 0,void 0,function(){var ui,li,di,fi,pi,hi,vi,bi;return __generator(this,function(gi){switch(gi.label){case 0:ui=!1,gi.label=1;case 1:gi.trys.push([1,6,7,12]),ni=!0,ri=__asyncValues(ei),gi.label=2;case 2:return[4,ri.next()];case 3:if(ii=gi.sent(),si=ii.done,!!si)return[3,5];ci=ii.value,ni=!1;try{if(di=ci,ui)throw this.createExtraByteError(this.totalPos);this.appendBuffer(di);try{li=this.doDecodeSync(),ui=!0}catch(wi){if(!(wi instanceof DataViewIndexOutOfBoundsError))throw wi}this.totalPos+=this.pos}finally{ni=!0}gi.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return fi=gi.sent(),oi={error:fi},[3,12];case 7:return gi.trys.push([7,,10,11]),!ni&&!si&&(ai=ri.return)?[4,ai.call(ri)]:[3,9];case 8:gi.sent(),gi.label=9;case 9:return[3,11];case 10:if(oi)throw oi.error;return[7];case 11:return[7];case 12:if(ui){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,li]}throw pi=this,hi=pi.headByte,vi=pi.pos,bi=pi.totalPos,new RangeError("Insufficient data in parsing ".concat(prettyByte(hi)," at ").concat(bi," (").concat(vi," in the current buffer)"))}})})},ti.prototype.decodeArrayStream=function(ei){return this.decodeMultiAsync(ei,!0)},ti.prototype.decodeStream=function(ei){return this.decodeMultiAsync(ei,!1)},ti.prototype.decodeMultiAsync=function(ei,ni){return __asyncGenerator(this,arguments,function(){var ii,si,oi,ai,ci,ui,li,di,fi,pi,hi,vi;return __generator(this,function(bi){switch(bi.label){case 0:ii=ni,si=-1,bi.label=1;case 1:bi.trys.push([1,15,16,21]),oi=!0,ai=__asyncValues(ei),bi.label=2;case 2:return[4,__await(ai.next())];case 3:if(ci=bi.sent(),fi=ci.done,!!fi)return[3,14];vi=ci.value,oi=!1,bi.label=4;case 4:if(bi.trys.push([4,,12,13]),ui=vi,ni&&si===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(ui),ii&&(si=this.readArraySize(),ii=!1,this.complete()),bi.label=5;case 5:bi.trys.push([5,10,,11]),bi.label=6;case 6:return[4,__await(this.doDecodeSync())];case 7:return[4,bi.sent()];case 8:return bi.sent(),--si===0?[3,9]:[3,6];case 9:return[3,11];case 10:if(li=bi.sent(),!(li instanceof DataViewIndexOutOfBoundsError))throw li;return[3,11];case 11:return this.totalPos+=this.pos,[3,13];case 12:return oi=!0,[7];case 13:return[3,2];case 14:return[3,21];case 15:return di=bi.sent(),pi={error:di},[3,21];case 16:return bi.trys.push([16,,19,20]),!oi&&!fi&&(hi=ai.return)?[4,__await(hi.call(ai))]:[3,18];case 17:bi.sent(),bi.label=18;case 18:return[3,20];case 19:if(pi)throw pi.error;return[7];case 20:return[7];case 21:return[2]}})})},ti.prototype.doDecodeSync=function(){e:for(;;){var ei=this.readHeadByte(),ni=void 0;if(ei>=224)ni=ei-256;else if(ei<192)if(ei<128)ni=ei;else if(ei<144){var ri=ei-128;if(ri!==0){this.pushMapState(ri),this.complete();continue e}else ni={}}else if(ei<160){var ri=ei-144;if(ri!==0){this.pushArrayState(ri),this.complete();continue e}else ni=[]}else{var ii=ei-160;ni=this.decodeUtf8String(ii,0)}else if(ei===192)ni=null;else if(ei===194)ni=!1;else if(ei===195)ni=!0;else if(ei===202)ni=this.readF32();else if(ei===203)ni=this.readF64();else if(ei===204)ni=this.readU8();else if(ei===205)ni=this.readU16();else if(ei===206)ni=this.readU32();else if(ei===207)this.useBigInt64?ni=this.readU64AsBigInt():ni=this.readU64();else if(ei===208)ni=this.readI8();else if(ei===209)ni=this.readI16();else if(ei===210)ni=this.readI32();else if(ei===211)this.useBigInt64?ni=this.readI64AsBigInt():ni=this.readI64();else if(ei===217){var ii=this.lookU8();ni=this.decodeUtf8String(ii,1)}else if(ei===218){var ii=this.lookU16();ni=this.decodeUtf8String(ii,2)}else if(ei===219){var ii=this.lookU32();ni=this.decodeUtf8String(ii,4)}else if(ei===220){var ri=this.readU16();if(ri!==0){this.pushArrayState(ri),this.complete();continue e}else ni=[]}else if(ei===221){var ri=this.readU32();if(ri!==0){this.pushArrayState(ri),this.complete();continue e}else ni=[]}else if(ei===222){var ri=this.readU16();if(ri!==0){this.pushMapState(ri),this.complete();continue e}else ni={}}else if(ei===223){var ri=this.readU32();if(ri!==0){this.pushMapState(ri),this.complete();continue e}else ni={}}else if(ei===196){var ri=this.lookU8();ni=this.decodeBinary(ri,1)}else if(ei===197){var ri=this.lookU16();ni=this.decodeBinary(ri,2)}else if(ei===198){var ri=this.lookU32();ni=this.decodeBinary(ri,4)}else if(ei===212)ni=this.decodeExtension(1,0);else if(ei===213)ni=this.decodeExtension(2,0);else if(ei===214)ni=this.decodeExtension(4,0);else if(ei===215)ni=this.decodeExtension(8,0);else if(ei===216)ni=this.decodeExtension(16,0);else if(ei===199){var ri=this.lookU8();ni=this.decodeExtension(ri,1)}else if(ei===200){var ri=this.lookU16();ni=this.decodeExtension(ri,2)}else if(ei===201){var ri=this.lookU32();ni=this.decodeExtension(ri,4)}else throw new DecodeError("Unrecognized type byte: ".concat(prettyByte(ei)));this.complete();for(var si=this.stack;si.length>0;){var oi=si[si.length-1];if(oi.type===STATE_ARRAY)if(oi.array[oi.position]=ni,oi.position++,oi.position===oi.size)si.pop(),ni=oi.array;else continue e;else if(oi.type===STATE_MAP_KEY){if(!isValidMapKeyType(ni))throw new DecodeError("The type of key must be string or number but "+typeof ni);if(ni==="__proto__")throw new DecodeError("The key __proto__ is not allowed");oi.key=ni,oi.type=STATE_MAP_VALUE;continue e}else if(oi.map[oi.key]=ni,oi.readCount++,oi.readCount===oi.size)si.pop(),ni=oi.map;else{oi.key=null,oi.type=STATE_MAP_KEY;continue e}}return ni}},ti.prototype.readHeadByte=function(){return this.headByte===HEAD_BYTE_REQUIRED&&(this.headByte=this.readU8()),this.headByte},ti.prototype.complete=function(){this.headByte=HEAD_BYTE_REQUIRED},ti.prototype.readArraySize=function(){var ei=this.readHeadByte();switch(ei){case 220:return this.readU16();case 221:return this.readU32();default:{if(ei<160)return ei-144;throw new DecodeError("Unrecognized array type byte: ".concat(prettyByte(ei)))}}},ti.prototype.pushMapState=function(ei){if(ei>this.maxMapLength)throw new DecodeError("Max length exceeded: map length (".concat(ei,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:STATE_MAP_KEY,size:ei,key:null,readCount:0,map:{}})},ti.prototype.pushArrayState=function(ei){if(ei>this.maxArrayLength)throw new DecodeError("Max length exceeded: array length (".concat(ei,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:STATE_ARRAY,size:ei,array:new Array(ei),position:0})},ti.prototype.decodeUtf8String=function(ei,ni){var ri;if(ei>this.maxStrLength)throw new DecodeError("Max length exceeded: UTF-8 byte length (".concat(ei,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLength<this.pos+ni+ei)throw MORE_DATA;var ii=this.pos+ni,si;return this.stateIsMapKey()&&(!((ri=this.keyDecoder)===null||ri===void 0)&&ri.canBeCached(ei))?si=this.keyDecoder.decode(this.bytes,ii,ei):si=utf8Decode(this.bytes,ii,ei),this.pos+=ni+ei,si},ti.prototype.stateIsMapKey=function(){if(this.stack.length>0){var ei=this.stack[this.stack.length-1];return ei.type===STATE_MAP_KEY}return!1},ti.prototype.decodeBinary=function(ei,ni){if(ei>this.maxBinLength)throw new DecodeError("Max length exceeded: bin length (".concat(ei,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(ei+ni))throw MORE_DATA;var ri=this.pos+ni,ii=this.bytes.subarray(ri,ri+ei);return this.pos+=ni+ei,ii},ti.prototype.decodeExtension=function(ei,ni){if(ei>this.maxExtLength)throw new DecodeError("Max length exceeded: ext length (".concat(ei,") > maxExtLength (").concat(this.maxExtLength,")"));var ri=this.view.getInt8(this.pos+ni),ii=this.decodeBinary(ei,ni+1);return this.extensionCodec.decode(ii,ri,this.context)},ti.prototype.lookU8=function(){return this.view.getUint8(this.pos)},ti.prototype.lookU16=function(){return this.view.getUint16(this.pos)},ti.prototype.lookU32=function(){return this.view.getUint32(this.pos)},ti.prototype.readU8=function(){var ei=this.view.getUint8(this.pos);return this.pos++,ei},ti.prototype.readI8=function(){var ei=this.view.getInt8(this.pos);return this.pos++,ei},ti.prototype.readU16=function(){var ei=this.view.getUint16(this.pos);return this.pos+=2,ei},ti.prototype.readI16=function(){var ei=this.view.getInt16(this.pos);return this.pos+=2,ei},ti.prototype.readU32=function(){var ei=this.view.getUint32(this.pos);return this.pos+=4,ei},ti.prototype.readI32=function(){var ei=this.view.getInt32(this.pos);return this.pos+=4,ei},ti.prototype.readU64=function(){var ei=getUint64(this.view,this.pos);return this.pos+=8,ei},ti.prototype.readI64=function(){var ei=getInt64(this.view,this.pos);return this.pos+=8,ei},ti.prototype.readU64AsBigInt=function(){var ei=this.view.getBigUint64(this.pos);return this.pos+=8,ei},ti.prototype.readI64AsBigInt=function(){var ei=this.view.getBigInt64(this.pos);return this.pos+=8,ei},ti.prototype.readF32=function(){var ei=this.view.getFloat32(this.pos);return this.pos+=4,ei},ti.prototype.readF64=function(){var ei=this.view.getFloat64(this.pos);return this.pos+=8,ei},ti}();function decode(ti,ei){var ni=new Decoder(ei);return ni.decode(ti)}const isArrayBuffer$1=ti=>typeof ArrayBuffer=="function"&&ti instanceof ArrayBuffer||Object.prototype.toString.call(ti)==="[object ArrayBuffer]",fromArrayBuffer=(ti,ei=0,ni=ti.byteLength-ei)=>{if(!isArrayBuffer$1(ti))throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof ti} (${ti})`);return buffer.Buffer.from(ti,ei,ni)},fromString=(ti,ei)=>{if(typeof ti!="string")throw new TypeError(`The "input" argument must be of type string. Received type ${typeof ti} (${ti})`);return ei?buffer.Buffer.from(ti,ei):buffer.Buffer.from(ti)},BASE64_REGEX=/^[A-Za-z0-9+/]*={0,2}$/,fromBase64=ti=>{if(ti.length*3%4!==0)throw new TypeError("Incorrect padding on base64 string.");if(!BASE64_REGEX.exec(ti))throw new TypeError("Invalid base64 string.");const ei=fromString(ti,"base64");return new Uint8Array(ei.buffer,ei.byteOffset,ei.byteLength)},fromUtf8=ti=>{const ei=fromString(ti,"utf8");return new Uint8Array(ei.buffer,ei.byteOffset,ei.byteLength/Uint8Array.BYTES_PER_ELEMENT)},toBase64=ti=>{let ei;if(typeof ti=="string"?ei=fromUtf8(ti):ei=ti,typeof ei!="object"||typeof ei.byteOffset!="number"||typeof ei.byteLength!="number")throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return fromArrayBuffer(ei.buffer,ei.byteOffset,ei.byteLength).toString("base64")},{getDocument:C$1}=f$9;function N$1({nodes:ti,edges:ei,...ni}){return{...ni,nodes:i$8(ti,({x:ri,y:ii,width:si,height:oi,isCompound:ai,...ci})=>({...ci,b:[ri,ii,si,oi],c:ai})),edges:i$8(ei,({points:ri,controlPoints:ii,labelBBox:si,dotpos:oi,...ai})=>({...!!ii&&{cp:ii},...!!si&&{l:si},...!!oi&&{dp:oi},...ai,p:ri}))}}function k({nodes:ti,edges:ei,autoLayout:ni,...ri}){return{...ri,autoLayout:index_DafVOuVd.ae(ni)?{direction:ni}:ni,nodes:i$8(ti,({b:ii,c:si,...oi})=>({x:ii[0],y:ii[1],width:ii[2],height:ii[3],isCompound:si,...oi})),edges:i$8(ei,({p:ii,cp:si,l:oi,dp:ai,...ci})=>({...!!si&&{controlPoints:si},...!!oi&&{labelBBox:oi},...!!ai&&{dotpos:ai},...ci,points:ii}))}}const l$1=500;function serializeToComment(ti){const ei=encode(N$1(ti)),ni=toBase64(ei),ri=[];let ii=0;for(;ii<ni.length;)ri.push(" * "+ni.slice(ii,Math.min(ii+l$1,ni.length))),ii+=l$1;return ri.unshift("/**"," * @likec4-generated(v1)"),ri.push(" */"),ri.join(`
244
+ `)}}:void 0}}}class LikeC4SemanticTokenProvider extends AbstractSemanticTokenProvider{highlightElement(ei,ni){if(isElement(ei)||isDeploymentNode(ei))return this.highlightNameAndKind(ei,ni);if(isDeployedInstance(ei)){"name"in ei&&ni({node:ei,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isLikeC4View(ei))return this.highlightView(ei,ni);if(isRelationshipKind(ei))return ni({node:ei,property:"name",type:SemanticTokenTypes.function});if(isLibIcon(ei))return ni({node:ei,property:"name",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]}),"prune";if(isOutgoingRelationExpression(ei)&&"kind"in ei){ni({node:ei,property:"kind",type:SemanticTokenTypes.function});return}if(isRelation(ei)&&"kind"in ei&&ni({node:ei,property:"kind",type:SemanticTokenTypes.function}),isNavigateToProperty(ei)||isRelationNavigateToProperty(ei))return ni({node:ei,property:"key",type:SemanticTokenTypes.property}),ni({node:ei,property:"value",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),"prune";if((isElementDescedantsExpression(ei)||isWildcardExpression(ei))&&ei.$cstNode)return ni({cst:ei.$cstNode,type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),"prune";if(isFqnRefExpr(ei)){ei.selector&&ni({node:ei,property:"selector",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isWhereRelationKind(ei)&&n$7(ei.value)){ni({node:ei,property:"value",type:SemanticTokenTypes.function});return}if((isWhereElement(ei)||isWhereRelation(ei))&&n$7(ei.value)){ni({node:ei,property:"value",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]});return}if(isElementKindExpression(ei)&&n$7(ei.kind))return ni({node:ei,property:"kind",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]}),"prune";if(isElementTagExpression(ei)&&n$7(ei.tag))return ni({node:ei,property:"tag",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]}),"prune";if(isFqnRef(ei))return ni({node:ei,property:"value",type:ei.parent?SemanticTokenTypes.property:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),ei.parent?void 0:"prune";if(isElementRef(ei)||isFqnElementRef(ei))return ni({node:ei,property:"el",type:ei.parent?SemanticTokenTypes.property:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.definition,SemanticTokenModifiers.readonly]}),ei.parent?void 0:"prune";if(isSpecificationColor(ei)){ni({node:ei,keyword:"color",type:SemanticTokenTypes.keyword}),ni({node:ei,property:"name",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly]});return}if((isSpecificationElementKind(ei)||isSpecificationRelationshipKind(ei)||isSpecificationDeploymentNodeKind(ei))&&ni({node:ei,property:"kind",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly]}),isTags(ei))return ni({node:ei,property:"values",type:SemanticTokenTypes.interface});if(isTag(ei))return ni({node:ei,property:"name",type:SemanticTokenTypes.type,modifier:[SemanticTokenModifiers.definition]});if((isRelationStyleProperty(ei)||isElementStyleProperty(ei)&&isElementBody(ei.$container))&&ni({node:ei,property:"key",type:SemanticTokenTypes.property}),isOpacityProperty(ei))return ni({node:ei,property:"key",type:SemanticTokenTypes.property}),ni({node:ei,property:"value",type:SemanticTokenTypes.number}),"prune";if(isLinkProperty(ei)||isIconProperty(ei)||isStringProperty(ei))return ni({node:ei,property:"key",type:SemanticTokenTypes.property}),isIconProperty(ei)&&(ei.libicon||ei.value==="none")?(ni({node:ei,property:ei.libicon?"libicon":"value",type:SemanticTokenTypes.enum,modifier:[SemanticTokenModifiers.defaultLibrary]}),"prune"):("value"in ei&&ei.value&&ni({node:ei,property:"value",type:SemanticTokenTypes.string}),"prune");if(isColorProperty(ei)||isShapeProperty(ei)||isArrowProperty(ei)||isLineProperty(ei)||isBorderProperty(ei))return ni({node:ei,property:"key",type:SemanticTokenTypes.property}),"value"in ei&&ni({node:ei,property:"value",type:SemanticTokenTypes.enum}),"prune"}highlightNameAndKind(ei,ni){ni({node:ei,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly]}),ni({node:ei,property:"kind",type:SemanticTokenTypes.keyword,modifier:[]})}highlightView(ei,ni){ei.name&&ni({node:ei,property:"name",type:SemanticTokenTypes.variable,modifier:[SemanticTokenModifiers.declaration,SemanticTokenModifiers.readonly,"local"]})}}const S$1=Symbol.for("DeploymentsIndex");class DeploymentsIndex{constructor(ei){this.services=ei,this.Names=ei.references.NameProvider,this.langiumDocuments=ei.shared.workspace.LangiumDocuments,ei.shared.workspace.DocumentBuilder.onBuildPhase(DocumentState.IndexedContent,(ni,ri)=>{for(const ii of ni)delete ii[S$1]})}Names;langiumDocuments;documents(){return this.langiumDocuments.all.filter(ei=>isLikeC4LangiumDocument(ei)&&ei.state>=DocumentState.IndexedContent)}get(ei){return ei.state<DocumentState.IndexedContent&&logWarnError(`Document ${ei.uri.path} is not indexed`),ei[S$1]??=this.createDocumentIndex(ei)}nested(ei){const ni=this.getFqn(ei);return this.documents().flatMap(ri=>this.get(ri).nested(ni))}byFqn(ei){return this.documents().flatMap(ni=>this.get(ni).byFqn(ei))}getFqn(ei){let ni=ElementOps.readId(ei);if(n$7(ni))return ni;const ri=[this.Names.getNameStrict(ei)];let ii=ei,si;for(;si=getContainerOfType(ii.$container,isDeploymentNode);)ri.push(this.Names.getNameStrict(si)),ii=si;return ni=ri.reduceRight((oi,ai)=>`${oi}.${ai}`),ElementOps.writeId(ei,ni),ni}createDocumentIndex(ei){const ni=ei.parseResult.value.deployments.flatMap(li=>li.elements);if(ni.length===0)return DocumentDeploymentsIndex.EMPTY;const ri=new Array,ii=new MultiMap,si=new MultiMap,oi=this.Names,ai=this.services.workspace.AstNodeDescriptionProvider,ci=li=>{const di={...ai.createDescription(li.node,li.name,ei),fqn:li.fqn};return ElementOps.writeId(li.node,li.fqn),si.add(li.fqn,di),di},ui=(li,di)=>{const fi=[],pi=li.body?.elements;if(!pi||pi.length===0)return[];const hi=new Set;for(const vi of pi)if(!isDeploymentRelation(vi))try{const bi=oi.getName(vi);if(n$7(bi)){const gi=`${di}.${bi}`,wi=ci({node:vi,name:bi,fqn:gi});ii.add(di,wi),hi.add(wi.name),isDeploymentNode(vi)&&vi.body&&fi.push(...ui(vi,gi))}}catch(bi){logWarnError(bi)}return fi.length>0&&x$1(fi,i$5(p$8("name")),i$6((vi,bi)=>{vi.length>1||hi.has(bi)||ii.add(di,vi[0])})),ii.get(di)};for(const li of ni)try{if(isDeploymentRelation(li))continue;const di=oi.getName(li);n$7(di)&&(ri.push(ci({node:li,name:di,fqn:di})),ui(li,di))}catch(di){logWarnError(di)}return new DocumentDeploymentsIndex(ri,ii,si)}}class DocumentDeploymentsIndex{constructor(ei,ni,ri){this._rootNodes=ei,this._nested=ni,this._byfqn=ri}static EMPTY=new DocumentDeploymentsIndex([],new MultiMap,new MultiMap);rootNodes(){return this._rootNodes}byFqn(ei){return this._byfqn.get(ei)}nested(ei){return this._nested.get(ei)}unique(){const ei=[];return x$1([...this._byfqn.values()],i$5(p$8("name")),i$6(ni=>{ni.length===1&&ei.push(ni[0])})),ei}}const{findNodeForProperty:R$1}=c$4,{toDocumentSegment:d}=q$1;function w$2(ti,ei,ni){const ri=R$1(ei.$cstNode,"name");return{documentUri:ni.uri,name:ei.name,...ei.$cstNode&&{selectionSegment:d(ei.$cstNode)},...ri&&{nameSegment:d(ri)},path:ti.getAstNodePath(ei),type:Element}}function computeDocumentFqn(ti,ei){const ni=ti.c4fqnIndex=new MultiMap,ri=ti.parseResult.value.models.flatMap(ai=>ai.elements);if(ri.length===0)return;const ii=ei.workspace.AstNodeLocator,si=S$3.from(ri.map(ai=>[ai,null]));let oi;for(;oi=si.shift();)try{const[ai,ci]=oi;if(isRelation(ai))continue;if(isExtendElement(ai)){if(n$5(ai.body)&&!n$4(ai.body.elements)){const ui=getFqnElementRef(ai.element);for(const li of ai.body.elements)isRelation(li)||si.push([li,ui])}continue}if(isElement(ai)){const ui=index_KOeaSlL8.Y(ai.name,ci);if(ni.add(ui,{...w$2(ii,ai,ti),fqn:ui}),ElementOps.writeId(ai,ui),n$5(ai.body)&&!n$4(ai.body.elements))for(const li of ai.body.elements)isRelation(li)||si.push([li,ui]);continue}index_KOeaSlL8.n(ai)}catch(ai){logError$1(ai)}}class FqnIndex{constructor(ei){this.services=ei,this.langiumDocuments=ei.shared.workspace.LangiumDocuments,ei.shared.workspace.DocumentBuilder.onBuildPhase(DocumentState.IndexedContent,async(ni,ri)=>{for(const ii of ni)if(isLikeC4LangiumDocument(ii)){delete ii.c4fqnIndex,delete ii.c4Elements,delete ii.c4Specification,delete ii.c4Relations,delete ii.c4Views;try{computeDocumentFqn(ii,ei)}catch(si){logWarnError(si)}}return await Promise.resolve()}),logger.debug("[FqnIndex] Created")}langiumDocuments;get documents(){return this.langiumDocuments.all.filter(isFqnIndexedDocument)}entries(ei){return this.documents.flatMap(ni=>ni.c4fqnIndex.keys().filter(ei).flatMap(ri=>ni.c4fqnIndex.get(ri)))}getFqn(ei){return ElementOps.readId(ei)??null}byFqn(ei){return this.documents.flatMap(ni=>ni.c4fqnIndex.get(ei))}directChildrenOf(ei){return stream([ei]).flatMap(ni=>{const ri=this.entries(ii=>index_KOeaSlL8.S(ii)===ni).map(ii=>[ii.name,ii]).toArray();return ri.length===0?[]:new MultiMap(ri).entriesGroupedByKey().flatMap(([ii,si])=>si.length===1?si:[]).iterator()})}uniqueDescedants(ei){return new StreamImpl(()=>{const ni=`${ei}.`,ri=new Set,ii=[],si=new MultiMap;if(this.entries(oi=>oi.startsWith(ni)).forEach(oi=>{const ai=index_KOeaSlL8.R(oi.fqn),ci={...oi,name:ai};index_KOeaSlL8.S(oi.fqn)===ei?(ri.add(ai),si.add(ai,ci)):ii.push(ci)}),si.size+ii.length===0)return null;for(const oi of ii)ri.has(oi.name)||si.add(oi.name,oi);return si.entriesGroupedByKey().flatMap(([oi,ai])=>ai.length===1?ai:[]).iterator()},ni=>ni?ni.next():DONE_RESULT)}}function v$2(ti){const ei=new index_KOeaSlL8._({type:"directed"}),ni=[];for(const ri of index_KOeaSlL8.a0(ti))ei.addNode(ri.id,{view:ri}),index_KOeaSlL8.a1(ri)&&ni.push(ri);if(ni.length===0)return ti;for(const ri of ni){if(!ei.hasNode(ri.extends)){console.warn(`View "${ri.id}" extends from "${ri.extends}" which does not exist`);continue}if(index_KOeaSlL8.a2(ei,ri.id,ri.extends)){console.warn(`View "${ri.id}" extends from "${ri.extends}" which creates a cycle`);continue}ei.addDirectedEdge(ri.id,ri.extends)}return index_KOeaSlL8.a3.topologicalSort(ei).reverse().reduce((ri,ii)=>{const si=ei.getNodeAttribute(ii,"view");if(!index_KOeaSlL8.a1(si))return ri[si.id]=si,ri;const oi=ri[si.extends];return!oi||!index_KOeaSlL8.a4(oi)||(ri[si.id]={...oi,...si,rules:[...oi.rules,...si.rules]}),ri},{})}var getOwnPropertyNames=Object.getOwnPropertyNames,getOwnPropertySymbols=Object.getOwnPropertySymbols,hasOwnProperty=Object.prototype.hasOwnProperty;function combineComparators(ti,ei){return function(ri,ii,si){return ti(ri,ii,si)&&ei(ri,ii,si)}}function createIsCircular(ti){return function(ni,ri,ii){if(!ni||!ri||typeof ni!="object"||typeof ri!="object")return ti(ni,ri,ii);var si=ii.cache,oi=si.get(ni),ai=si.get(ri);if(oi&&ai)return oi===ri&&ai===ni;si.set(ni,ri),si.set(ri,ni);var ci=ti(ni,ri,ii);return si.delete(ni),si.delete(ri),ci}}function getStrictProperties(ti){return getOwnPropertyNames(ti).concat(getOwnPropertySymbols(ti))}var hasOwn=Object.hasOwn||function(ti,ei){return hasOwnProperty.call(ti,ei)};function sameValueZeroEqual(ti,ei){return ti||ei?ti===ei:ti===ei||ti!==ti&&ei!==ei}var OWNER="_owner",getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,keys=Object.keys;function areArraysEqual(ti,ei,ni){var ri=ti.length;if(ei.length!==ri)return!1;for(;ri-- >0;)if(!ni.equals(ti[ri],ei[ri],ri,ri,ti,ei,ni))return!1;return!0}function areDatesEqual(ti,ei){return sameValueZeroEqual(ti.getTime(),ei.getTime())}function areMapsEqual(ti,ei,ni){if(ti.size!==ei.size)return!1;for(var ri={},ii=ti.entries(),si=0,oi,ai;(oi=ii.next())&&!oi.done;){for(var ci=ei.entries(),ui=!1,li=0;(ai=ci.next())&&!ai.done;){var di=oi.value,fi=di[0],pi=di[1],hi=ai.value,vi=hi[0],bi=hi[1];!ui&&!ri[li]&&(ui=ni.equals(fi,vi,si,li,ti,ei,ni)&&ni.equals(pi,bi,fi,vi,ti,ei,ni))&&(ri[li]=!0),li++}if(!ui)return!1;si++}return!0}function areObjectsEqual(ti,ei,ni){var ri=keys(ti),ii=ri.length;if(keys(ei).length!==ii)return!1;for(var si;ii-- >0;)if(si=ri[ii],si===OWNER&&(ti.$$typeof||ei.$$typeof)&&ti.$$typeof!==ei.$$typeof||!hasOwn(ei,si)||!ni.equals(ti[si],ei[si],si,si,ti,ei,ni))return!1;return!0}function areObjectsEqualStrict(ti,ei,ni){var ri=getStrictProperties(ti),ii=ri.length;if(getStrictProperties(ei).length!==ii)return!1;for(var si,oi,ai;ii-- >0;)if(si=ri[ii],si===OWNER&&(ti.$$typeof||ei.$$typeof)&&ti.$$typeof!==ei.$$typeof||!hasOwn(ei,si)||!ni.equals(ti[si],ei[si],si,si,ti,ei,ni)||(oi=getOwnPropertyDescriptor(ti,si),ai=getOwnPropertyDescriptor(ei,si),(oi||ai)&&(!oi||!ai||oi.configurable!==ai.configurable||oi.enumerable!==ai.enumerable||oi.writable!==ai.writable)))return!1;return!0}function arePrimitiveWrappersEqual(ti,ei){return sameValueZeroEqual(ti.valueOf(),ei.valueOf())}function areRegExpsEqual(ti,ei){return ti.source===ei.source&&ti.flags===ei.flags}function areSetsEqual(ti,ei,ni){if(ti.size!==ei.size)return!1;for(var ri={},ii=ti.values(),si,oi;(si=ii.next())&&!si.done;){for(var ai=ei.values(),ci=!1,ui=0;(oi=ai.next())&&!oi.done;)!ci&&!ri[ui]&&(ci=ni.equals(si.value,oi.value,si.value,oi.value,ti,ei,ni))&&(ri[ui]=!0),ui++;if(!ci)return!1}return!0}function areTypedArraysEqual(ti,ei){var ni=ti.length;if(ei.length!==ni)return!1;for(;ni-- >0;)if(ti[ni]!==ei[ni])return!1;return!0}var ARGUMENTS_TAG="[object Arguments]",BOOLEAN_TAG="[object Boolean]",DATE_TAG="[object Date]",MAP_TAG="[object Map]",NUMBER_TAG="[object Number]",OBJECT_TAG="[object Object]",REG_EXP_TAG="[object RegExp]",SET_TAG="[object Set]",STRING_TAG="[object String]",isArray=Array.isArray,isTypedArray=typeof ArrayBuffer=="function"&&ArrayBuffer.isView?ArrayBuffer.isView:null,assign=Object.assign,getTag=Object.prototype.toString.call.bind(Object.prototype.toString);function createEqualityComparator(ti){var ei=ti.areArraysEqual,ni=ti.areDatesEqual,ri=ti.areMapsEqual,ii=ti.areObjectsEqual,si=ti.arePrimitiveWrappersEqual,oi=ti.areRegExpsEqual,ai=ti.areSetsEqual,ci=ti.areTypedArraysEqual;return function(li,di,fi){if(li===di)return!0;if(li==null||di==null||typeof li!="object"||typeof di!="object")return li!==li&&di!==di;var pi=li.constructor;if(pi!==di.constructor)return!1;if(pi===Object)return ii(li,di,fi);if(isArray(li))return ei(li,di,fi);if(isTypedArray!=null&&isTypedArray(li))return ci(li,di,fi);if(pi===Date)return ni(li,di,fi);if(pi===RegExp)return oi(li,di,fi);if(pi===Map)return ri(li,di,fi);if(pi===Set)return ai(li,di,fi);var hi=getTag(li);return hi===DATE_TAG?ni(li,di,fi):hi===REG_EXP_TAG?oi(li,di,fi):hi===MAP_TAG?ri(li,di,fi):hi===SET_TAG?ai(li,di,fi):hi===OBJECT_TAG?typeof li.then!="function"&&typeof di.then!="function"&&ii(li,di,fi):hi===ARGUMENTS_TAG?ii(li,di,fi):hi===BOOLEAN_TAG||hi===NUMBER_TAG||hi===STRING_TAG?si(li,di,fi):!1}}function createEqualityComparatorConfig(ti){var ei=ti.circular,ni=ti.createCustomConfig,ri=ti.strict,ii={areArraysEqual:ri?areObjectsEqualStrict:areArraysEqual,areDatesEqual,areMapsEqual:ri?combineComparators(areMapsEqual,areObjectsEqualStrict):areMapsEqual,areObjectsEqual:ri?areObjectsEqualStrict:areObjectsEqual,arePrimitiveWrappersEqual,areRegExpsEqual,areSetsEqual:ri?combineComparators(areSetsEqual,areObjectsEqualStrict):areSetsEqual,areTypedArraysEqual:ri?areObjectsEqualStrict:areTypedArraysEqual};if(ni&&(ii=assign({},ii,ni(ii))),ei){var si=createIsCircular(ii.areArraysEqual),oi=createIsCircular(ii.areMapsEqual),ai=createIsCircular(ii.areObjectsEqual),ci=createIsCircular(ii.areSetsEqual);ii=assign({},ii,{areArraysEqual:si,areMapsEqual:oi,areObjectsEqual:ai,areSetsEqual:ci})}return ii}function createInternalEqualityComparator(ti){return function(ei,ni,ri,ii,si,oi,ai){return ti(ei,ni,ai)}}function createIsEqual(ti){var ei=ti.circular,ni=ti.comparator,ri=ti.createState,ii=ti.equals,si=ti.strict;if(ri)return function(ci,ui){var li=ri(),di=li.cache,fi=di===void 0?ei?new WeakMap:void 0:di,pi=li.meta;return ni(ci,ui,{cache:fi,equals:ii,meta:pi,strict:si})};if(ei)return function(ci,ui){return ni(ci,ui,{cache:new WeakMap,equals:ii,meta:void 0,strict:si})};var oi={cache:void 0,equals:ii,meta:void 0,strict:si};return function(ci,ui){return ni(ci,ui,oi)}}var deepEqual=createCustomEqual();createCustomEqual({strict:!0}),createCustomEqual({circular:!0}),createCustomEqual({circular:!0,strict:!0}),createCustomEqual({createInternalComparator:function(){return sameValueZeroEqual}}),createCustomEqual({strict:!0,createInternalComparator:function(){return sameValueZeroEqual}}),createCustomEqual({circular:!0,createInternalComparator:function(){return sameValueZeroEqual}}),createCustomEqual({circular:!0,createInternalComparator:function(){return sameValueZeroEqual},strict:!0});function createCustomEqual(ti){ti===void 0&&(ti={});var ei=ti.circular,ni=ei===void 0?!1:ei,ri=ti.createInternalComparator,ii=ti.createState,si=ti.strict,oi=si===void 0?!1:si,ai=createEqualityComparatorConfig(ti),ci=createEqualityComparator(ai),ui=ri?ri(ci):createInternalEqualityComparator(ci);return createIsEqual({circular:ni,comparator:ci,createState:ii,equals:ui,strict:oi})}function assignNavigateTo(ti){const ei=new Map;for(const ni of ti)if(index_KOeaSlL8.k.isElement(ni)&&ni.viewOf&&n$6(ni.extends)){const ri=ei.get(ni.viewOf)??[];ri.push(ni.id),ei.set(ni.viewOf,ri)}for(const{id:ni,nodes:ri}of ti)for(const ii of ri){const si=index_KOeaSlL8.i.modelRef(ii);if(ii.navigateTo||!si)continue;const oi=f$6(ei.get(si)??[],ai=>ai!==ni);oi&&(ii.navigateTo=oi)}return ti}function v$1(ti,ei="/"){const ni=x$1(ti,m$1(ci=>ci.docUri),T$2(n$7),i$b());if(ni.length===0)return"";if(ni.length===1){const ci=parsePath(ni[0]).pathname.split(ei);return ci.length<=1?ei:(ci.pop(),ci.join(ei)+ei)}index_KOeaSlL8.o(i$a(ni,2),"Expected at least 2 unique URIs");const[ri,...ii]=ni,si=parsePath(ri).pathname.split(ei);let oi=si.length;for(const ci of ii){if(ci===ri)continue;const ui=parsePath(ci).pathname.split(ei);for(let li=0;li<oi;li++)ui[li]!==si[li]&&(oi=li);if(oi===0)return""}const ai=si.slice(0,oi).join(ei);return ai.endsWith(ei)?ai:ai+ei}function resolveRelativePaths(ti){const ei="/",ni=v$1(ti,ei);return ti.map(ri=>{if(!ri.docUri)return{view:ri,parts:[]};let ii=parsePath(ri.docUri).pathname;return ni.length>0?(index_KOeaSlL8.o(ii.startsWith(ni),`Expect path "${ii}" to start with common prefix: "${ni}"`),ii=ii.slice(ni.length)):ii=ii.includes(ei)?ii.slice(ii.lastIndexOf(ei)+1):ii,{view:ri,parts:ii.split(ei)}}).sort((ri,ii)=>{if(ri.parts.length!==ii.parts.length)return ri.parts.length-ii.parts.length;for(let si=0;si<ri.parts.length;si++){const oi=index_KOeaSlL8.T(ri.parts[si],ii.parts[si]);if(oi!==0)return oi}return index_KOeaSlL8.T(ri.view.title??ri.view.id,ii.view.title??ii.view.id)}).map(({parts:ri,view:ii})=>({...ii,relativePath:ri.join(ei)}))}function ve(ti,ei){const ni={tags:new Set,deployments:{},elements:{},relationships:{},colors:{}},ri={predicates:{},dynamicPredicates:{},styles:{}};for(const gi of ei){const{c4Specification:wi,c4Globals:Ri}=gi;wi.tags.forEach(ki=>ni.tags.add(ki)),Object.assign(ni.elements,wi.elements),Object.assign(ni.relationships,wi.relationships),Object.assign(ni.colors,wi.colors),Object.assign(ni.deployments,wi.deployments),Object.assign(ri.predicates,Ri.predicates),Object.assign(ri.dynamicPredicates,Ri.dynamicPredicates),Object.assign(ri.styles,Ri.styles)}function ii(gi,wi){return m$1(wi,Ri=>{try{const ki=ti.lsp.DocumentLinkProvider.relativeLink(gi,Ri.url);if(ki&&ki!==Ri.url)return{...Ri,relative:ki}}catch(ki){logWarnError(ki)}return Ri})}const si=i$8(ni.colors,gi=>t0(gi.color));function oi(gi){return({tags:wi,links:Ri,style:{color:ki,shape:Ai,icon:Ni,opacity:_i,border:Mi},id:Bi,kind:Xi,title:Ii,description:Ti,technology:$i,metadata:Fi})=>{try{const Wi=ni.elements[Xi];if(!Wi)return logger.warn(`No kind '${Xi}' found for ${Bi}`),null;const Gi=Ri?ii(gi,Ri):null;return ki??=Wi.style.color,Ai??=Wi.style.shape,Ni??=Wi.style.icon,_i??=Wi.style.opacity,Mi??=Wi.style.border,$i??=Wi.technology,{...ki&&{color:ki},...Ai&&{shape:Ai},...Ni&&{icon:Ni},...Fi&&!n$4(Fi)&&{metadata:Fi},...Wi.notation&&{notation:Wi.notation},style:{...Mi&&{border:Mi},...e$2(_i)&&{opacity:_i}},links:Gi,tags:wi??null,technology:$i??null,description:Ti??null,title:Ii,kind:Xi,id:Bi}}catch(Wi){logWarnError(Wi)}return null}}const ai=x$1(ei,u$5(gi=>m$1(gi.c4Elements,oi(gi))),T$2(n$7),index_KOeaSlL8.a5,l$8((gi,wi)=>{const Ri=index_KOeaSlL8.S(wi.id);return Ri&&n$6(gi[Ri])?(logWarnError(`No parent found for ${wi.id}`),gi):(gi[wi.id]=wi,gi)},{}));function ci(gi){return({astPath:wi,source:Ri,target:ki,kind:Ai,links:Ni,id:_i,...Mi})=>{if(n$6(ai[Ri])||n$6(ai[ki]))return logger.warn(`Invalid relation ${_i} at ${gi.uri.path} ${wi}, source: ${Ri}(${!!ai[Ri]}), target: ${ki}(${!!ai[ki]})`),null;const Bi=Ni?ii(gi,Ni):null;return l$6(Ai)&&Ai in ni.relationships?{...ni.relationships[Ai],...Mi,...Bi&&{links:Bi},source:Ri,target:ki,kind:Ai,id:_i}:{...Bi&&{links:Bi},...Mi,source:Ri,target:ki,id:_i}}}const ui=x$1(ei,u$5(gi=>m$1(gi.c4Relations,ci(gi))),T$2(n$7),m$2(k$3),t$6(),c$3(p$8("id")));function li(gi){return wi=>{if(!index_KOeaSlL8.a7.isDeploymentNode(wi)){if(!wi.links||wi.links.length===0)return wi;const Ri=ii(gi,wi.links);return{...wi,links:Ri}}try{const Ri=ni.deployments[wi.kind];if(!Ri)return logger.warn(`No kind '${wi.kind}' found for ${wi.id}`),null;let{technology:ki=Ri.technology,notation:Ai=Ri.notation,links:Ni,style:_i}=wi;return{...wi,...Ai&&{notation:Ai},...ki&&{technology:ki},style:{border:"dashed",opacity:10,...Ri.style,..._i},links:Ni?ii(gi,Ni):null}}catch(Ri){logWarnError(Ri)}return null}}const di=x$1(ei,u$5(gi=>m$1(gi.c4Deployments,li(gi))),T$2(n$7),index_KOeaSlL8.a5,l$8((gi,wi)=>{const Ri=index_KOeaSlL8.S(wi.id);return Ri&&n$6(gi[Ri])?(logWarnError(`No parent found for deployment element ${wi.id}`),gi):(gi[wi.id]=wi,gi)},{}));function fi(gi){return({astPath:wi,source:Ri,target:ki,kind:Ai,links:Ni,id:_i,...Mi})=>{if(n$6(di[Ri.id])||n$6(di[ki.id]))return logger.warn(`Invalid deployment relation ${_i} at ${gi.uri.path} ${wi}, source: ${Ri.id}(${!!di[Ri.id]}), target: ${ki.id}(${!!di[ki.id]})`),null;const Bi=Ni?ii(gi,Ni):null;return l$6(Ai)&&Ai in ni.relationships?{...ni.relationships[Ai],...Mi,...Bi&&{links:Bi},source:Ri,target:ki,kind:Ai,id:_i}:{...Bi&&{links:Bi},...Mi,source:Ri,target:ki,id:_i}}}const pi=x$1(ei,u$5(gi=>m$1(gi.c4DeploymentRelations,fi(gi))),T$2(n$7),l$8((gi,wi)=>n$5(gi[wi.id])?(logWarnError(`Duplicate deployment relation ${wi.id}`),gi):(gi[wi.id]=wi,gi),{}));function hi(gi){const wi=gi.uri.toString();return Ri=>{let{id:ki,title:Ai,description:Ni,tags:_i,links:Mi,astPath:Bi,...Xi}=Ri;Ri.__==="element"&&n$6(Ai)&&"viewOf"in Ri&&(Ai=ai[Ri.viewOf]?.title??null),n$6(Ai)&&ki==="index"&&(Ai="Landscape view");const Ii=Mi?ii(gi,Mi):null;return{...Xi,customColorDefinitions:si,tags:_i,links:Ii,docUri:wi,description:Ni,title:Ai,id:ki}}}const vi=x$1(ei,u$5(gi=>m$1(gi.c4Views,hi(gi))),resolveRelativePaths);vi.some(gi=>gi.id==="index")||vi.unshift({__:"element",id:"index",title:"Landscape view",description:null,tags:null,links:null,customColorDefinitions:si,rules:[{include:[{wildcard:!0}]}]});const bi=x$1(vi,c$3(p$8("id")),v$2);return{specification:{tags:Array.from(ni.tags),elements:ni.elements,relationships:ni.relationships,deployments:ni.deployments},elements:ai,relations:ui,globals:ri,views:bi,deployments:{elements:di,relations:pi}}}const G$1="ParsedLikeC4Model",j$1="ComputedLikeC4Model";class LikeC4ModelBuilder{constructor(ei){this.services=ei,this.langiumDocuments=ei.shared.workspace.LangiumDocuments;const ni=ei.likec4.ModelParser;ei.shared.workspace.DocumentBuilder.onUpdate((ri,ii)=>{ii.length>0&&this.notifyListeners(ii)}),ei.shared.workspace.DocumentBuilder.onBuildPhase(DocumentState.Validated,async(ri,ii)=>{let si=[];try{logger.debug(`[ModelBuilder] onValidated (${ri.length} docs)`);for(const oi of ri)si.push(ni.parse(oi).uri)}catch(oi){logWarnError(oi)}return si.length>0&&this.notifyListeners(si),await Promise.resolve()}),logger.debug("[ModelBuilder] Created")}langiumDocuments;listeners=[];unsafeSyncBuildModel(){const ei=this.documents();return ei.length===0?(logger.debug("[ModelBuilder] No documents to build model from"),null):this.services.WorkspaceCache.get(G$1,()=>(logger.debug(`[ModelBuilder] buildModel (${ei.length} docs)`),ve(this.services,ei)))}async buildModel(ei){return this.services.WorkspaceCache.get(G$1)||await this.services.shared.workspace.WorkspaceLock.read(async()=>(ei&&await interruptAndCheck(ei),this.unsafeSyncBuildModel()))}previousViews={};unsafeSyncBuildComputedModel(ei){const ni=this.services.WorkspaceCache,ri=this.services.WorkspaceCache;return ni.get(j$1,()=>{const ii=index_KOeaSlL8.a.makeCompute(ei),si=[];for(const ai of r$8(ei.views)){const ci=ii(ai);if(!ci.isSuccess){logWarnError(ci.error);continue}si.push(ci.view)}assignNavigateTo(si);const oi=l$7(si,ai=>{const ci=this.previousViews[ai.id],ui=ci&&deepEqual(ai,ci)?ci:ai;return ri.set(z(ai.id),ui),[ai.id,ui]});return this.previousViews={...oi},{...structuredClone(i$9(ei,["specification","elements","relations","globals","deployments"])),views:oi}})}async buildComputedModel(ei){const ni=this.services.WorkspaceCache;return ni.has(j$1)?ni.get(j$1):await this.services.shared.workspace.WorkspaceLock.read(async()=>{ei&&await interruptAndCheck(ei);const ri=this.unsafeSyncBuildModel();return ri?this.unsafeSyncBuildComputedModel(ri):null})}async computeView(ei,ni){const ri=this.services.WorkspaceCache,ii=z(ei);return ri.has(ii)?ri.get(ii):await this.services.shared.workspace.WorkspaceLock.read(async()=>(ni&&await interruptAndCheck(ni),ri.get(ii,()=>{const si=this.unsafeSyncBuildModel(),oi=si?.views[ei];if(!oi)return logger.warn(`[ModelBuilder] Cannot find view ${ei}`),null;const ai=index_KOeaSlL8.a.makeCompute(si)(oi);if(!ai.isSuccess)return logWarnError(ai.error),null;let ci=ai.view;const ui=x$1(si.views,r$8(),T$2(index_KOeaSlL8.a6),T$2(di=>di.id!==ei),i$5(di=>di.viewOf));for(const di of ci.nodes)if(!di.navigateTo){const fi=ui[di.id];fi&&(di.navigateTo=fi[0].id)}const li=this.previousViews[ei];return li&&deepEqual(ci,li)?ci=li:this.previousViews[ei]=ci,ci})))}onModelParsed(ei){return this.listeners.push(ei),Disposable.create(()=>{const ni=this.listeners.indexOf(ei);ni>=0&&this.listeners.splice(ni,1)})}documents(){return this.langiumDocuments.all.filter(isParsedLikeC4LangiumDocument).toArray()}notifyListeners(ei){for(const ni of this.listeners)try{ni(ei)}catch(ri){logWarnError(ri)}}}function z(ti){return`computed-view-${ti}`}const{findNodeForKeyword:f$2,findNodeForProperty:s$2}=c$4,{getDocument:g$2}=f$9;class LikeC4ModelLocator{constructor(ei){this.services=ei,this.fqnIndex=ei.likec4.FqnIndex,this.deploymentsIndex=ei.likec4.DeploymentsIndex,this.langiumDocuments=ei.shared.workspace.LangiumDocuments}fqnIndex;deploymentsIndex;langiumDocuments;documents(){return this.langiumDocuments.all.filter(isParsedLikeC4LangiumDocument)}getParsedElement(ei){if(t$4(ei)){const ii=ei,si=this.fqnIndex.byFqn(ei).head();if(!si)return null;const oi=this.langiumDocuments.getDocument(si.documentUri);return!oi||!isParsedLikeC4LangiumDocument(oi)?null:oi.c4Elements.find(ai=>ai.id===ii)??null}const ni=this.fqnIndex.getFqn(ei);if(!ni)return null;const ri=g$2(ei);return isParsedLikeC4LangiumDocument(ri)?ri.c4Elements.find(ii=>ii.id===ni)??null:null}locateElement(ei,ni){const ri=this.fqnIndex.byFqn(ei).head(),ii=ri?.nameSegment??ri?.selectionSegment;return!ri||!ii?null:{uri:ri.documentUri.toString(),range:ii.range}}locateDeploymentElement(ei,ni){const ri=this.deploymentsIndex.byFqn(ei).head(),ii=ri?.nameSegment??ri?.selectionSegment;return!ri||!ii?null:{uri:ri.documentUri.toString(),range:ii.range}}locateRelation(ei){for(const ni of this.documents()){const ri=ni.c4Relations.find(oi=>oi.id===ei)??ni.c4DeploymentRelations.find(oi=>oi.id===ei);if(!ri)continue;const ii=this.services.workspace.AstNodeLocator.getAstNode(ni.parseResult.value,ri.astPath);if(!isRelation(ii)&&!isDeploymentRelation(ii))continue;let si=ii.title?s$2(ii.$cstNode,"title"):void 0;if(si??=ii.kind?s$2(ii.$cstNode,"kind"):void 0,si??=s$2(ii.$cstNode,"target"),si??=ii.$cstNode,!!si)return{uri:ni.uri.toString(),range:si.range}}return null}locateViewAst(ei){for(const ni of this.documents()){const ri=ni.c4Views.find(si=>si.id===ei);if(!ri)continue;const ii=this.services.workspace.AstNodeLocator.getAstNode(ni.parseResult.value,ri.astPath);if(isLikeC4View(ii))return{doc:ni,view:ri,viewAst:ii}}return null}locateView(ei){const ni=this.locateViewAst(ei);if(!ni)return null;const ri=ni.viewAst;let ii=ri.name?s$2(ri.$cstNode,"name"):void 0;return ii??=f$2(ri.$cstNode,"view"),ii??=ri.$cstNode,ii?{uri:ni.doc.uri.toString(),range:ii.range}:null}}var defaultWeakMap,hasRequiredDefaultWeakMap;function requireDefaultWeakMap(){if(hasRequiredDefaultWeakMap)return defaultWeakMap;hasRequiredDefaultWeakMap=1;function ti(ei){if(typeof ei!="function")throw new Error("mnemonist/DefaultWeakMap.constructor: expecting a function.");this.items=new WeakMap,this.factory=ei}return ti.prototype.clear=function(){this.items=new WeakMap},ti.prototype.get=function(ei){var ni=this.items.get(ei);return typeof ni>"u"&&(ni=this.factory(ei),this.items.set(ei,ni)),ni},ti.prototype.peek=function(ei){return this.items.get(ei)},ti.prototype.set=function(ei,ni){return this.items.set(ei,ni),this},ti.prototype.has=function(ei){return this.items.has(ei)},ti.prototype.delete=function(ei){return this.items.delete(ei)},ti.prototype.inspect=function(){return this.items},typeof Symbol<"u"&&(ti.prototype[Symbol.for("nodejs.util.inspect.custom")]=ti.prototype.inspect),defaultWeakMap=ti,defaultWeakMap}var defaultWeakMapExports=requireDefaultWeakMap();const a$3=getDefaultExportFromCjs(defaultWeakMapExports),RESERVED_WORDS=["this","it","self","super","likec4lib","global"];function tryOrLog(ti){return async(ei,ni,ri)=>{try{const ii=ti(ei,ni,ri);e$3(ii)&&await ii}catch(ii){logWarnError(ii)}}}const{getDocument:g$1}=f$9,deploymentNodeChecks=ti=>{const ei=ti.likec4.DeploymentsIndex,ni=ti.references.NameProvider;return tryOrLog((ri,ii)=>{const si=ni.getName(ri);if(!si){ii("error","DeploymentNode must be named",{node:ri});return}const oi=index_KOeaSlL8.M(ni.getNameNode(ri),"name CstNode not found").range;RESERVED_WORDS.includes(si)&&ii("error",`Reserved word: ${si}`,{node:ri,range:oi});const ai=ei.getFqn(ri);ei.byFqn(ai).limit(2).toArray().length>1&&ii("error",`Duplicate node name "${ai}"`,{node:ri,range:oi})})},deployedInstanceChecks=ti=>{const ei=ti.likec4.DeploymentsIndex,ni=ti.references.NameProvider;return tryOrLog((ri,ii)=>{const si=ni.getName(ri);if(!si){ii("error","Deployed instance must be named, unique inside node",{node:ri});return}const oi=index_KOeaSlL8.M(ni.getNameNode(ri),"name CstNode not found").range;RESERVED_WORDS.includes(si)&&ii("error",`Reserved word: ${si}`,{node:ri,range:oi});const ai=ei.getFqn(ri);ei.byFqn(ai).limit(2).toArray().length>1&&ii("error",`Duplicate instance name "${ai}"`,{node:ri,range:oi})})},deploymentRelationChecks=ti=>{const ei=ti.likec4.ModelParser;return tryOrLog((ni,ri)=>{if(!ni.source?.value?.ref){let ci=ni.source?.$cstNode?.text??"";ri("error",`DeploymentRelation source '${ci}' not resolved`,{node:ni,property:"source"});return}if(!ni.target?.value?.ref){let ci=ni.target?.$cstNode?.text??"";ri("error",`DeploymentRelation target '${ci}' not resolved`,{node:ni,property:"target"});return}const ii=g$1(ni),si=ei.forDocument(ii),oi=si.parseFqnRef(ni.source);if(index_KOeaSlL8.a8.isModelRef(oi)){ri("error","DeploymentRelation must refer deployment element",{node:ni,property:"source"});return}const ai=si.parseFqnRef(ni.target);if(index_KOeaSlL8.a8.isModelRef(ai)){ri("error","DeploymentRelation must refer deployment element",{node:ni,property:"target"});return}index_KOeaSlL8.a9(oi.deployment,ai.deployment)&&ri("error","Invalid parent-child relationship",{node:ni})})},dynamicViewRulePredicate=ti=>tryOrLog((ei,ni)=>{const ri=elementExpressionFromPredicate(ei.value);switch(!0){case isElementKindExpression(ri):case isElementTagExpression(ri):case isWildcardExpression(ri):{ni("warning","Predicate is ignored, as not supported in dynamic views",{node:ei});return}}}),dynamicViewStep=ti=>{const ei=ti.likec4.FqnIndex;return tryOrLog((ni,ri)=>{const ii=elementRef(ni.source),si=ii&&ei.getFqn(ii);si||ri("error","Source not found (not parsed/indexed yet)",{node:ni,property:"source"});const oi=elementRef(ni.target),ai=oi&&ei.getFqn(oi);ai||ri("error","Target not found (not parsed/indexed yet)",{node:ni,property:"target"}),si&&ai&&(index_KOeaSlL8.aa(si,ai)||index_KOeaSlL8.aa(ai,si))&&ri("error","Invalid parent-child relationship",{node:ni})})},{getDocument:p$2}=f$9,elementChecks=ti=>{const ei=ti.likec4.FqnIndex,ni=ti.workspace.AstNodeLocator;return tryOrLog((ri,ii)=>{const si=ei.getFqn(ri);if(!si){ii("error","Not indexed element",{node:ri,property:"name"});return}RESERVED_WORDS.includes(ri.name)&&ii("error",`Reserved word: ${ri.name}`,{node:ri,property:"name"});const oi=p$2(ri).uri,ai=ni.getAstNodePath(ri),ci=ei.byFqn(si).filter(ui=>ui.documentUri!==oi||ui.path!==ai).head();if(ci){const ui=ci.documentUri!==oi;ii("error",`Duplicate element name ${ri.name!==si?ri.name+" ("+si+")":ri.name}`,{node:ri,property:"name",...ui&&{relatedInformation:[{location:{range:ci.nameSegment?.range??ci.selectionSegment?.range,uri:ci.documentUri.toString()},message:"conflicting element"}]}})}})},opacityPropertyRuleChecks=ti=>tryOrLog((ei,ni)=>{const ri=parseFloat(ei.value);(isNaN(ri)||ri<0||ri>100)&&ni("warning","Value ignored, must be between 0% and 100%",{node:ei,property:"value"})}),iconPropertyRuleChecks=ti=>(ei,ni)=>{const ri=ei.$container;ri.props.some(ii=>isIconProperty(ii)&&ii!==ei)&&ni("error","Icon must be defined once",{node:ei}),isElementStyleProperty(ri)&&isElementBody(ri.$container)&&ri.$container.props.some(ii=>isIconProperty(ii))&&ni("warning","Redundant as icon defined on element",{node:ei})},notesPropertyRuleChecks=ti=>(ei,ni)=>{hasContainerOfType(ei,isDynamicViewStep)||ni("error","Notes can be defined only inside dynamic view",{node:ei})},relationChecks=ti=>{const ei=ti.likec4.FqnIndex;return tryOrLog((ni,ri)=>{const ii=elementRef(ni.target),si=ii&&ei.getFqn(ii);si||ri("error","Target not resolved",{node:ni,property:"target"});let oi;if(n$5(ni.source)){if(oi=elementRef(ni.source),!oi)return ri("error","Source not resolved",{node:ni,property:"source"})}else{if(!isElementBody(ni.$container))return ri("error","Sourceless relation must be nested",{node:ni});oi=ni.$container.$container}const ai=ei.getFqn(oi);ai||ri("error","Source not resolved",{node:ni}),ai&&si&&index_KOeaSlL8.a9(ai,si)&&ri("error","Invalid parent-child relationship",{node:ni})})},relationBodyChecks=ti=>tryOrLog((ei,ni)=>{ei.$container.tags?.values&&ei.tags?.values&&ni("error","Relation cannot have tags in both header and body",{node:ei.tags})}),specificationRuleChecks=ti=>tryOrLog((ei,ni)=>{ei.$containerIndex&&ei.$containerIndex>0&&ni("warning","Prefer one specification per document",{node:ei,property:"name"})}),modelRuleChecks=ti=>tryOrLog((ei,ni)=>{ei.$containerIndex&&ei.$containerIndex>0&&ni("warning","Prefer one model per document",{node:ei,property:"name"})}),globalsChecks=ti=>tryOrLog((ei,ni)=>{ei.$containerIndex&&ei.$containerIndex>0&&ni("warning","Prefer one global block per document",{node:ei,property:"name"})}),elementKindChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{RESERVED_WORDS.includes(ni.name)&&ri("error",`Reserved word: ${ni.name}`,{node:ni,property:"name"});const ii=ei.allElements(ElementKind).filter(si=>si.name===ni.name&&si.node!==ni).head();if(ii){const si=ii.documentUri!==getDocument(ni).uri;ri("error",`Duplicate element kind '${ni.name}'`,{node:ni,property:"name",...si&&{relatedInformation:[{location:{range:ii.nameSegment.range,uri:ii.documentUri.toString()},message:"conflicting definition"}]}})}})},tagChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{const ii="#"+ni.name,si=ei.allElements(Tag).filter(oi=>oi.name===ii&&oi.node!==ni).head();if(si){const oi=si.documentUri!==getDocument(ni).uri;ri("error",`Duplicate tag '${ni.name}'`,{node:ni,property:"name",...oi&&{relatedInformation:[{location:{range:si.nameSegment.range,uri:si.documentUri.toString()},message:"conflicting definition"}]}})}})},relationshipChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{RESERVED_WORDS.includes(ni.name)&&ri("error",`Reserved word: ${ni.name}`,{node:ni,property:"name"}),ei.allElements(RelationshipKind).filter(ii=>ii.name===ni.name).limit(2).count()>1&&ri("error",`Duplicate RelationshipKind '${ni.name}'`,{node:ni,property:"name"})})},globalPredicateChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{const ii=ei.allElements(GlobalPredicateGroup),si=ei.allElements(GlobalDynamicPredicateGroup);ii.concat(si).filter(oi=>oi.name===ni.name).limit(2).count()>1&&ri("error",`Duplicate GlobalPredicateGroup or GlobalDynamicPredicateGroup name '${ni.name}'`,{node:ni,property:"name"})})},globalStyleIdChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{ei.allElements(GlobalStyleId).filter(ii=>ii.name===ni.name).limit(2).count()>1&&ri("error",`Duplicate GlobalStyleId name '${ni.name}'`,{node:ni,property:"name"})})},viewChecks=ti=>{const ei=ti.shared.workspace.IndexManager;return tryOrLog((ni,ri)=>{ni.name&&(RESERVED_WORDS.includes(ni.name)&&ri("error",`Reserved word: ${ni.name}`,{node:ni,property:"name"}),ei.allElements(LikeC4View).filter(ii=>ii.name===ni.name).limit(2).count()>1&&ri("error",`Duplicate view '${ni.name}'`,{node:ni,property:"name"}))})},elementPredicateWithChecks=ti=>tryOrLog((ei,ni)=>{const ri=getContainerOfType(ei,isViewRulePredicate);isExcludePredicate(ri)&&ni("error",'Invalid usage inside "exclude"',{node:ei});const ii=isElementPredicateWhere(ei.subject)?ei.subject.subject:ei.subject;switch(!0){case isElementRef(ii):case isElementDescedantsExpression(ii):case isExpandElementExpression(ii):case isWildcardExpression(ii):return;case isElementKindExpression(ii):case isElementTagExpression(ii):ni("error","Invalid target (expect reference to specific element)",{node:ei,property:"subject"});return;default:index_KOeaSlL8.n(ii)}}),expandElementExprChecks=ti=>tryOrLog((ei,ni)=>{hasContainerOfType(ei,isRelationExpression)&&ni("warning","Redundant usage, expand predicate resolves parent element only when used in relations",{node:ei})}),relationExprChecks=ti=>{const ei=ti.likec4.ModelParser;return tryOrLog((ni,ri)=>{if(ni.$container.$type!=="DeploymentViewRulePredicateExpression")return;const ii=getContainerOfType(ni,isDeploymentViewRulePredicate);if(!ii||ii.isInclude!==!0)return;const si=getDocument(ni),oi=ei.forDocument(si),ai="Model reference is allowed in exclude predicate only";if(isDirectedRelationExpr(ni)){index_KOeaSlL8.ab.isModelRef(oi.parseFqnExpr(ni.source.from))&&ri("error",ai,{node:ni.source,property:"from"}),index_KOeaSlL8.ab.isModelRef(oi.parseFqnExpr(ni.target))&&ri("error",ai,{node:ni,property:"target"});return}let ci;if(isIncomingRelationExpr(ni)?ci=ni.to:isOutgoingRelationExpr(ni)?ci=ni.from:ci=ni.inout.to,index_KOeaSlL8.ab.isModelRef(oi.parseFqnExpr(ci))){ri("error",ai,{node:ni});return}})},fqnRefExprChecks=ti=>{const ei=ti.likec4.ModelParser;return tryOrLog((ni,ri)=>{const ii=ni.ref.value.ref;if(n$6(ii)){ri("error","Invalid empty reference",{node:ni});return}const si=getDocument(ni),oi=ei.forDocument(si).parseFqnRefExpr(ni);if(ni.$container.$type==="DeploymentViewRulePredicateExpression"){if(index_KOeaSlL8.ab.isModelRef(oi)){ri("error","Deployment view predicate must reference deployment model",{node:ni});return}if(index_KOeaSlL8.ab.isDeploymentRef(oi)&&index_KOeaSlL8.a8.isInsideInstanceRef(oi.ref)){ri("error","Must reference deployment nodes or instances, but not internals",{node:ni});return}}!isDeploymentNode(ii)&&l$6(ni.selector)&&ri("warning",`Selector '${ni.selector}' applies to deployment nodes only, ignored here`,{node:ni,property:"selector"})})},incomingExpressionChecks=ti=>tryOrLog((ei,ni)=>{if(isWildcardExpression(ei.to)&&!isInOutRelationExpression(ei.$container)){const ri=getContainerOfType(ei,isElementView);n$6(ri?.viewOf)&&ni("warning","Predicate is ignored as it concerns all relationships",{node:ei})}}),outgoingExpressionChecks=ti=>tryOrLog((ei,ni)=>{if(isWildcardExpression(ei.from)&&!isDirectedRelationExpression(ei.$container)){const ri=getContainerOfType(ei,isElementView);n$6(ri?.viewOf)&&ni("warning","Predicate is ignored as it concerns all relationships",{node:ei})}}),relationPredicateWithChecks=ti=>tryOrLog((ei,ni)=>{const ri=getContainerOfType(ei,isViewRulePredicate);isExcludePredicate(ri)&&ni("error",'Invalid usage inside "exclude"',{node:ei})});function F$1(ti){return ei=>ti.some(ni=>ni(ei))}const L$1=F$1([isGlobals,isGlobalPredicateGroup,isGlobalDynamicPredicateGroup,isGlobalStyle,isGlobalStyleGroup,isDynamicViewPredicateIterator,isElementPredicateWith,isRelationPredicateWith,isElementExpression,isRelationExpression,isDynamicViewParallelSteps,isDynamicViewStep,isDeploymentViewRule,isDeploymentViewRulePredicate,isExpressionV2,isRelationExpr,isFqnRefExpr,isViewProperty,isStyleProperty,isPredicate,isTags,isViewRule,isDynamicViewRule,isLikeC4View,isViewRuleStyleOrGlobalRef,isDeployedInstance,isDeploymentNode,isDeploymentRelation,isRelationshipStyleProperty,isMetadataProperty,isRelation,isElementProperty,isStringProperty,isNavigateToProperty,isElement,isExtendElement,isSpecificationElementKind,isSpecificationRelationshipKind,isSpecificationDeploymentNodeKind,isSpecificationTag,isSpecificationColor,isSpecificationRule]),O$1=ti=>{let ei=ti;for(;ei&&!isLikeC4Grammar(ei);){if(L$1(ei))return ei;ei=ei.$container}};function checksFromDiagnostics(ti){const ei=ti.diagnostics?.filter(ri=>ri.severity===DiagnosticSeverity.Error)??[],ni=new WeakSet;for(const{node:ri}of ei){if(n$6(ri)||ni.has(ri))continue;ni.add(ri);const ii=O$1(ri);ii&&ni.add(ii)}return{isValid:ri=>!ni.has(ri),invalidNodes:ni}}function registerValidationChecks(ti){logger.debug("registerValidationChecks"),ti.validation.ValidationRegistry.register({DeployedInstance:deployedInstanceChecks(ti),DeploymentNode:deploymentNodeChecks(ti),DeploymentRelation:deploymentRelationChecks(ti),FqnRefExpr:fqnRefExprChecks(ti),RelationExpr:relationExprChecks(ti),NotesProperty:notesPropertyRuleChecks(),OpacityProperty:opacityPropertyRuleChecks(),IconProperty:iconPropertyRuleChecks(),SpecificationRule:specificationRuleChecks(),Model:modelRuleChecks(),Globals:globalsChecks(),GlobalPredicateGroup:globalPredicateChecks(ti),GlobalDynamicPredicateGroup:globalPredicateChecks(ti),GlobalStyleId:globalStyleIdChecks(ti),DynamicViewStep:dynamicViewStep(ti),LikeC4View:viewChecks(ti),Element:elementChecks(ti),ElementKind:elementKindChecks(ti),Relation:relationChecks(ti),RelationBody:relationBodyChecks(),Tag:tagChecks(ti),DynamicViewPredicateIterator:dynamicViewRulePredicate(),ElementPredicateWith:elementPredicateWithChecks(),RelationPredicateWith:relationPredicateWithChecks(),ExpandElementExpression:expandElementExprChecks(),RelationshipKind:relationshipChecks(ti),IncomingRelationExpression:incomingExpressionChecks(),OutgoingRelationExpression:outgoingExpressionChecks()});const ei=ti.shared.lsp.Connection;ei&&ti.shared.workspace.DocumentBuilder.onUpdate((ni,ri)=>{for(const ii of ri)logger.debug(`clear diagnostics for deleted ${ii.path}`),ei.sendDiagnostics({uri:ii.toString(),diagnostics:[]})})}function toSingleLine(ti){return l$6(ti)?removeIndent(ti).split(`
245
+ `).join(" "):void 0}function removeIndent(ti){return l$6(ti)?stripIndent(ti).trim():void 0}class BaseParser{constructor(ei,ni){this.services=ei,this.doc=ni,this.isValid=checksFromDiagnostics(ni).isValid}isValid;resolveFqn(ei){if(isDeploymentElement(ei))return this.services.likec4.DeploymentsIndex.getFqn(ei);if(isExtendElement(ei))return getFqnElementRef(ei.element);const ni=this.services.likec4.FqnIndex.getFqn(ei);return index_KOeaSlL8.o(ni,`Not indexed element: ${this.getAstNodePath(ei)}`),ni}getAstNodePath(ei){return this.services.workspace.AstNodeLocator.getAstNodePath(ei)}getMetadata(ei){if(!(!ei||!this.isValid(ei)))return l$7(ei.props,ni=>[ni.key,removeIndent(ni.value)])}convertTags(ei){return this.parseTags(ei)}parseTags(ei){let ni=ei?.tags;if(!ni)return null;const ri=[];for(;ni;){try{if(this.isValid(ni)){const ii=ni.values.map(si=>si.ref?.name).filter(n$7);ii.length>0&&ri.push(...ii)}}catch{}ni=ni.prev}return ri.reverse(),index_KOeaSlL8.ac(ri)?ri:null}convertLinks(ei){return this.parseLinks(ei)}parseLinks(ei){if(!(!ei?.props||ei.props.length===0))return x$1(ei.props,T$2(isLinkProperty),u$5(ni=>{if(!this.isValid(ni))return[];const ri=ni.value;if(n$7(ri)){const ii=n$7(ni.title)?toSingleLine(ni.title):void 0;return ii?{url:ri,title:ii}:{url:ri}}return[]}))}}function stringHash(...ti){var ei=ti.length>1?ti.join(":::"):ti[0];return index_KOeaSlL8.ad(ei)}function DeploymentModelParser(ti){return class extends ti{parseDeployment(){const ei=this.doc;for(const ni of streamDeploymentModel(ei))try{switch(!0){case isDeploymentRelation(ni):{this.isValid(ni)&&ei.c4DeploymentRelations.push(this.parseDeploymentRelation(ni));break}case isDeployedInstance(ni):ei.c4Deployments.push(this.parseDeployedInstance(ni));break;case isDeploymentNode(ni):{ei.c4Deployments.push(this.parseDeploymentNode(ni));break}default:index_KOeaSlL8.n(ni)}}catch(ri){logWarnError(ri)}}parseDeploymentNode(ei){const ni=this.isValid,ri=this.resolveFqn(ei),ii=index_KOeaSlL8.M(ei.kind.ref,"DeploymentKind not resolved").name,si=this.convertTags(ei.body),oi=ei.body?.props.find(isElementStyleProperty)?.props,ai=toElementStyle(oi,ni),ci=this.getMetadata(ei.body?.props.find(isMetadataProperty)),ui=x$1(ei.body?.props??[],T$2(ni),T$2(isElementStringProperty),l$7(vi=>[vi.key,vi.value||void 0])),li=removeIndent(ei.title??ui.title),di=removeIndent(ui.description),fi=toSingleLine(ui.technology),pi=this.convertLinks(ei.body),hi=ei.body?.props.find(isIconProperty);if(hi&&ni(hi)){const vi=hi.libicon?.ref?.name??hi.value;n$7(vi)&&(ai.icon=vi)}return{id:ri,kind:ii,title:li??index_KOeaSlL8.R(ri),...ci&&{metadata:ci},...si&&{tags:si},...pi&&index_KOeaSlL8.ac(pi)&&{links:pi},...n$7(fi)&&{technology:fi},...n$7(di)&&{description:di},style:ai}}parseDeployedInstance(ei){const ni=this.isValid,ri=this.resolveFqn(ei),ii=this.resolveFqn(index_KOeaSlL8.M(elementRef(ei.element),"DeployedInstance element not found")),si=this.convertTags(ei.body),oi=ei.body?.props.find(isElementStyleProperty)?.props,ai=toElementStyle(oi,ni),ci=this.getMetadata(ei.body?.props.find(isMetadataProperty)),ui=x$1(ei.body?.props??[],T$2(ni),T$2(isElementStringProperty),l$7(vi=>[vi.key,vi.value||void 0])),li=removeIndent(ei.title??ui.title),di=removeIndent(ui.description),fi=toSingleLine(ui.technology),pi=this.convertLinks(ei.body),hi=ei.body?.props.find(isIconProperty);if(hi&&ni(hi)){const vi=hi.libicon?.ref?.name??hi.value;n$7(vi)&&(ai.icon=vi)}return{id:ri,element:ii,...ci&&{metadata:ci},...li&&{title:li},...si&&{tags:si},...pi&&index_KOeaSlL8.ac(pi)&&{links:pi},...n$7(fi)&&{technology:fi},...n$7(di)&&{description:di},style:ai}}parseDeploymentRelation(ei){const ni=this.isValid,ri=this.getAstNodePath(ei),ii=index_KOeaSlL8.a8.toDeploymentRef(this.parseFqnRef(ei.source)),si=index_KOeaSlL8.a8.toDeploymentRef(this.parseFqnRef(ei.target)),oi=this.convertTags(ei)??this.convertTags(ei.body),ai=this.convertLinks(ei.body),ci=ei.kind?.ref?.name,ui=this.getMetadata(ei.body?.props.find(isMetadataProperty)),li=l$7(ei.body?.props.filter(isRelationStringProperty)??[],bi=>[bi.key,bi.value]),di=x$1(ei.body?.props??[],T$2(isRelationNavigateToProperty),m$1(bi=>bi.value.view.ref?.name),T$2(n$7),d$3()),fi=removeIndent(ei.title??li.title),pi=removeIndent(li.description),hi=toSingleLine(ei.technology)??removeIndent(li.technology),vi=ei.body?.props.find(isRelationStyleProperty);return{id:stringHash("deployment",ri,ii.id,si.id),source:ii,target:si,...fi&&{title:fi},...ui&&{metadata:ui},...n$7(hi)&&{technology:hi},...n$7(pi)&&{description:pi},...ci&&{kind:ci},...oi&&{tags:oi},...index_KOeaSlL8.ac(ai)&&{links:ai},...toRelationshipStyleExcludeDefaults(vi?.props,ni),...di&&{navigateTo:di},astPath:ri}}}}function utf8Count(ti){for(var ei=ti.length,ni=0,ri=0;ri<ei;){var ii=ti.charCodeAt(ri++);if(ii&4294967168)if(!(ii&4294965248))ni+=2;else{if(ii>=55296&&ii<=56319&&ri<ei){var si=ti.charCodeAt(ri);(si&64512)===56320&&(++ri,ii=((ii&1023)<<10)+(si&1023)+65536)}ii&4294901760?ni+=4:ni+=3}else{ni++;continue}}return ni}function utf8EncodeJs(ti,ei,ni){for(var ri=ti.length,ii=ni,si=0;si<ri;){var oi=ti.charCodeAt(si++);if(oi&4294967168)if(!(oi&4294965248))ei[ii++]=oi>>6&31|192;else{if(oi>=55296&&oi<=56319&&si<ri){var ai=ti.charCodeAt(si);(ai&64512)===56320&&(++si,oi=((oi&1023)<<10)+(ai&1023)+65536)}oi&4294901760?(ei[ii++]=oi>>18&7|240,ei[ii++]=oi>>12&63|128,ei[ii++]=oi>>6&63|128):(ei[ii++]=oi>>12&15|224,ei[ii++]=oi>>6&63|128)}else{ei[ii++]=oi;continue}ei[ii++]=oi&63|128}}var sharedTextEncoder=new TextEncoder,TEXT_ENCODER_THRESHOLD=50;function utf8EncodeTE(ti,ei,ni){sharedTextEncoder.encodeInto(ti,ei.subarray(ni))}function utf8Encode(ti,ei,ni){ti.length>TEXT_ENCODER_THRESHOLD?utf8EncodeTE(ti,ei,ni):utf8EncodeJs(ti,ei,ni)}var CHUNK_SIZE=4096;function utf8DecodeJs(ti,ei,ni){for(var ri=ei,ii=ri+ni,si=[],oi="";ri<ii;){var ai=ti[ri++];if(!(ai&128))si.push(ai);else if((ai&224)===192){var ci=ti[ri++]&63;si.push((ai&31)<<6|ci)}else if((ai&240)===224){var ci=ti[ri++]&63,ui=ti[ri++]&63;si.push((ai&31)<<12|ci<<6|ui)}else if((ai&248)===240){var ci=ti[ri++]&63,ui=ti[ri++]&63,li=ti[ri++]&63,di=(ai&7)<<18|ci<<12|ui<<6|li;di>65535&&(di-=65536,si.push(di>>>10&1023|55296),di=56320|di&1023),si.push(di)}else si.push(ai);si.length>=CHUNK_SIZE&&(oi+=String.fromCharCode.apply(String,si),si.length=0)}return si.length>0&&(oi+=String.fromCharCode.apply(String,si)),oi}var sharedTextDecoder=new TextDecoder,TEXT_DECODER_THRESHOLD=200;function utf8DecodeTD(ti,ei,ni){var ri=ti.subarray(ei,ei+ni);return sharedTextDecoder.decode(ri)}function utf8Decode(ti,ei,ni){return ni>TEXT_DECODER_THRESHOLD?utf8DecodeTD(ti,ei,ni):utf8DecodeJs(ti,ei,ni)}var ExtData=function(){function ti(ei,ni){this.type=ei,this.data=ni}return ti}(),__extends=function(){var ti=function(ei,ni){return ti=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(ri,ii){ri.__proto__=ii}||function(ri,ii){for(var si in ii)Object.prototype.hasOwnProperty.call(ii,si)&&(ri[si]=ii[si])},ti(ei,ni)};return function(ei,ni){if(typeof ni!="function"&&ni!==null)throw new TypeError("Class extends value "+String(ni)+" is not a constructor or null");ti(ei,ni);function ri(){this.constructor=ei}ei.prototype=ni===null?Object.create(ni):(ri.prototype=ni.prototype,new ri)}}(),DecodeError=function(ti){__extends(ei,ti);function ei(ni){var ri=ti.call(this,ni)||this,ii=Object.create(ei.prototype);return Object.setPrototypeOf(ri,ii),Object.defineProperty(ri,"name",{configurable:!0,enumerable:!1,value:ei.name}),ri}return ei}(Error),UINT32_MAX=4294967295;function setUint64(ti,ei,ni){var ri=ni/4294967296,ii=ni;ti.setUint32(ei,ri),ti.setUint32(ei+4,ii)}function setInt64(ti,ei,ni){var ri=Math.floor(ni/4294967296),ii=ni;ti.setUint32(ei,ri),ti.setUint32(ei+4,ii)}function getInt64(ti,ei){var ni=ti.getInt32(ei),ri=ti.getUint32(ei+4);return ni*4294967296+ri}function getUint64(ti,ei){var ni=ti.getUint32(ei),ri=ti.getUint32(ei+4);return ni*4294967296+ri}var EXT_TIMESTAMP=-1,TIMESTAMP32_MAX_SEC=4294967296-1,TIMESTAMP64_MAX_SEC=17179869184-1;function encodeTimeSpecToTimestamp(ti){var ei=ti.sec,ni=ti.nsec;if(ei>=0&&ni>=0&&ei<=TIMESTAMP64_MAX_SEC)if(ni===0&&ei<=TIMESTAMP32_MAX_SEC){var ri=new Uint8Array(4),ii=new DataView(ri.buffer);return ii.setUint32(0,ei),ri}else{var si=ei/4294967296,oi=ei&4294967295,ri=new Uint8Array(8),ii=new DataView(ri.buffer);return ii.setUint32(0,ni<<2|si&3),ii.setUint32(4,oi),ri}else{var ri=new Uint8Array(12),ii=new DataView(ri.buffer);return ii.setUint32(0,ni),setInt64(ii,4,ei),ri}}function encodeDateToTimeSpec(ti){var ei=ti.getTime(),ni=Math.floor(ei/1e3),ri=(ei-ni*1e3)*1e6,ii=Math.floor(ri/1e9);return{sec:ni+ii,nsec:ri-ii*1e9}}function encodeTimestampExtension(ti){if(ti instanceof Date){var ei=encodeDateToTimeSpec(ti);return encodeTimeSpecToTimestamp(ei)}else return null}function decodeTimestampToTimeSpec(ti){var ei=new DataView(ti.buffer,ti.byteOffset,ti.byteLength);switch(ti.byteLength){case 4:{var ni=ei.getUint32(0),ri=0;return{sec:ni,nsec:ri}}case 8:{var ii=ei.getUint32(0),si=ei.getUint32(4),ni=(ii&3)*4294967296+si,ri=ii>>>2;return{sec:ni,nsec:ri}}case 12:{var ni=getInt64(ei,4),ri=ei.getUint32(0);return{sec:ni,nsec:ri}}default:throw new DecodeError("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(ti.length))}}function decodeTimestampExtension(ti){var ei=decodeTimestampToTimeSpec(ti);return new Date(ei.sec*1e3+ei.nsec/1e6)}var timestampExtension={type:EXT_TIMESTAMP,encode:encodeTimestampExtension,decode:decodeTimestampExtension},ExtensionCodec=function(){function ti(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(timestampExtension)}return ti.prototype.register=function(ei){var ni=ei.type,ri=ei.encode,ii=ei.decode;if(ni>=0)this.encoders[ni]=ri,this.decoders[ni]=ii;else{var si=1+ni;this.builtInEncoders[si]=ri,this.builtInDecoders[si]=ii}},ti.prototype.tryToEncode=function(ei,ni){for(var ri=0;ri<this.builtInEncoders.length;ri++){var ii=this.builtInEncoders[ri];if(ii!=null){var si=ii(ei,ni);if(si!=null){var oi=-1-ri;return new ExtData(oi,si)}}}for(var ri=0;ri<this.encoders.length;ri++){var ii=this.encoders[ri];if(ii!=null){var si=ii(ei,ni);if(si!=null){var oi=ri;return new ExtData(oi,si)}}}return ei instanceof ExtData?ei:null},ti.prototype.decode=function(ei,ni,ri){var ii=ni<0?this.builtInDecoders[-1-ni]:this.decoders[ni];return ii?ii(ei,ni,ri):new ExtData(ni,ei)},ti.defaultCodec=new ti,ti}();function ensureUint8Array(ti){return ti instanceof Uint8Array?ti:ArrayBuffer.isView(ti)?new Uint8Array(ti.buffer,ti.byteOffset,ti.byteLength):ti instanceof ArrayBuffer?new Uint8Array(ti):Uint8Array.from(ti)}function createDataView(ti){if(ti instanceof ArrayBuffer)return new DataView(ti);var ei=ensureUint8Array(ti);return new DataView(ei.buffer,ei.byteOffset,ei.byteLength)}var DEFAULT_MAX_DEPTH=100,DEFAULT_INITIAL_BUFFER_SIZE=2048,Encoder=function(){function ti(ei){var ni,ri,ii,si,oi,ai,ci,ui;this.extensionCodec=(ni=ei?.extensionCodec)!==null&&ni!==void 0?ni:ExtensionCodec.defaultCodec,this.context=ei?.context,this.useBigInt64=(ri=ei?.useBigInt64)!==null&&ri!==void 0?ri:!1,this.maxDepth=(ii=ei?.maxDepth)!==null&&ii!==void 0?ii:DEFAULT_MAX_DEPTH,this.initialBufferSize=(si=ei?.initialBufferSize)!==null&&si!==void 0?si:DEFAULT_INITIAL_BUFFER_SIZE,this.sortKeys=(oi=ei?.sortKeys)!==null&&oi!==void 0?oi:!1,this.forceFloat32=(ai=ei?.forceFloat32)!==null&&ai!==void 0?ai:!1,this.ignoreUndefined=(ci=ei?.ignoreUndefined)!==null&&ci!==void 0?ci:!1,this.forceIntegerToFloat=(ui=ei?.forceIntegerToFloat)!==null&&ui!==void 0?ui:!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}return ti.prototype.reinitializeState=function(){this.pos=0},ti.prototype.encodeSharedRef=function(ei){return this.reinitializeState(),this.doEncode(ei,1),this.bytes.subarray(0,this.pos)},ti.prototype.encode=function(ei){return this.reinitializeState(),this.doEncode(ei,1),this.bytes.slice(0,this.pos)},ti.prototype.doEncode=function(ei,ni){if(ni>this.maxDepth)throw new Error("Too deep objects in depth ".concat(ni));ei==null?this.encodeNil():typeof ei=="boolean"?this.encodeBoolean(ei):typeof ei=="number"?this.forceIntegerToFloat?this.encodeNumberAsFloat(ei):this.encodeNumber(ei):typeof ei=="string"?this.encodeString(ei):this.useBigInt64&&typeof ei=="bigint"?this.encodeBigInt64(ei):this.encodeObject(ei,ni)},ti.prototype.ensureBufferSizeToWrite=function(ei){var ni=this.pos+ei;this.view.byteLength<ni&&this.resizeBuffer(ni*2)},ti.prototype.resizeBuffer=function(ei){var ni=new ArrayBuffer(ei),ri=new Uint8Array(ni),ii=new DataView(ni);ri.set(this.bytes),this.view=ii,this.bytes=ri},ti.prototype.encodeNil=function(){this.writeU8(192)},ti.prototype.encodeBoolean=function(ei){ei===!1?this.writeU8(194):this.writeU8(195)},ti.prototype.encodeNumber=function(ei){!this.forceIntegerToFloat&&Number.isSafeInteger(ei)?ei>=0?ei<128?this.writeU8(ei):ei<256?(this.writeU8(204),this.writeU8(ei)):ei<65536?(this.writeU8(205),this.writeU16(ei)):ei<4294967296?(this.writeU8(206),this.writeU32(ei)):this.useBigInt64?this.encodeNumberAsFloat(ei):(this.writeU8(207),this.writeU64(ei)):ei>=-32?this.writeU8(224|ei+32):ei>=-128?(this.writeU8(208),this.writeI8(ei)):ei>=-32768?(this.writeU8(209),this.writeI16(ei)):ei>=-2147483648?(this.writeU8(210),this.writeI32(ei)):this.useBigInt64?this.encodeNumberAsFloat(ei):(this.writeU8(211),this.writeI64(ei)):this.encodeNumberAsFloat(ei)},ti.prototype.encodeNumberAsFloat=function(ei){this.forceFloat32?(this.writeU8(202),this.writeF32(ei)):(this.writeU8(203),this.writeF64(ei))},ti.prototype.encodeBigInt64=function(ei){ei>=BigInt(0)?(this.writeU8(207),this.writeBigUint64(ei)):(this.writeU8(211),this.writeBigInt64(ei))},ti.prototype.writeStringHeader=function(ei){if(ei<32)this.writeU8(160+ei);else if(ei<256)this.writeU8(217),this.writeU8(ei);else if(ei<65536)this.writeU8(218),this.writeU16(ei);else if(ei<4294967296)this.writeU8(219),this.writeU32(ei);else throw new Error("Too long string: ".concat(ei," bytes in UTF-8"))},ti.prototype.encodeString=function(ei){var ni=5,ri=utf8Count(ei);this.ensureBufferSizeToWrite(ni+ri),this.writeStringHeader(ri),utf8Encode(ei,this.bytes,this.pos),this.pos+=ri},ti.prototype.encodeObject=function(ei,ni){var ri=this.extensionCodec.tryToEncode(ei,this.context);if(ri!=null)this.encodeExtension(ri);else if(Array.isArray(ei))this.encodeArray(ei,ni);else if(ArrayBuffer.isView(ei))this.encodeBinary(ei);else if(typeof ei=="object")this.encodeMap(ei,ni);else throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(ei)))},ti.prototype.encodeBinary=function(ei){var ni=ei.byteLength;if(ni<256)this.writeU8(196),this.writeU8(ni);else if(ni<65536)this.writeU8(197),this.writeU16(ni);else if(ni<4294967296)this.writeU8(198),this.writeU32(ni);else throw new Error("Too large binary: ".concat(ni));var ri=ensureUint8Array(ei);this.writeU8a(ri)},ti.prototype.encodeArray=function(ei,ni){var ri=ei.length;if(ri<16)this.writeU8(144+ri);else if(ri<65536)this.writeU8(220),this.writeU16(ri);else if(ri<4294967296)this.writeU8(221),this.writeU32(ri);else throw new Error("Too large array: ".concat(ri));for(var ii=0,si=ei;ii<si.length;ii++){var oi=si[ii];this.doEncode(oi,ni+1)}},ti.prototype.countWithoutUndefined=function(ei,ni){for(var ri=0,ii=0,si=ni;ii<si.length;ii++){var oi=si[ii];ei[oi]!==void 0&&ri++}return ri},ti.prototype.encodeMap=function(ei,ni){var ri=Object.keys(ei);this.sortKeys&&ri.sort();var ii=this.ignoreUndefined?this.countWithoutUndefined(ei,ri):ri.length;if(ii<16)this.writeU8(128+ii);else if(ii<65536)this.writeU8(222),this.writeU16(ii);else if(ii<4294967296)this.writeU8(223),this.writeU32(ii);else throw new Error("Too large map object: ".concat(ii));for(var si=0,oi=ri;si<oi.length;si++){var ai=oi[si],ci=ei[ai];this.ignoreUndefined&&ci===void 0||(this.encodeString(ai),this.doEncode(ci,ni+1))}},ti.prototype.encodeExtension=function(ei){var ni=ei.data.length;if(ni===1)this.writeU8(212);else if(ni===2)this.writeU8(213);else if(ni===4)this.writeU8(214);else if(ni===8)this.writeU8(215);else if(ni===16)this.writeU8(216);else if(ni<256)this.writeU8(199),this.writeU8(ni);else if(ni<65536)this.writeU8(200),this.writeU16(ni);else if(ni<4294967296)this.writeU8(201),this.writeU32(ni);else throw new Error("Too large extension object: ".concat(ni));this.writeI8(ei.type),this.writeU8a(ei.data)},ti.prototype.writeU8=function(ei){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,ei),this.pos++},ti.prototype.writeU8a=function(ei){var ni=ei.length;this.ensureBufferSizeToWrite(ni),this.bytes.set(ei,this.pos),this.pos+=ni},ti.prototype.writeI8=function(ei){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,ei),this.pos++},ti.prototype.writeU16=function(ei){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,ei),this.pos+=2},ti.prototype.writeI16=function(ei){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,ei),this.pos+=2},ti.prototype.writeU32=function(ei){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,ei),this.pos+=4},ti.prototype.writeI32=function(ei){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,ei),this.pos+=4},ti.prototype.writeF32=function(ei){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,ei),this.pos+=4},ti.prototype.writeF64=function(ei){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,ei),this.pos+=8},ti.prototype.writeU64=function(ei){this.ensureBufferSizeToWrite(8),setUint64(this.view,this.pos,ei),this.pos+=8},ti.prototype.writeI64=function(ei){this.ensureBufferSizeToWrite(8),setInt64(this.view,this.pos,ei),this.pos+=8},ti.prototype.writeBigUint64=function(ei){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,ei),this.pos+=8},ti.prototype.writeBigInt64=function(ei){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,ei),this.pos+=8},ti}();function encode(ti,ei){var ni=new Encoder(ei);return ni.encodeSharedRef(ti)}function prettyByte(ti){return"".concat(ti<0?"-":"","0x").concat(Math.abs(ti).toString(16).padStart(2,"0"))}var DEFAULT_MAX_KEY_LENGTH=16,DEFAULT_MAX_LENGTH_PER_KEY=16,CachedKeyDecoder=function(){function ti(ei,ni){ei===void 0&&(ei=DEFAULT_MAX_KEY_LENGTH),ni===void 0&&(ni=DEFAULT_MAX_LENGTH_PER_KEY),this.maxKeyLength=ei,this.maxLengthPerKey=ni,this.hit=0,this.miss=0,this.caches=[];for(var ri=0;ri<this.maxKeyLength;ri++)this.caches.push([])}return ti.prototype.canBeCached=function(ei){return ei>0&&ei<=this.maxKeyLength},ti.prototype.find=function(ei,ni,ri){var ii=this.caches[ri-1];e:for(var si=0,oi=ii;si<oi.length;si++){for(var ai=oi[si],ci=ai.bytes,ui=0;ui<ri;ui++)if(ci[ui]!==ei[ni+ui])continue e;return ai.str}return null},ti.prototype.store=function(ei,ni){var ri=this.caches[ei.length-1],ii={bytes:ei,str:ni};ri.length>=this.maxLengthPerKey?ri[Math.random()*ri.length|0]=ii:ri.push(ii)},ti.prototype.decode=function(ei,ni,ri){var ii=this.find(ei,ni,ri);if(ii!=null)return this.hit++,ii;this.miss++;var si=utf8DecodeJs(ei,ni,ri),oi=Uint8Array.prototype.slice.call(ei,ni,ni+ri);return this.store(oi,si),si},ti}(),__awaiter=function(ti,ei,ni,ri){function ii(si){return si instanceof ni?si:new ni(function(oi){oi(si)})}return new(ni||(ni=Promise))(function(si,oi){function ai(li){try{ui(ri.next(li))}catch(di){oi(di)}}function ci(li){try{ui(ri.throw(li))}catch(di){oi(di)}}function ui(li){li.done?si(li.value):ii(li.value).then(ai,ci)}ui((ri=ri.apply(ti,ei||[])).next())})},__generator=function(ti,ei){var ni={label:0,sent:function(){if(si[0]&1)throw si[1];return si[1]},trys:[],ops:[]},ri,ii,si,oi;return oi={next:ai(0),throw:ai(1),return:ai(2)},typeof Symbol=="function"&&(oi[Symbol.iterator]=function(){return this}),oi;function ai(ui){return function(li){return ci([ui,li])}}function ci(ui){if(ri)throw new TypeError("Generator is already executing.");for(;oi&&(oi=0,ui[0]&&(ni=0)),ni;)try{if(ri=1,ii&&(si=ui[0]&2?ii.return:ui[0]?ii.throw||((si=ii.return)&&si.call(ii),0):ii.next)&&!(si=si.call(ii,ui[1])).done)return si;switch(ii=0,si&&(ui=[ui[0]&2,si.value]),ui[0]){case 0:case 1:si=ui;break;case 4:return ni.label++,{value:ui[1],done:!1};case 5:ni.label++,ii=ui[1],ui=[0];continue;case 7:ui=ni.ops.pop(),ni.trys.pop();continue;default:if(si=ni.trys,!(si=si.length>0&&si[si.length-1])&&(ui[0]===6||ui[0]===2)){ni=0;continue}if(ui[0]===3&&(!si||ui[1]>si[0]&&ui[1]<si[3])){ni.label=ui[1];break}if(ui[0]===6&&ni.label<si[1]){ni.label=si[1],si=ui;break}if(si&&ni.label<si[2]){ni.label=si[2],ni.ops.push(ui);break}si[2]&&ni.ops.pop(),ni.trys.pop();continue}ui=ei.call(ti,ni)}catch(li){ui=[6,li],ii=0}finally{ri=si=0}if(ui[0]&5)throw ui[1];return{value:ui[0]?ui[1]:void 0,done:!0}}},__asyncValues=function(ti){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var ei=ti[Symbol.asyncIterator],ni;return ei?ei.call(ti):(ti=typeof __values=="function"?__values(ti):ti[Symbol.iterator](),ni={},ri("next"),ri("throw"),ri("return"),ni[Symbol.asyncIterator]=function(){return this},ni);function ri(si){ni[si]=ti[si]&&function(oi){return new Promise(function(ai,ci){oi=ti[si](oi),ii(ai,ci,oi.done,oi.value)})}}function ii(si,oi,ai,ci){Promise.resolve(ci).then(function(ui){si({value:ui,done:ai})},oi)}},__await=function(ti){return this instanceof __await?(this.v=ti,this):new __await(ti)},__asyncGenerator=function(ti,ei,ni){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var ri=ni.apply(ti,ei||[]),ii,si=[];return ii={},oi("next"),oi("throw"),oi("return"),ii[Symbol.asyncIterator]=function(){return this},ii;function oi(fi){ri[fi]&&(ii[fi]=function(pi){return new Promise(function(hi,vi){si.push([fi,pi,hi,vi])>1||ai(fi,pi)})})}function ai(fi,pi){try{ci(ri[fi](pi))}catch(hi){di(si[0][3],hi)}}function ci(fi){fi.value instanceof __await?Promise.resolve(fi.value.v).then(ui,li):di(si[0][2],fi)}function ui(fi){ai("next",fi)}function li(fi){ai("throw",fi)}function di(fi,pi){fi(pi),si.shift(),si.length&&ai(si[0][0],si[0][1])}},STATE_ARRAY="array",STATE_MAP_KEY="map_key",STATE_MAP_VALUE="map_value",isValidMapKeyType=function(ti){return typeof ti=="string"||typeof ti=="number"},HEAD_BYTE_REQUIRED=-1,EMPTY_VIEW=new DataView(new ArrayBuffer(0)),EMPTY_BYTES=new Uint8Array(EMPTY_VIEW.buffer);try{EMPTY_VIEW.getInt8(0)}catch(ti){if(!(ti instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var DataViewIndexOutOfBoundsError=RangeError,MORE_DATA=new DataViewIndexOutOfBoundsError("Insufficient data"),sharedCachedKeyDecoder=new CachedKeyDecoder,Decoder=function(){function ti(ei){var ni,ri,ii,si,oi,ai,ci;this.totalPos=0,this.pos=0,this.view=EMPTY_VIEW,this.bytes=EMPTY_BYTES,this.headByte=HEAD_BYTE_REQUIRED,this.stack=[],this.extensionCodec=(ni=ei?.extensionCodec)!==null&&ni!==void 0?ni:ExtensionCodec.defaultCodec,this.context=ei?.context,this.useBigInt64=(ri=ei?.useBigInt64)!==null&&ri!==void 0?ri:!1,this.maxStrLength=(ii=ei?.maxStrLength)!==null&&ii!==void 0?ii:UINT32_MAX,this.maxBinLength=(si=ei?.maxBinLength)!==null&&si!==void 0?si:UINT32_MAX,this.maxArrayLength=(oi=ei?.maxArrayLength)!==null&&oi!==void 0?oi:UINT32_MAX,this.maxMapLength=(ai=ei?.maxMapLength)!==null&&ai!==void 0?ai:UINT32_MAX,this.maxExtLength=(ci=ei?.maxExtLength)!==null&&ci!==void 0?ci:UINT32_MAX,this.keyDecoder=ei?.keyDecoder!==void 0?ei.keyDecoder:sharedCachedKeyDecoder}return ti.prototype.reinitializeState=function(){this.totalPos=0,this.headByte=HEAD_BYTE_REQUIRED,this.stack.length=0},ti.prototype.setBuffer=function(ei){this.bytes=ensureUint8Array(ei),this.view=createDataView(this.bytes),this.pos=0},ti.prototype.appendBuffer=function(ei){if(this.headByte===HEAD_BYTE_REQUIRED&&!this.hasRemaining(1))this.setBuffer(ei);else{var ni=this.bytes.subarray(this.pos),ri=ensureUint8Array(ei),ii=new Uint8Array(ni.length+ri.length);ii.set(ni),ii.set(ri,ni.length),this.setBuffer(ii)}},ti.prototype.hasRemaining=function(ei){return this.view.byteLength-this.pos>=ei},ti.prototype.createExtraByteError=function(ei){var ni=this,ri=ni.view,ii=ni.pos;return new RangeError("Extra ".concat(ri.byteLength-ii," of ").concat(ri.byteLength," byte(s) found at buffer[").concat(ei,"]"))},ti.prototype.decode=function(ei){this.reinitializeState(),this.setBuffer(ei);var ni=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return ni},ti.prototype.decodeMulti=function(ei){return __generator(this,function(ni){switch(ni.label){case 0:this.reinitializeState(),this.setBuffer(ei),ni.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return ni.sent(),[3,1];case 3:return[2]}})},ti.prototype.decodeAsync=function(ei){var ni,ri,ii,si,oi,ai,ci;return __awaiter(this,void 0,void 0,function(){var ui,li,di,fi,pi,hi,vi,bi;return __generator(this,function(gi){switch(gi.label){case 0:ui=!1,gi.label=1;case 1:gi.trys.push([1,6,7,12]),ni=!0,ri=__asyncValues(ei),gi.label=2;case 2:return[4,ri.next()];case 3:if(ii=gi.sent(),si=ii.done,!!si)return[3,5];ci=ii.value,ni=!1;try{if(di=ci,ui)throw this.createExtraByteError(this.totalPos);this.appendBuffer(di);try{li=this.doDecodeSync(),ui=!0}catch(wi){if(!(wi instanceof DataViewIndexOutOfBoundsError))throw wi}this.totalPos+=this.pos}finally{ni=!0}gi.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return fi=gi.sent(),oi={error:fi},[3,12];case 7:return gi.trys.push([7,,10,11]),!ni&&!si&&(ai=ri.return)?[4,ai.call(ri)]:[3,9];case 8:gi.sent(),gi.label=9;case 9:return[3,11];case 10:if(oi)throw oi.error;return[7];case 11:return[7];case 12:if(ui){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,li]}throw pi=this,hi=pi.headByte,vi=pi.pos,bi=pi.totalPos,new RangeError("Insufficient data in parsing ".concat(prettyByte(hi)," at ").concat(bi," (").concat(vi," in the current buffer)"))}})})},ti.prototype.decodeArrayStream=function(ei){return this.decodeMultiAsync(ei,!0)},ti.prototype.decodeStream=function(ei){return this.decodeMultiAsync(ei,!1)},ti.prototype.decodeMultiAsync=function(ei,ni){return __asyncGenerator(this,arguments,function(){var ii,si,oi,ai,ci,ui,li,di,fi,pi,hi,vi;return __generator(this,function(bi){switch(bi.label){case 0:ii=ni,si=-1,bi.label=1;case 1:bi.trys.push([1,15,16,21]),oi=!0,ai=__asyncValues(ei),bi.label=2;case 2:return[4,__await(ai.next())];case 3:if(ci=bi.sent(),fi=ci.done,!!fi)return[3,14];vi=ci.value,oi=!1,bi.label=4;case 4:if(bi.trys.push([4,,12,13]),ui=vi,ni&&si===0)throw this.createExtraByteError(this.totalPos);this.appendBuffer(ui),ii&&(si=this.readArraySize(),ii=!1,this.complete()),bi.label=5;case 5:bi.trys.push([5,10,,11]),bi.label=6;case 6:return[4,__await(this.doDecodeSync())];case 7:return[4,bi.sent()];case 8:return bi.sent(),--si===0?[3,9]:[3,6];case 9:return[3,11];case 10:if(li=bi.sent(),!(li instanceof DataViewIndexOutOfBoundsError))throw li;return[3,11];case 11:return this.totalPos+=this.pos,[3,13];case 12:return oi=!0,[7];case 13:return[3,2];case 14:return[3,21];case 15:return di=bi.sent(),pi={error:di},[3,21];case 16:return bi.trys.push([16,,19,20]),!oi&&!fi&&(hi=ai.return)?[4,__await(hi.call(ai))]:[3,18];case 17:bi.sent(),bi.label=18;case 18:return[3,20];case 19:if(pi)throw pi.error;return[7];case 20:return[7];case 21:return[2]}})})},ti.prototype.doDecodeSync=function(){e:for(;;){var ei=this.readHeadByte(),ni=void 0;if(ei>=224)ni=ei-256;else if(ei<192)if(ei<128)ni=ei;else if(ei<144){var ri=ei-128;if(ri!==0){this.pushMapState(ri),this.complete();continue e}else ni={}}else if(ei<160){var ri=ei-144;if(ri!==0){this.pushArrayState(ri),this.complete();continue e}else ni=[]}else{var ii=ei-160;ni=this.decodeUtf8String(ii,0)}else if(ei===192)ni=null;else if(ei===194)ni=!1;else if(ei===195)ni=!0;else if(ei===202)ni=this.readF32();else if(ei===203)ni=this.readF64();else if(ei===204)ni=this.readU8();else if(ei===205)ni=this.readU16();else if(ei===206)ni=this.readU32();else if(ei===207)this.useBigInt64?ni=this.readU64AsBigInt():ni=this.readU64();else if(ei===208)ni=this.readI8();else if(ei===209)ni=this.readI16();else if(ei===210)ni=this.readI32();else if(ei===211)this.useBigInt64?ni=this.readI64AsBigInt():ni=this.readI64();else if(ei===217){var ii=this.lookU8();ni=this.decodeUtf8String(ii,1)}else if(ei===218){var ii=this.lookU16();ni=this.decodeUtf8String(ii,2)}else if(ei===219){var ii=this.lookU32();ni=this.decodeUtf8String(ii,4)}else if(ei===220){var ri=this.readU16();if(ri!==0){this.pushArrayState(ri),this.complete();continue e}else ni=[]}else if(ei===221){var ri=this.readU32();if(ri!==0){this.pushArrayState(ri),this.complete();continue e}else ni=[]}else if(ei===222){var ri=this.readU16();if(ri!==0){this.pushMapState(ri),this.complete();continue e}else ni={}}else if(ei===223){var ri=this.readU32();if(ri!==0){this.pushMapState(ri),this.complete();continue e}else ni={}}else if(ei===196){var ri=this.lookU8();ni=this.decodeBinary(ri,1)}else if(ei===197){var ri=this.lookU16();ni=this.decodeBinary(ri,2)}else if(ei===198){var ri=this.lookU32();ni=this.decodeBinary(ri,4)}else if(ei===212)ni=this.decodeExtension(1,0);else if(ei===213)ni=this.decodeExtension(2,0);else if(ei===214)ni=this.decodeExtension(4,0);else if(ei===215)ni=this.decodeExtension(8,0);else if(ei===216)ni=this.decodeExtension(16,0);else if(ei===199){var ri=this.lookU8();ni=this.decodeExtension(ri,1)}else if(ei===200){var ri=this.lookU16();ni=this.decodeExtension(ri,2)}else if(ei===201){var ri=this.lookU32();ni=this.decodeExtension(ri,4)}else throw new DecodeError("Unrecognized type byte: ".concat(prettyByte(ei)));this.complete();for(var si=this.stack;si.length>0;){var oi=si[si.length-1];if(oi.type===STATE_ARRAY)if(oi.array[oi.position]=ni,oi.position++,oi.position===oi.size)si.pop(),ni=oi.array;else continue e;else if(oi.type===STATE_MAP_KEY){if(!isValidMapKeyType(ni))throw new DecodeError("The type of key must be string or number but "+typeof ni);if(ni==="__proto__")throw new DecodeError("The key __proto__ is not allowed");oi.key=ni,oi.type=STATE_MAP_VALUE;continue e}else if(oi.map[oi.key]=ni,oi.readCount++,oi.readCount===oi.size)si.pop(),ni=oi.map;else{oi.key=null,oi.type=STATE_MAP_KEY;continue e}}return ni}},ti.prototype.readHeadByte=function(){return this.headByte===HEAD_BYTE_REQUIRED&&(this.headByte=this.readU8()),this.headByte},ti.prototype.complete=function(){this.headByte=HEAD_BYTE_REQUIRED},ti.prototype.readArraySize=function(){var ei=this.readHeadByte();switch(ei){case 220:return this.readU16();case 221:return this.readU32();default:{if(ei<160)return ei-144;throw new DecodeError("Unrecognized array type byte: ".concat(prettyByte(ei)))}}},ti.prototype.pushMapState=function(ei){if(ei>this.maxMapLength)throw new DecodeError("Max length exceeded: map length (".concat(ei,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:STATE_MAP_KEY,size:ei,key:null,readCount:0,map:{}})},ti.prototype.pushArrayState=function(ei){if(ei>this.maxArrayLength)throw new DecodeError("Max length exceeded: array length (".concat(ei,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:STATE_ARRAY,size:ei,array:new Array(ei),position:0})},ti.prototype.decodeUtf8String=function(ei,ni){var ri;if(ei>this.maxStrLength)throw new DecodeError("Max length exceeded: UTF-8 byte length (".concat(ei,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLength<this.pos+ni+ei)throw MORE_DATA;var ii=this.pos+ni,si;return this.stateIsMapKey()&&(!((ri=this.keyDecoder)===null||ri===void 0)&&ri.canBeCached(ei))?si=this.keyDecoder.decode(this.bytes,ii,ei):si=utf8Decode(this.bytes,ii,ei),this.pos+=ni+ei,si},ti.prototype.stateIsMapKey=function(){if(this.stack.length>0){var ei=this.stack[this.stack.length-1];return ei.type===STATE_MAP_KEY}return!1},ti.prototype.decodeBinary=function(ei,ni){if(ei>this.maxBinLength)throw new DecodeError("Max length exceeded: bin length (".concat(ei,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(ei+ni))throw MORE_DATA;var ri=this.pos+ni,ii=this.bytes.subarray(ri,ri+ei);return this.pos+=ni+ei,ii},ti.prototype.decodeExtension=function(ei,ni){if(ei>this.maxExtLength)throw new DecodeError("Max length exceeded: ext length (".concat(ei,") > maxExtLength (").concat(this.maxExtLength,")"));var ri=this.view.getInt8(this.pos+ni),ii=this.decodeBinary(ei,ni+1);return this.extensionCodec.decode(ii,ri,this.context)},ti.prototype.lookU8=function(){return this.view.getUint8(this.pos)},ti.prototype.lookU16=function(){return this.view.getUint16(this.pos)},ti.prototype.lookU32=function(){return this.view.getUint32(this.pos)},ti.prototype.readU8=function(){var ei=this.view.getUint8(this.pos);return this.pos++,ei},ti.prototype.readI8=function(){var ei=this.view.getInt8(this.pos);return this.pos++,ei},ti.prototype.readU16=function(){var ei=this.view.getUint16(this.pos);return this.pos+=2,ei},ti.prototype.readI16=function(){var ei=this.view.getInt16(this.pos);return this.pos+=2,ei},ti.prototype.readU32=function(){var ei=this.view.getUint32(this.pos);return this.pos+=4,ei},ti.prototype.readI32=function(){var ei=this.view.getInt32(this.pos);return this.pos+=4,ei},ti.prototype.readU64=function(){var ei=getUint64(this.view,this.pos);return this.pos+=8,ei},ti.prototype.readI64=function(){var ei=getInt64(this.view,this.pos);return this.pos+=8,ei},ti.prototype.readU64AsBigInt=function(){var ei=this.view.getBigUint64(this.pos);return this.pos+=8,ei},ti.prototype.readI64AsBigInt=function(){var ei=this.view.getBigInt64(this.pos);return this.pos+=8,ei},ti.prototype.readF32=function(){var ei=this.view.getFloat32(this.pos);return this.pos+=4,ei},ti.prototype.readF64=function(){var ei=this.view.getFloat64(this.pos);return this.pos+=8,ei},ti}();function decode(ti,ei){var ni=new Decoder(ei);return ni.decode(ti)}const isArrayBuffer$1=ti=>typeof ArrayBuffer=="function"&&ti instanceof ArrayBuffer||Object.prototype.toString.call(ti)==="[object ArrayBuffer]",fromArrayBuffer=(ti,ei=0,ni=ti.byteLength-ei)=>{if(!isArrayBuffer$1(ti))throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof ti} (${ti})`);return buffer.Buffer.from(ti,ei,ni)},fromString=(ti,ei)=>{if(typeof ti!="string")throw new TypeError(`The "input" argument must be of type string. Received type ${typeof ti} (${ti})`);return ei?buffer.Buffer.from(ti,ei):buffer.Buffer.from(ti)},BASE64_REGEX=/^[A-Za-z0-9+/]*={0,2}$/,fromBase64=ti=>{if(ti.length*3%4!==0)throw new TypeError("Incorrect padding on base64 string.");if(!BASE64_REGEX.exec(ti))throw new TypeError("Invalid base64 string.");const ei=fromString(ti,"base64");return new Uint8Array(ei.buffer,ei.byteOffset,ei.byteLength)},fromUtf8=ti=>{const ei=fromString(ti,"utf8");return new Uint8Array(ei.buffer,ei.byteOffset,ei.byteLength/Uint8Array.BYTES_PER_ELEMENT)},toBase64=ti=>{let ei;if(typeof ti=="string"?ei=fromUtf8(ti):ei=ti,typeof ei!="object"||typeof ei.byteOffset!="number"||typeof ei.byteLength!="number")throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.");return fromArrayBuffer(ei.buffer,ei.byteOffset,ei.byteLength).toString("base64")},{getDocument:C$1}=f$9;function N$1({nodes:ti,edges:ei,...ni}){return{...ni,nodes:i$8(ti,({x:ri,y:ii,width:si,height:oi,isCompound:ai,...ci})=>({...ci,b:[ri,ii,si,oi],c:ai})),edges:i$8(ei,({points:ri,controlPoints:ii,labelBBox:si,dotpos:oi,...ai})=>({...!!ii&&{cp:ii},...!!si&&{l:si},...!!oi&&{dp:oi},...ai,p:ri}))}}function k({nodes:ti,edges:ei,autoLayout:ni,...ri}){return{...ri,autoLayout:index_KOeaSlL8.ae(ni)?{direction:ni}:ni,nodes:i$8(ti,({b:ii,c:si,...oi})=>({x:ii[0],y:ii[1],width:ii[2],height:ii[3],isCompound:si,...oi})),edges:i$8(ei,({p:ii,cp:si,l:oi,dp:ai,...ci})=>({...!!si&&{controlPoints:si},...!!oi&&{labelBBox:oi},...!!ai&&{dotpos:ai},...ci,points:ii}))}}const l$1=500;function serializeToComment(ti){const ei=encode(N$1(ti)),ni=toBase64(ei),ri=[];let ii=0;for(;ii<ni.length;)ri.push(" * "+ni.slice(ii,Math.min(ii+l$1,ni.length))),ii+=l$1;return ri.unshift("/**"," * @likec4-generated(v1)"),ri.push(" */"),ri.join(`
246
246
  `)}function hasManualLayout(ti){return ti.includes("@likec4-generated")}function deserializeFromComment(ti){if(!hasManualLayout(ti))throw new Error(`Not a likec4-generated comment: ${ti}`);const ei=ti.trim().split(`
247
- `).filter(ri=>!ri.includes("**")&&!ri.includes("@likec4-")&&!ri.includes("*/")).map(ri=>ri.replaceAll("*","").trim()).join(""),ni=fromBase64(ei);return k(decode(ni))}function parseViewManualLayout(ti){const ei=findCommentNode(ti.$cstNode,["BLOCK_COMMENT"]);if(!(!ei||!hasManualLayout(ei.text)))try{return deserializeFromComment(ei.text)}catch(ni){const ri=C$1(ti);logger.warn(ni),logger.warn(`Ignoring manual layout of "${ti.name??"unnamed"}" at ${ri.uri.fsPath}:${1+(ei.range.start.line||0)}`);return}}function DeploymentViewParser(ti){return class extends ti{parseDeploymentView(ei){const ni=ei.body;index_DafVOuVd.u(ni,"DynamicElementView body is not defined");const ri=ni.props.filter(this.isValid),ii=this.getAstNodePath(ei);let si=ei.name;si||(si="deployment_"+stringHash(this.doc.uri.toString(),ii));const oi=toSingleLine(ri.find(di=>di.key==="title")?.value)??null,ai=removeIndent(ri.find(di=>di.key==="description")?.value)??null,ci=this.convertTags(ni),ui=this.convertLinks(ni);ViewOps.writeId(ei,si);const li=parseViewManualLayout(ei);return{__:"deployment",id:si,astPath:ii,title:oi,description:ai,tags:ci,links:index_DafVOuVd.ac(ui)?ui:null,rules:ni.rules.flatMap(di=>{try{return this.isValid(di)?this.parseDeploymentViewRule(di):[]}catch(fi){return logWarnError(fi),[]}}),...li&&{manualLayout:li}}}parseDeploymentViewRule(ei){if(isDeploymentViewRulePredicate(ei))return this.parseDeploymentViewRulePredicate(ei);if(isViewRuleAutoLayout(ei))return toAutoLayout(ei);if(isDeploymentViewRuleStyle(ei))return this.parseDeploymentViewRuleStyle(ei);index_DafVOuVd.l(ei)}parseDeploymentViewRulePredicate(ei){const ni=[];let ri=ei.expr;for(;ri;){try{const ii=ri.value;if(l$6(ii)&&this.isValid(ii))switch(!0){case isFqnExpr(ii):ni.unshift(this.parseFqnExpr(ii));break;case isRelationExpr(ii):ni.unshift(this.parseRelationExpr(ii));break;default:index_DafVOuVd.l(ii)}}catch(ii){logWarnError(ii)}ri=ri.prev}return ei.isInclude?{include:ni}:{exclude:ni}}parseDeploymentViewRuleStyle(ei){const ni=ei.props.filter(isStyleProperty),ri=ei.props.find(isNotationProperty),ii=removeIndent(ri?.value);return{targets:this.parseFqnExpressions(ei.targets),...ii&&{notation:ii},style:{...toElementStyle(ni,this.isValid)}}}}}function instanceRef(ti){let ei;for(;ei=ti.value?.ref;){if(isDeploymentNode(ei))return null;if(isDeployedInstance(ei))return ei;if(n$6(ti.parent))return null;ti=ti.parent}return null}function ExpressionV2Parser(ti){return class extends ti{parseFqnRef(ei){const ni=index_DafVOuVd.J(ei.value.ref,`FqnRef is empty ${ei.$cstNode?.range.start.line}:${ei.$cstNode?.range.start.character}`);if(isElement(ni)){const ri=instanceRef(ei);if(!ri)return{model:this.resolveFqn(ni)};const ii=this.resolveFqn(ri),si=this.resolveFqn(ni);return{deployment:ii,element:si}}if(isDeploymentElement(ni))return{deployment:this.resolveFqn(ni)};index_DafVOuVd.l(ni)}parseFqnExpr(ei){if(isWildcardExpression(ei))return{wildcard:!0};if(isFqnRefExpr(ei))return this.parseFqnRefExpr(ei);index_DafVOuVd.l(ei)}parseFqnRefExpr(ei){const ni=this.parseFqnRef(ei.ref);switch(!0){case ei.selector==="._":return{ref:ni,selector:"expanded"};case ei.selector===".**":return{ref:ni,selector:"descendants"};case ei.selector===".*":return{ref:ni,selector:"children"};default:return{ref:ni}}}parseFqnExpressions(ei){const ni=[];let ri=ei;for(;ri;){try{l$6(ri.value)&&this.isValid(ri.value)&&ni.push(this.parseFqnExpr(ri.value))}catch(ii){logWarnError(ii)}ri=ri.prev}return ni.reverse()}parseRelationExpr(ei){if(isDirectedRelationExpr(ei))return{source:this.parseFqnExpr(ei.source.from),target:this.parseFqnExpr(ei.target),isBidirectional:ei.source.isBidirectional};if(isInOutRelationExpr(ei))return{inout:this.parseFqnExpr(ei.inout.to)};if(isOutgoingRelationExpr(ei))return{outgoing:this.parseFqnExpr(ei.from)};if(isIncomingRelationExpr(ei))return{incoming:this.parseFqnExpr(ei.to)};index_DafVOuVd.l(ei)}}}function GlobalsParser(ti){return class extends ti{parseGlobals(){const{parseResult:ei,c4Globals:ni}=this.doc,ri=this.isValid,ii=ei.value.globals.filter(ri),si=ii.flatMap(ai=>ai.predicates.filter(ri));for(const ai of si)try{const ci=ai.name;if(!n$7(ci))continue;if(ci in ni.predicates){logger.warn(`Global predicate named "${ci}" is already defined`);continue}this.parseAndStoreGlobalPredicateGroupOrDynamic(ai,ci,ni)}catch(ci){logWarnError(ci)}const oi=ii.flatMap(ai=>ai.styles.filter(ri));for(const ai of oi)try{const ci=ai.id.name;if(!n$7(ci))continue;if(ci in ni.styles){logger.warn(`Global style named "${ci}" is already defined`);continue}const ui=this.parseGlobalStyleOrGroup(ai);ui.length>0&&(ni.styles[ci]=ui)}catch(ci){logWarnError(ci)}}parseAndStoreGlobalPredicateGroupOrDynamic(ei,ni,ri){if(isGlobalPredicateGroup(ei)){const ii=this.parseGlobalPredicateGroup(ei);ii.length>0&&(ri.predicates[ni]=ii);return}if(isGlobalDynamicPredicateGroup(ei)){const ii=this.parseGlobalDynamicPredicateGroup(ei);ii.length>0&&(ri.dynamicPredicates[ni]=ii);return}index_DafVOuVd.l(ei)}parseGlobalPredicateGroup(ei){return ei.predicates.map(ni=>this.parseViewRulePredicate(ni))}parseGlobalDynamicPredicateGroup(ei){return ei.predicates.map(ni=>this.parseDynamicViewIncludePredicate(ni))}parseGlobalStyleOrGroup(ei){if(isGlobalStyle(ei))return[this.parseViewRuleStyle(ei)];if(isGlobalStyleGroup(ei))return ei.styles.map(ni=>this.parseViewRuleStyle(ni));index_DafVOuVd.l(ei)}}}function ModelParser(ti){return class extends ti{parseModel(){const ei=this.doc;for(const ni of streamModel(ei))try{if(isElement(ni)){ei.c4Elements.push(this.parseElement(ni));continue}if(isRelation(ni)){this.isValid(ni)&&ei.c4Relations.push(this.parseRelation(ni));continue}index_DafVOuVd.l(ni)}catch(ri){logWarnError(ri)}}parseElement(ei){const ni=this.isValid,ri=this.resolveFqn(ei),ii=index_DafVOuVd.J(ei.kind.ref,"Element kind is not resolved").name,si=this.parseTags(ei.body),oi=ei.body?.props.find(isElementStyleProperty)?.props,ai=toElementStyle(oi,ni),ci=this.getMetadata(ei.body?.props.find(isMetadataProperty)),ui=this.getAstNodePath(ei);let[li,di,fi]=ei.props??[];const pi=x$1(ei.body?.props??[],T$2(ni),T$2(isElementStringProperty),l$7(bi=>[bi.key,bi.value||void 0]));li=removeIndent(li??pi.title),di=removeIndent(pi.description??di),fi=toSingleLine(pi.technology??fi);const hi=this.parseLinks(ei.body),vi=ei.body?.props.find(isIconProperty);if(vi&&ni(vi)){const bi=vi.libicon?.ref?.name??vi.value;n$7(bi)&&(ai.icon=bi)}return{id:ri,kind:ii,astPath:ui,title:li??ei.name,...ci&&{metadata:ci},...si&&{tags:si},...hi&&index_DafVOuVd.ac(hi)&&{links:hi},...n$7(fi)&&{technology:fi},...n$7(di)&&{description:di},style:ai}}parseRelation(ei){const ni=this.isValid,ri=resolveRelationPoints(ei),ii=this.resolveFqn(ri.target),si=this.resolveFqn(ri.source),oi=this.parseTags(ei)??this.parseTags(ei.body),ai=this.parseLinks(ei.body),ci=ei.kind?.ref?.name,ui=this.getMetadata(ei.body?.props.find(isMetadataProperty)),li=this.getAstNodePath(ei),di=l$7(ei.body?.props.filter(isRelationStringProperty).filter(gi=>l$6(gi.value))??[],gi=>[gi.key,gi.value]),fi=x$1(ei.body?.props??[],T$2(isRelationNavigateToProperty),m$1(gi=>gi.value.view.ref?.name),T$2(n$7),d$3()),pi=removeIndent(ei.title??di.title)??"",hi=removeIndent(di.description),vi=toSingleLine(ei.technology)??removeIndent(di.technology),bi=ei.body?.props.find(isRelationStyleProperty);return{id:stringHash(li,si,ii),astPath:li,source:si,target:ii,title:pi,...ui&&{metadata:ui},...n$7(vi)&&{technology:vi},...n$7(hi)&&{description:hi},...ci&&{kind:ci},...oi&&{tags:oi},...index_DafVOuVd.ac(ai)&&{links:ai},...toRelationshipStyleExcludeDefaults(bi?.props,ni),...fi&&{navigateTo:fi}}}}}const f$1=({operator:ti,not:ei},ni)=>ti.startsWith("!=")?{neq:ni}:ti.startsWith("=")?{eq:ni}:ei?{neq:ni}:{eq:ni};function parseWhereClause(ti){switch(!0){case isWhereTagEqual(ti):{const ei=ti.value?.ref?.name;return index_DafVOuVd.u(ei,"Expected tag name"),{tag:f$1(ti,ei)}}case isWhereKindEqual(ti):{const ei=ti.value?.ref?.name;return index_DafVOuVd.u(ei,"Expected kind name"),{kind:f$1(ti,ei)}}case(isWhereElementNegation(ti)||isWhereRelationNegation(ti)):return{not:parseWhereClause(ti.value)};case isWhereBinaryExpression(ti):{const ei=parseWhereClause(ti.left),ni=parseWhereClause(ti.right),ri=ti.operator.toLowerCase();switch(ri){case"and":{const ii=[index_DafVOuVd.ag(ei)?ei.and:ei,index_DafVOuVd.ag(ni)?ni.and:ni].flat();return index_DafVOuVd.u(index_DafVOuVd.ac(ii),"Expected non-empty array"),{and:ii}}case"or":{const ii=[index_DafVOuVd.af(ei)?ei.or:ei,index_DafVOuVd.af(ni)?ni.or:ni].flat();return index_DafVOuVd.u(index_DafVOuVd.ac(ii),"Expected non-empty array"),{or:ii}}default:index_DafVOuVd.l(ri)}}default:index_DafVOuVd.l(ti)}}function PredicatesParser(ti){return class extends ti{parsePredicate(ei){if(isElementPredicate(ei))return this.parseElementPredicate(ei);if(isRelationPredicate(ei))return this.parseRelationPredicate(ei);index_DafVOuVd.l(ei)}parseElementPredicate(ei){if(isElementPredicateWith(ei))return this.parseElementPredicateWith(ei);if(isElementPredicateWhere(ei))return this.parseElementPredicateWhere(ei);if(isElementExpression(ei))return this.parseElementExpression(ei);index_DafVOuVd.l(ei)}parseElementExpressionsIterator(ei){const ni=[];let ri=ei;for(;ri;){try{ri.value&&ni.unshift(this.parseElementExpression(ri.value))}catch(ii){logWarnError(ii)}ri=ri.prev}return ni}parseElementExpression(ei){if(isWildcardExpression(ei))return{wildcard:!0};if(isElementKindExpression(ei))return index_DafVOuVd.u(ei.kind?.ref,"ElementKindExpr kind is not resolved: "+ei.$cstNode?.text),{elementKind:ei.kind.ref.name,isEqual:ei.isEqual};if(isElementTagExpression(ei)){index_DafVOuVd.u(ei.tag?.ref,"ElementTagExpr tag is not resolved: "+ei.$cstNode?.text);let ni=ei.tag.$refText;return ni.startsWith("#")&&(ni=ni.slice(1)),{elementTag:ni,isEqual:ei.isEqual}}if(isExpandElementExpression(ei)){const ni=elementRef(ei.expand);return index_DafVOuVd.u(ni,"Element not found "+ei.expand.$cstNode?.text),{expanded:this.resolveFqn(ni)}}if(isElementDescedantsExpression(ei)){const ni=elementRef(ei.parent);return index_DafVOuVd.u(ni,"Element not found "+ei.parent.$cstNode?.text),{element:this.resolveFqn(ni),isChildren:ei.suffix===".*",isDescendants:ei.suffix===".**"}}if(isElementRef(ei)){const ni=elementRef(ei);return index_DafVOuVd.u(ni,"Element not found "+ei.$cstNode?.text),{element:this.resolveFqn(ni)}}index_DafVOuVd.l(ei)}parseElementPredicateWhere(ei){return{where:{expr:this.parseElementExpression(ei.subject),condition:ei.where?parseWhereClause(ei.where):{kind:{neq:"--always-true--"}}}}}parseElementPredicateWith(ei){const ni=this.parseElementPredicate(ei.subject);return(ei.custom?.props??[]).reduce((ri,ii)=>{if(!this.isValid(ii))return ri;if(isNavigateToProperty(ii)){const si=ii.value.view.$refText;return n$7(si)&&(ri.custom.navigateTo=si),ri}if(isElementStringProperty(ii))return n$5(ii.value)&&(ri.custom[ii.key]=removeIndent(ii.value)||""),ri;if(isIconProperty(ii)){const si=ii.libicon?.ref?.name??ii.value;return n$5(si)&&(ri.custom[ii.key]=si),ri}if(isColorProperty(ii)){const si=toColor(ii);return n$5(si)&&(ri.custom[ii.key]=si),ri}if(isShapeProperty(ii)||isBorderProperty(ii))return n$5(ii.value)&&(ri.custom[ii.key]=ii.value),ri;if(isOpacityProperty(ii))return n$5(ii.value)&&(ri.custom[ii.key]=parseAstOpacityProperty(ii)),ri;if(isNotationProperty(ii))return n$7(ii.value)&&(ri.custom[ii.key]=removeIndent(ii.value)),ri;index_DafVOuVd.l(ii)},{custom:{expr:ni}})}parseRelationPredicate(ei){if(isRelationPredicateWith(ei)){let ni=isRelationPredicateWhere(ei.subject)?this.parseRelationPredicateWhere(ei.subject):this.parseRelationExpression(ei.subject);return this.parseRelationPredicateWith(ei,ni)}if(isRelationPredicateWhere(ei))return this.parseRelationPredicateWhere(ei);if(isRelationExpression(ei))return this.parseRelationExpression(ei);index_DafVOuVd.l(ei)}parseRelationPredicateWhere(ei){return{where:{expr:this.parseRelationExpression(ei.subject),condition:ei.where?parseWhereClause(ei.where):{kind:{neq:"--always-true--"}}}}}parseRelationPredicateWith(ei,ni){return(ei.custom?.props??[]).reduce((ri,ii)=>{if(isRelationStringProperty(ii)||isNotationProperty(ii)||isNotesProperty(ii))return n$5(ii.value)&&(ri.customRelation[ii.key]=removeIndent(ii.value)??""),ri;if(isArrowProperty(ii))return n$7(ii.value)&&(ri.customRelation[ii.key]=ii.value),ri;if(isColorProperty(ii)){const si=toColor(ii);return n$7(si)&&(ri.customRelation[ii.key]=si),ri}if(isLineProperty(ii))return n$7(ii.value)&&(ri.customRelation[ii.key]=ii.value),ri;if(isRelationNavigateToProperty(ii)){const si=ii.value.view.ref?.name;return n$7(si)&&(ri.customRelation.navigateTo=si),ri}index_DafVOuVd.l(ii)},{customRelation:{relation:ni}})}parseRelationExpression(ei){if(isDirectedRelationExpression(ei))return{source:this.parseElementExpression(ei.source.from),target:this.parseElementExpression(ei.target),isBidirectional:ei.source.isBidirectional};if(isInOutRelationExpression(ei))return{inout:this.parseElementExpression(ei.inout.to)};if(isOutgoingRelationExpression(ei))return{outgoing:this.parseElementExpression(ei.from)};if(isIncomingRelationExpression(ei))return{incoming:this.parseElementExpression(ei.to)};index_DafVOuVd.l(ei)}}}function SpecificationParser(ti){return class extends ti{parseSpecification(){const{parseResult:{value:{specifications:ei}},c4Specification:ni}=this.doc,ri=this.isValid,ii=ei.flatMap(ui=>ui.elements.filter(this.isValid));for(const{kind:ui,props:li}of ii)try{const di=ui.name;if(!n$7(di))continue;if(di in ni.elements){logger.warn(`Element kind "${di}" is already defined`);continue}const fi=li.find(isElementStyleProperty),pi=x$1(li.filter(isSpecificationElementStringProperty)??[],T$2(hi=>this.isValid(hi)&&l$6(hi.value)),l$7(hi=>[hi.key,removeIndent(hi.value)]));ni.elements[di]={...pi,style:{...toElementStyle(fi?.props,this.isValid)}}}catch(di){logWarnError(di)}const si=ei.flatMap(ui=>ui.relationships.filter(this.isValid));for(const{kind:ui,props:li}of si)try{const di=ui.name;if(!n$7(di))continue;if(di in ni.relationships){logger.warn(`Relationship kind "${di}" is already defined`);continue}const fi=x$1(li.filter(isSpecificationRelationshipStringProperty)??[],T$2(pi=>this.isValid(pi)&&l$6(pi.value)),l$7(pi=>[pi.key,removeIndent(pi.value)]));ni.relationships[di]={...fi,...toRelationshipStyleExcludeDefaults(li,this.isValid)}}catch(di){logWarnError(di)}const oi=ei.flatMap(ui=>ui.tags.filter(this.isValid));for(const ui of oi){const li=ui.tag.name;n$7(li)&&ni.tags.add(li)}const ai=ei.flatMap(ui=>ui.deploymentNodes.filter(ri));for(const ui of ai)try{Object.assign(ni.deployments,this.parseSpecificationDeploymentNodeKind(ui))}catch(li){logWarnError(li)}const ci=ei.flatMap(ui=>ui.colors.filter(ri));for(const{name:ui,color:li}of ci)try{const di=ui.name;if(di in ni.colors){logger.warn(`Custom color "${di}" is already defined`);continue}ni.colors[di]={color:li}}catch(di){logWarnError(di)}}parseSpecificationDeploymentNodeKind({kind:ei,props:ni}){const ri=ei.name;if(!n$7(ri))throw new Error("DeploymentNodeKind name is not resolved");const ii=ni.find(isElementStyleProperty),si=x$1(ni.filter(isSpecificationElementStringProperty)??[],T$2(oi=>this.isValid(oi)&&l$6(oi.value)),l$7(oi=>[oi.key,removeIndent(oi.value)]));return{[ri]:{...si,style:{...toElementStyle(ii?.props,this.isValid)}}}}}}function ViewsParser(ti){return class extends ti{parseViews(){const ei=this.isValid;for(const ni of this.doc.parseResult.value.views){const ri=ni.styles.flatMap(ii=>{try{return ei(ii)?this.parseViewRuleStyleOrGlobalRef(ii):[]}catch(si){return logWarnError(si),[]}});for(const ii of ni.views)try{if(!ei(ii))continue;switch(!0){case isElementView(ii):this.doc.c4Views.push(this.parseElementView(ii,ri));break;case isDynamicView(ii):this.doc.c4Views.push(this.parseDynamicElementView(ii,ri));break;case isDeploymentView(ii):this.doc.c4Views.push(this.parseDeploymentView(ii));break;default:index_DafVOuVd.l(ii)}}catch(si){logWarnError(si)}}}parseElementView(ei,ni){const ri=ei.body;index_DafVOuVd.u(ri,"ElementView body is not defined");const ii=this.getAstNodePath(ei);let si=null;if("viewOf"in ei){const pi=elementRef(ei.viewOf),hi=pi&&this.resolveFqn(pi);hi?si=hi:logger.warn("viewOf is not resolved: "+ei.$cstNode?.text)}let oi=ei.name;oi||(oi="view_"+stringHash(this.doc.uri.toString(),ii,si??""));const ai=toSingleLine(ri.props.find(pi=>pi.key==="title")?.value)??null,ci=removeIndent(ri.props.find(pi=>pi.key==="description")?.value)??null,ui=this.convertTags(ri),li=this.convertLinks(ri),di=parseViewManualLayout(ei),fi={__:"element",id:oi,astPath:ii,title:ai,description:ci,tags:ui,links:index_DafVOuVd.ac(li)?li:null,rules:[...ni,...ri.rules.flatMap(pi=>{try{return this.isValid(pi)?this.parseViewRule(pi):[]}catch(hi){return logWarnError(hi),[]}})],...si&&{viewOf:si},...di&&{manualLayout:di}};if(ViewOps.writeId(ei,fi.id),"extends"in ei){const pi=ei.extends.view.ref;return index_DafVOuVd.u(pi?.name,"view extends is not resolved: "+ei.$cstNode?.text),Object.assign(fi,{extends:pi.name})}return fi}parseViewRule(ei){if(isViewRulePredicate(ei))return this.parseViewRulePredicate(ei);if(isViewRuleGlobalPredicateRef(ei))return this.parseViewRuleGlobalPredicateRef(ei);if(isViewRuleStyleOrGlobalRef(ei))return this.parseViewRuleStyleOrGlobalRef(ei);if(isViewRuleAutoLayout(ei))return toAutoLayout(ei);if(isViewRuleGroup(ei))return this.parseViewRuleGroup(ei);index_DafVOuVd.l(ei)}parseViewRulePredicate(ei){const ni=[];let ri=ei.predicates;for(;ri;){const{value:ii,prev:si}=ri;try{n$7(ii)&&this.isValid(ii)&&ni.unshift(this.parsePredicate(ii))}catch(oi){logWarnError(oi)}if(!si)break;ri=si}return isIncludePredicate(ei)?{include:ni}:{exclude:ni}}parseViewRuleGlobalPredicateRef(ei){return{predicateId:ei.predicate.$refText}}parseViewRuleStyleOrGlobalRef(ei){if(isViewRuleStyle(ei))return this.parseViewRuleStyle(ei);if(isViewRuleGlobalStyle(ei))return this.parseViewRuleGlobalStyle(ei);index_DafVOuVd.l(ei)}parseViewRuleGroup(ei){const ni=[];for(const ri of ei.groupRules)try{if(!this.isValid(ri))continue;if(isViewRulePredicate(ri)){ni.push(this.parseViewRulePredicate(ri));continue}if(isViewRuleGroup(ri)){ni.push(this.parseViewRuleGroup(ri));continue}index_DafVOuVd.l(ri)}catch(ii){logWarnError(ii)}return{title:toSingleLine(ei.title)??null,groupRules:ni,...toElementStyle(ei.props,this.isValid)}}parseViewRuleStyle(ei){const ni=ei.props.filter(isStyleProperty),ri=ei.target,ii=ei.props.find(isNotationProperty);return this.parseRuleStyle(ni,ri,ii)}parseRuleStyle(ei,ni,ri){const ii=toElementStyle(ei,this.isValid),si=removeIndent(ri?.value);return{targets:this.parseElementExpressionsIterator(ni),...si&&{notation:si},style:{...ii}}}parseViewRuleGlobalStyle(ei){return{styleId:ei.style.$refText}}parseDynamicElementView(ei,ni){const ri=ei.body;index_DafVOuVd.u(ri,"DynamicElementView body is not defined");const ii=this.isValid,si=ri.props.filter(ii),oi=this.getAstNodePath(ei);let ai=ei.name;ai||(ai="dynamic_"+stringHash(this.doc.uri.toString(),oi));const ci=toSingleLine(si.find(pi=>pi.key==="title")?.value)??null,ui=removeIndent(si.find(pi=>pi.key==="description")?.value)??null,li=this.convertTags(ri),di=this.convertLinks(ri);ViewOps.writeId(ei,ai);const fi=parseViewManualLayout(ei);return{__:"dynamic",id:ai,astPath:oi,title:ci,description:ui,tags:li,links:index_DafVOuVd.ac(di)?di:null,rules:[...ni,...ri.rules.flatMap(pi=>{try{return ii(pi)?this.parseDynamicViewRule(pi):[]}catch(hi){return logWarnError(hi),[]}},[])],steps:ri.steps.reduce((pi,hi)=>{try{ii(hi)&&(isDynamicViewParallelSteps(hi)?pi.push(this.parseDynamicParallelSteps(hi)):pi.push(this.parseDynamicStep(hi)))}catch(vi){logWarnError(vi)}return pi},[]),...fi&&{manualLayout:fi}}}parseDynamicViewRule(ei){if(isDynamicViewIncludePredicate(ei))return this.parseDynamicViewIncludePredicate(ei);if(isDynamicViewGlobalPredicateRef(ei))return this.parseViewRuleGlobalPredicateRef(ei);if(isViewRuleStyleOrGlobalRef(ei))return this.parseViewRuleStyleOrGlobalRef(ei);if(isViewRuleAutoLayout(ei))return toAutoLayout(ei);index_DafVOuVd.l(ei)}parseDynamicViewIncludePredicate(ei){const ni=[];let ri=ei.predicates;for(;ri;){try{if(l$6(ri.value)&&this.isValid(ri.value)){const ii=this.parseElementPredicate(ri.value);ni.unshift(ii)}}catch(ii){logWarnError(ii)}ri=ri.prev}return{include:ni}}parseDynamicParallelSteps(ei){return{__parallel:ei.steps.map(ni=>this.parseDynamicStep(ni))}}parseDynamicStep(ei){const ni=elementRef(ei.source);if(!ni)throw new Error("Invalid reference to source");const ri=elementRef(ei.target);if(!ri)throw new Error("Invalid reference to target");let ii=this.resolveFqn(ni),si=this.resolveFqn(ri);const oi=removeIndent(ei.title)??null;let ai={source:ii,target:si,title:oi};if(ei.isBackward&&(ai={source:si,target:ii,title:oi,isBackward:!0}),!o$6(ei.custom?.props))return ai;for(const ci of ei.custom.props)try{switch(!0){case isRelationNavigateToProperty(ci):{const ui=ci.value.view.ref?.name;n$7(ui)&&(ai.navigateTo=ui);break}case isRelationStringProperty(ci):case isNotationProperty(ci):case isNotesProperty(ci):{n$5(ci.value)&&(ai[ci.key]=removeIndent(ci.value)??"");break}case isArrowProperty(ci):{n$5(ci.value)&&(ai[ci.key]=ci.value);break}case isColorProperty(ci):{const ui=toColor(ci);n$5(ui)&&(ai[ci.key]=ui);break}case isLineProperty(ci):{n$5(ci.value)&&(ai[ci.key]=ci.value);break}default:index_DafVOuVd.l(ci)}}catch(ui){logWarnError(ui)}return ai}}}const h$1=x$1(BaseParser,ExpressionV2Parser,ModelParser,DeploymentModelParser,DeploymentViewParser,PredicatesParser,SpecificationParser,ViewsParser,GlobalsParser);class DocumentParser extends h$1{}class LikeC4ModelParser{constructor(ei){this.services=ei}cachedParsers=new a$3(ei=>new DocumentParser(this.services,ei));parse(ei){index_DafVOuVd.u(isFqnIndexedDocument(ei),`Not a FqnIndexedDocument: ${ei.uri.toString(!0)}`);try{ei=Object.assign(ei,{c4Specification:{tags:new Set,elements:{},relationships:{},colors:{},deployments:{}},c4Elements:[],c4Relations:[],c4Deployments:[],c4DeploymentRelations:[],c4Globals:{predicates:{},dynamicPredicates:{},styles:{}},c4Views:[]});const ni=this.cachedParsers.get(ei);return ni.parseSpecification(),ni.parseModel(),ni.parseGlobals(),ni.parseDeployment(),ni.parseViews(),ni.doc}catch(ni){throw new Error(`Error parsing document ${ei.uri.toString()}`,{cause:ni})}}forDocument(ei){return index_DafVOuVd.u(isFqnIndexedDocument(ei),`Not a FqnIndexedDocument: ${ei.uri.toString(!0)}`),this.cachedParsers.get(ei)}}const{findNodeForKeyword:v,findNodeForProperty:D$1}=c$4,K=(ti,ei,ni=0)=>{const ri=ni>0?" ".repeat(ni):"";return[ri+`style ${ti} {`,...t$1(ei).map(([ii,si])=>ri+` ${ii} ${ii==="opacity"?si.toString()+"%":si}`),ri+"}"]},j=(ti,ei)=>ni=>{if(!isViewRuleStyle(ni))return!1;const ri=ni.target.value;if(!ri||n$7(ni.target.prev)||!isElementRef(ri))return!1;const ii=ri.el.ref;return(ii?ei.getFqn(ii):null)===ti};function changeElementStyle(ti,{view:ei,viewAst:ni,targets:ri,style:ii}){index_DafVOuVd.u(ni.body,`View ${ei.id} has no body`);const si=ni.$cstNode;index_DafVOuVd.u(si,"viewCstNode");const oi=a$9(ni.body.rules)?.$cstNode?.range.end??ni.body.$cstNode?.range.end;index_DafVOuVd.u(oi,"insertPos is not defined");const ai=si.range.start.character+2,ci=ti.likec4.FqnIndex,ui=T$2(ni.body.rules,isViewRuleStyle),li=ei.__==="element"?ei.viewOf:null,di=[],fi=[];ri.forEach(bi=>{const gi=o$3(ui,j(bi,ci)),wi=li&&index_DafVOuVd.aa(li,bi)?bi.substring(li.length+1):bi;gi?di.push({fqn:wi,rule:gi}):fi.push({fqn:wi})});const pi={start:oi,end:oi},hi=bi=>{bi.start.line<=pi.start.line&&(bi.start.line==pi.start.line?pi.start.character=Math.min(bi.start.character,pi.start.character):pi.start=bi.start),bi.end.line>=pi.end.line&&(bi.end.line==pi.end.line?pi.end.character=Math.max(bi.end.character,pi.end.character):pi.end=bi.end)},vi=[];if(fi.length>0){const bi=fi.flatMap(({fqn:gi})=>K(gi,ii,ai));vi.push(TextEdit.insert(oi,`
247
+ `).filter(ri=>!ri.includes("**")&&!ri.includes("@likec4-")&&!ri.includes("*/")).map(ri=>ri.replaceAll("*","").trim()).join(""),ni=fromBase64(ei);return k(decode(ni))}function parseViewManualLayout(ti){const ei=findCommentNode(ti.$cstNode,["BLOCK_COMMENT"]);if(!(!ei||!hasManualLayout(ei.text)))try{return deserializeFromComment(ei.text)}catch(ni){const ri=C$1(ti);logger.warn(ni),logger.warn(`Ignoring manual layout of "${ti.name??"unnamed"}" at ${ri.uri.fsPath}:${1+(ei.range.start.line||0)}`);return}}function DeploymentViewParser(ti){return class extends ti{parseDeploymentView(ei){const ni=ei.body;index_KOeaSlL8.o(ni,"DynamicElementView body is not defined");const ri=ni.props.filter(this.isValid),ii=this.getAstNodePath(ei);let si=ei.name;si||(si="deployment_"+stringHash(this.doc.uri.toString(),ii));const oi=toSingleLine(ri.find(di=>di.key==="title")?.value)??null,ai=removeIndent(ri.find(di=>di.key==="description")?.value)??null,ci=this.convertTags(ni),ui=this.convertLinks(ni);ViewOps.writeId(ei,si);const li=parseViewManualLayout(ei);return{__:"deployment",id:si,astPath:ii,title:oi,description:ai,tags:ci,links:index_KOeaSlL8.ac(ui)?ui:null,rules:ni.rules.flatMap(di=>{try{return this.isValid(di)?this.parseDeploymentViewRule(di):[]}catch(fi){return logWarnError(fi),[]}}),...li&&{manualLayout:li}}}parseDeploymentViewRule(ei){if(isDeploymentViewRulePredicate(ei))return this.parseDeploymentViewRulePredicate(ei);if(isViewRuleAutoLayout(ei))return toAutoLayout(ei);if(isDeploymentViewRuleStyle(ei))return this.parseDeploymentViewRuleStyle(ei);index_KOeaSlL8.n(ei)}parseDeploymentViewRulePredicate(ei){const ni=[];let ri=ei.expr;for(;ri;){try{const ii=ri.value;if(l$6(ii)&&this.isValid(ii))switch(!0){case isFqnExpr(ii):ni.unshift(this.parseFqnExpr(ii));break;case isRelationExpr(ii):ni.unshift(this.parseRelationExpr(ii));break;case isRelationPredicateWhereV2(ii):ni.unshift(this.parseRelationWhereExpr(ii));break;default:index_KOeaSlL8.n(ii)}}catch(ii){logWarnError(ii)}ri=ri.prev}return ei.isInclude?{include:ni}:{exclude:ni}}parseDeploymentViewRuleStyle(ei){const ni=ei.props.filter(isStyleProperty),ri=ei.props.find(isNotationProperty),ii=removeIndent(ri?.value);return{targets:this.parseFqnExpressions(ei.targets),...ii&&{notation:ii},style:{...toElementStyle(ni,this.isValid)}}}}}function instanceRef(ti){let ei;for(;ei=ti.value?.ref;){if(isDeploymentNode(ei))return null;if(isDeployedInstance(ei))return ei;if(n$6(ti.parent))return null;ti=ti.parent}return null}const f$1=({operator:ti,not:ei},ni)=>ti.startsWith("!=")?{neq:ni}:ti.startsWith("=")?{eq:ni}:ei?{neq:ni}:{eq:ni};function parseWhereClause(ti){switch(!0){case isWhereTagEqual(ti):{const ei=ti.value?.ref?.name;return index_KOeaSlL8.o(ei,"Expected tag name"),{tag:f$1(ti,ei)}}case isWhereKindEqual(ti):{const ei=ti.value?.ref?.name;return index_KOeaSlL8.o(ei,"Expected kind name"),{kind:f$1(ti,ei)}}case(isWhereElementNegation(ti)||isWhereRelationNegation(ti)):return{not:parseWhereClause(ti.value)};case isWhereBinaryExpression(ti):{const ei=parseWhereClause(ti.left),ni=parseWhereClause(ti.right),ri=ti.operator.toLowerCase();switch(ri){case"and":{const ii=[index_KOeaSlL8.ag(ei)?ei.and:ei,index_KOeaSlL8.ag(ni)?ni.and:ni].flat();return index_KOeaSlL8.o(index_KOeaSlL8.ac(ii),"Expected non-empty array"),{and:ii}}case"or":{const ii=[index_KOeaSlL8.af(ei)?ei.or:ei,index_KOeaSlL8.af(ni)?ni.or:ni].flat();return index_KOeaSlL8.o(index_KOeaSlL8.ac(ii),"Expected non-empty array"),{or:ii}}default:index_KOeaSlL8.n(ri)}}default:index_KOeaSlL8.n(ti)}}function ExpressionV2Parser(ti){return class extends ti{parseFqnRef(ei){const ni=index_KOeaSlL8.M(ei.value.ref,`FqnRef is empty ${ei.$cstNode?.range.start.line}:${ei.$cstNode?.range.start.character}`);if(isElement(ni)){const ri=instanceRef(ei);if(!ri)return{model:this.resolveFqn(ni)};const ii=this.resolveFqn(ri),si=this.resolveFqn(ni);return{deployment:ii,element:si}}if(isDeploymentElement(ni))return{deployment:this.resolveFqn(ni)};index_KOeaSlL8.n(ni)}parseFqnExpr(ei){if(isWildcardExpression(ei))return{wildcard:!0};if(isFqnRefExpr(ei))return this.parseFqnRefExpr(ei);index_KOeaSlL8.n(ei)}parseFqnRefExpr(ei){const ni=this.parseFqnRef(ei.ref);switch(!0){case ei.selector==="._":return{ref:ni,selector:"expanded"};case ei.selector===".**":return{ref:ni,selector:"descendants"};case ei.selector===".*":return{ref:ni,selector:"children"};default:return{ref:ni}}}parseFqnExpressions(ei){const ni=[];let ri=ei;for(;ri;){try{l$6(ri.value)&&this.isValid(ri.value)&&ni.push(this.parseFqnExpr(ri.value))}catch(ii){logWarnError(ii)}ri=ri.prev}return ni.reverse()}parseRelationWhereExpr(ei){return{where:{expr:this.parseRelationExpr(ei.subject),condition:ei.where?parseWhereClause(ei.where):{kind:{neq:"--always-true--"}}}}}parseRelationExpr(ei){if(isRelationPredicateWhere(ei),isDirectedRelationExpr(ei))return{source:this.parseFqnExpr(ei.source.from),target:this.parseFqnExpr(ei.target),isBidirectional:ei.source.isBidirectional};if(isInOutRelationExpr(ei))return{inout:this.parseFqnExpr(ei.inout.to)};if(isOutgoingRelationExpr(ei))return{outgoing:this.parseFqnExpr(ei.from)};if(isIncomingRelationExpr(ei))return{incoming:this.parseFqnExpr(ei.to)};index_KOeaSlL8.n(ei)}}}function GlobalsParser(ti){return class extends ti{parseGlobals(){const{parseResult:ei,c4Globals:ni}=this.doc,ri=this.isValid,ii=ei.value.globals.filter(ri),si=ii.flatMap(ai=>ai.predicates.filter(ri));for(const ai of si)try{const ci=ai.name;if(!n$7(ci))continue;if(ci in ni.predicates){logger.warn(`Global predicate named "${ci}" is already defined`);continue}this.parseAndStoreGlobalPredicateGroupOrDynamic(ai,ci,ni)}catch(ci){logWarnError(ci)}const oi=ii.flatMap(ai=>ai.styles.filter(ri));for(const ai of oi)try{const ci=ai.id.name;if(!n$7(ci))continue;if(ci in ni.styles){logger.warn(`Global style named "${ci}" is already defined`);continue}const ui=this.parseGlobalStyleOrGroup(ai);ui.length>0&&(ni.styles[ci]=ui)}catch(ci){logWarnError(ci)}}parseAndStoreGlobalPredicateGroupOrDynamic(ei,ni,ri){if(isGlobalPredicateGroup(ei)){const ii=this.parseGlobalPredicateGroup(ei);ii.length>0&&(ri.predicates[ni]=ii);return}if(isGlobalDynamicPredicateGroup(ei)){const ii=this.parseGlobalDynamicPredicateGroup(ei);ii.length>0&&(ri.dynamicPredicates[ni]=ii);return}index_KOeaSlL8.n(ei)}parseGlobalPredicateGroup(ei){return ei.predicates.map(ni=>this.parseViewRulePredicate(ni))}parseGlobalDynamicPredicateGroup(ei){return ei.predicates.map(ni=>this.parseDynamicViewIncludePredicate(ni))}parseGlobalStyleOrGroup(ei){if(isGlobalStyle(ei))return[this.parseViewRuleStyle(ei)];if(isGlobalStyleGroup(ei))return ei.styles.map(ni=>this.parseViewRuleStyle(ni));index_KOeaSlL8.n(ei)}}}function ModelParser(ti){return class extends ti{parseModel(){const ei=this.doc;for(const ni of streamModel(ei))try{if(isElement(ni)){ei.c4Elements.push(this.parseElement(ni));continue}if(isRelation(ni)){this.isValid(ni)&&ei.c4Relations.push(this.parseRelation(ni));continue}index_KOeaSlL8.n(ni)}catch(ri){logWarnError(ri)}}parseElement(ei){const ni=this.isValid,ri=this.resolveFqn(ei),ii=index_KOeaSlL8.M(ei.kind.ref,"Element kind is not resolved").name,si=this.parseTags(ei.body),oi=ei.body?.props.find(isElementStyleProperty)?.props,ai=toElementStyle(oi,ni),ci=this.getMetadata(ei.body?.props.find(isMetadataProperty)),ui=this.getAstNodePath(ei);let[li,di,fi]=ei.props??[];const pi=x$1(ei.body?.props??[],T$2(ni),T$2(isElementStringProperty),l$7(bi=>[bi.key,bi.value||void 0]));li=removeIndent(li??pi.title),di=removeIndent(pi.description??di),fi=toSingleLine(pi.technology??fi);const hi=this.parseLinks(ei.body),vi=ei.body?.props.find(isIconProperty);if(vi&&ni(vi)){const bi=vi.libicon?.ref?.name??vi.value;n$7(bi)&&(ai.icon=bi)}return{id:ri,kind:ii,astPath:ui,title:li??ei.name,...ci&&{metadata:ci},...si&&{tags:si},...hi&&index_KOeaSlL8.ac(hi)&&{links:hi},...n$7(fi)&&{technology:fi},...n$7(di)&&{description:di},style:ai}}parseRelation(ei){const ni=this.isValid,ri=resolveRelationPoints(ei),ii=this.resolveFqn(ri.target),si=this.resolveFqn(ri.source),oi=this.parseTags(ei)??this.parseTags(ei.body),ai=this.parseLinks(ei.body),ci=ei.kind?.ref?.name,ui=this.getMetadata(ei.body?.props.find(isMetadataProperty)),li=this.getAstNodePath(ei),di=l$7(ei.body?.props.filter(isRelationStringProperty).filter(gi=>l$6(gi.value))??[],gi=>[gi.key,gi.value]),fi=x$1(ei.body?.props??[],T$2(isRelationNavigateToProperty),m$1(gi=>gi.value.view.ref?.name),T$2(n$7),d$3()),pi=removeIndent(ei.title??di.title)??"",hi=removeIndent(di.description),vi=toSingleLine(ei.technology)??removeIndent(di.technology),bi=ei.body?.props.find(isRelationStyleProperty);return{id:stringHash(li,si,ii),astPath:li,source:si,target:ii,title:pi,...ui&&{metadata:ui},...n$7(vi)&&{technology:vi},...n$7(hi)&&{description:hi},...ci&&{kind:ci},...oi&&{tags:oi},...index_KOeaSlL8.ac(ai)&&{links:ai},...toRelationshipStyleExcludeDefaults(bi?.props,ni),...fi&&{navigateTo:fi}}}}}function PredicatesParser(ti){return class extends ti{parsePredicate(ei){if(isElementPredicate(ei))return this.parseElementPredicate(ei);if(isRelationPredicate(ei))return this.parseRelationPredicate(ei);index_KOeaSlL8.n(ei)}parseElementPredicate(ei){if(isElementPredicateWith(ei))return this.parseElementPredicateWith(ei);if(isElementPredicateWhere(ei))return this.parseElementPredicateWhere(ei);if(isElementExpression(ei))return this.parseElementExpression(ei);index_KOeaSlL8.n(ei)}parseElementExpressionsIterator(ei){const ni=[];let ri=ei;for(;ri;){try{ri.value&&ni.unshift(this.parseElementExpression(ri.value))}catch(ii){logWarnError(ii)}ri=ri.prev}return ni}parseElementExpression(ei){if(isWildcardExpression(ei))return{wildcard:!0};if(isElementKindExpression(ei))return index_KOeaSlL8.o(ei.kind?.ref,"ElementKindExpr kind is not resolved: "+ei.$cstNode?.text),{elementKind:ei.kind.ref.name,isEqual:ei.isEqual};if(isElementTagExpression(ei)){index_KOeaSlL8.o(ei.tag?.ref,"ElementTagExpr tag is not resolved: "+ei.$cstNode?.text);let ni=ei.tag.$refText;return ni.startsWith("#")&&(ni=ni.slice(1)),{elementTag:ni,isEqual:ei.isEqual}}if(isExpandElementExpression(ei)){const ni=elementRef(ei.expand);return index_KOeaSlL8.o(ni,"Element not found "+ei.expand.$cstNode?.text),{expanded:this.resolveFqn(ni)}}if(isElementDescedantsExpression(ei)){const ni=elementRef(ei.parent);return index_KOeaSlL8.o(ni,"Element not found "+ei.parent.$cstNode?.text),{element:this.resolveFqn(ni),isChildren:ei.suffix===".*",isDescendants:ei.suffix===".**"}}if(isElementRef(ei)){const ni=elementRef(ei);return index_KOeaSlL8.o(ni,"Element not found "+ei.$cstNode?.text),{element:this.resolveFqn(ni)}}index_KOeaSlL8.n(ei)}parseElementPredicateWhere(ei){return{where:{expr:this.parseElementExpression(ei.subject),condition:ei.where?parseWhereClause(ei.where):{kind:{neq:"--always-true--"}}}}}parseElementPredicateWith(ei){const ni=this.parseElementPredicate(ei.subject);return(ei.custom?.props??[]).reduce((ri,ii)=>{if(!this.isValid(ii))return ri;if(isNavigateToProperty(ii)){const si=ii.value.view.$refText;return n$7(si)&&(ri.custom.navigateTo=si),ri}if(isElementStringProperty(ii))return n$5(ii.value)&&(ri.custom[ii.key]=removeIndent(ii.value)||""),ri;if(isIconProperty(ii)){const si=ii.libicon?.ref?.name??ii.value;return n$5(si)&&(ri.custom[ii.key]=si),ri}if(isColorProperty(ii)){const si=toColor(ii);return n$5(si)&&(ri.custom[ii.key]=si),ri}if(isShapeProperty(ii)||isBorderProperty(ii))return n$5(ii.value)&&(ri.custom[ii.key]=ii.value),ri;if(isOpacityProperty(ii))return n$5(ii.value)&&(ri.custom[ii.key]=parseAstOpacityProperty(ii)),ri;if(isNotationProperty(ii))return n$7(ii.value)&&(ri.custom[ii.key]=removeIndent(ii.value)),ri;index_KOeaSlL8.n(ii)},{custom:{expr:ni}})}parseRelationPredicate(ei){if(isRelationPredicateWith(ei)){let ni=isRelationPredicateWhere(ei.subject)?this.parseRelationPredicateWhere(ei.subject):this.parseRelationExpression(ei.subject);return this.parseRelationPredicateWith(ei,ni)}if(isRelationPredicateWhere(ei))return this.parseRelationPredicateWhere(ei);if(isRelationExpression(ei))return this.parseRelationExpression(ei);index_KOeaSlL8.n(ei)}parseRelationPredicateWhere(ei){return{where:{expr:this.parseRelationExpression(ei.subject),condition:ei.where?parseWhereClause(ei.where):{kind:{neq:"--always-true--"}}}}}parseRelationPredicateWith(ei,ni){return(ei.custom?.props??[]).reduce((ri,ii)=>{if(isRelationStringProperty(ii)||isNotationProperty(ii)||isNotesProperty(ii))return n$5(ii.value)&&(ri.customRelation[ii.key]=removeIndent(ii.value)??""),ri;if(isArrowProperty(ii))return n$7(ii.value)&&(ri.customRelation[ii.key]=ii.value),ri;if(isColorProperty(ii)){const si=toColor(ii);return n$7(si)&&(ri.customRelation[ii.key]=si),ri}if(isLineProperty(ii))return n$7(ii.value)&&(ri.customRelation[ii.key]=ii.value),ri;if(isRelationNavigateToProperty(ii)){const si=ii.value.view.ref?.name;return n$7(si)&&(ri.customRelation.navigateTo=si),ri}index_KOeaSlL8.n(ii)},{customRelation:{relation:ni}})}parseRelationExpression(ei){if(isDirectedRelationExpression(ei))return{source:this.parseElementExpression(ei.source.from),target:this.parseElementExpression(ei.target),isBidirectional:ei.source.isBidirectional};if(isInOutRelationExpression(ei))return{inout:this.parseElementExpression(ei.inout.to)};if(isOutgoingRelationExpression(ei))return{outgoing:this.parseElementExpression(ei.from)};if(isIncomingRelationExpression(ei))return{incoming:this.parseElementExpression(ei.to)};index_KOeaSlL8.n(ei)}}}function SpecificationParser(ti){return class extends ti{parseSpecification(){const{parseResult:{value:{specifications:ei}},c4Specification:ni}=this.doc,ri=this.isValid,ii=ei.flatMap(ui=>ui.elements.filter(this.isValid));for(const{kind:ui,props:li}of ii)try{const di=ui.name;if(!n$7(di))continue;if(di in ni.elements){logger.warn(`Element kind "${di}" is already defined`);continue}const fi=li.find(isElementStyleProperty),pi=x$1(li.filter(isSpecificationElementStringProperty)??[],T$2(hi=>this.isValid(hi)&&l$6(hi.value)),l$7(hi=>[hi.key,removeIndent(hi.value)]));ni.elements[di]={...pi,style:{...toElementStyle(fi?.props,this.isValid)}}}catch(di){logWarnError(di)}const si=ei.flatMap(ui=>ui.relationships.filter(this.isValid));for(const{kind:ui,props:li}of si)try{const di=ui.name;if(!n$7(di))continue;if(di in ni.relationships){logger.warn(`Relationship kind "${di}" is already defined`);continue}const fi=x$1(li.filter(isSpecificationRelationshipStringProperty)??[],T$2(pi=>this.isValid(pi)&&l$6(pi.value)),l$7(pi=>[pi.key,removeIndent(pi.value)]));ni.relationships[di]={...fi,...toRelationshipStyleExcludeDefaults(li,this.isValid)}}catch(di){logWarnError(di)}const oi=ei.flatMap(ui=>ui.tags.filter(this.isValid));for(const ui of oi){const li=ui.tag.name;n$7(li)&&ni.tags.add(li)}const ai=ei.flatMap(ui=>ui.deploymentNodes.filter(ri));for(const ui of ai)try{Object.assign(ni.deployments,this.parseSpecificationDeploymentNodeKind(ui))}catch(li){logWarnError(li)}const ci=ei.flatMap(ui=>ui.colors.filter(ri));for(const{name:ui,color:li}of ci)try{const di=ui.name;if(di in ni.colors){logger.warn(`Custom color "${di}" is already defined`);continue}ni.colors[di]={color:li}}catch(di){logWarnError(di)}}parseSpecificationDeploymentNodeKind({kind:ei,props:ni}){const ri=ei.name;if(!n$7(ri))throw new Error("DeploymentNodeKind name is not resolved");const ii=ni.find(isElementStyleProperty),si=x$1(ni.filter(isSpecificationElementStringProperty)??[],T$2(oi=>this.isValid(oi)&&l$6(oi.value)),l$7(oi=>[oi.key,removeIndent(oi.value)]));return{[ri]:{...si,style:{...toElementStyle(ii?.props,this.isValid)}}}}}}function ViewsParser(ti){return class extends ti{parseViews(){const ei=this.isValid;for(const ni of this.doc.parseResult.value.views){const ri=ni.styles.flatMap(ii=>{try{return ei(ii)?this.parseViewRuleStyleOrGlobalRef(ii):[]}catch(si){return logWarnError(si),[]}});for(const ii of ni.views)try{if(!ei(ii))continue;switch(!0){case isElementView(ii):this.doc.c4Views.push(this.parseElementView(ii,ri));break;case isDynamicView(ii):this.doc.c4Views.push(this.parseDynamicElementView(ii,ri));break;case isDeploymentView(ii):this.doc.c4Views.push(this.parseDeploymentView(ii));break;default:index_KOeaSlL8.n(ii)}}catch(si){logWarnError(si)}}}parseElementView(ei,ni){const ri=ei.body;index_KOeaSlL8.o(ri,"ElementView body is not defined");const ii=this.getAstNodePath(ei);let si=null;if("viewOf"in ei){const pi=elementRef(ei.viewOf),hi=pi&&this.resolveFqn(pi);hi?si=hi:logger.warn("viewOf is not resolved: "+ei.$cstNode?.text)}let oi=ei.name;oi||(oi="view_"+stringHash(this.doc.uri.toString(),ii,si??""));const ai=toSingleLine(ri.props.find(pi=>pi.key==="title")?.value)??null,ci=removeIndent(ri.props.find(pi=>pi.key==="description")?.value)??null,ui=this.convertTags(ri),li=this.convertLinks(ri),di=parseViewManualLayout(ei),fi={__:"element",id:oi,astPath:ii,title:ai,description:ci,tags:ui,links:index_KOeaSlL8.ac(li)?li:null,rules:[...ni,...ri.rules.flatMap(pi=>{try{return this.isValid(pi)?this.parseViewRule(pi):[]}catch(hi){return logWarnError(hi),[]}})],...si&&{viewOf:si},...di&&{manualLayout:di}};if(ViewOps.writeId(ei,fi.id),"extends"in ei){const pi=ei.extends.view.ref;return index_KOeaSlL8.o(pi?.name,"view extends is not resolved: "+ei.$cstNode?.text),Object.assign(fi,{extends:pi.name})}return fi}parseViewRule(ei){if(isViewRulePredicate(ei))return this.parseViewRulePredicate(ei);if(isViewRuleGlobalPredicateRef(ei))return this.parseViewRuleGlobalPredicateRef(ei);if(isViewRuleStyleOrGlobalRef(ei))return this.parseViewRuleStyleOrGlobalRef(ei);if(isViewRuleAutoLayout(ei))return toAutoLayout(ei);if(isViewRuleGroup(ei))return this.parseViewRuleGroup(ei);index_KOeaSlL8.n(ei)}parseViewRulePredicate(ei){const ni=[];let ri=ei.predicates;for(;ri;){const{value:ii,prev:si}=ri;try{n$7(ii)&&this.isValid(ii)&&ni.unshift(this.parsePredicate(ii))}catch(oi){logWarnError(oi)}if(!si)break;ri=si}return isIncludePredicate(ei)?{include:ni}:{exclude:ni}}parseViewRuleGlobalPredicateRef(ei){return{predicateId:ei.predicate.$refText}}parseViewRuleStyleOrGlobalRef(ei){if(isViewRuleStyle(ei))return this.parseViewRuleStyle(ei);if(isViewRuleGlobalStyle(ei))return this.parseViewRuleGlobalStyle(ei);index_KOeaSlL8.n(ei)}parseViewRuleGroup(ei){const ni=[];for(const ri of ei.groupRules)try{if(!this.isValid(ri))continue;if(isViewRulePredicate(ri)){ni.push(this.parseViewRulePredicate(ri));continue}if(isViewRuleGroup(ri)){ni.push(this.parseViewRuleGroup(ri));continue}index_KOeaSlL8.n(ri)}catch(ii){logWarnError(ii)}return{title:toSingleLine(ei.title)??null,groupRules:ni,...toElementStyle(ei.props,this.isValid)}}parseViewRuleStyle(ei){const ni=ei.props.filter(isStyleProperty),ri=ei.target,ii=ei.props.find(isNotationProperty);return this.parseRuleStyle(ni,ri,ii)}parseRuleStyle(ei,ni,ri){const ii=toElementStyle(ei,this.isValid),si=removeIndent(ri?.value);return{targets:this.parseElementExpressionsIterator(ni),...si&&{notation:si},style:{...ii}}}parseViewRuleGlobalStyle(ei){return{styleId:ei.style.$refText}}parseDynamicElementView(ei,ni){const ri=ei.body;index_KOeaSlL8.o(ri,"DynamicElementView body is not defined");const ii=this.isValid,si=ri.props.filter(ii),oi=this.getAstNodePath(ei);let ai=ei.name;ai||(ai="dynamic_"+stringHash(this.doc.uri.toString(),oi));const ci=toSingleLine(si.find(pi=>pi.key==="title")?.value)??null,ui=removeIndent(si.find(pi=>pi.key==="description")?.value)??null,li=this.convertTags(ri),di=this.convertLinks(ri);ViewOps.writeId(ei,ai);const fi=parseViewManualLayout(ei);return{__:"dynamic",id:ai,astPath:oi,title:ci,description:ui,tags:li,links:index_KOeaSlL8.ac(di)?di:null,rules:[...ni,...ri.rules.flatMap(pi=>{try{return ii(pi)?this.parseDynamicViewRule(pi):[]}catch(hi){return logWarnError(hi),[]}},[])],steps:ri.steps.reduce((pi,hi)=>{try{ii(hi)&&(isDynamicViewParallelSteps(hi)?pi.push(this.parseDynamicParallelSteps(hi)):pi.push(this.parseDynamicStep(hi)))}catch(vi){logWarnError(vi)}return pi},[]),...fi&&{manualLayout:fi}}}parseDynamicViewRule(ei){if(isDynamicViewIncludePredicate(ei))return this.parseDynamicViewIncludePredicate(ei);if(isDynamicViewGlobalPredicateRef(ei))return this.parseViewRuleGlobalPredicateRef(ei);if(isViewRuleStyleOrGlobalRef(ei))return this.parseViewRuleStyleOrGlobalRef(ei);if(isViewRuleAutoLayout(ei))return toAutoLayout(ei);index_KOeaSlL8.n(ei)}parseDynamicViewIncludePredicate(ei){const ni=[];let ri=ei.predicates;for(;ri;){try{if(l$6(ri.value)&&this.isValid(ri.value)){const ii=this.parseElementPredicate(ri.value);ni.unshift(ii)}}catch(ii){logWarnError(ii)}ri=ri.prev}return{include:ni}}parseDynamicParallelSteps(ei){return{__parallel:ei.steps.map(ni=>this.parseDynamicStep(ni))}}parseDynamicStep(ei){const ni=elementRef(ei.source);if(!ni)throw new Error("Invalid reference to source");const ri=elementRef(ei.target);if(!ri)throw new Error("Invalid reference to target");let ii=this.resolveFqn(ni),si=this.resolveFqn(ri);const oi=removeIndent(ei.title)??null;let ai={source:ii,target:si,title:oi};if(ei.isBackward&&(ai={source:si,target:ii,title:oi,isBackward:!0}),!o$6(ei.custom?.props))return ai;for(const ci of ei.custom.props)try{switch(!0){case isRelationNavigateToProperty(ci):{const ui=ci.value.view.ref?.name;n$7(ui)&&(ai.navigateTo=ui);break}case isRelationStringProperty(ci):case isNotationProperty(ci):case isNotesProperty(ci):{n$5(ci.value)&&(ai[ci.key]=removeIndent(ci.value)??"");break}case isArrowProperty(ci):{n$5(ci.value)&&(ai[ci.key]=ci.value);break}case isColorProperty(ci):{const ui=toColor(ci);n$5(ui)&&(ai[ci.key]=ui);break}case isLineProperty(ci):{n$5(ci.value)&&(ai[ci.key]=ci.value);break}default:index_KOeaSlL8.n(ci)}}catch(ui){logWarnError(ui)}return ai}}}const h$1=x$1(BaseParser,ExpressionV2Parser,ModelParser,DeploymentModelParser,DeploymentViewParser,PredicatesParser,SpecificationParser,ViewsParser,GlobalsParser);class DocumentParser extends h$1{}class LikeC4ModelParser{constructor(ei){this.services=ei}cachedParsers=new a$3(ei=>new DocumentParser(this.services,ei));parse(ei){index_KOeaSlL8.o(isFqnIndexedDocument(ei),`Not a FqnIndexedDocument: ${ei.uri.toString(!0)}`);try{ei=Object.assign(ei,{c4Specification:{tags:new Set,elements:{},relationships:{},colors:{},deployments:{}},c4Elements:[],c4Relations:[],c4Deployments:[],c4DeploymentRelations:[],c4Globals:{predicates:{},dynamicPredicates:{},styles:{}},c4Views:[]});const ni=this.cachedParsers.get(ei);return ni.parseSpecification(),ni.parseModel(),ni.parseGlobals(),ni.parseDeployment(),ni.parseViews(),ni.doc}catch(ni){throw new Error(`Error parsing document ${ei.uri.toString()}`,{cause:ni})}}forDocument(ei){return index_KOeaSlL8.o(isFqnIndexedDocument(ei),`Not a FqnIndexedDocument: ${ei.uri.toString(!0)}`),this.cachedParsers.get(ei)}}const{findNodeForKeyword:v,findNodeForProperty:D$1}=c$4,K=(ti,ei,ni=0)=>{const ri=ni>0?" ".repeat(ni):"";return[ri+`style ${ti} {`,...t$1(ei).map(([ii,si])=>ri+` ${ii} ${ii==="opacity"?si.toString()+"%":si}`),ri+"}"]},j=(ti,ei)=>ni=>{if(!isViewRuleStyle(ni))return!1;const ri=ni.target.value;if(!ri||n$7(ni.target.prev)||!isElementRef(ri))return!1;const ii=ri.el.ref;return(ii?ei.getFqn(ii):null)===ti};function changeElementStyle(ti,{view:ei,viewAst:ni,targets:ri,style:ii}){index_KOeaSlL8.o(ni.body,`View ${ei.id} has no body`);const si=ni.$cstNode;index_KOeaSlL8.o(si,"viewCstNode");const oi=a$9(ni.body.rules)?.$cstNode?.range.end??ni.body.$cstNode?.range.end;index_KOeaSlL8.o(oi,"insertPos is not defined");const ai=si.range.start.character+2,ci=ti.likec4.FqnIndex,ui=T$2(ni.body.rules,isViewRuleStyle),li=ei.__==="element"?ei.viewOf:null,di=[],fi=[];ri.forEach(bi=>{const gi=o$3(ui,j(bi,ci)),wi=li&&index_KOeaSlL8.aa(li,bi)?bi.substring(li.length+1):bi;gi?di.push({fqn:wi,rule:gi}):fi.push({fqn:wi})});const pi={start:oi,end:oi},hi=bi=>{bi.start.line<=pi.start.line&&(bi.start.line==pi.start.line?pi.start.character=Math.min(bi.start.character,pi.start.character):pi.start=bi.start),bi.end.line>=pi.end.line&&(bi.end.line==pi.end.line?pi.end.character=Math.max(bi.end.character,pi.end.character):pi.end=bi.end)},vi=[];if(fi.length>0){const bi=fi.flatMap(({fqn:gi})=>K(gi,ii,ai));vi.push(TextEdit.insert(oi,`
248
248
  `+bi.join(`
249
- `))),pi.start={line:oi.line+1,character:ai},pi.end={line:oi.line+bi.length,character:a$9(bi)?.length??0}}if(di.length>0)for(const{rule:bi}of di){const gi=bi.$cstNode;index_DafVOuVd.u(gi,"RuleCstNode not found");for(const[wi,Ri]of t$1(ii)){const ki=wi==="opacity"?Ri.toString()+"%":Ri,Ai=bi.props.find(Bi=>Bi.key===wi);if(Ai&&Ai.$cstNode){const{range:{start:Bi,end:Xi}}=Ai.$cstNode;hi({start:Bi,end:Xi}),vi.push(TextEdit.replace({start:Bi,end:Xi},wi+" "+ki));continue}const Ni=v(gi,"{")?.range.end;index_DafVOuVd.u(Ni,"Opening brace not found");const _i=" ".repeat(2+gi.range.start.character),Mi=_i+wi+" "+ki;vi.push(TextEdit.insert(Ni,`
250
- `+Mi)),hi({start:{line:Ni.line+1,character:_i.length},end:{line:Ni.line+1,character:Mi.length}})}}return{modifiedRange:pi,edits:vi}}const{findNodeForProperty:V,findNodeForKeyword:b}=c$4;function changeViewLayout(ti,{view:ei,viewAst:ni,layout:ri}){index_DafVOuVd.u(ni.body,`View ${ei.id} has no body`);const ii=ni.$cstNode;index_DafVOuVd.u(ii,"viewCstNode");const si=toAstViewLayoutDirection(ri.direction),oi=o$3(ni.body.rules,isViewRuleAutoLayout);let ai=`autoLayout ${si}`;if(e$2(ri.rankSep)&&(ai+=` ${ri.rankSep}`,e$2(ri.nodeSep)&&(ai+=` ${ri.nodeSep}`)),oi&&oi.$cstNode)return TextEdit.replace(oi.$cstNode.range,ai);const ci=b(ni.body.$cstNode,"}")?.range.start;index_DafVOuVd.u(ci,"Closing brace not found");const ui=` ${ai}
251
- `;return TextEdit.insert(ci,ui)}function indentString(ti,ei=1,ni={}){const{indent:ri=" ",includeEmptyLines:ii=!1}=ni;if(typeof ti!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof ti}\``);if(typeof ei!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof ei}\``);if(ei<0)throw new RangeError(`Expected \`count\` to be at least 0, got \`${ei}\``);if(typeof ri!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof ri}\``);if(ei===0)return ti;const si=ii?/^/gm:/^(?!\s*$)/gm;return ti.replace(si,ri.repeat(ei))}function saveManualLayout(ti,{viewAst:ei,layout:ni}){index_DafVOuVd.u(ei.$cstNode,"invalid view.$cstNode");const ri=findCommentNode(ei.$cstNode,["BLOCK_COMMENT"]);let ii=serializeToComment(ni);return ei.$cstNode.range.start.character>0&&(ii=indentString(ii,ei.$cstNode.range.start.character)),ri?TextEdit.replace(ri.range,ii.trimStart()):TextEdit.insert({line:ei.$cstNode.range.start.line,character:0},ii+`
252
- `)}class LikeC4ModelChanges{constructor(ei){this.services=ei,this.locator=ei.likec4.ModelLocator}locator;async applyChange(ei){const ni=this.services.shared.lsp.Connection;index_DafVOuVd.u(ni,"LSP Connection not available");let ri=null;try{await this.services.shared.workspace.WorkspaceLock.write(async()=>{const{doc:ii,edits:si,modifiedRange:oi}=this.convertToTextEdit(ei),ai={uri:ii.textDocument.uri,version:ii.textDocument.version};if(!si.length)return;const ci=await ni.workspace.applyEdit({label:`LikeC4 - change view ${ei.viewId}`,edit:{changes:{[ai.uri]:si}}});if(!ci.applied){ni.window.showErrorMessage(`Failed to apply changes ${ci.failureReason}`);return}ri={uri:ai.uri,range:oi}})}catch(ii){Ye.error(`Failed to apply change ${ei.change.op} ${ei.viewId}`,ii)}return ri}convertToTextEdit({viewId:ei,change:ni}){const ri=this.locator.locateViewAst(ei);if(!ri)throw new Error(`LikeC4ModelChanges: view not found: ${ei}`);switch(ni.op){case"change-element-style":return{doc:ri.doc,...changeElementStyle(this.services,{...ri,targets:ni.targets,style:ni.style})};case"change-autolayout":{const si=changeViewLayout(this.services,{...ri,layout:ni.layout});return{doc:ri.doc,modifiedRange:si.range,edits:[si]}}case"save-manual-layout":const ii=saveManualLayout(this.services,{...ri,layout:ni.layout});return{doc:ri.doc,modifiedRange:ii.range,edits:[ii]};default:index_DafVOuVd.l(ni)}}}class LikeC4NameProvider extends DefaultNameProvider{constructor(ei){super(),this.services=ei}getNameStrict(ei){return index_DafVOuVd.J(this.getName(ei),`Failed getName for ${this.services.workspace.AstNodeLocator.getAstNodePath(ei)}`)}getName(ei){if(isNamed(ei))return ei.name;if(isDeployedInstance(ei))return ei.element.el.$refText}getNameNode(ei){if(isNamed(ei))return super.getNameNode(ei);if(isDeployedInstance(ei))return ei.element.el.$refNode}}function w$1(ti){return x$1(ti,i$5(ei=>`${ei.type}.${ei.name}`),t$1(),u$5(([ei,ni])=>ni.length===1?ni:[]))}class LikeC4ScopeComputation extends DefaultScopeComputation{constructor(ei){super(ei)}async computeExports(ei,ni){const ri=[];try{const{specifications:ii,models:si,views:oi,globals:ai,likec4lib:ci,deployments:ui}=ei.parseResult.value;this.exportLibrary(ci,ri,ei),this.exportSpecification(ii,ri,ei),this.exportModel(si,ri,ei),this.exportViews(oi,ri,ei),this.exportGlobals(ai,ri,ei),this.exportDeployments(ui,ri,ei)}catch(ii){logWarnError(ii)}return ri}exportViews(ei,ni,ri){const ii=ei?.flatMap(si=>si.views);if(!(n$6(ii)||ii.length===0))for(const si of ii)try{n$7(si.name)&&ni.push(this.descriptions.createDescription(si,si.name,ri))}catch(oi){logWarnError(oi)}}exportGlobals(ei,ni,ri){if(!(n$6(ei)||ei.length===0)){for(const ii of ei.flatMap(si=>si.predicates))try{const si=ii;n$7(si.name)&&ni.push(this.descriptions.createDescription(si,si.name,ri))}catch(si){logWarnError(si)}for(const ii of ei.flatMap(si=>si.styles))try{const si=ii.id;n$7(si.name)&&ni.push(this.descriptions.createDescription(si,si.name,ri))}catch(si){logWarnError(si)}}}exportModel(ei,ni,ri){if(!(n$6(ei)||ei.length===0))for(const ii of ei.flatMap(si=>si.elements))try{isElement(ii)&&n$7(ii.name)&&ni.push(this.descriptions.createDescription(ii,ii.name,ri))}catch(si){logWarnError(si)}}exportLibrary(ei,ni,ri){if(!n$6(ei))try{for(const ii of ei.flatMap(si=>si.icons))ni.push(this.descriptions.createDescription(ii,ii.name,ri))}catch(ii){logWarnError(ii)}}exportSpecification(ei,ni,ri){if(!(n$6(ei)||ei.length===0))for(const ii of ei.flatMap(si=>[...si.elements,...si.relationships,...si.deploymentNodes,...si.tags,...si.colors]))try{switch(!0){case isSpecificationDeploymentNodeKind(ii):case isSpecificationElementKind(ii):{n$7(ii.kind.name)&&ni.push(this.descriptions.createDescription(ii.kind,ii.kind.name,ri));continue}case isSpecificationTag(ii):{n$7(ii.tag.name)&&ni.push(this.descriptions.createDescription(ii.tag,"#"+ii.tag.name,ri));continue}case isSpecificationRelationshipKind(ii):{n$7(ii.kind.name)&&ni.push(this.descriptions.createDescription(ii.kind,ii.kind.name,ri),this.descriptions.createDescription(ii.kind,"."+ii.kind.name,ri));continue}case isSpecificationColor(ii):{n$7(ii.name.name)&&ni.push(this.descriptions.createDescription(ii.name,ii.name.name,ri));continue}default:index_DafVOuVd.l(ii)}}catch(si){logWarnError(si)}}exportDeployments(ei,ni,ri){const ii=ei?.flatMap(si=>si.elements);if(!(n$6(ii)||ii.length===0))for(const si of ii)try{isDeploymentNode(si)&&n$7(si.name)&&ni.push(this.descriptions.createDescription(si,si.name,ri))}catch(oi){logWarnError(oi)}}computeLocalScopes(ei,ni){return new Promise(ri=>{const ii=ei.parseResult.value,si=[],oi=new MultiMap;for(const ai of ii.models)try{si.push(...this.processContainer(ai,oi,ei))}catch(ci){logWarnError(ci)}for(const ai of ii.deployments)try{si.push(...this.processDeployments(ai,oi,ei))}catch(ci){logWarnError(ci)}w$1(si).forEach(ai=>{oi.add(ii,ai)}),ri(oi)})}processContainer(ei,ni,ri){const ii=new MultiMap,si=[];for(const ai of ei.elements){if(isRelation(ai))continue;let ci;if(isElement(ai)?(n$7(ai.name)&&ii.add(ai.name,this.descriptions.createDescription(ai,ai.name,ri)),ci=ai.body):isExtendElement(ai)&&(ci=ai.body),ci&&ci.elements.length>0)try{si.push(...this.processContainer(ci,ni,ri))}catch(ui){logWarnError(ui)}}si.length&&x$1(si,T$2(ai=>!ii.has(ai.name)),i$5(ai=>ai.name),i$6((ai,ci)=>{ai.length===1&&ii.add(ci,ai[0])}));const oi=[...ii.values()];return ni.addAll(ei,oi),oi}processDeployments(ei,ni,ri){const ii=new Set,si=[];for(const oi of ei.elements){if(isDeploymentRelation(oi))continue;let ai=this.nameProvider.getName(oi);if(n$7(ai)){const ci=this.descriptions.createDescription(oi,ai,ri);ni.add(ei,ci),ii.add(ci.name)}if(isDeploymentNode(oi)&&oi.body)try{si.push(...this.processDeployments(oi.body,ni,ri))}catch(ci){logWarnError(ci)}}return si.length>0&&x$1(si,T$2(oi=>!ii.has(oi.name)),i$5(oi=>oi.name),i$6((oi,ai)=>{oi.length===1&&ni.add(ei,oi[0])})),[...ni.get(ei).values()]}}const{getDocument:I$1}=f$9;class LikeC4ScopeProvider extends DefaultScopeProvider{deploymentsIndex;fqnIndex;constructor(ei){super(ei),this.fqnIndex=ei.likec4.FqnIndex,this.deploymentsIndex=ei.likec4.DeploymentsIndex}directChildrenOf(ei){return this.fqnIndex.directChildrenOf(ei)}uniqueDescedants(ei){return new StreamImpl(()=>{const ni=ei(),ri=ni&&this.fqnIndex.getFqn(ni);return ri?this.fqnIndex.uniqueDescedants(ri).iterator():null},ni=>ni?ni.next():DONE_RESULT)}scopeElementRef(ei){return this.uniqueDescedants(()=>ei.el.ref)}scopeExtendElement({element:ei}){return stream([ei.el.$nodeDescription]).nonNullable().concat(this.uniqueDescedants(()=>elementRef(ei)))}scopeElementView({viewOf:ei,extends:ni}){return ei?stream([ei.el.$nodeDescription]).nonNullable().concat(this.uniqueDescedants(()=>elementRef(ei))):ni?stream([ni]).flatMap(ri=>{const ii=ri.view.ref;return ii?this.scopeElementView(ii):EMPTY_STREAM}):EMPTY_STREAM}getScope(ei){try{const ni=this.reflection.getReferenceType(ei);try{const ri=ei.container;if(isFqnRef(ri))return this.getScopeForFqnRef(ri,ei);if(ni!==Element)return this.getGlobalScope(ni,ei);if(isFqnElementRef(ri)&&ei.property==="el"){const ii=ri.parent;return ii?new StreamScope(this.directChildrenOf(getFqnElementRef(ii))):this.getGlobalScope(ni,ei)}if(isElementRef(ri)&&ei.property==="el"){const ii=ri.parent;if(ii)return new StreamScope(this.scopeElementRef(ii));if(ei.reference.$refText==="this"||ei.reference.$refText==="it"){const si=getContainerOfType(ri,isElement);return si?new MapScope([this.descriptions.createDescription(si,ei.reference.$refText)]):EMPTY_SCOPE}}return this.computeScope(ei)}catch(ri){return logger.warn(ri),this.getGlobalScope(ni,ei)}}catch(ni){return logger.warn(ni),EMPTY_SCOPE}}getScopeForFqnRef(ei,ni){const ri=ei.parent;if(!ri)return this.createScope(this.computeScope(ni,DeploymentNode).getAllElements(),this.createScope(this.computeScope(ni,DeployedInstance).getAllElements(),hasContainerOfType(ei,isDeploymentView)?this.computeScope(ni,Element):EMPTY_SCOPE));const ii=ri.value.ref;return ii?isDeploymentNode(ii)?new StreamScope(this.deploymentsIndex.nested(ii)):isDeployedInstance(ii)?new StreamScope(this.scopeElementRef(ii.element)):isElement(ii)?new StreamScope(this.uniqueDescedants(()=>ii)):index_DafVOuVd.l(ii):EMPTY_SCOPE}computeScope(ei,ni=this.reflection.getReferenceType(ei)){const ri=this.reflection.isSubtype(ni,Element),ii=[],si=I$1(ei.container).precomputedScopes;if(!si)return this.getGlobalScope(ni,ei);const oi=ci=>this.reflection.isSubtype(ci.type,ni);let ai=ei.container;for(;ai;){const ci=si.get(ai).filter(oi);ci.length>0&&ii.push(stream(ci)),ri&&isExtendElementBody(ai)&&ii.push(this.scopeExtendElement(ai.$container)),ri&&isElementViewBody(ai)&&ii.push(this.scopeElementView(ai.$container)),ai=ai.$container}return ii.reduceRight((ci,ui)=>this.createScope(ui,ci),this.getGlobalScope(ni,ei))}}const LibIcons=`likec4lib { icons {
249
+ `))),pi.start={line:oi.line+1,character:ai},pi.end={line:oi.line+bi.length,character:a$9(bi)?.length??0}}if(di.length>0)for(const{rule:bi}of di){const gi=bi.$cstNode;index_KOeaSlL8.o(gi,"RuleCstNode not found");for(const[wi,Ri]of t$1(ii)){const ki=wi==="opacity"?Ri.toString()+"%":Ri,Ai=bi.props.find(Bi=>Bi.key===wi);if(Ai&&Ai.$cstNode){const{range:{start:Bi,end:Xi}}=Ai.$cstNode;hi({start:Bi,end:Xi}),vi.push(TextEdit.replace({start:Bi,end:Xi},wi+" "+ki));continue}const Ni=v(gi,"{")?.range.end;index_KOeaSlL8.o(Ni,"Opening brace not found");const _i=" ".repeat(2+gi.range.start.character),Mi=_i+wi+" "+ki;vi.push(TextEdit.insert(Ni,`
250
+ `+Mi)),hi({start:{line:Ni.line+1,character:_i.length},end:{line:Ni.line+1,character:Mi.length}})}}return{modifiedRange:pi,edits:vi}}const{findNodeForProperty:V,findNodeForKeyword:b}=c$4;function changeViewLayout(ti,{view:ei,viewAst:ni,layout:ri}){index_KOeaSlL8.o(ni.body,`View ${ei.id} has no body`);const ii=ni.$cstNode;index_KOeaSlL8.o(ii,"viewCstNode");const si=toAstViewLayoutDirection(ri.direction),oi=o$3(ni.body.rules,isViewRuleAutoLayout);let ai=`autoLayout ${si}`;if(e$2(ri.rankSep)&&(ai+=` ${ri.rankSep}`,e$2(ri.nodeSep)&&(ai+=` ${ri.nodeSep}`)),oi&&oi.$cstNode)return TextEdit.replace(oi.$cstNode.range,ai);const ci=b(ni.body.$cstNode,"}")?.range.start;index_KOeaSlL8.o(ci,"Closing brace not found");const ui=` ${ai}
251
+ `;return TextEdit.insert(ci,ui)}function indentString(ti,ei=1,ni={}){const{indent:ri=" ",includeEmptyLines:ii=!1}=ni;if(typeof ti!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof ti}\``);if(typeof ei!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof ei}\``);if(ei<0)throw new RangeError(`Expected \`count\` to be at least 0, got \`${ei}\``);if(typeof ri!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof ri}\``);if(ei===0)return ti;const si=ii?/^/gm:/^(?!\s*$)/gm;return ti.replace(si,ri.repeat(ei))}function saveManualLayout(ti,{viewAst:ei,layout:ni}){index_KOeaSlL8.o(ei.$cstNode,"invalid view.$cstNode");const ri=findCommentNode(ei.$cstNode,["BLOCK_COMMENT"]);let ii=serializeToComment(ni);return ei.$cstNode.range.start.character>0&&(ii=indentString(ii,ei.$cstNode.range.start.character)),ri?TextEdit.replace(ri.range,ii.trimStart()):TextEdit.insert({line:ei.$cstNode.range.start.line,character:0},ii+`
252
+ `)}class LikeC4ModelChanges{constructor(ei){this.services=ei,this.locator=ei.likec4.ModelLocator}locator;async applyChange(ei){const ni=this.services.shared.lsp.Connection;index_KOeaSlL8.o(ni,"LSP Connection not available");let ri=null;try{await this.services.shared.workspace.WorkspaceLock.write(async()=>{const{doc:ii,edits:si,modifiedRange:oi}=this.convertToTextEdit(ei),ai={uri:ii.textDocument.uri,version:ii.textDocument.version};if(!si.length)return;const ci=await ni.workspace.applyEdit({label:`LikeC4 - change view ${ei.viewId}`,edit:{changes:{[ai.uri]:si}}});if(!ci.applied){ni.window.showErrorMessage(`Failed to apply changes ${ci.failureReason}`);return}ri={uri:ai.uri,range:oi}})}catch(ii){Ye.error(`Failed to apply change ${ei.change.op} ${ei.viewId}`,ii)}return ri}convertToTextEdit({viewId:ei,change:ni}){const ri=this.locator.locateViewAst(ei);if(!ri)throw new Error(`LikeC4ModelChanges: view not found: ${ei}`);switch(ni.op){case"change-element-style":return{doc:ri.doc,...changeElementStyle(this.services,{...ri,targets:ni.targets,style:ni.style})};case"change-autolayout":{const si=changeViewLayout(this.services,{...ri,layout:ni.layout});return{doc:ri.doc,modifiedRange:si.range,edits:[si]}}case"save-manual-layout":const ii=saveManualLayout(this.services,{...ri,layout:ni.layout});return{doc:ri.doc,modifiedRange:ii.range,edits:[ii]};default:index_KOeaSlL8.n(ni)}}}class LikeC4NameProvider extends DefaultNameProvider{constructor(ei){super(),this.services=ei}getNameStrict(ei){return index_KOeaSlL8.M(this.getName(ei),`Failed getName for ${this.services.workspace.AstNodeLocator.getAstNodePath(ei)}`)}getName(ei){if(isNamed(ei))return ei.name;if(isDeployedInstance(ei))return ei.element.el.$refText}getNameNode(ei){if(isNamed(ei))return super.getNameNode(ei);if(isDeployedInstance(ei))return ei.element.el.$refNode}}function w$1(ti){return x$1(ti,i$5(ei=>`${ei.type}.${ei.name}`),t$1(),u$5(([ei,ni])=>ni.length===1?ni:[]))}class LikeC4ScopeComputation extends DefaultScopeComputation{constructor(ei){super(ei)}async computeExports(ei,ni){const ri=[];try{const{specifications:ii,models:si,views:oi,globals:ai,likec4lib:ci,deployments:ui}=ei.parseResult.value;this.exportLibrary(ci,ri,ei),this.exportSpecification(ii,ri,ei),this.exportModel(si,ri,ei),this.exportViews(oi,ri,ei),this.exportGlobals(ai,ri,ei),this.exportDeployments(ui,ri,ei)}catch(ii){logWarnError(ii)}return ri}exportViews(ei,ni,ri){const ii=ei?.flatMap(si=>si.views);if(!(n$6(ii)||ii.length===0))for(const si of ii)try{n$7(si.name)&&ni.push(this.descriptions.createDescription(si,si.name,ri))}catch(oi){logWarnError(oi)}}exportGlobals(ei,ni,ri){if(!(n$6(ei)||ei.length===0)){for(const ii of ei.flatMap(si=>si.predicates))try{const si=ii;n$7(si.name)&&ni.push(this.descriptions.createDescription(si,si.name,ri))}catch(si){logWarnError(si)}for(const ii of ei.flatMap(si=>si.styles))try{const si=ii.id;n$7(si.name)&&ni.push(this.descriptions.createDescription(si,si.name,ri))}catch(si){logWarnError(si)}}}exportModel(ei,ni,ri){if(!(n$6(ei)||ei.length===0))for(const ii of ei.flatMap(si=>si.elements))try{isElement(ii)&&n$7(ii.name)&&ni.push(this.descriptions.createDescription(ii,ii.name,ri))}catch(si){logWarnError(si)}}exportLibrary(ei,ni,ri){if(!n$6(ei))try{for(const ii of ei.flatMap(si=>si.icons))ni.push(this.descriptions.createDescription(ii,ii.name,ri))}catch(ii){logWarnError(ii)}}exportSpecification(ei,ni,ri){if(!(n$6(ei)||ei.length===0))for(const ii of ei.flatMap(si=>[...si.elements,...si.relationships,...si.deploymentNodes,...si.tags,...si.colors]))try{switch(!0){case isSpecificationDeploymentNodeKind(ii):case isSpecificationElementKind(ii):{n$7(ii.kind.name)&&ni.push(this.descriptions.createDescription(ii.kind,ii.kind.name,ri));continue}case isSpecificationTag(ii):{n$7(ii.tag.name)&&ni.push(this.descriptions.createDescription(ii.tag,"#"+ii.tag.name,ri));continue}case isSpecificationRelationshipKind(ii):{n$7(ii.kind.name)&&ni.push(this.descriptions.createDescription(ii.kind,ii.kind.name,ri),this.descriptions.createDescription(ii.kind,"."+ii.kind.name,ri));continue}case isSpecificationColor(ii):{n$7(ii.name.name)&&ni.push(this.descriptions.createDescription(ii.name,ii.name.name,ri));continue}default:index_KOeaSlL8.n(ii)}}catch(si){logWarnError(si)}}exportDeployments(ei,ni,ri){const ii=ei?.flatMap(si=>si.elements);if(!(n$6(ii)||ii.length===0))for(const si of ii)try{isDeploymentNode(si)&&n$7(si.name)&&ni.push(this.descriptions.createDescription(si,si.name,ri))}catch(oi){logWarnError(oi)}}computeLocalScopes(ei,ni){return new Promise(ri=>{const ii=ei.parseResult.value,si=[],oi=new MultiMap;for(const ai of ii.models)try{si.push(...this.processContainer(ai,oi,ei))}catch(ci){logWarnError(ci)}for(const ai of ii.deployments)try{si.push(...this.processDeployments(ai,oi,ei))}catch(ci){logWarnError(ci)}w$1(si).forEach(ai=>{oi.add(ii,ai)}),ri(oi)})}processContainer(ei,ni,ri){const ii=new MultiMap,si=[];for(const ai of ei.elements){if(isRelation(ai))continue;let ci;if(isElement(ai)?(n$7(ai.name)&&ii.add(ai.name,this.descriptions.createDescription(ai,ai.name,ri)),ci=ai.body):isExtendElement(ai)&&(ci=ai.body),ci&&ci.elements.length>0)try{si.push(...this.processContainer(ci,ni,ri))}catch(ui){logWarnError(ui)}}si.length&&x$1(si,T$2(ai=>!ii.has(ai.name)),i$5(ai=>ai.name),i$6((ai,ci)=>{ai.length===1&&ii.add(ci,ai[0])}));const oi=[...ii.values()];return ni.addAll(ei,oi),oi}processDeployments(ei,ni,ri){const ii=new Set,si=[];for(const oi of ei.elements){if(isDeploymentRelation(oi))continue;let ai=this.nameProvider.getName(oi);if(n$7(ai)){const ci=this.descriptions.createDescription(oi,ai,ri);ni.add(ei,ci),ii.add(ci.name)}if(isDeploymentNode(oi)&&oi.body)try{si.push(...this.processDeployments(oi.body,ni,ri))}catch(ci){logWarnError(ci)}}return si.length>0&&x$1(si,T$2(oi=>!ii.has(oi.name)),i$5(oi=>oi.name),i$6((oi,ai)=>{oi.length===1&&ni.add(ei,oi[0])})),[...ni.get(ei).values()]}}const{getDocument:I$1}=f$9;class LikeC4ScopeProvider extends DefaultScopeProvider{deploymentsIndex;fqnIndex;constructor(ei){super(ei),this.fqnIndex=ei.likec4.FqnIndex,this.deploymentsIndex=ei.likec4.DeploymentsIndex}directChildrenOf(ei){return this.fqnIndex.directChildrenOf(ei)}uniqueDescedants(ei){return new StreamImpl(()=>{const ni=ei(),ri=ni&&this.fqnIndex.getFqn(ni);return ri?this.fqnIndex.uniqueDescedants(ri).iterator():null},ni=>ni?ni.next():DONE_RESULT)}scopeElementRef(ei){return this.uniqueDescedants(()=>ei.el.ref)}scopeExtendElement({element:ei}){return stream([ei.el.$nodeDescription]).nonNullable().concat(this.uniqueDescedants(()=>elementRef(ei)))}scopeElementView({viewOf:ei,extends:ni}){return ei?stream([ei.el.$nodeDescription]).nonNullable().concat(this.uniqueDescedants(()=>elementRef(ei))):ni?stream([ni]).flatMap(ri=>{const ii=ri.view.ref;return ii?this.scopeElementView(ii):EMPTY_STREAM}):EMPTY_STREAM}getScope(ei){try{const ni=this.reflection.getReferenceType(ei);try{const ri=ei.container;if(isFqnRef(ri))return this.getScopeForFqnRef(ri,ei);if(ni!==Element)return this.getGlobalScope(ni,ei);if(isFqnElementRef(ri)&&ei.property==="el"){const ii=ri.parent;return ii?new StreamScope(this.directChildrenOf(getFqnElementRef(ii))):this.getGlobalScope(ni,ei)}if(isElementRef(ri)&&ei.property==="el"){const ii=ri.parent;if(ii)return new StreamScope(this.scopeElementRef(ii));if(ei.reference.$refText==="this"||ei.reference.$refText==="it"){const si=getContainerOfType(ri,isElement);return si?new MapScope([this.descriptions.createDescription(si,ei.reference.$refText)]):EMPTY_SCOPE}}return this.computeScope(ei)}catch(ri){return logger.warn(ri),this.getGlobalScope(ni,ei)}}catch(ni){return logger.warn(ni),EMPTY_SCOPE}}getScopeForFqnRef(ei,ni){const ri=ei.parent;if(!ri)return this.createScope(this.computeScope(ni,DeploymentNode).getAllElements(),this.createScope(this.computeScope(ni,DeployedInstance).getAllElements(),hasContainerOfType(ei,isDeploymentView)?this.computeScope(ni,Element):EMPTY_SCOPE));const ii=ri.value.ref;return ii?isDeploymentNode(ii)?new StreamScope(this.deploymentsIndex.nested(ii)):isDeployedInstance(ii)?new StreamScope(this.scopeElementRef(ii.element)):isElement(ii)?new StreamScope(this.uniqueDescedants(()=>ii)):index_KOeaSlL8.n(ii):EMPTY_SCOPE}computeScope(ei,ni=this.reflection.getReferenceType(ei)){const ri=this.reflection.isSubtype(ni,Element),ii=[],si=I$1(ei.container).precomputedScopes;if(!si)return this.getGlobalScope(ni,ei);const oi=ci=>this.reflection.isSubtype(ci.type,ni);let ai=ei.container;for(;ai;){const ci=si.get(ai).filter(oi);ci.length>0&&ii.push(stream(ci)),ri&&isExtendElementBody(ai)&&ii.push(this.scopeExtendElement(ai.$container)),ri&&isElementViewBody(ai)&&ii.push(this.scopeElementView(ai.$container)),ai=ai.$container}return ii.reduceRight((ci,ui)=>this.createScope(ui,ci),this.getGlobalScope(ni,ei))}}const LibIcons=`likec4lib { icons {
253
253
  aws:activate
254
254
  aws:alexa-for-business
255
255
  aws:amplify
@@ -1790,7 +1790,7 @@ ${ei}`,async()=>(await this.graphviz()).layout(ei,"svg"))}};const DeploymentElem
1790
1790
  - `+vi).join("")}
1791
1791
  deleted (total ${hi.length}):${hi.map(vi=>`
1792
1792
  - `+vi.toString()).join(`
1793
- `)}`),!ui&&fi.length+hi.length>0&&(await Promise.allSettled([...fi,...hi].map(async vi=>{const bi=vi.toString();logger.debug(`clear diagnostics for ${bi}`);try{await si.sendDiagnostics({uri:bi,diagnostics:[]})}catch(gi){logger.warn(`error clearing diagnostics for ${bi}: ${gi}`)}})),await interruptAndCheck(di)),ui=!1,await ai.update(fi,hi,di)}),si.onRequest(locate,li=>{if("element"in li)return ni.locateElement(li.element,li.property??"name");if("relation"in li)return ni.locateRelation(li.relation);if("view"in li)return ni.locateView(li.view);if("deployment"in li)return ni.locateDeploymentElement(li.deployment,li.property??"name");index_DafVOuVd.l(li)}),si.onRequest(changeView,async(li,di)=>await ri.applyChange(li)))}dispose(){let ei;for(;ei=this.disposables.pop();)try{ei.dispose()}catch(ni){logError$1(ni)}}}class NodeKindProvider{constructor(ei){this.services=ei}getSymbolKind(ei){const ni=isAstNode(ei)?ei.$type:ei.type,ri=(...ii)=>ii.some(si=>this.services.AstReflection.isSubtype(ni,si));switch(!0){case ri(Element,ExtendElement,DeploymentNode,DeployedInstance):return SymbolKind.Constructor;case ri(Model,ModelViews,ModelDeployments,Globals,SpecificationRule):return SymbolKind.Namespace;case ri(LikeC4View):return SymbolKind.Class;case ri(Tag,LibIcon,CustomColor,SpecificationTag):return SymbolKind.EnumMember;case ri(RelationshipKind,SpecificationRelationshipKind):return SymbolKind.Event;case ri(ElementKind,DeploymentNodeKind,SpecificationElementKind,SpecificationDeploymentNodeKind):return SymbolKind.TypeParameter}return SymbolKind.Field}getCompletionItemKind(ei){const ni=isAstNode(ei)?ei.$type:ei.type,ri=(...ii)=>ii.some(si=>this.services.AstReflection.isSubtype(ni,si));switch(!0){case ri(CustomColor):return CompletionItemKind.Color;case ri(Element,DeploymentNode,DeployedInstance,ExtendElement):return CompletionItemKind.Constructor;case ri(Model,ModelViews,ModelDeployments,Globals,SpecificationRule):return CompletionItemKind.Module;case ri(LikeC4View):return CompletionItemKind.Class;case ri(Tag,LibIcon,CustomColor,SpecificationTag):return CompletionItemKind.EnumMember;case ri(RelationshipKind,SpecificationRelationshipKind):return CompletionItemKind.Event;case ri(ElementKind,SpecificationElementKind,DeploymentNodeKind,SpecificationDeploymentNodeKind):return CompletionItemKind.TypeParameter;default:return CompletionItemKind.Reference}}}class LikeC4WorkspaceManager extends DefaultWorkspaceManager{documentFactory;constructor(ei){super(ei),this.documentFactory=ei.workspace.LangiumDocumentFactory}async loadAdditionalDocuments(ei,ni){ni(this.documentFactory.fromString(LibIcons,URI.parse(Uri))),await super.loadAdditionalDocuments(ei,ni)}workspace(){return this.folders&&index_DafVOuVd.Q(this.folders,1)?this.folders[0]:null}get workspaceUri(){const ei=this.workspace();return index_DafVOuVd.u(ei,"Workspace not initialized"),URI.parse(ei.uri)}get workspaceURL(){const ei=this.workspace();return index_DafVOuVd.u(ei,"Workspace not initialized"),new URL(ei.uri)}}class WorkspaceSymbolProvider extends DefaultWorkspaceSymbolProvider{}class LikeC4Views{constructor(ei){this.services=ei}cache=new WeakMap;viewsWithReportedErrors=new Set;get layouter(){return this.services.likec4.Layouter}async computedViews(ei){const ni=await this.services.likec4.ModelBuilder.buildComputedModel(ei);return ni?r$8(ni.views):[]}async layoutAllViews(ei){const ni=await this.computedViews(ei);if(ni.length===0)return[];const ri=[],ii=[];for(const si of ni)this.viewsWithReportedErrors.delete(si.id),ii.push(this.layouter.layout(si).then(oi=>(this.cache.set(si,oi),oi)).catch(oi=>(this.cache.delete(si),logWarnError(oi),Promise.reject(oi))));for(const si of await Promise.allSettled(ii))si.status==="fulfilled"&&ri.push(si.value);return ri}async layoutView(ei,ni){const ri=await this.services.likec4.ModelBuilder.buildComputedModel(ni);if(!ri)return null;const ii=ri.views[ei];if(!ii)return null;let si=this.cache.get(ii);if(si)return si;try{const oi=await this.layouter.layout(ii);return this.viewsWithReportedErrors.delete(ei),this.cache.set(ii,oi),oi}catch(oi){if(!this.viewsWithReportedErrors.has(ei)){const ai=oi instanceof Error?oi.message:""+oi;this.services.shared.lsp.Connection?.window.showErrorMessage(`LikeC4: ${ai}`),this.viewsWithReportedErrors.add(ei)}return logger.error(oi),Promise.reject(oi)}}async diagrams(){return(await this.layoutAllViews()).map(ei=>ei.diagram)}async viewsAsGraphvizOut(){const ei="All-LayoutedViews-DotWithSvg",ni=this.services.WorkspaceCache;if(ni.has(ei))return await Promise.resolve(ni.get(ei));const ri=(await this.computedViews()).map(async oi=>{const{dot:ai,svg:ci}=await this.layouter.svg(oi);return{id:oi.id,dot:ai,svg:ci}}),ii=[],si=await Promise.allSettled(ri);for(const oi of si)oi.status==="fulfilled"?ii.push(oi.value):logWarnError(oi.reason);return ni.set(ei,ii),ii}async overviewGraph(){const ei="OverviewGraph",ni=this.services.WorkspaceCache;if(ni.has(ei))return await Promise.resolve(ni.get(ei));const ri=await this.computedViews(),ii=await this.layouter.layoutOverviewGraph(ri);return ni.set(ei,ii),ii}}const E={lsp:{NodeKindProvider:ti=>new NodeKindProvider(ti),WorkspaceSymbolProvider:ti=>new WorkspaceSymbolProvider(ti)},workspace:{WorkspaceManager:ti=>new LikeC4WorkspaceManager(ti)}};function o$1(ti){return ei=>new ti(ei)}const LikeC4Module={documentation:{DocumentationProvider:o$1(LikeC4DocumentationProvider)},WorkspaceCache:ti=>new WorkspaceCache(ti.shared),DocumentCache:ti=>new DocumentCache(ti.shared),Rpc:o$1(Rpc),likec4:{Layouter:ti=>(logger.debug("Creating GraphvizLayouter with GraphvizWasmAdapter"),new Ut(new _$1)),Views:o$1(LikeC4Views),DeploymentsIndex:o$1(DeploymentsIndex),ModelChanges:o$1(LikeC4ModelChanges),FqnIndex:o$1(FqnIndex),ModelParser:o$1(LikeC4ModelParser),ModelBuilder:o$1(LikeC4ModelBuilder),ModelLocator:o$1(LikeC4ModelLocator)},lsp:{CompletionProvider:o$1(LikeC4CompletionProvider),DocumentHighlightProvider:o$1(LikeC4DocumentHighlightProvider),DocumentSymbolProvider:o$1(LikeC4DocumentSymbolProvider),SemanticTokenProvider:o$1(LikeC4SemanticTokenProvider),HoverProvider:o$1(LikeC4HoverProvider),CodeLensProvider:o$1(LikeC4CodeLensProvider),DocumentLinkProvider:o$1(LikeC4DocumentLinkProvider),Formatter:o$1(LikeC4Formatter)},references:{NameProvider:o$1(LikeC4NameProvider),ScopeComputation:o$1(LikeC4ScopeComputation),ScopeProvider:o$1(LikeC4ScopeProvider)}};function createCustomLanguageServices(ti,ei,ni,ri){const ii=createSharedServices(ti),si=[createDefaultModule({shared:ii}),LikeC4GeneratedModule,LikeC4Module,ei,ni,ri].reduce(p$1,{}),oi=inject(si);return ii.ServiceRegistry.register(oi),registerValidationChecks(oi),ti.connection?oi.Rpc.init():ii.workspace.ConfigurationProvider.initialized({}),{shared:ii,likec4:oi}}function createSharedServices(ti={}){const ei={...EmptyFileSystem,...ti};return ti.connection&&logToLspConnection(ti.connection),inject(createDefaultSharedModule(ei),LikeC4GeneratedSharedModule,E)}function p$1(ti,ei){if(ei){for(const[ni,ri]of Object.entries(ei))if(ri!==void 0){const ii=ti[ni];ii!==null&&ri!==null&&typeof ii=="object"&&typeof ri=="object"?ti[ni]=p$1(ii,ri):ti[ni]=ri}}return ti}function isPlainObject(ti){if(typeof ti!="object"||ti===null)return!1;const ei=Object.getPrototypeOf(ti);return(ei===null||ei===Object.prototype||Object.getPrototypeOf(ei)===null)&&!(Symbol.toStringTag in ti)&&!(Symbol.iterator in ti)}const safeNormalizeFileUrl=(ti,ei)=>{const ni=normalizeFileUrl(ti);if(typeof ni!="string")throw new TypeError(`${ei} must be a string or a file URL: ${ni}.`);return ni},normalizeFileUrl=ti=>ti instanceof URL?node_url.fileURLToPath(ti):ti,normalizeParameters=(ti,ei=[],ni={})=>{const ri=safeNormalizeFileUrl(ti,"First argument"),[ii,si]=isPlainObject(ei)?[[],ei]:[ei,ni];if(!Array.isArray(ii))throw new TypeError(`Second argument must be either an array of arguments or an options object: ${ii}`);if(ii.some(ci=>typeof ci=="object"&&ci!==null))throw new TypeError(`Second argument must be an array of strings: ${ii}`);const oi=ii.map(String),ai=oi.find(ci=>ci.includes("\0"));if(ai!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${ai}`);if(!isPlainObject(si))throw new TypeError(`Last argument must be an options object: ${si}`);return[ri,oi,si]},{toString:objectToString$2}=Object.prototype,isArrayBuffer=ti=>objectToString$2.call(ti)==="[object ArrayBuffer]",isUint8Array=ti=>objectToString$2.call(ti)==="[object Uint8Array]",bufferToUint8Array=ti=>new Uint8Array(ti.buffer,ti.byteOffset,ti.byteLength),textEncoder$1=new TextEncoder,stringToUint8Array=ti=>textEncoder$1.encode(ti),textDecoder=new TextDecoder,uint8ArrayToString=ti=>textDecoder.decode(ti),joinToString=(ti,ei)=>uint8ArraysToStrings(ti,ei).join(""),uint8ArraysToStrings=(ti,ei)=>{if(ei==="utf8"&&ti.every(si=>typeof si=="string"))return ti;const ni=new node_string_decoder.StringDecoder(ei),ri=ti.map(si=>typeof si=="string"?stringToUint8Array(si):si).map(si=>ni.write(si)),ii=ni.end();return ii===""?ri:[...ri,ii]},joinToUint8Array=ti=>ti.length===1&&isUint8Array(ti[0])?ti[0]:concatUint8Arrays(stringsToUint8Arrays(ti)),stringsToUint8Arrays=ti=>ti.map(ei=>typeof ei=="string"?stringToUint8Array(ei):ei),concatUint8Arrays=ti=>{const ei=new Uint8Array(getJoinLength(ti));let ni=0;for(const ri of ti)ei.set(ri,ni),ni+=ri.length;return ei},getJoinLength=ti=>{let ei=0;for(const ni of ti)ei+=ni.length;return ei},isTemplateString=ti=>Array.isArray(ti)&&Array.isArray(ti.raw),parseTemplates=(ti,ei)=>{let ni=[];for(const[si,oi]of ti.entries())ni=parseTemplate({templates:ti,expressions:ei,tokens:ni,index:si,template:oi});if(ni.length===0)throw new TypeError("Template script must not be empty");const[ri,...ii]=ni;return[ri,ii,{}]},parseTemplate=({templates:ti,expressions:ei,tokens:ni,index:ri,template:ii})=>{if(ii===void 0)throw new TypeError(`Invalid backslash sequence: ${ti.raw[ri]}`);const{nextTokens:si,leadingWhitespaces:oi,trailingWhitespaces:ai}=splitByWhitespaces(ii,ti.raw[ri]),ci=concatTokens(ni,si,oi);if(ri===ei.length)return ci;const ui=ei[ri],li=Array.isArray(ui)?ui.map(di=>parseExpression(di)):[parseExpression(ui)];return concatTokens(ci,li,ai)},splitByWhitespaces=(ti,ei)=>{if(ei.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};const ni=[];let ri=0;const ii=DELIMITERS.has(ei[0]);for(let oi=0,ai=0;oi<ti.length;oi+=1,ai+=1){const ci=ei[ai];if(DELIMITERS.has(ci))ri!==oi&&ni.push(ti.slice(ri,oi)),ri=oi+1;else if(ci==="\\"){const ui=ei[ai+1];ui==="u"&&ei[ai+2]==="{"?ai=ei.indexOf("}",ai+3):ai+=ESCAPE_LENGTH[ui]??1}}const si=ri===ti.length;return si||ni.push(ti.slice(ri)),{nextTokens:ni,leadingWhitespaces:ii,trailingWhitespaces:si}},DELIMITERS=new Set([" "," ","\r",`
1793
+ `)}`),!ui&&fi.length+hi.length>0&&(await Promise.allSettled([...fi,...hi].map(async vi=>{const bi=vi.toString();logger.debug(`clear diagnostics for ${bi}`);try{await si.sendDiagnostics({uri:bi,diagnostics:[]})}catch(gi){logger.warn(`error clearing diagnostics for ${bi}: ${gi}`)}})),await interruptAndCheck(di)),ui=!1,await ai.update(fi,hi,di)}),si.onRequest(locate,li=>{if("element"in li)return ni.locateElement(li.element,li.property??"name");if("relation"in li)return ni.locateRelation(li.relation);if("view"in li)return ni.locateView(li.view);if("deployment"in li)return ni.locateDeploymentElement(li.deployment,li.property??"name");index_KOeaSlL8.n(li)}),si.onRequest(changeView,async(li,di)=>await ri.applyChange(li)))}dispose(){let ei;for(;ei=this.disposables.pop();)try{ei.dispose()}catch(ni){logError$1(ni)}}}class NodeKindProvider{constructor(ei){this.services=ei}getSymbolKind(ei){const ni=isAstNode(ei)?ei.$type:ei.type,ri=(...ii)=>ii.some(si=>this.services.AstReflection.isSubtype(ni,si));switch(!0){case ri(Element,ExtendElement,DeploymentNode,DeployedInstance):return SymbolKind.Constructor;case ri(Model,ModelViews,ModelDeployments,Globals,SpecificationRule):return SymbolKind.Namespace;case ri(LikeC4View):return SymbolKind.Class;case ri(Tag,LibIcon,CustomColor,SpecificationTag):return SymbolKind.EnumMember;case ri(RelationshipKind,SpecificationRelationshipKind):return SymbolKind.Event;case ri(ElementKind,DeploymentNodeKind,SpecificationElementKind,SpecificationDeploymentNodeKind):return SymbolKind.TypeParameter}return SymbolKind.Field}getCompletionItemKind(ei){const ni=isAstNode(ei)?ei.$type:ei.type,ri=(...ii)=>ii.some(si=>this.services.AstReflection.isSubtype(ni,si));switch(!0){case ri(CustomColor):return CompletionItemKind.Color;case ri(Element,DeploymentNode,DeployedInstance,ExtendElement):return CompletionItemKind.Constructor;case ri(Model,ModelViews,ModelDeployments,Globals,SpecificationRule):return CompletionItemKind.Module;case ri(LikeC4View):return CompletionItemKind.Class;case ri(Tag,LibIcon,CustomColor,SpecificationTag):return CompletionItemKind.EnumMember;case ri(RelationshipKind,SpecificationRelationshipKind):return CompletionItemKind.Event;case ri(ElementKind,SpecificationElementKind,DeploymentNodeKind,SpecificationDeploymentNodeKind):return CompletionItemKind.TypeParameter;default:return CompletionItemKind.Reference}}}class LikeC4WorkspaceManager extends DefaultWorkspaceManager{documentFactory;constructor(ei){super(ei),this.documentFactory=ei.workspace.LangiumDocumentFactory}async loadAdditionalDocuments(ei,ni){ni(this.documentFactory.fromString(LibIcons,URI.parse(Uri))),await super.loadAdditionalDocuments(ei,ni)}workspace(){return this.folders&&index_KOeaSlL8.Q(this.folders,1)?this.folders[0]:null}get workspaceUri(){const ei=this.workspace();return index_KOeaSlL8.o(ei,"Workspace not initialized"),URI.parse(ei.uri)}get workspaceURL(){const ei=this.workspace();return index_KOeaSlL8.o(ei,"Workspace not initialized"),new URL(ei.uri)}}class WorkspaceSymbolProvider extends DefaultWorkspaceSymbolProvider{}class LikeC4Views{constructor(ei){this.services=ei}cache=new WeakMap;viewsWithReportedErrors=new Set;get layouter(){return this.services.likec4.Layouter}async computedViews(ei){const ni=await this.services.likec4.ModelBuilder.buildComputedModel(ei);return ni?r$8(ni.views):[]}async layoutAllViews(ei){const ni=await this.computedViews(ei);if(ni.length===0)return[];const ri=[],ii=[];for(const si of ni)this.viewsWithReportedErrors.delete(si.id),ii.push(this.layouter.layout(si).then(oi=>(this.cache.set(si,oi),oi)).catch(oi=>(this.cache.delete(si),logWarnError(oi),Promise.reject(oi))));for(const si of await Promise.allSettled(ii))si.status==="fulfilled"&&ri.push(si.value);return ri}async layoutView(ei,ni){const ri=await this.services.likec4.ModelBuilder.buildComputedModel(ni);if(!ri)return null;const ii=ri.views[ei];if(!ii)return null;let si=this.cache.get(ii);if(si)return si;try{const oi=await this.layouter.layout(ii);return this.viewsWithReportedErrors.delete(ei),this.cache.set(ii,oi),oi}catch(oi){if(!this.viewsWithReportedErrors.has(ei)){const ai=oi instanceof Error?oi.message:""+oi;this.services.shared.lsp.Connection?.window.showErrorMessage(`LikeC4: ${ai}`),this.viewsWithReportedErrors.add(ei)}return logger.error(oi),Promise.reject(oi)}}async diagrams(){return(await this.layoutAllViews()).map(ei=>ei.diagram)}async viewsAsGraphvizOut(){const ei="All-LayoutedViews-DotWithSvg",ni=this.services.WorkspaceCache;if(ni.has(ei))return await Promise.resolve(ni.get(ei));const ri=(await this.computedViews()).map(async oi=>{const{dot:ai,svg:ci}=await this.layouter.svg(oi);return{id:oi.id,dot:ai,svg:ci}}),ii=[],si=await Promise.allSettled(ri);for(const oi of si)oi.status==="fulfilled"?ii.push(oi.value):logWarnError(oi.reason);return ni.set(ei,ii),ii}async overviewGraph(){const ei="OverviewGraph",ni=this.services.WorkspaceCache;if(ni.has(ei))return await Promise.resolve(ni.get(ei));const ri=await this.computedViews(),ii=await this.layouter.layoutOverviewGraph(ri);return ni.set(ei,ii),ii}}const E={lsp:{NodeKindProvider:ti=>new NodeKindProvider(ti),WorkspaceSymbolProvider:ti=>new WorkspaceSymbolProvider(ti)},workspace:{WorkspaceManager:ti=>new LikeC4WorkspaceManager(ti)}};function o$1(ti){return ei=>new ti(ei)}const LikeC4Module={documentation:{DocumentationProvider:o$1(LikeC4DocumentationProvider)},WorkspaceCache:ti=>new WorkspaceCache(ti.shared),DocumentCache:ti=>new DocumentCache(ti.shared),Rpc:o$1(Rpc),likec4:{Layouter:ti=>(logger.debug("Creating GraphvizLayouter with GraphvizWasmAdapter"),new Ut(new _$1)),Views:o$1(LikeC4Views),DeploymentsIndex:o$1(DeploymentsIndex),ModelChanges:o$1(LikeC4ModelChanges),FqnIndex:o$1(FqnIndex),ModelParser:o$1(LikeC4ModelParser),ModelBuilder:o$1(LikeC4ModelBuilder),ModelLocator:o$1(LikeC4ModelLocator)},lsp:{CompletionProvider:o$1(LikeC4CompletionProvider),DocumentHighlightProvider:o$1(LikeC4DocumentHighlightProvider),DocumentSymbolProvider:o$1(LikeC4DocumentSymbolProvider),SemanticTokenProvider:o$1(LikeC4SemanticTokenProvider),HoverProvider:o$1(LikeC4HoverProvider),CodeLensProvider:o$1(LikeC4CodeLensProvider),DocumentLinkProvider:o$1(LikeC4DocumentLinkProvider),Formatter:o$1(LikeC4Formatter)},references:{NameProvider:o$1(LikeC4NameProvider),ScopeComputation:o$1(LikeC4ScopeComputation),ScopeProvider:o$1(LikeC4ScopeProvider)}};function createCustomLanguageServices(ti,ei,ni,ri){const ii=createSharedServices(ti),si=[createDefaultModule({shared:ii}),LikeC4GeneratedModule,LikeC4Module,ei,ni,ri].reduce(p$1,{}),oi=inject(si);return ii.ServiceRegistry.register(oi),registerValidationChecks(oi),ti.connection?oi.Rpc.init():ii.workspace.ConfigurationProvider.initialized({}),{shared:ii,likec4:oi}}function createSharedServices(ti={}){const ei={...EmptyFileSystem,...ti};return ti.connection&&logToLspConnection(ti.connection),inject(createDefaultSharedModule(ei),LikeC4GeneratedSharedModule,E)}function p$1(ti,ei){if(ei){for(const[ni,ri]of Object.entries(ei))if(ri!==void 0){const ii=ti[ni];ii!==null&&ri!==null&&typeof ii=="object"&&typeof ri=="object"?ti[ni]=p$1(ii,ri):ti[ni]=ri}}return ti}function isPlainObject(ti){if(typeof ti!="object"||ti===null)return!1;const ei=Object.getPrototypeOf(ti);return(ei===null||ei===Object.prototype||Object.getPrototypeOf(ei)===null)&&!(Symbol.toStringTag in ti)&&!(Symbol.iterator in ti)}const safeNormalizeFileUrl=(ti,ei)=>{const ni=normalizeFileUrl(ti);if(typeof ni!="string")throw new TypeError(`${ei} must be a string or a file URL: ${ni}.`);return ni},normalizeFileUrl=ti=>ti instanceof URL?node_url.fileURLToPath(ti):ti,normalizeParameters=(ti,ei=[],ni={})=>{const ri=safeNormalizeFileUrl(ti,"First argument"),[ii,si]=isPlainObject(ei)?[[],ei]:[ei,ni];if(!Array.isArray(ii))throw new TypeError(`Second argument must be either an array of arguments or an options object: ${ii}`);if(ii.some(ci=>typeof ci=="object"&&ci!==null))throw new TypeError(`Second argument must be an array of strings: ${ii}`);const oi=ii.map(String),ai=oi.find(ci=>ci.includes("\0"));if(ai!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${ai}`);if(!isPlainObject(si))throw new TypeError(`Last argument must be an options object: ${si}`);return[ri,oi,si]},{toString:objectToString$2}=Object.prototype,isArrayBuffer=ti=>objectToString$2.call(ti)==="[object ArrayBuffer]",isUint8Array=ti=>objectToString$2.call(ti)==="[object Uint8Array]",bufferToUint8Array=ti=>new Uint8Array(ti.buffer,ti.byteOffset,ti.byteLength),textEncoder$1=new TextEncoder,stringToUint8Array=ti=>textEncoder$1.encode(ti),textDecoder=new TextDecoder,uint8ArrayToString=ti=>textDecoder.decode(ti),joinToString=(ti,ei)=>uint8ArraysToStrings(ti,ei).join(""),uint8ArraysToStrings=(ti,ei)=>{if(ei==="utf8"&&ti.every(si=>typeof si=="string"))return ti;const ni=new node_string_decoder.StringDecoder(ei),ri=ti.map(si=>typeof si=="string"?stringToUint8Array(si):si).map(si=>ni.write(si)),ii=ni.end();return ii===""?ri:[...ri,ii]},joinToUint8Array=ti=>ti.length===1&&isUint8Array(ti[0])?ti[0]:concatUint8Arrays(stringsToUint8Arrays(ti)),stringsToUint8Arrays=ti=>ti.map(ei=>typeof ei=="string"?stringToUint8Array(ei):ei),concatUint8Arrays=ti=>{const ei=new Uint8Array(getJoinLength(ti));let ni=0;for(const ri of ti)ei.set(ri,ni),ni+=ri.length;return ei},getJoinLength=ti=>{let ei=0;for(const ni of ti)ei+=ni.length;return ei},isTemplateString=ti=>Array.isArray(ti)&&Array.isArray(ti.raw),parseTemplates=(ti,ei)=>{let ni=[];for(const[si,oi]of ti.entries())ni=parseTemplate({templates:ti,expressions:ei,tokens:ni,index:si,template:oi});if(ni.length===0)throw new TypeError("Template script must not be empty");const[ri,...ii]=ni;return[ri,ii,{}]},parseTemplate=({templates:ti,expressions:ei,tokens:ni,index:ri,template:ii})=>{if(ii===void 0)throw new TypeError(`Invalid backslash sequence: ${ti.raw[ri]}`);const{nextTokens:si,leadingWhitespaces:oi,trailingWhitespaces:ai}=splitByWhitespaces(ii,ti.raw[ri]),ci=concatTokens(ni,si,oi);if(ri===ei.length)return ci;const ui=ei[ri],li=Array.isArray(ui)?ui.map(di=>parseExpression(di)):[parseExpression(ui)];return concatTokens(ci,li,ai)},splitByWhitespaces=(ti,ei)=>{if(ei.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};const ni=[];let ri=0;const ii=DELIMITERS.has(ei[0]);for(let oi=0,ai=0;oi<ti.length;oi+=1,ai+=1){const ci=ei[ai];if(DELIMITERS.has(ci))ri!==oi&&ni.push(ti.slice(ri,oi)),ri=oi+1;else if(ci==="\\"){const ui=ei[ai+1];ui==="u"&&ei[ai+2]==="{"?ai=ei.indexOf("}",ai+3):ai+=ESCAPE_LENGTH[ui]??1}}const si=ri===ti.length;return si||ni.push(ti.slice(ri)),{nextTokens:ni,leadingWhitespaces:ii,trailingWhitespaces:si}},DELIMITERS=new Set([" "," ","\r",`
1794
1794
  `]),ESCAPE_LENGTH={x:3,u:5},concatTokens=(ti,ei,ni)=>ni||ti.length===0||ei.length===0?[...ti,...ei]:[...ti.slice(0,-1),`${ti.at(-1)}${ei[0]}`,...ei.slice(1)],parseExpression=ti=>{const ei=typeof ti;if(ei==="string")return ti;if(ei==="number")return String(ti);if(isPlainObject(ti)&&("stdout"in ti||"isMaxBuffer"in ti))return getSubprocessResult(ti);throw ti instanceof node_child_process.ChildProcess||Object.prototype.toString.call(ti)==="[object Promise]"?new TypeError("Unexpected subprocess in template expression. Please use ${await subprocess} instead of ${subprocess}."):new TypeError(`Unexpected "${ei}" in template expression`)},getSubprocessResult=({stdout:ti})=>{if(typeof ti=="string")return ti;if(isUint8Array(ti))return uint8ArrayToString(ti);throw ti===void 0?new TypeError(`Missing result.stdout in template expression. This is probably due to the previous subprocess' "stdout" option.`):new TypeError(`Unexpected "${typeof ti}" stdout in template expression`)},isStandardStream=ti=>STANDARD_STREAMS.includes(ti),STANDARD_STREAMS=[process__default.stdin,process__default.stdout,process__default.stderr],STANDARD_STREAMS_ALIASES=["stdin","stdout","stderr"],getStreamName=ti=>STANDARD_STREAMS_ALIASES[ti]??`stdio[${ti}]`,normalizeFdSpecificOptions=ti=>{const ei={...ti};for(const ni of FD_SPECIFIC_OPTIONS)ei[ni]=normalizeFdSpecificOption(ti,ni);return ei},normalizeFdSpecificOption=(ti,ei)=>{const ni=Array.from({length:getStdioLength(ti)+1}),ri=normalizeFdSpecificValue(ti[ei],ni,ei);return addDefaultValue$1(ri,ei)},getStdioLength=({stdio:ti})=>Array.isArray(ti)?Math.max(ti.length,STANDARD_STREAMS_ALIASES.length):STANDARD_STREAMS_ALIASES.length,normalizeFdSpecificValue=(ti,ei,ni)=>isPlainObject(ti)?normalizeOptionObject(ti,ei,ni):ei.fill(ti),normalizeOptionObject=(ti,ei,ni)=>{for(const ri of Object.keys(ti).sort(compareFdName))for(const ii of parseFdName(ri,ni,ei))ei[ii]=ti[ri];return ei},compareFdName=(ti,ei)=>getFdNameOrder(ti)<getFdNameOrder(ei)?1:-1,getFdNameOrder=ti=>ti==="stdout"||ti==="stderr"?0:ti==="all"?2:1,parseFdName=(ti,ei,ni)=>{if(ti==="ipc")return[ni.length-1];const ri=parseFd(ti);if(ri===void 0||ri===0)throw new TypeError(`"${ei}.${ti}" is invalid.
1795
1795
  It must be "${ei}.stdout", "${ei}.stderr", "${ei}.all", "${ei}.ipc", or "${ei}.fd3", "${ei}.fd4" (and so on).`);if(ri>=ni.length)throw new TypeError(`"${ei}.${ti}" is invalid: that file descriptor does not exist.
1796
1796
  Please set the "stdio" option to ensure that file descriptor exists.`);return ri==="all"?[1,2]:[ri]},parseFd=ti=>{if(ti==="all")return ti;if(STANDARD_STREAMS_ALIASES.includes(ti))return STANDARD_STREAMS_ALIASES.indexOf(ti);const ei=FD_REGEXP.exec(ti);if(ei!==null)return Number(ei[1])},FD_REGEXP=/^fd(\d+)$/,addDefaultValue$1=(ti,ei)=>ti.map(ni=>ni===void 0?DEFAULT_OPTIONS[ei]:ni),verboseDefault=require$$0$4.debuglog("execa").enabled?"full":"none",DEFAULT_OPTIONS={lines:!1,buffer:!0,maxBuffer:1e3*1e3*100,verbose:verboseDefault,stripFinalNewline:!0},FD_SPECIFIC_OPTIONS=["lines","buffer","maxBuffer","verbose","stripFinalNewline"],getFdSpecificValue=(ti,ei)=>ei==="ipc"?ti.at(-1):ti[ei],isVerbose=({verbose:ti},ei)=>getFdVerbose(ti,ei)!=="none",isFullVerbose=({verbose:ti},ei)=>!["none","short"].includes(getFdVerbose(ti,ei)),getVerboseFunction=({verbose:ti},ei)=>{const ni=getFdVerbose(ti,ei);return isVerboseFunction(ni)?ni:void 0},getFdVerbose=(ti,ei)=>ei===void 0?getFdGenericVerbose(ti):getFdSpecificValue(ti,ei),getFdGenericVerbose=ti=>ti.find(ei=>isVerboseFunction(ei))??VERBOSE_VALUES.findLast(ei=>ti.includes(ei)),isVerboseFunction=ti=>typeof ti=="function",VERBOSE_VALUES=["none","short","full"],joinCommand=(ti,ei)=>{const ni=[ti,...ei],ri=ni.join(" "),ii=ni.map(si=>quoteString(escapeControlCharacters(si))).join(" ");return{command:ri,escapedCommand:ii}},escapeLines=ti=>require$$0$4.stripVTControlCharacters(ti).split(`
@@ -1836,7 +1836,7 @@ Instead, \`yield\` should either be called with a value, or not be called at all
1836
1836
  but returned
1837
1837
  ${ni.stdout}`):Ye.error(`[BinaryGraphvizLayouter.layout] '${ni.command}' failed: ${ni.stderr}
1838
1838
 
1839
- nothing returned, ignoring...`)),ni.stdout&&(ei=ni.stdout.replaceAll(/\t\[/g," [").replaceAll(/\t/g," ")),ei})}async layoutJson(ei){return await n$1(async()=>{const ni=await execa(this.path,["-Tjson","-y"],{reject:!1,timeout:1e4,input:ei,stdin:"pipe",encoding:"utf8"});if(ni instanceof Error){if(!ni.stdout)throw Ye.error(`[BinaryGraphvizLayouter.layout] '${ni.command}' nothing returned and failed: "${ni.stderr}"`),ni;Ye.warn(`[BinaryGraphvizLayouter.layout] '${ni.command}' returned result but also failed "${ni.stderr}"`)}return ni.stdout})}async acyclic(ei){return Promise.reject(new Error("Method not implemented."))}async svg(ei){return await n$1(async()=>{const ni=await execa(this.path,["-Tsvg","-y"],{reject:!1,timeout:1e4,input:ei,stdin:"pipe",encoding:"utf8"});if(ni instanceof Error){if(!ni.stdout)throw Ye.error(`[BinaryGraphvizLayouter.layout] '${ni.command}' nothing returned and failed: ${ni.stderr}`),ni;Ye.warn(`[BinaryGraphvizLayouter.layout] '${ni.command}' returned result but also failed ${ni.stderr}`)}return ni.stdout})}};const version="1.19.1",normalizeDescriptors=ti=>{CORE_ERROR_PROPS.forEach(ei=>{normalizeDescriptor$1(ti,ei)})},CORE_ERROR_PROPS=["name","message","stack","cause","errors"],normalizeDescriptor$1=(ti,ei)=>{const ni=getDescriptor(ti,ei);if(ni!==void 0){if(isReadonlyGetter(ni)){setErrorProperty$1(ti,ei,ti[ei]);return}isInvalidDescriptor(ni)&&setErrorDescriptor(ti,ei,ni)}},getDescriptor=(ti,ei)=>{const ni=Object.getOwnPropertyDescriptor(ti,ei);if(ni!==void 0)return ni;const ri=Object.getPrototypeOf(ti);return ri===null?void 0:getDescriptor(ri,ei)},isReadonlyGetter=({get:ti,set:ei})=>ti!==void 0&&ei===void 0,isInvalidDescriptor=({enumerable:ti,writable:ei})=>ti||!ei,setErrorProperty$1=(ti,ei,ni)=>{setErrorDescriptor(ti,ei,{value:ni})},setErrorDescriptor=(ti,ei,ni)=>{Object.defineProperty(ti,ei,{...ni,..."get"in ni||"set"in ni?{}:{writable:!0},enumerable:!1,configurable:!0})},normalizeAggregate=(ti,ei)=>{if(Array.isArray(ti.errors)){const ni=ti.errors.filter(isDefined).map(ei).filter(Boolean);setErrorProperty$1(ti,"errors",ni)}else isAggregateError(ti)?setErrorProperty$1(ti,"errors",[]):ti.errors!==void 0&&deleteAggregateErrors(ti)},isDefined=ti=>ti!==void 0,isAggregateError=ti=>"AggregateError"in globalThis&&(ti.name==="AggregateError"||ti instanceof AggregateError),deleteAggregateErrors=ti=>{delete ti.errors,ti.errors!==void 0&&setErrorProperty$1(ti,"errors",[])},normalizeCause=(ti,ei)=>{if(!("cause"in ti))return;const ni=ti.cause===void 0?ti.cause:ei(ti.cause);ni===void 0?delete ti.cause:setErrorProperty$1(ti,"cause",ni)},isErrorInstance$1=ti=>isInstanceOfError$1(ti)||hasErrorTag$1(ti),isInstanceOfError$1=ti=>{try{return ti instanceof Error}catch{return!1}},hasErrorTag$1=ti=>{try{return ERROR_TAGS$1.has(Object.prototype.toString.call(ti))}catch{return!1}},ERROR_TAGS$1=new Set(["[object Error]","[object DOMException]","[object DOMError]","[object Exception]"]),isNonModifiableError=ti=>!Object.isExtensible(ti)||CORE_ERROR_PROPS.some(ei=>isNonConfigurableProp(ti,ei)||isThrowingProp(ti,ei)),isNonConfigurableProp=(ti,ei)=>{const ni=Object.getOwnPropertyDescriptor(ti,ei);return ni!==void 0&&!ni.configurable},isThrowingProp=(ti,ei)=>{try{return ti[ei],!1}catch{return!0}},setStack=ti=>{const ei=getStack$3(ti.message,ti.name);setErrorProperty$1(ti,"stack",ei)},getStack$3=(ti="",ei="Error")=>{const ni=getErrorClass(ei),{stack:ri}=new ni(ti);return typeof ri=="string"&&ri!==""?ri:`${ei}: ${ti}`},getErrorClass=ti=>{const ei={value:ti,enumerable:!1,writable:!0,configurable:!0},ni=Object.defineProperty(class extends Error{},"name",ei);return Object.defineProperty(ni.prototype,"name",ei),ni},copyObject=ti=>{const ei={};for(const ni of getPropsToCopy(ti))try{const ri=ti[ni],{enumerable:ii,configurable:si,writable:oi=!0}=getDescriptor(ti,ni);Object.defineProperty(ei,ni,{value:ri,enumerable:ii,configurable:si,writable:oi})}catch{}return ei},getPropsToCopy=ti=>{const ei=getOwnKeys(ti);for(const ni of CORE_ERROR_PROPS)isInheritedProp(ti,ni)&&ei.push(ni);return ei},getOwnKeys=ti=>{try{return Reflect.ownKeys(ti)}catch{return[]}},isInheritedProp=(ti,ei)=>{try{return ei in ti&&!Object.hasOwn(ti,ei)}catch{return!1}},objectifyError=ti=>{const{name:ei,message:ni,stack:ri,cause:ii,errors:si,...oi}=copyObject(ti),ai=getMessage$1(ni,oi),ci=newError(ei,ai);return ni===ai&&assignObjectProps(ci,oi),Object.entries({name:ei,stack:ri,cause:ii,errors:si}).forEach(([ui,li])=>{setNewErrorProperty(ci,ui,li)}),ri===void 0&&setStack(ci),ci},getMessage$1=(ti,ei)=>typeof ti=="string"&&ti!==""?ti:truncateMessage(safeJsonStringify(ei)),safeJsonStringify=ti=>{try{return JSON.stringify(ti)}catch{return safeStringify(ti)}},safeStringify=ti=>{try{return String(ti)}catch{return"Invalid error"}},truncateMessage=ti=>ti.length<MESSAGE_MAX_SIZE?ti:`${ti.slice(0,MESSAGE_MAX_SIZE)}...`,MESSAGE_MAX_SIZE=1e3,newError=(ti,ei)=>ti==="AggregateError"&&"AggregateError"in globalThis?new AggregateError([],ei):ti in NATIVE_ERRORS?new NATIVE_ERRORS[ti](ei):new Error(ei),NATIVE_ERRORS={Error,ReferenceError,TypeError,SyntaxError,RangeError,URIError,EvalError},assignObjectProps=(ti,ei)=>{for(const ni in ei)ni in ti||(ti[ni]=ei[ni])},setNewErrorProperty=(ti,ei,ni)=>{ni!==void 0&&setErrorProperty$1(ti,ei,ni)},stringifyError=ti=>{try{const ei=new Error(String(ti));return setStack(ei),ei}catch(ei){return ei}},{toString:objectToString}=Object.prototype,createError=ti=>isErrorPlainObj(ti)?objectifyError(ti):isErrorInstance$1(ti)?isInvalidError(ti)?objectifyError(ti):ti:stringifyError(ti),isErrorPlainObj=ti=>{try{return isPlainObject(ti)}catch{return!1}},isInvalidError=ti=>isProxy(ti)||isNonModifiableError(ti)||hasInvalidConstructor(ti),isProxy=ti=>{try{return objectToString.call(ti)==="[object Object]"}catch{return!0}},hasInvalidConstructor=ti=>typeof ti.constructor!="function"||typeof ti.constructor.name!="string"||ti.constructor.name===""||ti.constructor.prototype!==Object.getPrototypeOf(ti),normalizeException=(ti,{shallow:ei=!1}={})=>recurseException(ti,[],ei),recurseException=(ti,ei,ni)=>{if(ei.includes(ti))return;const ri=ni?identity:si=>recurseException(si,[...ei,ti],ni),ii=createError(ti);return normalizeProps(ii,ri),ii},identity=ti=>ti,normalizeProps=(ti,ei)=>{normalizeName(ti),normalizeMessage(ti),normalizeStack(ti),normalizeCause(ti,ei),normalizeAggregate(ti,ei),normalizeDescriptors(ti)},normalizeName=ti=>{if(isDefinedString$1(ti.name))return;const ei=Object.getPrototypeOf(ti).name,ni=isDefinedString$1(ei)?ei:ti.constructor.name;setErrorProperty$1(ti,"name",ni)},normalizeMessage=ti=>{isDefinedString$1(ti.message)||setErrorProperty$1(ti,"message","")},normalizeStack=ti=>{isDefinedString$1(ti.stack)||setStack(ti)},isDefinedString$1=ti=>typeof ti=="string"&&ti!=="",normalizeArgs$1=(ti,ei,ni=ti.name)=>{if(validateErrorClass(ei),typeof ni!="string")throw new TypeError(`currentName must be a string: ${ni}`);return ni},validateErrorClass=ti=>{if(!isClass(ti))throw new TypeError(`ErrorClass must be a class: ${ti}`);if(!isErrorClass(ti.prototype))throw new TypeError(`ErrorClass must inherit from Error: ${ti}`);if(!hasConstructor(ti))throw new TypeError(`ErrorClass must be have a valid constructor: ${ti}`)},isClass=ti=>typeof ti=="function"&&typeof ti.prototype=="object"&&ti.prototype!==null,isErrorClass=ti=>ti!==null&&(ti.name==="Error"||isErrorClass(Object.getPrototypeOf(ti))),hasConstructor=ti=>typeof ti.prototype.constructor=="function",setNonEnumProp$1=(ti,ei,ni)=>{Object.defineProperty(ti,ei,{value:ni,enumerable:!1,writable:!0,configurable:!0})},updatePrototype=(ti,ei)=>{Object.getPrototypeOf(ti)!==ei.prototype&&(setPrototype(ti,ei),deleteOwnProperty(ti,"constructor"),fixName(ti,ei))},setPrototype=(ti,ei)=>{Object.setPrototypeOf(ti,ei.prototype)},fixName=(ti,ei)=>{deleteOwnProperty(ti,"name");const ni=getClassName(ei.prototype);ti.name!==ni&&setNonEnumProp$1(ti,"name",ni)},getClassName=ti=>getPrototypeName(ti)??getConstructorName(ti)??getClassName(Object.getPrototypeOf(ti)),getPrototypeName=ti=>Object.hasOwn(ti,"name")&&isDefinedString(ti.name)?ti.name:void 0,getConstructorName=ti=>typeof ti.constructor=="function"&&isDefinedString(ti.constructor.name)?ti.constructor.name:void 0,isDefinedString=ti=>typeof ti=="string"&&ti!=="",deleteOwnProperty=(ti,ei)=>{Object.hasOwn(ti,ei)&&delete ti[ei]},updateStack$1=(ti,ei)=>{if(!shouldUpdateStack(ti,ei))return;const ni=getStack$2(ti,ei);setNonEnumProp$1(ti,"stack",ni)},shouldUpdateStack=(ti,ei)=>ei!==ti.name&&ei!==""&&ti.stack.includes(ei)&&stackIncludesName(),stackIncludesName=()=>{class ti extends Error{}const ei={value:EXAMPLE_NAME,enumerable:!1,writable:!0,configurable:!0};Object.defineProperty(ti,"name",ei),Object.defineProperty(ti.prototype,"name",ei);const{stack:ni}=new ti("");return typeof ni=="string"&&ni.includes(EXAMPLE_NAME)},EXAMPLE_NAME="SetErrorClassError",getStack$2=({name:ti,stack:ei},ni)=>{if(ei.startsWith(`${ni}: `))return ei.replace(ni,ti);const ri=getReplacers$1(ni,ti),[ii,si]=ri.find(([oi])=>ei.includes(oi));return ei.replace(ii,si)},getReplacers$1=(ti,ei)=>[[`
1839
+ nothing returned, ignoring...`)),ni.stdout&&(ei=ni.stdout.replaceAll(/\t\[/g," [").replaceAll(/\t/g," ")),ei})}async layoutJson(ei){return await n$1(async()=>{const ni=await execa(this.path,["-Tjson","-y"],{reject:!1,timeout:1e4,input:ei,stdin:"pipe",encoding:"utf8"});if(ni instanceof Error){if(!ni.stdout)throw Ye.error(`[BinaryGraphvizLayouter.layout] '${ni.command}' nothing returned and failed: "${ni.stderr}"`),ni;Ye.warn(`[BinaryGraphvizLayouter.layout] '${ni.command}' returned result but also failed "${ni.stderr}"`)}return ni.stdout})}async acyclic(ei){return Promise.reject(new Error("Method not implemented."))}async svg(ei){return await n$1(async()=>{const ni=await execa(this.path,["-Tsvg","-y"],{reject:!1,timeout:1e4,input:ei,stdin:"pipe",encoding:"utf8"});if(ni instanceof Error){if(!ni.stdout)throw Ye.error(`[BinaryGraphvizLayouter.layout] '${ni.command}' nothing returned and failed: ${ni.stderr}`),ni;Ye.warn(`[BinaryGraphvizLayouter.layout] '${ni.command}' returned result but also failed ${ni.stderr}`)}return ni.stdout})}};const version="1.19.2",normalizeDescriptors=ti=>{CORE_ERROR_PROPS.forEach(ei=>{normalizeDescriptor$1(ti,ei)})},CORE_ERROR_PROPS=["name","message","stack","cause","errors"],normalizeDescriptor$1=(ti,ei)=>{const ni=getDescriptor(ti,ei);if(ni!==void 0){if(isReadonlyGetter(ni)){setErrorProperty$1(ti,ei,ti[ei]);return}isInvalidDescriptor(ni)&&setErrorDescriptor(ti,ei,ni)}},getDescriptor=(ti,ei)=>{const ni=Object.getOwnPropertyDescriptor(ti,ei);if(ni!==void 0)return ni;const ri=Object.getPrototypeOf(ti);return ri===null?void 0:getDescriptor(ri,ei)},isReadonlyGetter=({get:ti,set:ei})=>ti!==void 0&&ei===void 0,isInvalidDescriptor=({enumerable:ti,writable:ei})=>ti||!ei,setErrorProperty$1=(ti,ei,ni)=>{setErrorDescriptor(ti,ei,{value:ni})},setErrorDescriptor=(ti,ei,ni)=>{Object.defineProperty(ti,ei,{...ni,..."get"in ni||"set"in ni?{}:{writable:!0},enumerable:!1,configurable:!0})},normalizeAggregate=(ti,ei)=>{if(Array.isArray(ti.errors)){const ni=ti.errors.filter(isDefined).map(ei).filter(Boolean);setErrorProperty$1(ti,"errors",ni)}else isAggregateError(ti)?setErrorProperty$1(ti,"errors",[]):ti.errors!==void 0&&deleteAggregateErrors(ti)},isDefined=ti=>ti!==void 0,isAggregateError=ti=>"AggregateError"in globalThis&&(ti.name==="AggregateError"||ti instanceof AggregateError),deleteAggregateErrors=ti=>{delete ti.errors,ti.errors!==void 0&&setErrorProperty$1(ti,"errors",[])},normalizeCause=(ti,ei)=>{if(!("cause"in ti))return;const ni=ti.cause===void 0?ti.cause:ei(ti.cause);ni===void 0?delete ti.cause:setErrorProperty$1(ti,"cause",ni)},isErrorInstance$1=ti=>isInstanceOfError$1(ti)||hasErrorTag$1(ti),isInstanceOfError$1=ti=>{try{return ti instanceof Error}catch{return!1}},hasErrorTag$1=ti=>{try{return ERROR_TAGS$1.has(Object.prototype.toString.call(ti))}catch{return!1}},ERROR_TAGS$1=new Set(["[object Error]","[object DOMException]","[object DOMError]","[object Exception]"]),isNonModifiableError=ti=>!Object.isExtensible(ti)||CORE_ERROR_PROPS.some(ei=>isNonConfigurableProp(ti,ei)||isThrowingProp(ti,ei)),isNonConfigurableProp=(ti,ei)=>{const ni=Object.getOwnPropertyDescriptor(ti,ei);return ni!==void 0&&!ni.configurable},isThrowingProp=(ti,ei)=>{try{return ti[ei],!1}catch{return!0}},setStack=ti=>{const ei=getStack$3(ti.message,ti.name);setErrorProperty$1(ti,"stack",ei)},getStack$3=(ti="",ei="Error")=>{const ni=getErrorClass(ei),{stack:ri}=new ni(ti);return typeof ri=="string"&&ri!==""?ri:`${ei}: ${ti}`},getErrorClass=ti=>{const ei={value:ti,enumerable:!1,writable:!0,configurable:!0},ni=Object.defineProperty(class extends Error{},"name",ei);return Object.defineProperty(ni.prototype,"name",ei),ni},copyObject=ti=>{const ei={};for(const ni of getPropsToCopy(ti))try{const ri=ti[ni],{enumerable:ii,configurable:si,writable:oi=!0}=getDescriptor(ti,ni);Object.defineProperty(ei,ni,{value:ri,enumerable:ii,configurable:si,writable:oi})}catch{}return ei},getPropsToCopy=ti=>{const ei=getOwnKeys(ti);for(const ni of CORE_ERROR_PROPS)isInheritedProp(ti,ni)&&ei.push(ni);return ei},getOwnKeys=ti=>{try{return Reflect.ownKeys(ti)}catch{return[]}},isInheritedProp=(ti,ei)=>{try{return ei in ti&&!Object.hasOwn(ti,ei)}catch{return!1}},objectifyError=ti=>{const{name:ei,message:ni,stack:ri,cause:ii,errors:si,...oi}=copyObject(ti),ai=getMessage$1(ni,oi),ci=newError(ei,ai);return ni===ai&&assignObjectProps(ci,oi),Object.entries({name:ei,stack:ri,cause:ii,errors:si}).forEach(([ui,li])=>{setNewErrorProperty(ci,ui,li)}),ri===void 0&&setStack(ci),ci},getMessage$1=(ti,ei)=>typeof ti=="string"&&ti!==""?ti:truncateMessage(safeJsonStringify(ei)),safeJsonStringify=ti=>{try{return JSON.stringify(ti)}catch{return safeStringify(ti)}},safeStringify=ti=>{try{return String(ti)}catch{return"Invalid error"}},truncateMessage=ti=>ti.length<MESSAGE_MAX_SIZE?ti:`${ti.slice(0,MESSAGE_MAX_SIZE)}...`,MESSAGE_MAX_SIZE=1e3,newError=(ti,ei)=>ti==="AggregateError"&&"AggregateError"in globalThis?new AggregateError([],ei):ti in NATIVE_ERRORS?new NATIVE_ERRORS[ti](ei):new Error(ei),NATIVE_ERRORS={Error,ReferenceError,TypeError,SyntaxError,RangeError,URIError,EvalError},assignObjectProps=(ti,ei)=>{for(const ni in ei)ni in ti||(ti[ni]=ei[ni])},setNewErrorProperty=(ti,ei,ni)=>{ni!==void 0&&setErrorProperty$1(ti,ei,ni)},stringifyError=ti=>{try{const ei=new Error(String(ti));return setStack(ei),ei}catch(ei){return ei}},{toString:objectToString}=Object.prototype,createError=ti=>isErrorPlainObj(ti)?objectifyError(ti):isErrorInstance$1(ti)?isInvalidError(ti)?objectifyError(ti):ti:stringifyError(ti),isErrorPlainObj=ti=>{try{return isPlainObject(ti)}catch{return!1}},isInvalidError=ti=>isProxy(ti)||isNonModifiableError(ti)||hasInvalidConstructor(ti),isProxy=ti=>{try{return objectToString.call(ti)==="[object Object]"}catch{return!0}},hasInvalidConstructor=ti=>typeof ti.constructor!="function"||typeof ti.constructor.name!="string"||ti.constructor.name===""||ti.constructor.prototype!==Object.getPrototypeOf(ti),normalizeException=(ti,{shallow:ei=!1}={})=>recurseException(ti,[],ei),recurseException=(ti,ei,ni)=>{if(ei.includes(ti))return;const ri=ni?identity:si=>recurseException(si,[...ei,ti],ni),ii=createError(ti);return normalizeProps(ii,ri),ii},identity=ti=>ti,normalizeProps=(ti,ei)=>{normalizeName(ti),normalizeMessage(ti),normalizeStack(ti),normalizeCause(ti,ei),normalizeAggregate(ti,ei),normalizeDescriptors(ti)},normalizeName=ti=>{if(isDefinedString$1(ti.name))return;const ei=Object.getPrototypeOf(ti).name,ni=isDefinedString$1(ei)?ei:ti.constructor.name;setErrorProperty$1(ti,"name",ni)},normalizeMessage=ti=>{isDefinedString$1(ti.message)||setErrorProperty$1(ti,"message","")},normalizeStack=ti=>{isDefinedString$1(ti.stack)||setStack(ti)},isDefinedString$1=ti=>typeof ti=="string"&&ti!=="",normalizeArgs$1=(ti,ei,ni=ti.name)=>{if(validateErrorClass(ei),typeof ni!="string")throw new TypeError(`currentName must be a string: ${ni}`);return ni},validateErrorClass=ti=>{if(!isClass(ti))throw new TypeError(`ErrorClass must be a class: ${ti}`);if(!isErrorClass(ti.prototype))throw new TypeError(`ErrorClass must inherit from Error: ${ti}`);if(!hasConstructor(ti))throw new TypeError(`ErrorClass must be have a valid constructor: ${ti}`)},isClass=ti=>typeof ti=="function"&&typeof ti.prototype=="object"&&ti.prototype!==null,isErrorClass=ti=>ti!==null&&(ti.name==="Error"||isErrorClass(Object.getPrototypeOf(ti))),hasConstructor=ti=>typeof ti.prototype.constructor=="function",setNonEnumProp$1=(ti,ei,ni)=>{Object.defineProperty(ti,ei,{value:ni,enumerable:!1,writable:!0,configurable:!0})},updatePrototype=(ti,ei)=>{Object.getPrototypeOf(ti)!==ei.prototype&&(setPrototype(ti,ei),deleteOwnProperty(ti,"constructor"),fixName(ti,ei))},setPrototype=(ti,ei)=>{Object.setPrototypeOf(ti,ei.prototype)},fixName=(ti,ei)=>{deleteOwnProperty(ti,"name");const ni=getClassName(ei.prototype);ti.name!==ni&&setNonEnumProp$1(ti,"name",ni)},getClassName=ti=>getPrototypeName(ti)??getConstructorName(ti)??getClassName(Object.getPrototypeOf(ti)),getPrototypeName=ti=>Object.hasOwn(ti,"name")&&isDefinedString(ti.name)?ti.name:void 0,getConstructorName=ti=>typeof ti.constructor=="function"&&isDefinedString(ti.constructor.name)?ti.constructor.name:void 0,isDefinedString=ti=>typeof ti=="string"&&ti!=="",deleteOwnProperty=(ti,ei)=>{Object.hasOwn(ti,ei)&&delete ti[ei]},updateStack$1=(ti,ei)=>{if(!shouldUpdateStack(ti,ei))return;const ni=getStack$2(ti,ei);setNonEnumProp$1(ti,"stack",ni)},shouldUpdateStack=(ti,ei)=>ei!==ti.name&&ei!==""&&ti.stack.includes(ei)&&stackIncludesName(),stackIncludesName=()=>{class ti extends Error{}const ei={value:EXAMPLE_NAME,enumerable:!1,writable:!0,configurable:!0};Object.defineProperty(ti,"name",ei),Object.defineProperty(ti.prototype,"name",ei);const{stack:ni}=new ti("");return typeof ni=="string"&&ni.includes(EXAMPLE_NAME)},EXAMPLE_NAME="SetErrorClassError",getStack$2=({name:ti,stack:ei},ni)=>{if(ei.startsWith(`${ni}: `))return ei.replace(ni,ti);const ri=getReplacers$1(ni,ti),[ii,si]=ri.find(([oi])=>ei.includes(oi));return ei.replace(ii,si)},getReplacers$1=(ti,ei)=>[[`
1840
1840
  ${ti}: `,`
1841
1841
  ${ei}: `],[`${ti}: `,`${ei}: `],[`${ti} `,`${ei} `],[ti,ei]],setErrorClass=(ti,ei,ni)=>{const ri=normalizeException(ti),ii=normalizeArgs$1(ri,ei,ni);return updatePrototype(ri,ei),updateStack$1(ri,ii),ri},mergeDescriptors=(ti,ei)=>ei.configurable===!1?mergeNonConfig(ti,ei):mergeConfig(ti,ei),mergeNonConfig=(ti,ei)=>({...ei,...getNonConfigWritable(ti,ei),...getNonConfigValue(ti,ei)}),getNonConfigWritable=(ti,ei)=>ei.writable===!0&&ti.writable===!1?{writable:!1}:{},getNonConfigValue=(ti,ei)=>ti.hasValue&&"value"in ei&&ei.writable===!0?{value:ti.value}:{},mergeConfig=(ti,ei)=>{const ni=mergeDescriptor(ti.enumerable,ei.enumerable,!0),ri=mergeDescriptor(ti.writable,ei.writable,!0),ii=mergeDescriptor(ti.configurable,ei.configurable,!0);return{...mergeValue(ti,ei,ri),enumerable:ni,configurable:ii}},mergeValue=(ti,ei,ni)=>ti.hasValue?{value:ti.value,writable:ni}:!hasGetSet(ti)&&!hasGetSet(ei)?{value:ei.value,writable:ni}:{get:mergeDescriptor(ti.get,ei.get),set:mergeDescriptor(ti.set,ei.set)},hasGetSet=({get:ti,set:ei})=>ti!==void 0||ei!==void 0,mergeDescriptor=(ti,ei,ni)=>ti??ei??ni,normalizeInput=(ti,ei,ni)=>{if(!isAnyObj(ti))throw new TypeError(`Argument must be an object: ${ti}`);if(!isValidKey(ei))throw new TypeError(`Property key must be a string, a symbol or an integer: ${ei}`);return normalizeDescriptor(ni)},isAnyObj=ti=>typeof ti=="object"&&ti!==null,isValidKey=ti=>{const ei=typeof ti;return ei==="string"||ei==="symbol"||ei==="number"},normalizeDescriptor=ti=>{if(!isPlainObject(ti))throw new TypeError(`Descriptor must be a plain object: ${ti}`);const{enumerable:ei,writable:ni,configurable:ri,value:ii,get:si,set:oi,...ai}=ti,ci="value"in ti;return validateDescriptor({enumerable:ei,writable:ni,configurable:ri,get:si,set:oi,unknownProps:ai,hasValue:ci}),{enumerable:ei,writable:ni,configurable:ri,value:ii,get:si,set:oi,hasValue:ci}},validateDescriptor=({enumerable:ti,writable:ei,configurable:ni,get:ri,set:ii,unknownProps:si,hasValue:oi})=>{validateGetSet(oi,ri,"get"),validateGetSet(oi,ii,"set"),validateBoolean(ti,"enumerable"),validateBoolean(ei,"writable"),validateBoolean(ni,"configurable"),validateUnknownProps(si)},validateGetSet=(ti,ei,ni)=>{if(validateFunction(ei,ni),ti&&ei!==void 0)throw new TypeError(`Descriptor property "value" and "${ni}" must not both be defined: ${ei}`)},validateFunction=(ti,ei)=>{if(ti!==void 0&&typeof ti!="function")throw new TypeError(`Descriptor property "${ei}" must be a function: ${ti}`)},validateBoolean=(ti,ei)=>{if(ti!==void 0&&typeof ti!="boolean")throw new TypeError(`Descriptor property "${ei}" must be a boolean: ${ti}`)},validateUnknownProps=ti=>{const[ei]=Object.keys(ti);if(ei!==void 0)throw new TypeError(`Unknown descriptor property "${ei}": ${ti[ei]}`)},redefineProperty=(ti,ei,ni)=>{const ri=normalizeInput(ti,ei,ni),ii=getCurrentDescriptor(ti,ei),si=mergeDescriptors(ri,ii);return setProperty(ti,ei,si),ti},getCurrentDescriptor=(ti,ei)=>{const ni=Object.getOwnPropertyDescriptor(ti,ei);if(ni!==void 0)return ni;const ri=Object.getPrototypeOf(ti);return ri===null?{}:getCurrentDescriptor(ri,ei)},setProperty=(ti,ei,ni)=>{try{Object.defineProperty(ti,ei,ni)}catch{}},assignProp=(ti,ei,ni)=>{if(ni!==void 0)return setProp(ti,ei,ni);try{delete ti[ei]}catch{}if(ti[ei]!==void 0)return setProp(ti,ei)},setProp=(ti,ei,ni)=>{const ri=getNonEnum(ei);redefineProperty(ti,ei,{value:ni,...ri})},getNonEnum=ti=>typeof ti=="string"&&ti.startsWith("_")?{enumerable:!1}:{},isErrorInstance=ti=>isInstanceOfError(ti)||hasErrorTag(ti),isInstanceOfError=ti=>{try{return ti instanceof Error}catch{return!1}},hasErrorTag=ti=>{try{return ERROR_TAGS.has(Object.prototype.toString.call(ti))}catch{return!1}},ERROR_TAGS=new Set(["[object Error]","[object DOMException]","[object DOMError]","[object Exception]"]),normalizeOptions=(ti,ei,ni={})=>{if(validateErrorOrObject(ti,"First argument"),validateErrorOrObject(ei,"Second argument"),!isPlainObject(ni))throw new TypeError(`Options must be a plain object: ${ni}`);const{soft:ri=!1}=ni;if(typeof ri!="boolean")throw new TypeError(`Option "soft" must be a boolean: ${ri}`);return{soft:ri}},validateErrorOrObject=(ti,ei)=>{if(ti===void 0)throw new TypeError(`${ei} is required.`);if(!isErrorOrObject(ti))throw new TypeError(`${ei} must be a plain object or an error: ${ti}`)},isErrorOrObject=ti=>isPlainObject(ti)||isErrorInstance(ti),shouldSkipProp=({error:ti,props:ei,propName:ni,soft:ri})=>isIgnoredPropName(ni)||!isEnum.call(ei,ni)||ri&&ti[ni]!==void 0,isIgnoredPropName=ti=>ti in CHECK_ERROR||IGNORED_PROPS.has(ti),CHECK_ERROR=new Error("check"),IGNORED_PROPS=new Set(["prototype","errors","cause"]),{propertyIsEnumerable:isEnum}=Object.prototype,setErrorProps=(ti,ei,ni)=>{const{soft:ri}=normalizeOptions(ti,ei,ni);for(const ii of Reflect.ownKeys(ei))setErrorProp({error:ti,props:ei,propName:ii,soft:ri});return ti},setErrorProp=({error:ti,props:ei,propName:ni,soft:ri})=>{shouldSkipProp({error:ti,props:ei,propName:ni,soft:ri})||assignProp(ti,ni,ei[ni])},setErrorProperty=(ti,ei,ni)=>{Object.defineProperty(ti,ei,{value:ni,writable:!0,enumerable:!1,configurable:!0})},mergeAggregateCauses=(ti,ei)=>{if(ti.errors===void 0)return;const ni=ti.errors.map(ri=>ei(ri).error).filter(Boolean);setErrorProperty(ti,"errors",ni)},mergeAggregateErrors=({target:ti,source:ei,parent:ni,child:ri})=>{if(!hasErrors(ti)){mergeSourceErrors(ti,ei);return}hasErrors(ei)&&setErrorProperty(ti,"errors",[...ri.errors,...ni.errors])},mergeSourceErrors=(ti,ei)=>{ei.errors!==void 0&&setErrorProperty(ti,"errors",ei.errors)},hasErrors=ti=>ti.errors!==void 0&&ti.errors.length!==0,normalizeArgs=(ti,ei,ni=ti.message)=>{if(typeof ei!="string")throw new TypeError(`newMessage must be a string: ${ei}`);if(typeof ni!="string")throw new TypeError(`currentMessage must be a string: ${ni}`);return ni},getStack$1=({name:ti,stack:ei},ni,ri)=>ri!==""&&ei.includes(ri)?replaceMessage({name:ti,stack:ei,newMessage:ni,currentMessage:ri}):insertMessage(ti,ei,ni),replaceMessage=({name:ti,stack:ei,newMessage:ni,currentMessage:ri})=>{const ii=getReplacers(ti,ni,ri),[si,oi]=ii.find(([ai])=>ei.includes(ai));return ei.replace(si,oi)},getReplacers=(ti,ei,ni)=>[[`${ti}: ${ni}`,`${ti}: ${ei}`],[`: ${ni}`,`: ${ei}`],[`
1842
1842
  ${ni}`,`
@@ -1850,7 +1850,7 @@ ${ti}`,PREPEND_CHAR=":",PREPEND_NEWLINE_CHAR=`
1850
1850
  ${require$$0$4.inspect(ri,{colors:!0})}`,{timestamp:ni,...ii});return}ei.warn(`${a} ${ri}`,{timestamp:ni,...ii})},error(ri,ii){if(ri instanceof Error){const si=mergeErrorCause(ri);ei.error(`${f} ${p$4.red(si.message)}
1851
1851
  ${require$$0$4.inspect(si,{colors:!0})}`,{timestamp:ni,error:ri,...ii});return}ei.error(`${f} ${ri}`,{timestamp:ni,...ii})}}}const s=()=>{},NoopLogger={info:s,warn:s,error:s},w=1e6;function inMillis(ti){const[ei,ni]=process$2.hrtime(ti),ri=ei*1e3+ni/w;return{ms:ri,pretty:prettyMilliseconds(ri)}}function startTimer(ti){const ei=process$2.hrtime();return{stopAndLog(ni="done in "){ni=p$4.green(`${ni}${inMillis(ei).pretty}`),ti?ti.info(ni):Ye.success(ni)}}}class CliWorkspace{constructor(ei){this.services=ei}isInitialized=!1;async initWorkspace(ei){if(this.isInitialized)throw new Error("Workspace already initialized");const ni=this.services.logger,ri=this.services.shared.workspace.WorkspaceManager;ni.info(`${p$4.dim("workspace:")} ${ei.uri}`),ri.initialize({capabilities:{},processId:null,rootUri:null,workspaceFolders:[ei]}),await ri.initializeWorkspace([ei])}async init(){if(this.isInitialized)throw new Error("Workspace already initialized");this.isInitialized=!0;const ei=this.services.logger,ni=this.services.likec4.ModelBuilder,ri=this.services.shared.workspace.LangiumDocuments,ii=this.services.shared.workspace.DocumentBuilder,si=ri.all.toArray();if(si.length===0)throw ei.error("no LikeC4 sources found"),new Error("no LikeC4 sources found");ei.info(`${p$4.dim("workspace:")} found ${si.length} source files`),await ii.build(si,{validation:!0});const oi=await ni.buildComputedModel(),ai=r$8(oi?.views??{}).length;if(ai===0){ei.warn(`${p$4.dim("workspace:")} no views found`);return}ei.info(`${p$4.dim("workspace:")} ${p$4.green(`\u2713 computed ${ai} views`)}`);const ci=await this.services.likec4.Views.diagrams();ci.length===ai?ei.info(`${p$4.dim("workspace:")} ${p$4.green("\u2713 all views layouted")}`):ei.warn(`${p$4.dim("workspace:")} ${p$4.yellow(`\u2717 layouted ${ci.length} views`)}`)}}function A(ti){return ei=>new ti(ei)}const CliModule={logger:()=>{throw new Error("Logger must be provided")},likec4:{Layouter:()=>{throw new Error("Layouter must be provided")}},cli:{Workspace:A(CliWorkspace)}};function createLanguageServices(ti){const ei=defu(ti,{useFileSystem:!0,logger:"default",graphviz:"wasm"});let ni;switch(ei.logger){case!1:ni=NoopLogger;break;case"vite":ni=createLikeC4Logger("c4:lsp ");break;case"default":ni=Ye.withTag("lsp");break;default:ni=ei.logger}const ri=ei.graphviz==="binary";ni.info(`${p$4.dim("version")} ${version}`),ni.info(`${p$4.dim("layout")} ${ri?"binary":"wasm"}`);const ii={logger:()=>ni,likec4:{Layouter:()=>new Ut(ri===!0?new i$1:new _$1)}};return setLogLevel(ei.logger===!1?"silent":"info"),ei.logger!==!1&&ei.logger!=="default"&&logger.setReporters([{log:({level:si,...oi},ai)=>{const ci=oi.tag||"",ui=oi.args.map(di=>t$3(di)?di.stack??di.message:typeof di=="string"?di:String(di));ci&&ui.unshift(`[${ci}]`);const li=ui.join(" ");switch(!0){case si>=c$2.debug:break;case si>=c$2.info:{ni.info(li);break}case si>=c$2.log:{ni.info(li);break}case si>=c$2.warn:{ni.warn(li);break}case si>=c$2.fatal:{ni.error(li);break}}}}]),createCustomLanguageServices(ei.useFileSystem?LikeC4FileSystem:{},CliModule,ii).likec4}const g=ti=>new Error(`Invalid model:
1852
1852
  ${ti.getErrors().map(ei=>` ${ei.sourceFsPath}:${ei.line} ${ei.message.slice(0,200)}`).join(`
1853
- `)}`);class LikeC4{constructor(ei,ni,ri){this.workspace=ei,this.langium=ni,this.isPrintErrorEnabled=ri,this.logger=ni.logger,this.isPrintErrorEnabled&&this.printErrors()}static async fromSource(ei,ni){const ri=createLanguageServices(defu(ni,{useFileSystem:!1,logger:!1,graphviz:"wasm"})),ii=URI.from({scheme:"virtual",path:"/workspace"});await ri.cli.Workspace.initWorkspace({uri:ii.toString(),name:"virtual"});const si=UriUtils.joinPath(ii,"source.likec4");ri.shared.workspace.LangiumDocuments.createDocument(si,ei),await ri.cli.Workspace.init();const oi=new LikeC4(ii.path,ri,ni?.printErrors??!0);return ni?.throwIfInvalid===!0&&oi.hasErrors()?(oi.dispose(),Promise.reject(g(oi))):oi}static likec4Instances=new Map;static async fromWorkspace(ei="",ni){const ri=path.resolve(ei);if(!fs.existsSync(ri))throw new Error(`Workspace not found: ${ri}`);let ii=LikeC4.likec4Instances.get(ri);if(!ii){const si=createLanguageServices(defu(ni,{useFileSystem:!0,logger:"default",graphviz:"wasm"}));await si.cli.Workspace.initWorkspace({uri:node_url.pathToFileURL(ri).toString(),name:path.basename(ri)}),await si.cli.Workspace.init(),ii=new LikeC4(ri,si,ni?.printErrors??!0),LikeC4.likec4Instances.set(ri,ii)}return ni?.throwIfInvalid===!0&&ii.hasErrors()?(ii.dispose(),Promise.reject(g(ii))):ii}modelComputedRef;modelLayoutedRef;logger;get viewsService(){return this.langium.likec4.Views}get LangiumDocuments(){return this.langium.shared.workspace.LangiumDocuments}async diagrams(){return await this.langium.likec4.Views.diagrams()}computedModel(){let ei=this.modelComputedRef?.deref();if(!ei){const ni=this.langium.likec4.ModelBuilder.unsafeSyncBuildModel();if(!ni)throw new Error("Failed to build model");const ri=this.langium.likec4.ModelBuilder.unsafeSyncBuildComputedModel(ni);ei=index_DafVOuVd.j.create(ri),this.modelComputedRef=new WeakRef(ei)}return ei}async layoutedModel(){let ei=this.modelLayoutedRef?.deref();if(!ei){const ni=await this.langium.likec4.ModelBuilder.buildComputedModel();if(!ni)throw new Error("Failed to build model");const ri=await this.viewsService.diagrams();ei=index_DafVOuVd.j.create({...ni,__:"layouted",views:c$3(ri,p$8("id"))}),this.modelLayoutedRef=new WeakRef(ei)}return ei}getErrors(){return this.LangiumDocuments.all.toArray().flatMap(ei=>(ei.diagnostics??[]).filter(ni=>ni.severity===DiagnosticSeverity.Error).map(({message:ni,range:ri})=>({message:ni,line:ri.start.line,range:ri,sourceFsPath:ei.uri.fsPath})))}hasErrors(){return this.LangiumDocuments.all.some(ei=>ei.diagnostics?.some(ni=>ni.severity===DiagnosticSeverity.Error)??!1)}printErrors(){let ei=!1;for(const ni of this.LangiumDocuments.all){const ri=ni.diagnostics?.filter(ii=>ii.severity===1);if(ri&&ri.length>0){ei=!0;const ii=ri.flatMap(si=>{const oi=si.range.start.line,ai=si.message.split(`
1853
+ `)}`);class LikeC4{constructor(ei,ni,ri){this.workspace=ei,this.langium=ni,this.isPrintErrorEnabled=ri,this.logger=ni.logger,this.isPrintErrorEnabled&&this.printErrors()}static async fromSource(ei,ni){const ri=createLanguageServices(defu(ni,{useFileSystem:!1,logger:!1,graphviz:"wasm"})),ii=URI.from({scheme:"virtual",path:"/workspace"});await ri.cli.Workspace.initWorkspace({uri:ii.toString(),name:"virtual"});const si=UriUtils.joinPath(ii,"source.likec4");ri.shared.workspace.LangiumDocuments.createDocument(si,ei),await ri.cli.Workspace.init();const oi=new LikeC4(ii.path,ri,ni?.printErrors??!0);return ni?.throwIfInvalid===!0&&oi.hasErrors()?(oi.dispose(),Promise.reject(g(oi))):oi}static likec4Instances=new Map;static async fromWorkspace(ei="",ni){const ri=path.resolve(ei);if(!fs.existsSync(ri))throw new Error(`Workspace not found: ${ri}`);let ii=LikeC4.likec4Instances.get(ri);if(!ii){const si=createLanguageServices(defu(ni,{useFileSystem:!0,logger:"default",graphviz:"wasm"}));await si.cli.Workspace.initWorkspace({uri:node_url.pathToFileURL(ri).toString(),name:path.basename(ri)}),await si.cli.Workspace.init(),ii=new LikeC4(ri,si,ni?.printErrors??!0),LikeC4.likec4Instances.set(ri,ii)}return ni?.throwIfInvalid===!0&&ii.hasErrors()?(ii.dispose(),Promise.reject(g(ii))):ii}modelComputedRef;modelLayoutedRef;logger;get viewsService(){return this.langium.likec4.Views}get LangiumDocuments(){return this.langium.shared.workspace.LangiumDocuments}async diagrams(){return await this.langium.likec4.Views.diagrams()}computedModel(){let ei=this.modelComputedRef?.deref();if(!ei){const ni=this.langium.likec4.ModelBuilder.unsafeSyncBuildModel();if(!ni)throw new Error("Failed to build model");const ri=this.langium.likec4.ModelBuilder.unsafeSyncBuildComputedModel(ni);ei=index_KOeaSlL8.a.create(ri),this.modelComputedRef=new WeakRef(ei)}return ei}async layoutedModel(){let ei=this.modelLayoutedRef?.deref();if(!ei){const ni=await this.langium.likec4.ModelBuilder.buildComputedModel();if(!ni)throw new Error("Failed to build model");const ri=await this.viewsService.diagrams();ei=index_KOeaSlL8.a.create({...ni,__:"layouted",views:c$3(ri,p$8("id"))}),this.modelLayoutedRef=new WeakRef(ei)}return ei}getErrors(){return this.LangiumDocuments.all.toArray().flatMap(ei=>(ei.diagnostics??[]).filter(ni=>ni.severity===DiagnosticSeverity.Error).map(({message:ni,range:ri})=>({message:ni,line:ri.start.line,range:ri,sourceFsPath:ei.uri.fsPath})))}hasErrors(){return this.LangiumDocuments.all.some(ei=>ei.diagnostics?.some(ni=>ni.severity===DiagnosticSeverity.Error)??!1)}printErrors(){let ei=!1;for(const ni of this.LangiumDocuments.all){const ri=ni.diagnostics?.filter(ii=>ii.severity===1);if(ri&&ri.length>0){ei=!0;const ii=ri.flatMap(si=>{const oi=si.range.start.line,ai=si.message.split(`
1854
1854
  `);return ai.length>10&&(ai.length=10,ai.push("...")),ai.map((ci,ui)=>ui===0?" "+p$4.dim(`Line ${oi}: `)+p$4.red(ci):" ".repeat(10)+p$4.red(ci))}).join(`
1855
1855
  `);this.logger.error(`Invalid ${ni.uri.fsPath}
1856
1856
  ${ii}`)}}return ei}async notifyUpdate({changed:ei,removed:ni}){this.modelLayoutedRef=void 0,this.modelComputedRef=void 0;const ri=this.langium.shared.workspace.WorkspaceLock;try{let ii=!1;return await ri.write(async si=>{await this.langium.shared.workspace.DocumentBuilder.update(ei?[URI.file(ei)]:[],ni?[URI.file(ni)]:[],si),ii=!si.isCancellationRequested}),ii}catch(ii){return this.logger.error(ii),!1}}onModelUpdate(ei){const ni=this.langium.likec4.ModelBuilder.onModelParsed(()=>ei());return()=>{ni.dispose()}}dispose(){for(const[ei,ni]of LikeC4.likec4Instances)ni===this&&LikeC4.likec4Instances.delete(ei)}}exports.E=E$2,exports.F=Fu,exports.L=LikeC4,exports.N=NEWLINE_REGEXP,exports.T=TreeStreamImpl,exports.Y=Ye,exports.a=findNodesForProperty,exports.b=i$b,exports.c=T$2,exports.d=n$7,exports.e=pLimit,exports.f=f$6,exports.g=getDocument,exports.h=l$7,exports.i=isAstNode,exports.j=createLikeC4Logger,exports.k=hasProtocol,exports.l=l$3,exports.m=withLeadingSlash,exports.n=n$6,exports.o=d$3,exports.p=p$4,exports.q=inMillis,exports.r=stripIndent,exports.s=startTimer,exports.t=t$4,exports.u=u$2,exports.v=i$a,exports.w=withTrailingSlash,exports.x=x$1,exports.y=c$2,exports.z=version;