@miadi/stateloom-web 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server/.next/BUILD_ID +1 -1
- package/server/.next/build-manifest.json +2 -2
- package/server/.next/server/app/_global-error.html +2 -2
- package/server/.next/server/app/_global-error.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.html +1 -1
- package/server/.next/server/app/_not-found.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/server/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/server/.next/server/app/index.html +1 -1
- package/server/.next/server/app/index.rsc +2 -2
- package/server/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/server/.next/server/app/index.segments/_full.segment.rsc +2 -2
- package/server/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/server/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/server/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/server/.next/server/chunks/ssr/[root-of-the-server]__edbb995c._.js +1 -1
- package/server/.next/server/pages/404.html +1 -1
- package/server/.next/server/pages/500.html +2 -2
- package/server/.next/static/chunks/{8fad55ffcb4402a1.js → 6b321a88a1daa2e6.js} +4 -4
- package/server/package-lock.json +2 -2
- package/server/package.json +1 -1
- package/server/stateloom-web.json +2 -2
- /package/server/.next/static/{s006nwfeOEJ9fSHkFe8k7 → BUxVEiL9wZcSTloSeIkVL}/_buildManifest.js +0 -0
- /package/server/.next/static/{s006nwfeOEJ9fSHkFe8k7 → BUxVEiL9wZcSTloSeIkVL}/_clientMiddlewareManifest.json +0 -0
- /package/server/.next/static/{s006nwfeOEJ9fSHkFe8k7 → BUxVEiL9wZcSTloSeIkVL}/_ssgManifest.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module.exports=[92509,(a,b,c)=>{b.exports=a.x("url",()=>require("url"))},21517,(a,b,c)=>{b.exports=a.x("http",()=>require("http"))},24836,(a,b,c)=>{b.exports=a.x("https",()=>require("https"))},53681,(a,b,c)=>{var d=a.r(22734),e=a.r(92509),f=a.r(33405).spawn;function g(b){"use strict";b=b||{};var c,g,h=this,i=a.r(21517),j=a.r(24836),k={},l=!1,m={"User-Agent":"node-XMLHttpRequest",Accept:"*/*"},n=Object.assign({},m),o=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","content-transfer-encoding","cookie","cookie2","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"],p=["TRACE","TRACK","CONNECT"],q=!1,r=!1,s=!1,t={};this.UNSENT=0,this.OPENED=1,this.HEADERS_RECEIVED=2,this.LOADING=3,this.DONE=4,this.readyState=this.UNSENT,this.onreadystatechange=null,this.responseText="",this.responseXML="",this.response=Buffer.alloc(0),this.status=null,this.statusText=null,this.open=function(a,b,c,d,e){if(this.abort(),r=!1,s=!1,!(a&&-1===p.indexOf(a)))throw Error("SecurityError: Request method not allowed");k={method:a,url:b.toString(),async:"boolean"!=typeof c||c,user:d||null,password:e||null},u(this.OPENED)},this.setDisableHeaderCheck=function(a){l=a},this.setRequestHeader=function(a,b){if(this.readyState!=this.OPENED)throw Error("INVALID_STATE_ERR: setRequestHeader can only be called when state is OPEN");if(!l&&(!a||-1!==o.indexOf(a.toLowerCase())))return console.warn('Refused to set unsafe header "'+a+'"'),!1;if(q)throw Error("INVALID_STATE_ERR: send flag is true");return n[a]=b,!0},this.getResponseHeader=function(a){return"string"==typeof a&&this.readyState>this.OPENED&&g.headers[a.toLowerCase()]&&!r?g.headers[a.toLowerCase()]:null},this.getAllResponseHeaders=function(){if(this.readyState<this.HEADERS_RECEIVED||r)return"";var a="";for(var b in g.headers)"set-cookie"!==b&&"set-cookie2"!==b&&(a+=b+": "+g.headers[b]+"\r\n");return a.substr(0,a.length-2)},this.getRequestHeader=function(a){return"string"==typeof a&&n[a]?n[a]:""},this.send=function(a){if(this.readyState!=this.OPENED)throw Error("INVALID_STATE_ERR: connection must be opened before send() is called");if(q)throw Error("INVALID_STATE_ERR: send has already been called");var l,m=!1,o=!1,p=e.parse(k.url);switch(p.protocol){case"https:":m=!0;case"http:":l=p.hostname;break;case"file:":o=!0;break;case void 0:case"":l="localhost";break;default:throw Error("Protocol not supported.")}if(o){if("GET"!==k.method)throw Error("XMLHttpRequest: Only GET method is supported");if(k.async)d.readFile(unescape(p.pathname),function(a,b){a?h.handleError(a,a.errno||-1):(h.status=200,h.responseText=b.toString("utf8"),h.response=b,u(h.DONE))});else try{this.response=d.readFileSync(unescape(p.pathname)),this.responseText=this.response.toString("utf8"),this.status=200,u(h.DONE)}catch(a){this.handleError(a,a.errno||-1)}return}var s=p.port||(m?443:80),t=p.pathname+(p.search?p.search:"");if(n.Host=l,m&&443===s||80===s||(n.Host+=":"+p.port),k.user){void 0===k.password&&(k.password="");var v=new Buffer(k.user+":"+k.password);n.Authorization="Basic "+v.toString("base64")}"GET"===k.method||"HEAD"===k.method?a=null:a?(n["Content-Length"]=Buffer.isBuffer(a)?a.length:Buffer.byteLength(a),Object.keys(n).some(function(a){return"content-type"===a.toLowerCase()})||(n["Content-Type"]="text/plain;charset=UTF-8")):"POST"===k.method&&(n["Content-Length"]=0);var w=b.agent||!1,x={host:l,port:s,path:t,method:k.method,headers:n,agent:w};if(m&&(x.pfx=b.pfx,x.key=b.key,x.passphrase=b.passphrase,x.cert=b.cert,x.ca=b.ca,x.ciphers=b.ciphers,x.rejectUnauthorized=!1!==b.rejectUnauthorized),r=!1,k.async){var y=m?j.request:i.request;q=!0,h.dispatchEvent("readystatechange");var z=function(a){if(302===(g=a).statusCode||303===g.statusCode||307===g.statusCode){k.url=g.headers.location;var d=e.parse(k.url);l=d.hostname;var f={hostname:d.hostname,port:d.port,path:d.path,method:303===g.statusCode?"GET":k.method,headers:n};m&&(f.pfx=b.pfx,f.key=b.key,f.passphrase=b.passphrase,f.cert=b.cert,f.ca=b.ca,f.ciphers=b.ciphers,f.rejectUnauthorized=!1!==b.rejectUnauthorized),(c=y(f,z).on("error",A)).end();return}u(h.HEADERS_RECEIVED),h.status=g.statusCode,g.on("data",function(a){if(a){var b=Buffer.from(a);h.response=Buffer.concat([h.response,b])}q&&u(h.LOADING)}),g.on("end",function(){q&&(q=!1,u(h.DONE),h.responseText=h.response.toString("utf8"))}),g.on("error",function(a){h.handleError(a)})},A=function(a){if(c.reusedSocket&&"ECONNRESET"===a.code)return y(x,z).on("error",A);h.handleError(a)};c=y(x,z).on("error",A),b.autoUnref&&c.on("socket",a=>{a.unref()}),a&&c.write(a),c.end(),h.dispatchEvent("loadstart")}else{var B=".node-xmlhttprequest-content-"+process.pid,C=".node-xmlhttprequest-sync-"+process.pid;d.writeFileSync(C,"","utf8");for(var D="var http = require('http'), https = require('https'), fs = require('fs');var doRequest = http"+(m?"s":"")+".request;var options = "+JSON.stringify(x)+";var responseText = '';var responseData = Buffer.alloc(0);var req = doRequest(options, function(response) {response.on('data', function(chunk) { var data = Buffer.from(chunk); responseText += data.toString('utf8'); responseData = Buffer.concat([responseData, data]);});response.on('end', function() {fs.writeFileSync('"+B+"', JSON.stringify({err: null, data: {statusCode: response.statusCode, headers: response.headers, text: responseText, data: responseData.toString('base64')}}), 'utf8');fs.unlinkSync('"+C+"');});response.on('error', function(error) {fs.writeFileSync('"+B+"', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');fs.unlinkSync('"+C+"');});}).on('error', function(error) {fs.writeFileSync('"+B+"', 'NODE-XMLHTTPREQUEST-ERROR:' + JSON.stringify(error), 'utf8');fs.unlinkSync('"+C+"');});"+(a?"req.write('"+JSON.stringify(a).slice(1,-1).replace(/'/g,"\\'")+"');":"")+"req.end();",E=f(process.argv[0],["-e",D]);d.existsSync(C););if(h.responseText=d.readFileSync(B,"utf8"),E.stdin.end(),d.unlinkSync(B),h.responseText.match(/^NODE-XMLHTTPREQUEST-ERROR:/)){var F=JSON.parse(h.responseText.replace(/^NODE-XMLHTTPREQUEST-ERROR:/,""));h.handleError(F,503)}else{h.status=h.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:([0-9]*),.*/,"$1");var G=JSON.parse(h.responseText.replace(/^NODE-XMLHTTPREQUEST-STATUS:[0-9]*,(.*)/,"$1"));g={statusCode:h.status,headers:G.data.headers},h.responseText=G.data.text,h.response=Buffer.from(G.data.data,"base64"),u(h.DONE,!0)}}},this.handleError=function(a,b){this.status=b||0,this.statusText=a,this.responseText=a.stack,r=!0,u(this.DONE)},this.abort=function(){c&&(c.abort(),c=null),n=Object.assign({},m),this.responseText="",this.responseXML="",this.response=Buffer.alloc(0),r=s=!0,this.readyState!==this.UNSENT&&(this.readyState!==this.OPENED||q)&&this.readyState!==this.DONE&&(q=!1,u(this.DONE)),this.readyState=this.UNSENT},this.addEventListener=function(a,b){a in t||(t[a]=[]),t[a].push(b)},this.removeEventListener=function(a,b){a in t&&(t[a]=t[a].filter(function(a){return a!==b}))},this.dispatchEvent=function(a){if("function"==typeof h["on"+a]&&(this.readyState===this.DONE&&k.async?setTimeout(function(){h["on"+a]()},0):h["on"+a]()),a in t)for(let b=0,c=t[a].length;b<c;b++)this.readyState===this.DONE?setTimeout(function(){t[a][b].call(h)},0):t[a][b].call(h)};var u=function(a){if(h.readyState!==a&&(h.readyState!==h.UNSENT||!s)&&(h.readyState=a,(k.async||h.readyState<h.OPENED||h.readyState===h.DONE)&&h.dispatchEvent("readystatechange"),h.readyState===h.DONE)){let a;a=s?"abort":r?"error":"load",h.dispatchEvent(a),h.dispatchEvent("loadend")}}}b.exports=g,g.XMLHttpRequest=g},90538,(a,b,c)=>{function d(a,b,c,d){return Math.round(a/c)+" "+d+(b>=1.5*c?"s":"")}b.exports=function(a,b){b=b||{};var c,e,f,g,h=typeof a;if("string"===h&&a.length>0){var i=a;if(!((i=String(i)).length>100)){var j=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(j){var k=parseFloat(j[1]);switch((j[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*k;case"weeks":case"week":case"w":return 6048e5*k;case"days":case"day":case"d":return 864e5*k;case"hours":case"hour":case"hrs":case"hr":case"h":return 36e5*k;case"minutes":case"minute":case"mins":case"min":case"m":return 6e4*k;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*k;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return k;default:break}}}return}if("number"===h&&isFinite(a)){return b.long?(e=Math.abs(c=a))>=864e5?d(c,e,864e5,"day"):e>=36e5?d(c,e,36e5,"hour"):e>=6e4?d(c,e,6e4,"minute"):e>=1e3?d(c,e,1e3,"second"):c+" ms":(g=Math.abs(f=a))>=864e5?Math.round(f/864e5)+"d":g>=36e5?Math.round(f/36e5)+"h":g>=6e4?Math.round(f/6e4)+"m":g>=1e3?Math.round(f/1e3)+"s":f+"ms"}throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))}},58449,(a,b,c)=>{b.exports=function(b){function c(a){let b,e,f,g=null;function h(...a){if(!h.enabled)return;let d=Number(new Date);h.diff=d-(b||d),h.prev=b,h.curr=d,b=d,a[0]=c.coerce(a[0]),"string"!=typeof a[0]&&a.unshift("%O");let e=0;a[0]=a[0].replace(/%([a-zA-Z%])/g,(b,d)=>{if("%%"===b)return"%";e++;let f=c.formatters[d];if("function"==typeof f){let c=a[e];b=f.call(h,c),a.splice(e,1),e--}return b}),c.formatArgs.call(h,a),(h.log||c.log).apply(h,a)}return h.namespace=a,h.useColors=c.useColors(),h.color=c.selectColor(a),h.extend=d,h.destroy=c.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==g?g:(e!==c.namespaces&&(e=c.namespaces,f=c.enabled(a)),f),set:a=>{g=a}}),"function"==typeof c.init&&c.init(h),h}function d(a,b){let d=c(this.namespace+(void 0===b?":":b)+a);return d.log=this.log,d}function e(a,b){let c=0,d=0,e=-1,f=0;for(;c<a.length;)if(d<b.length&&(b[d]===a[c]||"*"===b[d]))"*"===b[d]?(e=d,f=c):c++,d++;else{if(-1===e)return!1;d=e+1,c=++f}for(;d<b.length&&"*"===b[d];)d++;return d===b.length}return c.debug=c,c.default=c,c.coerce=function(a){return a instanceof Error?a.stack||a.message:a},c.disable=function(){let a=[...c.names,...c.skips.map(a=>"-"+a)].join(",");return c.enable(""),a},c.enable=function(a){for(let b of(c.save(a),c.namespaces=a,c.names=[],c.skips=[],("string"==typeof a?a:"").trim().replace(/\s+/g,",").split(",").filter(Boolean)))"-"===b[0]?c.skips.push(b.slice(1)):c.names.push(b)},c.enabled=function(a){for(let b of c.skips)if(e(a,b))return!1;for(let b of c.names)if(e(a,b))return!0;return!1},c.humanize=a.r(90538),c.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(b).forEach(a=>{c[a]=b[a]}),c.names=[],c.skips=[],c.formatters={},c.selectColor=function(a){let b=0;for(let c=0;c<a.length;c++)b=(b<<5)-b+a.charCodeAt(c)|0;return c.colors[Math.abs(b)%c.colors.length]},c.enable(c.load()),c}},70722,(a,b,c)=>{b.exports=a.x("tty",()=>require("tty"))},9031,(a,b,c)=>{let d=a.r(70722),e=a.r(24361);c.init=function(a){a.inspectOpts={};let b=Object.keys(c.inspectOpts);for(let d=0;d<b.length;d++)a.inspectOpts[b[d]]=c.inspectOpts[b[d]]},c.log=function(...a){return process.stderr.write(e.formatWithOptions(c.inspectOpts,...a)+"\n")},c.formatArgs=function(a){let{namespace:d,useColors:e}=this;if(e){let c=this.color,e="\x1b[3"+(c<8?c:"8;5;"+c),f=` ${e};1m${d} \u001B[0m`;a[0]=f+a[0].split("\n").join("\n"+f),a.push(e+"m+"+b.exports.humanize(this.diff)+"\x1b[0m")}else a[0]=(c.inspectOpts.hideDate?"":new Date().toISOString()+" ")+d+" "+a[0]},c.save=function(a){a?process.env.DEBUG=a:delete process.env.DEBUG},c.load=function(){return process.env.DEBUG},c.useColors=function(){return"colors"in c.inspectOpts?!!c.inspectOpts.colors:d.isatty(process.stderr.fd)},c.destroy=e.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),c.colors=[6,2,3,4,5,1];try{let a=(()=>{let a=Error("Cannot find module 'supports-color'");throw a.code="MODULE_NOT_FOUND",a})();a&&(a.stderr||a).level>=2&&(c.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(a){}c.inspectOpts=Object.keys(process.env).filter(a=>/^debug_/i.test(a)).reduce((a,b)=>{let c=b.substring(6).toLowerCase().replace(/_([a-z])/g,(a,b)=>b.toUpperCase()),d=process.env[b];return d=!!/^(yes|on|true|enabled)$/i.test(d)||!/^(no|off|false|disabled)$/i.test(d)&&("null"===d?null:Number(d)),a[c]=d,a},{}),b.exports=a.r(58449)(c);let{formatters:f}=b.exports;f.o=function(a){return this.inspectOpts.colors=this.useColors,e.inspect(a,this.inspectOpts).split("\n").map(a=>a.trim()).join(" ")},f.O=function(a){return this.inspectOpts.colors=this.useColors,e.inspect(a,this.inspectOpts)}},83021,(a,b,c)=>{let d;c.formatArgs=function(a){if(a[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+a[0]+(this.useColors?"%c ":" ")+"+"+b.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;a.splice(1,0,c,"color: inherit");let d=0,e=0;a[0].replace(/%[a-zA-Z%]/g,a=>{"%%"!==a&&(d++,"%c"===a&&(e=d))}),a.splice(e,0,c)},c.save=function(a){try{a?c.storage.setItem("debug",a):c.storage.removeItem("debug")}catch(a){}},c.load=function(){let a;try{a=c.storage.getItem("debug")||c.storage.getItem("DEBUG")}catch(a){}return!a&&"u">typeof process&&"env"in process&&(a=process.env.DEBUG),a},c.useColors=function(){let a;return!("u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("u">typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"u">typeof navigator&&navigator.userAgent&&(a=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(a[1],10)>=31||"u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},c.storage=function(){try{return localStorage}catch(a){}}(),d=!1,c.destroy=()=>{d||(d=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))},c.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],c.log=console.debug||console.log||(()=>{}),b.exports=a.r(58449)(c);let{formatters:e}=b.exports;e.j=function(a){try{return JSON.stringify(a)}catch(a){return"[UnexpectedJSONParseError]: "+a.message}}},72724,(a,b,c)=>{"u"<typeof process||"renderer"===process.type||process.__nwjs?b.exports=a.r(83021):b.exports=a.r(9031)},27699,(a,b,c)=>{b.exports=a.x("events",()=>require("events"))},4446,(a,b,c)=>{b.exports=a.x("net",()=>require("net"))},55004,(a,b,c)=>{b.exports=a.x("tls",()=>require("tls"))},54799,(a,b,c)=>{b.exports=a.x("crypto",()=>require("crypto"))},88947,(a,b,c)=>{b.exports=a.x("stream",()=>require("stream"))},6461,(a,b,c)=>{b.exports=a.x("zlib",()=>require("zlib"))},63046,(a,b,c)=>{"use strict";let d=["nodebuffer","arraybuffer","fragments"],e="u">typeof Blob;e&&d.push("blob"),b.exports={BINARY_TYPES:d,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:e,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}},40338,(a,b,c)=>{"use strict";let{EMPTY_BUFFER:d}=a.r(63046),e=Buffer[Symbol.species];function f(a,b,c,d,e){for(let f=0;f<e;f++)c[d+f]=a[f]^b[3&f]}function g(a,b){for(let c=0;c<a.length;c++)a[c]^=b[3&c]}function h(a){let b;return(h.readOnly=!0,Buffer.isBuffer(a))?a:(a instanceof ArrayBuffer?b=new e(a):ArrayBuffer.isView(a)?b=new e(a.buffer,a.byteOffset,a.byteLength):(b=Buffer.from(a),h.readOnly=!1),b)}if(b.exports={concat:function(a,b){if(0===a.length)return d;if(1===a.length)return a[0];let c=Buffer.allocUnsafe(b),f=0;for(let b=0;b<a.length;b++){let d=a[b];c.set(d,f),f+=d.length}return f<b?new e(c.buffer,c.byteOffset,f):c},mask:f,toArrayBuffer:function(a){return a.length===a.buffer.byteLength?a.buffer:a.buffer.slice(a.byteOffset,a.byteOffset+a.length)},toBuffer:h,unmask:g},!process.env.WS_NO_BUFFER_UTIL)try{let a=(()=>{let a=Error("Cannot find module 'bufferutil'");throw a.code="MODULE_NOT_FOUND",a})();b.exports.mask=function(b,c,d,e,g){g<48?f(b,c,d,e,g):a.mask(b,c,d,e,g)},b.exports.unmask=function(b,c){b.length<32?g(b,c):a.unmask(b,c)}}catch(a){}},14025,(a,b,c)=>{"use strict";let d=Symbol("kDone"),e=Symbol("kRun");b.exports=class{constructor(a){this[d]=()=>{this.pending--,this[e]()},this.concurrency=a||1/0,this.jobs=[],this.pending=0}add(a){this.jobs.push(a),this[e]()}[e](){if(this.pending!==this.concurrency&&this.jobs.length){let a=this.jobs.shift();this.pending++,a(this[d])}}}},31276,(a,b,c)=>{"use strict";let d,e=a.r(6461),f=a.r(40338),g=a.r(14025),{kStatusCode:h}=a.r(63046),i=Buffer[Symbol.species],j=Buffer.from([0,0,255,255]),k=Symbol("permessage-deflate"),l=Symbol("total-length"),m=Symbol("callback"),n=Symbol("buffers"),o=Symbol("error");function p(a){this[n].push(a),this[l]+=a.length}function q(a){(this[l]+=a.length,this[k]._maxPayload<1||this[l]<=this[k]._maxPayload)?this[n].push(a):(this[o]=RangeError("Max payload size exceeded"),this[o].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[o][h]=1009,this.removeListener("data",q),this.reset())}function r(a){(this[k]._inflate=null,this[o])?this[m](this[o]):(a[h]=1007,this[m](a))}b.exports=class{constructor(a){this._options=a||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._maxPayload=0|this._options.maxPayload,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,d||(d=new g(void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10))}static get extensionName(){return"permessage-deflate"}offer(){let a={};return this._options.serverNoContextTakeover&&(a.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(a.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(a.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?a.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(a.client_max_window_bits=!0),a}accept(a){return a=this.normalizeParams(a),this.params=this._isServer?this.acceptAsServer(a):this.acceptAsClient(a),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let a=this._deflate[m];this._deflate.close(),this._deflate=null,a&&a(Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(a){let b=this._options,c=a.find(a=>(!1!==b.serverNoContextTakeover||!a.server_no_context_takeover)&&(!a.server_max_window_bits||!1!==b.serverMaxWindowBits&&("number"!=typeof b.serverMaxWindowBits||!(b.serverMaxWindowBits>a.server_max_window_bits)))&&("number"!=typeof b.clientMaxWindowBits||!!a.client_max_window_bits));if(!c)throw Error("None of the extension offers can be accepted");return b.serverNoContextTakeover&&(c.server_no_context_takeover=!0),b.clientNoContextTakeover&&(c.client_no_context_takeover=!0),"number"==typeof b.serverMaxWindowBits&&(c.server_max_window_bits=b.serverMaxWindowBits),"number"==typeof b.clientMaxWindowBits?c.client_max_window_bits=b.clientMaxWindowBits:(!0===c.client_max_window_bits||!1===b.clientMaxWindowBits)&&delete c.client_max_window_bits,c}acceptAsClient(a){let b=a[0];if(!1===this._options.clientNoContextTakeover&&b.client_no_context_takeover)throw Error('Unexpected parameter "client_no_context_takeover"');if(b.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&b.client_max_window_bits>this._options.clientMaxWindowBits)throw Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(b.client_max_window_bits=this._options.clientMaxWindowBits);return b}normalizeParams(a){return a.forEach(a=>{Object.keys(a).forEach(b=>{let c=a[b];if(c.length>1)throw Error(`Parameter "${b}" must have only a single value`);if(c=c[0],"client_max_window_bits"===b){if(!0!==c){let a=+c;if(!Number.isInteger(a)||a<8||a>15)throw TypeError(`Invalid value for parameter "${b}": ${c}`);c=a}else if(!this._isServer)throw TypeError(`Invalid value for parameter "${b}": ${c}`)}else if("server_max_window_bits"===b){let a=+c;if(!Number.isInteger(a)||a<8||a>15)throw TypeError(`Invalid value for parameter "${b}": ${c}`);c=a}else if("client_no_context_takeover"===b||"server_no_context_takeover"===b){if(!0!==c)throw TypeError(`Invalid value for parameter "${b}": ${c}`)}else throw Error(`Unknown parameter "${b}"`);a[b]=c})}),a}decompress(a,b,c){d.add(d=>{this._decompress(a,b,(a,b)=>{d(),c(a,b)})})}compress(a,b,c){d.add(d=>{this._compress(a,b,(a,b)=>{d(),c(a,b)})})}_decompress(a,b,c){let d=this._isServer?"client":"server";if(!this._inflate){let a=`${d}_max_window_bits`,b="number"!=typeof this.params[a]?e.Z_DEFAULT_WINDOWBITS:this.params[a];this._inflate=e.createInflateRaw({...this._options.zlibInflateOptions,windowBits:b}),this._inflate[k]=this,this._inflate[l]=0,this._inflate[n]=[],this._inflate.on("error",r),this._inflate.on("data",q)}this._inflate[m]=c,this._inflate.write(a),b&&this._inflate.write(j),this._inflate.flush(()=>{let a=this._inflate[o];if(a){this._inflate.close(),this._inflate=null,c(a);return}let e=f.concat(this._inflate[n],this._inflate[l]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[l]=0,this._inflate[n]=[],b&&this.params[`${d}_no_context_takeover`]&&this._inflate.reset()),c(null,e)})}_compress(a,b,c){let d=this._isServer?"server":"client";if(!this._deflate){let a=`${d}_max_window_bits`,b="number"!=typeof this.params[a]?e.Z_DEFAULT_WINDOWBITS:this.params[a];this._deflate=e.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:b}),this._deflate[l]=0,this._deflate[n]=[],this._deflate.on("data",p)}this._deflate[m]=c,this._deflate.write(a),this._deflate.flush(e.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let a=f.concat(this._deflate[n],this._deflate[l]);b&&(a=new i(a.buffer,a.byteOffset,a.length-4)),this._deflate[m]=null,this._deflate[l]=0,this._deflate[n]=[],b&&this.params[`${d}_no_context_takeover`]&&this._deflate.reset(),c(null,a)})}}},874,(a,b,c)=>{b.exports=a.x("buffer",()=>require("buffer"))},42673,(a,b,c)=>{"use strict";let{isUtf8:d}=a.r(874),{hasBlob:e}=a.r(63046);function f(a){let b=a.length,c=0;for(;c<b;)if((128&a[c])==0)c++;else if((224&a[c])==192){if(c+1===b||(192&a[c+1])!=128||(254&a[c])==192)return!1;c+=2}else if((240&a[c])==224){if(c+2>=b||(192&a[c+1])!=128||(192&a[c+2])!=128||224===a[c]&&(224&a[c+1])==128||237===a[c]&&(224&a[c+1])==160)return!1;c+=3}else{if((248&a[c])!=240||c+3>=b||(192&a[c+1])!=128||(192&a[c+2])!=128||(192&a[c+3])!=128||240===a[c]&&(240&a[c+1])==128||244===a[c]&&a[c+1]>143||a[c]>244)return!1;c+=4}return!0}if(b.exports={isBlob:function(a){return e&&"object"==typeof a&&"function"==typeof a.arrayBuffer&&"string"==typeof a.type&&"function"==typeof a.stream&&("Blob"===a[Symbol.toStringTag]||"File"===a[Symbol.toStringTag])},isValidStatusCode:function(a){return a>=1e3&&a<=1014&&1004!==a&&1005!==a&&1006!==a||a>=3e3&&a<=4999},isValidUTF8:f,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},d)b.exports.isValidUTF8=function(a){return a.length<24?f(a):d(a)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let a=(()=>{let a=Error("Cannot find module 'utf-8-validate'");throw a.code="MODULE_NOT_FOUND",a})();b.exports.isValidUTF8=function(b){return b.length<32?f(b):a(b)}}catch(a){}},28719,(a,b,c)=>{"use strict";let{Writable:d}=a.r(88947),e=a.r(31276),{BINARY_TYPES:f,EMPTY_BUFFER:g,kStatusCode:h,kWebSocket:i}=a.r(63046),{concat:j,toArrayBuffer:k,unmask:l}=a.r(40338),{isValidStatusCode:m,isValidUTF8:n}=a.r(42673),o=Buffer[Symbol.species];b.exports=class extends d{constructor(a={}){super(),this._allowSynchronousEvents=void 0===a.allowSynchronousEvents||a.allowSynchronousEvents,this._binaryType=a.binaryType||f[0],this._extensions=a.extensions||{},this._isServer=!!a.isServer,this._maxBufferedChunks=0|a.maxBufferedChunks,this._maxFragments=0|a.maxFragments,this._maxPayload=0|a.maxPayload,this._skipUTF8Validation=!!a.skipUTF8Validation,this[i]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._numFragments=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(a,b,c){return 8===this._opcode&&0==this._state?c():this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks?void c(this.createError(RangeError,"Too many buffered chunks",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS")):void(this._bufferedBytes+=a.length,this._buffers.push(a),this.startLoop(c))}consume(a){if(this._bufferedBytes-=a,a===this._buffers[0].length)return this._buffers.shift();if(a<this._buffers[0].length){let b=this._buffers[0];return this._buffers[0]=new o(b.buffer,b.byteOffset+a,b.length-a),new o(b.buffer,b.byteOffset,a)}let b=Buffer.allocUnsafe(a);do{let c=this._buffers[0],d=b.length-a;a>=c.length?b.set(this._buffers.shift(),d):(b.set(new Uint8Array(c.buffer,c.byteOffset,a),d),this._buffers[0]=new o(c.buffer,c.byteOffset+a,c.length-a)),a-=c.length}while(a>0)return b}startLoop(a){this._loop=!0;do switch(this._state){case 0:this.getInfo(a);break;case 1:this.getPayloadLength16(a);break;case 2:this.getPayloadLength64(a);break;case 3:this.getMask();break;case 4:this.getData(a);break;case 5:case 6:this._loop=!1;return}while(this._loop)this._errored||a()}getInfo(a){if(this._bufferedBytes<2){this._loop=!1;return}let b=this.consume(2);if((48&b[0])!=0)return void a(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"));let c=(64&b[0])==64;if(c&&!this._extensions[e.extensionName])return void a(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(this._fin=(128&b[0])==128,this._opcode=15&b[0],this._payloadLength=127&b[1],0===this._opcode){if(c)return void a(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(!this._fragmented)return void a(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"));this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return void a(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));this._compressed=c}else{if(!(this._opcode>7)||!(this._opcode<11))return void a(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));if(!this._fin)return void a(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"));if(c)return void a(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength)return void a(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"))}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=(128&b[1])==128,this._isServer){if(!this._masked)return void a(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"))}else if(this._masked)return void a(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"));126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(a)}getPayloadLength16(a){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(a)}getPayloadLength64(a){if(this._bufferedBytes<8){this._loop=!1;return}let b=this.consume(8),c=b.readUInt32BE(0);c>2097151?a(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=0x100000000*c+b.readUInt32BE(4),this.haveLength(a))}haveLength(a){this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)?a(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH")):this._masked?this._state=3:this._state=4}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=4}getData(a){let b=g;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}b=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!=0&&l(b,this._mask)}if(this._opcode>7)return void this.controlMessage(b,a);if(this._maxFragments>0&&++this._numFragments>this._maxFragments)return void a(this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS"));if(this._compressed){this._state=5,this.decompress(b,a);return}b.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(b)),this.dataMessage(a)}decompress(a,b){this._extensions[e.extensionName].decompress(a,this._fin,(a,c)=>{if(a)return b(a);if(c.length){if(this._messageLength+=c.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return void b(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH"));this._fragments.push(c)}this.dataMessage(b),0===this._state&&this.startLoop(b)})}dataMessage(a){if(!this._fin){this._state=0;return}let b=this._messageLength,c=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._numFragments=0,this._fragments=[],2===this._opcode){let d;d="nodebuffer"===this._binaryType?j(c,b):"arraybuffer"===this._binaryType?k(j(c,b)):"blob"===this._binaryType?new Blob(c):c,this._allowSynchronousEvents?(this.emit("message",d,!0),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",d,!0),this._state=0,this.startLoop(a)}))}else{let d=j(c,b);if(!this._skipUTF8Validation&&!n(d))return void a(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));5===this._state||this._allowSynchronousEvents?(this.emit("message",d,!1),this._state=0):(this._state=6,setImmediate(()=>{this.emit("message",d,!1),this._state=0,this.startLoop(a)}))}}controlMessage(a,b){if(8===this._opcode){if(0===a.length)this._loop=!1,this.emit("conclude",1005,g),this.end();else{let c=a.readUInt16BE(0);if(!m(c))return void b(this.createError(RangeError,`invalid status code ${c}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE"));let d=new o(a.buffer,a.byteOffset+2,a.length-2);if(!this._skipUTF8Validation&&!n(d))return void b(this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8"));this._loop=!1,this.emit("conclude",c,d),this.end()}this._state=0;return}this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",a),this._state=0):(this._state=6,setImmediate(()=>{this.emit(9===this._opcode?"ping":"pong",a),this._state=0,this.startLoop(b)}))}createError(a,b,c,d,e){this._loop=!1,this._errored=!0;let f=new a(c?`Invalid WebSocket frame: ${b}`:b);return Error.captureStackTrace(f,this.createError),f.code=e,f[h]=d,f}}},63349,(a,b,c)=>{"use strict";let d,{Duplex:e}=a.r(88947),{randomFillSync:f}=a.r(54799),{types:{isUint8Array:g}}=a.r(24361),h=a.r(31276),{EMPTY_BUFFER:i,kWebSocket:j,NOOP:k}=a.r(63046),{isBlob:l,isValidStatusCode:m}=a.r(42673),{mask:n,toBuffer:o}=a.r(40338),p=Symbol("kByteLength"),q=Buffer.alloc(4),r=8192;class s{constructor(a,b,c){this._extensions=b||{},c&&(this._generateMask=c,this._maskBuffer=Buffer.alloc(4)),this._socket=a,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=k,this[j]=void 0}static frame(a,b){let c,e,g=!1,h=2,i=!1;b.mask&&(c=b.maskBuffer||q,b.generateMask?b.generateMask(c):(8192===r&&(void 0===d&&(d=Buffer.alloc(8192)),f(d,0,8192),r=0),c[0]=d[r++],c[1]=d[r++],c[2]=d[r++],c[3]=d[r++]),i=(c[0]|c[1]|c[2]|c[3])==0,h=6),"string"==typeof a?e=(!b.mask||i)&&void 0!==b[p]?b[p]:(a=Buffer.from(a)).length:(e=a.length,g=b.mask&&b.readOnly&&!i);let j=e;e>=65536?(h+=8,j=127):e>125&&(h+=2,j=126);let k=Buffer.allocUnsafe(g?e+h:h);return(k[0]=b.fin?128|b.opcode:b.opcode,b.rsv1&&(k[0]|=64),k[1]=j,126===j?k.writeUInt16BE(e,2):127===j&&(k[2]=k[3]=0,k.writeUIntBE(e,4,6)),b.mask)?(k[1]|=128,k[h-4]=c[0],k[h-3]=c[1],k[h-2]=c[2],k[h-1]=c[3],i)?[k,a]:g?(n(a,c,k,h,e),[k]):(n(a,c,a,0,e),[k,a]):[k,a]}close(a,b,c,d){let e;if(void 0===a)e=i;else if("number"==typeof a&&m(a))if(void 0!==b&&b.length){let c=Buffer.byteLength(b);if(c>123)throw RangeError("The message must not be greater than 123 bytes");if((e=Buffer.allocUnsafe(2+c)).writeUInt16BE(a,0),"string"==typeof b)e.write(b,2);else if(g(b))e.set(b,2);else throw TypeError("Second argument must be a string or a Uint8Array")}else(e=Buffer.allocUnsafe(2)).writeUInt16BE(a,0);else throw TypeError("First argument must be a valid error code number");let f={[p]:e.length,fin:!0,generateMask:this._generateMask,mask:c,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,e,!1,f,d]):this.sendFrame(s.frame(e,f),d)}ping(a,b,c){let d,e;if("string"==typeof a?(d=Buffer.byteLength(a),e=!1):l(a)?(d=a.size,e=!1):(d=(a=o(a)).length,e=o.readOnly),d>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[p]:d,fin:!0,generateMask:this._generateMask,mask:b,maskBuffer:this._maskBuffer,opcode:9,readOnly:e,rsv1:!1};l(a)?0!==this._state?this.enqueue([this.getBlobData,a,!1,f,c]):this.getBlobData(a,!1,f,c):0!==this._state?this.enqueue([this.dispatch,a,!1,f,c]):this.sendFrame(s.frame(a,f),c)}pong(a,b,c){let d,e;if("string"==typeof a?(d=Buffer.byteLength(a),e=!1):l(a)?(d=a.size,e=!1):(d=(a=o(a)).length,e=o.readOnly),d>125)throw RangeError("The data size must not be greater than 125 bytes");let f={[p]:d,fin:!0,generateMask:this._generateMask,mask:b,maskBuffer:this._maskBuffer,opcode:10,readOnly:e,rsv1:!1};l(a)?0!==this._state?this.enqueue([this.getBlobData,a,!1,f,c]):this.getBlobData(a,!1,f,c):0!==this._state?this.enqueue([this.dispatch,a,!1,f,c]):this.sendFrame(s.frame(a,f),c)}send(a,b,c){let d,e,f=this._extensions[h.extensionName],g=b.binary?2:1,i=b.compress;"string"==typeof a?(d=Buffer.byteLength(a),e=!1):l(a)?(d=a.size,e=!1):(d=(a=o(a)).length,e=o.readOnly),this._firstFragment?(this._firstFragment=!1,i&&f&&f.params[f._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=d>=f._threshold),this._compress=i):(i=!1,g=0),b.fin&&(this._firstFragment=!0);let j={[p]:d,fin:b.fin,generateMask:this._generateMask,mask:b.mask,maskBuffer:this._maskBuffer,opcode:g,readOnly:e,rsv1:i};l(a)?0!==this._state?this.enqueue([this.getBlobData,a,this._compress,j,c]):this.getBlobData(a,this._compress,j,c):0!==this._state?this.enqueue([this.dispatch,a,this._compress,j,c]):this.dispatch(a,this._compress,j,c)}getBlobData(a,b,c,d){this._bufferedBytes+=c[p],this._state=2,a.arrayBuffer().then(a=>{if(this._socket.destroyed){let a=Error("The socket was closed while the blob was being read");process.nextTick(t,this,a,d);return}this._bufferedBytes-=c[p];let e=o(a);b?this.dispatch(e,b,c,d):(this._state=0,this.sendFrame(s.frame(e,c),d),this.dequeue())}).catch(a=>{process.nextTick(u,this,a,d)})}dispatch(a,b,c,d){if(!b)return void this.sendFrame(s.frame(a,c),d);let e=this._extensions[h.extensionName];this._bufferedBytes+=c[p],this._state=1,e.compress(a,c.fin,(a,b)=>{this._socket.destroyed?t(this,Error("The socket was closed while data was being compressed"),d):(this._bufferedBytes-=c[p],this._state=0,c.readOnly=!1,this.sendFrame(s.frame(b,c),d),this.dequeue())})}dequeue(){for(;0===this._state&&this._queue.length;){let a=this._queue.shift();this._bufferedBytes-=a[3][p],Reflect.apply(a[0],this,a.slice(1))}}enqueue(a){this._bufferedBytes+=a[3][p],this._queue.push(a)}sendFrame(a,b){2===a.length?(this._socket.cork(),this._socket.write(a[0]),this._socket.write(a[1],b),this._socket.uncork()):this._socket.write(a[0],b)}}function t(a,b,c){"function"==typeof c&&c(b);for(let c=0;c<a._queue.length;c++){let d=a._queue[c],e=d[d.length-1];"function"==typeof e&&e(b)}}function u(a,b,c){t(a,b,c),a.onerror(b)}b.exports=s},25841,(a,b,c)=>{"use strict";let{kForOnEventAttribute:d,kListener:e}=a.r(63046),f=Symbol("kCode"),g=Symbol("kData"),h=Symbol("kError"),i=Symbol("kMessage"),j=Symbol("kReason"),k=Symbol("kTarget"),l=Symbol("kType"),m=Symbol("kWasClean");class n{constructor(a){this[k]=null,this[l]=a}get target(){return this[k]}get type(){return this[l]}}Object.defineProperty(n.prototype,"target",{enumerable:!0}),Object.defineProperty(n.prototype,"type",{enumerable:!0});class o extends n{constructor(a,b={}){super(a),this[f]=void 0===b.code?0:b.code,this[j]=void 0===b.reason?"":b.reason,this[m]=void 0!==b.wasClean&&b.wasClean}get code(){return this[f]}get reason(){return this[j]}get wasClean(){return this[m]}}Object.defineProperty(o.prototype,"code",{enumerable:!0}),Object.defineProperty(o.prototype,"reason",{enumerable:!0}),Object.defineProperty(o.prototype,"wasClean",{enumerable:!0});class p extends n{constructor(a,b={}){super(a),this[h]=void 0===b.error?null:b.error,this[i]=void 0===b.message?"":b.message}get error(){return this[h]}get message(){return this[i]}}Object.defineProperty(p.prototype,"error",{enumerable:!0}),Object.defineProperty(p.prototype,"message",{enumerable:!0});class q extends n{constructor(a,b={}){super(a),this[g]=void 0===b.data?null:b.data}get data(){return this[g]}}function r(a,b,c){"object"==typeof a&&a.handleEvent?a.handleEvent.call(a,c):a.call(b,c)}Object.defineProperty(q.prototype,"data",{enumerable:!0}),b.exports={CloseEvent:o,ErrorEvent:p,Event:n,EventTarget:{addEventListener(a,b,c={}){let f;for(let f of this.listeners(a))if(!c[d]&&f[e]===b&&!f[d])return;if("message"===a)f=function(a,c){let d=new q("message",{data:c?a:a.toString()});d[k]=this,r(b,this,d)};else if("close"===a)f=function(a,c){let d=new o("close",{code:a,reason:c.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});d[k]=this,r(b,this,d)};else if("error"===a)f=function(a){let c=new p("error",{error:a,message:a.message});c[k]=this,r(b,this,c)};else{if("open"!==a)return;f=function(){let a=new n("open");a[k]=this,r(b,this,a)}}f[d]=!!c[d],f[e]=b,c.once?this.once(a,f):this.on(a,f)},removeEventListener(a,b){for(let c of this.listeners(a))if(c[e]===b&&!c[d]){this.removeListener(a,c);break}}},MessageEvent:q}},15251,(a,b,c)=>{"use strict";let{tokenChars:d}=a.r(42673);function e(a,b,c){void 0===a[b]?a[b]=[c]:a[b].push(c)}b.exports={format:function(a){return Object.keys(a).map(b=>{let c=a[b];return Array.isArray(c)||(c=[c]),c.map(a=>[b].concat(Object.keys(a).map(b=>{let c=a[b];return Array.isArray(c)||(c=[c]),c.map(a=>!0===a?b:`${b}=${a}`).join("; ")})).join("; ")).join(", ")}).join(", ")},parse:function(a){let b,c,f=Object.create(null),g=Object.create(null),h=!1,i=!1,j=!1,k=-1,l=-1,m=-1,n=0;for(;n<a.length;n++)if(l=a.charCodeAt(n),void 0===b)if(-1===m&&1===d[l])-1===k&&(k=n);else if(0!==n&&(32===l||9===l))-1===m&&-1!==k&&(m=n);else if(59===l||44===l){if(-1===k)throw SyntaxError(`Unexpected character at index ${n}`);-1===m&&(m=n);let c=a.slice(k,m);44===l?(e(f,c,g),g=Object.create(null)):b=c,k=m=-1}else throw SyntaxError(`Unexpected character at index ${n}`);else if(void 0===c)if(-1===m&&1===d[l])-1===k&&(k=n);else if(32===l||9===l)-1===m&&-1!==k&&(m=n);else if(59===l||44===l){if(-1===k)throw SyntaxError(`Unexpected character at index ${n}`);-1===m&&(m=n),e(g,a.slice(k,m),!0),44===l&&(e(f,b,g),g=Object.create(null),b=void 0),k=m=-1}else if(61===l&&-1!==k&&-1===m)c=a.slice(k,n),k=m=-1;else throw SyntaxError(`Unexpected character at index ${n}`);else if(i){if(1!==d[l])throw SyntaxError(`Unexpected character at index ${n}`);-1===k?k=n:h||(h=!0),i=!1}else if(j)if(1===d[l])-1===k&&(k=n);else if(34===l&&-1!==k)j=!1,m=n;else if(92===l)i=!0;else throw SyntaxError(`Unexpected character at index ${n}`);else if(34===l&&61===a.charCodeAt(n-1))j=!0;else if(-1===m&&1===d[l])-1===k&&(k=n);else if(-1!==k&&(32===l||9===l))-1===m&&(m=n);else if(59===l||44===l){if(-1===k)throw SyntaxError(`Unexpected character at index ${n}`);-1===m&&(m=n);let d=a.slice(k,m);h&&(d=d.replace(/\\/g,""),h=!1),e(g,c,d),44===l&&(e(f,b,g),g=Object.create(null),b=void 0),c=void 0,k=m=-1}else throw SyntaxError(`Unexpected character at index ${n}`);if(-1===k||j||32===l||9===l)throw SyntaxError("Unexpected end of input");-1===m&&(m=n);let o=a.slice(k,m);return void 0===b?e(f,o,g):(void 0===c?e(g,o,!0):h?e(g,c,o.replace(/\\/g,"")):e(g,c,o),e(f,b,g)),f}}},50842,(a,b,c)=>{"use strict";let d=a.r(27699),e=a.r(24836),f=a.r(21517),g=a.r(4446),h=a.r(55004),{randomBytes:i,createHash:j}=a.r(54799),{Duplex:k,Readable:l}=a.r(88947),{URL:m}=a.r(92509),n=a.r(31276),o=a.r(28719),p=a.r(63349),{isBlob:q}=a.r(42673),{BINARY_TYPES:r,CLOSE_TIMEOUT:s,EMPTY_BUFFER:t,GUID:u,kForOnEventAttribute:v,kListener:w,kStatusCode:x,kWebSocket:y,NOOP:z}=a.r(63046),{EventTarget:{addEventListener:A,removeEventListener:B}}=a.r(25841),{format:C,parse:D}=a.r(15251),{toBuffer:E}=a.r(40338),F=Symbol("kAborted"),G=[8,13],H=["CONNECTING","OPEN","CLOSING","CLOSED"],I=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;class J extends d{constructor(a,b,c){super(),this._binaryType=r[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=t,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=J.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==a?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===b?b=[]:Array.isArray(b)||("object"==typeof b&&null!==b?(c=b,b=[]):b=[b]),function a(b,c,d,g){let h,k,l,o,p={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:s,protocolVersion:G[1],maxBufferedChunks:262144,maxFragments:16384,maxPayload:0x6400000,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...g,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(b._autoPong=p.autoPong,b._closeTimeout=p.closeTimeout,!G.includes(p.protocolVersion))throw RangeError(`Unsupported protocol version: ${p.protocolVersion} (supported versions: ${G.join(", ")})`);if(c instanceof m)h=c;else try{h=new m(c)}catch{throw SyntaxError(`Invalid URL: ${c}`)}"http:"===h.protocol?h.protocol="ws:":"https:"===h.protocol&&(h.protocol="wss:"),b._url=h.href;let q="wss:"===h.protocol,r="ws+unix:"===h.protocol;if("ws:"===h.protocol||q||r?r&&!h.pathname?k="The URL's pathname is empty":h.hash&&(k="The URL contains a fragment identifier"):k='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"',k){let a=SyntaxError(k);if(0!==b._redirects)return void K(b,a);throw a}let t=q?443:80,v=i(16).toString("base64"),w=q?e.request:f.request,x=new Set;if(p.createConnection=p.createConnection||(q?M:L),p.defaultPort=p.defaultPort||t,p.port=h.port||t,p.host=h.hostname.startsWith("[")?h.hostname.slice(1,-1):h.hostname,p.headers={...p.headers,"Sec-WebSocket-Version":p.protocolVersion,"Sec-WebSocket-Key":v,Connection:"Upgrade",Upgrade:"websocket"},p.path=h.pathname+h.search,p.timeout=p.handshakeTimeout,p.perMessageDeflate&&(l=new n({...p.perMessageDeflate,isServer:!1,maxPayload:p.maxPayload}),p.headers["Sec-WebSocket-Extensions"]=C({[n.extensionName]:l.offer()})),d.length){for(let a of d){if("string"!=typeof a||!I.test(a)||x.has(a))throw SyntaxError("An invalid or duplicated subprotocol was specified");x.add(a)}p.headers["Sec-WebSocket-Protocol"]=d.join(",")}if(p.origin&&(p.protocolVersion<13?p.headers["Sec-WebSocket-Origin"]=p.origin:p.headers.Origin=p.origin),(h.username||h.password)&&(p.auth=`${h.username}:${h.password}`),r){let a=p.path.split(":");p.socketPath=a[0],p.path=a[1]}if(p.followRedirects){if(0===b._redirects){b._originalIpc=r,b._originalSecure=q,b._originalHostOrSocketPath=r?p.socketPath:h.host;let a=g&&g.headers;if(g={...g,headers:{}},a)for(let[b,c]of Object.entries(a))g.headers[b.toLowerCase()]=c}else if(0===b.listenerCount("redirect")){let a=r?!!b._originalIpc&&p.socketPath===b._originalHostOrSocketPath:!b._originalIpc&&h.host===b._originalHostOrSocketPath;a&&(!b._originalSecure||q)||(delete p.headers.authorization,delete p.headers.cookie,a||delete p.headers.host,p.auth=void 0)}p.auth&&!g.headers.authorization&&(g.headers.authorization="Basic "+Buffer.from(p.auth).toString("base64")),o=b._req=w(p),b._redirects&&b.emit("redirect",b.url,o)}else o=b._req=w(p);p.timeout&&o.on("timeout",()=>{N(b,o,"Opening handshake has timed out")}),o.on("error",a=>{null===o||o[F]||(o=b._req=null,K(b,a))}),o.on("response",e=>{let f=e.headers.location,h=e.statusCode;if(f&&p.followRedirects&&h>=300&&h<400){let e;if(++b._redirects>p.maxRedirects)return void N(b,o,"Maximum redirects exceeded");o.abort();try{e=new m(f,c)}catch(a){K(b,SyntaxError(`Invalid URL: ${f}`));return}a(b,e,d,g)}else b.emit("unexpected-response",o,e)||N(b,o,`Unexpected server response: ${e.statusCode}`)}),o.on("upgrade",(a,c,d)=>{let e;if(b.emit("upgrade",a),b.readyState!==J.CONNECTING)return;o=b._req=null;let f=a.headers.upgrade;if(void 0===f||"websocket"!==f.toLowerCase())return void N(b,c,"Invalid Upgrade header");let g=j("sha1").update(v+u).digest("base64");if(a.headers["sec-websocket-accept"]!==g)return void N(b,c,"Invalid Sec-WebSocket-Accept header");let h=a.headers["sec-websocket-protocol"];if(void 0!==h?x.size?x.has(h)||(e="Server sent an invalid subprotocol"):e="Server sent a subprotocol but none was requested":x.size&&(e="Server sent no subprotocol"),e)return void N(b,c,e);h&&(b._protocol=h);let i=a.headers["sec-websocket-extensions"];if(void 0!==i){let a;if(!l)return void N(b,c,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");try{a=D(i)}catch(a){N(b,c,"Invalid Sec-WebSocket-Extensions header");return}let d=Object.keys(a);if(1!==d.length||d[0]!==n.extensionName)return void N(b,c,"Server indicated an extension that was not requested");try{l.accept(a[n.extensionName])}catch(a){N(b,c,"Invalid Sec-WebSocket-Extensions header");return}b._extensions[n.extensionName]=l}b.setSocket(c,d,{allowSynchronousEvents:p.allowSynchronousEvents,generateMask:p.generateMask,maxBufferedChunks:p.maxBufferedChunks,maxFragments:p.maxFragments,maxPayload:p.maxPayload,skipUTF8Validation:p.skipUTF8Validation})}),p.finishRequest?p.finishRequest(o,b):o.end()}(this,a,b,c)):(this._autoPong=c.autoPong,this._closeTimeout=c.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(a){r.includes(a)&&(this._binaryType=a,this._receiver&&(this._receiver._binaryType=a))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(a,b,c){let d=new o({allowSynchronousEvents:c.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:c.maxBufferedChunks,maxFragments:c.maxFragments,maxPayload:c.maxPayload,skipUTF8Validation:c.skipUTF8Validation}),e=new p(a,this._extensions,c.generateMask);this._receiver=d,this._sender=e,this._socket=a,d[y]=this,e[y]=this,a[y]=this,d.on("conclude",P),d.on("drain",Q),d.on("error",R),d.on("message",T),d.on("ping",U),d.on("pong",V),e.onerror=X,a.setTimeout&&a.setTimeout(0),a.setNoDelay&&a.setNoDelay(),b.length>0&&a.unshift(b),a.on("close",Z),a.on("data",$),a.on("end",_),a.on("error",aa),this._readyState=J.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=J.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[n.extensionName]&&this._extensions[n.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=J.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(a,b){if(this.readyState!==J.CLOSED){if(this.readyState===J.CONNECTING)return void N(this,this._req,"WebSocket was closed before the connection was established");if(this.readyState===J.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=J.CLOSING,this._sender.close(a,b,!this._isServer,a=>{!a&&(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Y(this)}}pause(){this.readyState!==J.CONNECTING&&this.readyState!==J.CLOSED&&(this._paused=!0,this._socket.pause())}ping(a,b,c){if(this.readyState===J.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");("function"==typeof a?(c=a,a=b=void 0):"function"==typeof b&&(c=b,b=void 0),"number"==typeof a&&(a=a.toString()),this.readyState!==J.OPEN)?O(this,a,c):(void 0===b&&(b=!this._isServer),this._sender.ping(a||t,b,c))}pong(a,b,c){if(this.readyState===J.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");("function"==typeof a?(c=a,a=b=void 0):"function"==typeof b&&(c=b,b=void 0),"number"==typeof a&&(a=a.toString()),this.readyState!==J.OPEN)?O(this,a,c):(void 0===b&&(b=!this._isServer),this._sender.pong(a||t,b,c))}resume(){this.readyState!==J.CONNECTING&&this.readyState!==J.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(a,b,c){if(this.readyState===J.CONNECTING)throw Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof b&&(c=b,b={}),"number"==typeof a&&(a=a.toString()),this.readyState!==J.OPEN)return void O(this,a,c);let d={binary:"string"!=typeof a,mask:!this._isServer,compress:!0,fin:!0,...b};this._extensions[n.extensionName]||(d.compress=!1),this._sender.send(a||t,d,c)}terminate(){if(this.readyState!==J.CLOSED){if(this.readyState===J.CONNECTING)return void N(this,this._req,"WebSocket was closed before the connection was established");this._socket&&(this._readyState=J.CLOSING,this._socket.destroy())}}}function K(a,b){a._readyState=J.CLOSING,a._errorEmitted=!0,a.emit("error",b),a.emitClose()}function L(a){return a.path=a.socketPath,g.connect(a)}function M(a){return a.path=void 0,a.servername||""===a.servername||(a.servername=g.isIP(a.host)?"":a.host),h.connect(a)}function N(a,b,c){a._readyState=J.CLOSING;let d=Error(c);Error.captureStackTrace(d,N),b.setHeader?(b[F]=!0,b.abort(),b.socket&&!b.socket.destroyed&&b.socket.destroy(),process.nextTick(K,a,d)):(b.destroy(d),b.once("error",a.emit.bind(a,"error")),b.once("close",a.emitClose.bind(a)))}function O(a,b,c){if(b){let c=q(b)?b.size:E(b).length;a._socket?a._sender._bufferedBytes+=c:a._bufferedAmount+=c}if(c){let b=Error(`WebSocket is not open: readyState ${a.readyState} (${H[a.readyState]})`);process.nextTick(c,b)}}function P(a,b){let c=this[y];c._closeFrameReceived=!0,c._closeMessage=b,c._closeCode=a,void 0!==c._socket[y]&&(c._socket.removeListener("data",$),process.nextTick(W,c._socket),1005===a?c.close():c.close(a,b))}function Q(){let a=this[y];a.isPaused||a._socket.resume()}function R(a){let b=this[y];void 0!==b._socket[y]&&(b._socket.removeListener("data",$),process.nextTick(W,b._socket),b.close(a[x])),b._errorEmitted||(b._errorEmitted=!0,b.emit("error",a))}function S(){this[y].emitClose()}function T(a,b){this[y].emit("message",a,b)}function U(a){let b=this[y];b._autoPong&&b.pong(a,!this._isServer,z),b.emit("ping",a)}function V(a){this[y].emit("pong",a)}function W(a){a.resume()}function X(a){let b=this[y];b.readyState!==J.CLOSED&&(b.readyState===J.OPEN&&(b._readyState=J.CLOSING,Y(b)),this._socket.end(),b._errorEmitted||(b._errorEmitted=!0,b.emit("error",a)))}function Y(a){a._closeTimer=setTimeout(a._socket.destroy.bind(a._socket),a._closeTimeout)}function Z(){let a=this[y];if(this.removeListener("close",Z),this.removeListener("data",$),this.removeListener("end",_),a._readyState=J.CLOSING,!this._readableState.endEmitted&&!a._closeFrameReceived&&!a._receiver._writableState.errorEmitted&&0!==this._readableState.length){let b=this.read(this._readableState.length);a._receiver.write(b)}a._receiver.end(),this[y]=void 0,clearTimeout(a._closeTimer),a._receiver._writableState.finished||a._receiver._writableState.errorEmitted?a.emitClose():(a._receiver.on("error",S),a._receiver.on("finish",S))}function $(a){this[y]._receiver.write(a)||this.pause()}function _(){let a=this[y];a._readyState=J.CLOSING,a._receiver.end(),this.end()}function aa(){let a=this[y];this.removeListener("error",aa),this.on("error",z),a&&(a._readyState=J.CLOSING,this.destroy())}Object.defineProperty(J,"CONNECTING",{enumerable:!0,value:H.indexOf("CONNECTING")}),Object.defineProperty(J.prototype,"CONNECTING",{enumerable:!0,value:H.indexOf("CONNECTING")}),Object.defineProperty(J,"OPEN",{enumerable:!0,value:H.indexOf("OPEN")}),Object.defineProperty(J.prototype,"OPEN",{enumerable:!0,value:H.indexOf("OPEN")}),Object.defineProperty(J,"CLOSING",{enumerable:!0,value:H.indexOf("CLOSING")}),Object.defineProperty(J.prototype,"CLOSING",{enumerable:!0,value:H.indexOf("CLOSING")}),Object.defineProperty(J,"CLOSED",{enumerable:!0,value:H.indexOf("CLOSED")}),Object.defineProperty(J.prototype,"CLOSED",{enumerable:!0,value:H.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(a=>{Object.defineProperty(J.prototype,a,{enumerable:!0})}),["open","error","close","message"].forEach(a=>{Object.defineProperty(J.prototype,`on${a}`,{enumerable:!0,get(){for(let b of this.listeners(a))if(b[v])return b[w];return null},set(b){for(let b of this.listeners(a))if(b[v]){this.removeListener(a,b);break}"function"==typeof b&&this.addEventListener(a,b,{[v]:!0})}})}),J.prototype.addEventListener=A,J.prototype.removeEventListener=B,b.exports=J},31594,(a,b,c)=>{"use strict";a.r(50842);let{Duplex:d}=a.r(88947);function e(a){a.emit("close")}function f(){!this.destroyed&&this._writableState.finished&&this.destroy()}function g(a){this.removeListener("error",g),this.destroy(),0===this.listenerCount("error")&&this.emit("error",a)}b.exports=function(a,b){let c=!0,h=new d({...b,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return a.on("message",function(b,c){let d=!c&&h._readableState.objectMode?b.toString():b;h.push(d)||a.pause()}),a.once("error",function(a){h.destroyed||(c=!1,h.destroy(a))}),a.once("close",function(){h.destroyed||h.push(null)}),h._destroy=function(b,d){if(a.readyState===a.CLOSED){d(b),process.nextTick(e,h);return}let f=!1;a.once("error",function(a){f=!0,d(a)}),a.once("close",function(){f||d(b),process.nextTick(e,h)}),c&&a.terminate()},h._final=function(b){a.readyState===a.CONNECTING?a.once("open",function(){h._final(b)}):null!==a._socket&&(a._socket._writableState.finished?(b(),h._readableState.endEmitted&&h.destroy()):(a._socket.once("finish",function(){b()}),a.close()))},h._read=function(){a.isPaused&&a.resume()},h._write=function(b,c,d){a.readyState===a.CONNECTING?a.once("open",function(){h._write(b,c,d)}):a.send(b,d)},h.on("end",f),h.on("error",g),h}},54129,(a,b,c)=>{"use strict";let{tokenChars:d}=a.r(42673);b.exports={parse:function(a){let b=new Set,c=-1,e=-1,f=0;for(;f<a.length;f++){let g=a.charCodeAt(f);if(-1===e&&1===d[g])-1===c&&(c=f);else if(0!==f&&(32===g||9===g))-1===e&&-1!==c&&(e=f);else if(44===g){if(-1===c)throw SyntaxError(`Unexpected character at index ${f}`);-1===e&&(e=f);let d=a.slice(c,e);if(b.has(d))throw SyntaxError(`The "${d}" subprotocol is duplicated`);b.add(d),c=e=-1}else throw SyntaxError(`Unexpected character at index ${f}`)}if(-1===c||-1!==e)throw SyntaxError("Unexpected end of input");let g=a.slice(c,f);if(b.has(g))throw SyntaxError(`The "${g}" subprotocol is duplicated`);return b.add(g),b}}},36972,(a,b,c)=>{"use strict";let d=a.r(27699),e=a.r(21517),{Duplex:f}=a.r(88947),{createHash:g}=a.r(54799),h=a.r(15251),i=a.r(31276),j=a.r(54129),k=a.r(50842),{CLOSE_TIMEOUT:l,GUID:m,kWebSocket:n}=a.r(63046),o=/^[+/0-9A-Za-z]{22}==$/;function p(a){a._state=2,a.emit("close")}function q(){this.destroy()}function r(a,b,c,d){c=c||e.STATUS_CODES[b],d={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(c),...d},a.once("finish",a.destroy),a.end(`HTTP/1.1 ${b} ${e.STATUS_CODES[b]}\r
|
|
2
|
-
`+Object.keys(d).map(a=>`${a}: ${d[a]}`).join("\r\n")+"\r\n\r\n"+c)}function s(a,b,c,d,e,f){if(a.listenerCount("wsClientError")){let d=Error(e);Error.captureStackTrace(d,s),a.emit("wsClientError",d,c,b)}else r(c,d,e,f)}b.exports=class extends d{constructor(a,b){if(super(),null==(a={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:262144,maxFragments:16384,maxPayload:0x6400000,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:l,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:k,...a}).port&&!a.server&&!a.noServer||null!=a.port&&(a.server||a.noServer)||a.server&&a.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=a.port?(this._server=e.createServer((a,b)=>{let c=e.STATUS_CODES[426];b.writeHead(426,{"Content-Length":c.length,"Content-Type":"text/plain"}),b.end(c)}),this._server.listen(a.port,a.host,a.backlog,b)):a.server&&(this._server=a.server),this._server){const a=this.emit.bind(this,"connection");this._removeListeners=function(a,b){for(let c of Object.keys(b))a.on(c,b[c]);return function(){for(let c of Object.keys(b))a.removeListener(c,b[c])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(b,c,d)=>{this.handleUpgrade(b,c,d,a)}})}!0===a.perMessageDeflate&&(a.perMessageDeflate={}),a.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=a,this._state=0}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(a){if(2===this._state){a&&this.once("close",()=>{a(Error("The server is not running"))}),process.nextTick(p,this);return}if(a&&this.once("close",a),1!==this._state)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(p,this);else{let a=this._server;this._removeListeners(),this._removeListeners=this._server=null,a.close(()=>{p(this)})}}shouldHandle(a){if(this.options.path){let b=a.url.indexOf("?");if((-1!==b?a.url.slice(0,b):a.url)!==this.options.path)return!1}return!0}handleUpgrade(a,b,c,d){b.on("error",q);let e=a.headers["sec-websocket-key"],f=a.headers.upgrade,g=+a.headers["sec-websocket-version"];if("GET"!==a.method)return void s(this,a,b,405,"Invalid HTTP method");if(void 0===f||"websocket"!==f.toLowerCase())return void s(this,a,b,400,"Invalid Upgrade header");if(void 0===e||!o.test(e))return void s(this,a,b,400,"Missing or invalid Sec-WebSocket-Key header");if(13!==g&&8!==g)return void s(this,a,b,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});if(!this.shouldHandle(a))return void r(b,400);let k=a.headers["sec-websocket-protocol"],l=new Set;if(void 0!==k)try{l=j.parse(k)}catch(c){s(this,a,b,400,"Invalid Sec-WebSocket-Protocol header");return}let m=a.headers["sec-websocket-extensions"],n={};if(this.options.perMessageDeflate&&void 0!==m){let c=new i({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let a=h.parse(m);a[i.extensionName]&&(c.accept(a[i.extensionName]),n[i.extensionName]=c)}catch(c){s(this,a,b,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:a.headers[`${8===g?"sec-websocket-origin":"origin"}`],secure:!!(a.socket.authorized||a.socket.encrypted),req:a};if(2===this.options.verifyClient.length)return void this.options.verifyClient(f,(f,g,h,i)=>{if(!f)return r(b,g||401,h,i);this.completeUpgrade(n,e,l,a,b,c,d)});if(!this.options.verifyClient(f))return r(b,401)}this.completeUpgrade(n,e,l,a,b,c,d)}completeUpgrade(a,b,c,d,e,f,j){if(!e.readable||!e.writable)return e.destroy();if(e[n])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return r(e,503);let k=g("sha1").update(b+m).digest("base64"),l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${k}`],o=new this.options.WebSocket(null,void 0,this.options);if(c.size){let a=this.options.handleProtocols?this.options.handleProtocols(c,d):c.values().next().value;a&&(l.push(`Sec-WebSocket-Protocol: ${a}`),o._protocol=a)}if(a[i.extensionName]){let b=a[i.extensionName].params,c=h.format({[i.extensionName]:[b]});l.push(`Sec-WebSocket-Extensions: ${c}`),o._extensions=a}this.emit("headers",l,d),e.write(l.concat("\r\n").join("\r\n")),e.removeListener("error",q),o.setSocket(e,f,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(o),o.on("close",()=>{this.clients.delete(o),this._shouldEmitClose&&!this.clients.size&&process.nextTick(p,this)})),j(o,d)}}},95421,a=>{"use strict";let b,c,d,e;var f,g,h=a.i(56856),i=a.i(55132);function j(a){return JSON.parse(JSON.stringify(a))}function k(a,b){for(let c of a.states??[]){if(c.name===b)return a;let d=k(c,b);if(d)return d}return null}function l(a,b,c){let d=function a(b,c){if(b.name===c)return b;for(let d of b.states??[]){let b=a(d,c);if(b)return b}return null}(a,b);if(!d)throw Error(`applyPatchOps: ${c} references missing state "${b}"`);return d}function m(a,b,c){let d=function(a,b){for(let c of a.events){let a=c.events??[];for(let d=0;d<a.length;d++)if(a[d].id===b)return{source:c,event:a[d],index:d}}return null}(a,b);if(!d)throw Error(`applyPatchOps: ${c} references missing event "${b}"`);return d}function n(a,b){let c=j(a);for(let a of(Array.isArray(c.events)||(c.events=[]),b))switch(a.op){case"settings.update":c.settings={...c.settings,...a.patch},""===c.settings.notes&&delete c.settings.notes;break;case"state.add":{let b=null===a.parent?c.state:l(c.state,a.parent,"state.add");b.states||(b.states=[]);let d=a.index??b.states.length;b.states.splice(d,0,j(a.state));break}case"state.update":{let b=l(c.state,a.name,"state.update");Object.assign(b,a.patch),""===b.notes&&delete b.notes,""===b.prompt&&delete b.prompt;break}case"state.remove":{if(c.state.name===a.name)throw Error(`applyPatchOps: cannot remove root state "${a.name}"`);let b=k(c.state,a.name);if(!b||!b.states)throw Error(`applyPatchOps: state.remove references missing state "${a.name}"`);let d=b.states.findIndex(b=>b.name===a.name);if(d<0)throw Error(`applyPatchOps: state.remove references missing state "${a.name}"`);b.states.splice(d,1),0===b.states.length&&delete b.states;break}case"state.nest":{let b=l(c.state,a.child,"state.nest"),d=l(c.state,a.newParent,"state.nest"),e=k(c.state,a.child);if(!e||!e.states)throw Error(`applyPatchOps: state.nest cannot detach root or missing state "${a.child}"`);let f=e.states.findIndex(b=>b.name===a.child),[g]=e.states.splice(f,1);0===e.states.length&&delete e.states,d.states||(d.states=[]),d.states.push(g??j(b));break}case"eventSource.add":{let b=a.index??c.events.length;c.events.splice(b,0,j(a.source));break}case"eventSource.update":{let b=c.events[a.index];if(!b)throw Error(`applyPatchOps: eventSource.update index ${a.index} out of range`);c.events[a.index]={...b,...a.patch};break}case"eventSource.remove":if(!c.events[a.index])throw Error(`applyPatchOps: eventSource.remove index ${a.index} out of range`);c.events.splice(a.index,1);break;case"event.add":{let b=c.events[a.sourceIndex];if(!b)throw Error(`applyPatchOps: event.add sourceIndex ${a.sourceIndex} out of range`);b.events||(b.events=[]);let d=a.index??b.events.length;b.events.splice(d,0,j(a.event));break}case"event.update":Object.assign(m(c,a.id,"event.update").event,a.patch);break;case"event.remove":{let b=m(c,a.id,"event.remove");b.source.events.splice(b.index,1),0===b.source.events.length&&delete b.source.events;break}case"parameter.add":{let b=m(c,a.eventId,"parameter.add");b.event.parameters||(b.event.parameters=[]);let d=a.index??b.event.parameters.length;b.event.parameters.splice(d,0,j(a.parameter));break}case"parameter.update":{let b=m(c,a.eventId,"parameter.update").event.parameters??[];if(!b[a.index])throw Error(`applyPatchOps: parameter.update index ${a.index} out of range for event "${a.eventId}"`);b[a.index]={...b[a.index],...a.patch};break}case"parameter.remove":{let b=m(c,a.eventId,"parameter.remove"),d=b.event.parameters;if(!d||!d[a.index])throw Error(`applyPatchOps: parameter.remove index ${a.index} out of range for event "${a.eventId}"`);d.splice(a.index,1),0===d.length&&delete b.event.parameters;break}case"transition.add":{let b=l(c.state,a.state,"transition.add");b.transitions||(b.transitions=[]);let d=a.index??b.transitions.length;b.transitions.splice(d,0,j(a.transition));break}case"transition.update":{let b=l(c.state,a.state,"transition.update").transitions??[];if(!b[a.index])throw Error(`applyPatchOps: transition.update index ${a.index} out of range for state "${a.state}"`);b[a.index]={...b[a.index],...a.patch};break}case"transition.remove":{let b=l(c.state,a.state,"transition.remove"),d=b.transitions;if(!d||!d[a.index])throw Error(`applyPatchOps: transition.remove index ${a.index} out of range for state "${a.state}"`);d.splice(a.index,1),0===d.length&&delete b.transitions;break}case"action.add":{let b=l(c.state,a.state,"action.add"),d=b[a.hook]??(b[a.hook]={actions:[]}),e=a.index??d.actions.length;d.actions.splice(e,0,j(a.action));break}case"action.update":{let b=l(c.state,a.state,"action.update")[a.hook];if(!b||!b.actions[a.index])throw Error(`applyPatchOps: action.update index ${a.index} out of range for state "${a.state}" ${a.hook}`);b.actions[a.index]=j(a.action);break}case"action.remove":{let b=l(c.state,a.state,"action.remove"),d=b[a.hook];if(!d||!d.actions[a.index])throw Error(`applyPatchOps: action.remove index ${a.index} out of range for state "${a.state}" ${a.hook}`);d.actions.splice(a.index,1),0===d.actions.length&&delete b[a.hook];break}case"runtime.enter":case"runtime.exit":break;default:throw Error(`applyPatchOps: unknown op ${JSON.stringify(a)}`)}return c}function o(a){let b=[a];for(let c of a.states??[])b.push(...o(c));return b}function p(a){let b=new Map;b.set(a.name,null);let c=a=>{for(let d of a.states??[])b.set(d.name,a.name),c(d)};return c(a),b}function q(a,b){return JSON.stringify(a)===JSON.stringify(b)}function r(a,b,c,d,e){let f=Math.min(c.length,d.length);for(let g=0;g<f;g++)q(c[g],d[g])||e.push({op:"action.update",state:a,hook:b,index:g,action:d[g]});for(let c=f;c<d.length;c++)e.push({op:"action.add",state:a,hook:b,action:d[c],index:c});for(let f=c.length-1;f>=d.length;f--)e.push({op:"action.remove",state:a,hook:b,index:f})}function s(a){let b=0;for(let c=0;c<a.length;c++)b=Math.imul(b,31)+a.charCodeAt(c)|0;let c=(b%360+360)%360;return`hsl(${c}, 65%, 55%)`}let t={hSpacing:220,vSpacing:140,nodeWidth:160,nodeHeight:60,compositeWidth:300,compositeHeight:200,originX:100,originY:120,sweeps:2,includeRoot:!0},u=(a,b)=>`${a}\u0000${b}`;function v(a){let b=new Set,c=[];for(let d of a.states??[])b.has(d.name)||(b.add(d.name),c.push(d));return c}function w(a,b){let c=new Map(a.map(a=>[a,[]]));for(let a of b)c.get(a.from).push(a.to);return c}function x(a,b={}){let c={...t,...b},d="state"in a?a.state:a,e={};if(!d)return e;if(!function a(b,c,d,e,f){let g=v(b);if(0===g.length)return;let h=g.map(a=>a.name),i=new Map(g.map(a=>[a.name,a])),j=function(a){let b=new Set,c=[];for(let d of a)for(let e of d.transitions??[]){let f=e.nextState?function(a,b){for(let c of a){if(c.name===b)return c.name;let a=[...c.states??[],...c.parallel?.states??[]];for(;a.length;){let d=a.pop();if(d.name===b)return c.name;a.push(...d.states??[],...d.parallel?.states??[])}}}(a,e.nextState):void 0;if(!f||f===d.name)continue;let g=u(d.name,f);b.has(g)||(b.add(g),c.push({from:d.name,to:f}))}return c}(g),k=function(a,b){let c=w(a,b),d=new Map(a.map(a=>[a,0])),e=new Set;for(let b of a){if(0!==d.get(b))continue;d.set(b,1);let a=[{node:b,i:0}];for(;a.length>0;){let b=a[a.length-1],f=c.get(b.node);if(b.i<f.length){let c=f[b.i++],g=d.get(c);1===g?e.add(u(b.node,c)):0===g&&(d.set(c,1),a.push({node:c,i:0}))}else d.set(b.node,2),a.pop()}}return e}(h,j),l=j.filter(a=>!k.has(u(a.from,a.to))),m=function(a,b){let c=w(a,b),d=new Map(a.map(a=>[a,0]));for(let a of b)d.set(a.to,(d.get(a.to)??0)+1);let e=new Map(a.map(a=>[a,0])),f=a.filter(a=>0===d.get(a));for(let a=0;a<f.length;a++){let b=f[a];for(let a of c.get(b)){e.set(a,Math.max(e.get(a),e.get(b)+1));let c=d.get(a)-1;d.set(a,c),0===c&&f.push(a)}}return e}(h,l),n=function(a,b,c){let d=new Map(a.map(a=>[a,[]]));for(let a of b)d.get(a.from).push(a.to),d.get(a.to).push(a.from);let e=new Set([c]),f=[c];for(;f.length>0;){let a=f.pop();for(let b of d.get(a)??[])e.has(b)||(e.add(b),f.push(b))}return e}(h,j,h[0]),o=0;for(let a of h)n.has(a)&&(o=Math.max(o,m.get(a)));for(let a of h)n.has(a)||m.set(a,m.get(a)+o+1);let p=Array.from({length:Math.max(...h.map(a=>m.get(a)))+1},()=>[]);for(let a of h)p[m.get(a)].push(a);!function(a,b,c){let d=new Map,e=new Map,f=(a,b,c)=>{let d=a.get(b);d?d.push(c):a.set(b,[c])};for(let a of b)f(d,a.to,a.from),f(e,a.from,a.to);let g=new Map,h=()=>{a.forEach(a=>a.forEach((a,b)=>g.set(a,b)))};h();let i=(a,b)=>{let c=a.map((a,c)=>{let d=(b.get(a)??[]).filter(a=>g.has(a));return{name:a,key:d.length?d.reduce((a,b)=>a+g.get(b),0)/d.length:c,i:c}});c.sort((a,b)=>a.key===b.key?a.i-b.i:a.key-b.key);for(let b=0;b<c.length;b++)a[b]=c[b].name};for(let b=0;b<c;b++){for(let b=1;b<a.length;b++)i(a[b],d),h();for(let b=a.length-2;b>=0;b--)i(a[b],e),h()}}(p,l,e.sweeps);let q=e.hSpacing-e.nodeWidth,r=e.vSpacing-e.nodeHeight,s=a=>Math.max(e.hSpacing,a+q),t=new Map(h.map(a=>{var b;return[a,(b=i.get(a),(b.states?.length??0)>0?{width:e.compositeWidth,height:e.compositeHeight}:{width:e.nodeWidth,height:e.nodeHeight})]})),x=p.map(a=>a.reduce((a,b)=>a+s(t.get(b).width),0)),y=c+Math.max(...x,0)/2,z=d;for(let b of(p.forEach((a,b)=>{let c=y-x[b]/2,d=e.nodeHeight;for(let b of a){let a=t.get(b),e=s(a.width);f[b]={x:Math.round(c+(e-a.width)/2),y:Math.round(z),width:a.width,height:a.height},c+=e,d=Math.max(d,a.height)}z+=d+r}),g)){if((b.states?.length??0)===0)continue;let c=f[b.name];a(b,c.x+20,c.y+40,e,f)}}(d,c.originX,c.originY,c,e),c.includeRoot){let a=v(d).map(a=>e[a.name]).filter(Boolean);if(0===a.length)e[d.name]={x:20,y:20,width:400,height:350};else{let b=Math.min(...a.map(a=>a.x)),c=Math.min(...a.map(a=>a.y)),f=Math.max(...a.map(a=>a.x+a.width)),g=Math.max(...a.map(a=>a.y+a.height));e[d.name]={x:Math.round(b-40),y:Math.round(c-40),width:Math.round(f-b+80),height:Math.round(g-c+80)}}}return e}let y=(a,b)=>a.length*b*.55,z=a=>`[${a.length>32?`${a.slice(0,31).trimEnd()}…`:a}]`,A=a=>({width:Math.max(56,Math.max(y(a.event,11),a.condition?y(z(a.condition),9):0)+16)+16*!!a.glyph,height:a.condition?28:18}),B=a=>({x:a.x+5,y:a.cy-12-3}),C=(a,b)=>a.x<b.x+b.width&&b.x<a.x+a.width&&a.y<b.y+b.height&&b.y<a.y+a.height,D={along:[.5,.36,.64,.24,.76,.14,.86],aside:[0,.6,-.6],across:[0,-1.3,1.3,-2.6,2.6]};function E(a,b,c={}){let{along:d,aside:e,across:f}={...D,...c},g=a.map((a,b)=>({label:a,i:b,width:A(a).width})).sort((a,b)=>a.width===b.width?a.i-b.i:b.width-a.width),h=[];for(let{label:a}of g){let{width:c,height:g}=A(a),i=8*!!a.glyph,j=null,k=1/0;a:for(let l of f)for(let f of e)for(let e of d){let d=a.at(e),m=d.x+f*c,n=d.y+l*g,o={x:m-c/2,y:n-18,width:c,height:g},p=[...h,...b].filter(a=>C(o,a)).length,q={...o,cx:m+i,cy:n,label:a};if(0===p){j=q;break a}p<k&&(k=p,j=q)}j&&h.push(j)}return h}let F=(a,b,c=2.2,d)=>({id:a,paths:b,strokeWidth:c,circles:d}),G=F("signal",["M3 12h10","m13 6 6 6-6 6Z"]),H=[{glyph:F("confirm",["m4 13 5.5 5.5L20 6"],2.4),words:["confirm","approve","accept","commit"]},{glyph:F("complete",["m8 12 3 3 5-6"],2.2,[{cx:12,cy:12,r:8.5}]),words:["complete","finish","done","close"]},{glyph:F("skip",["M4 17c0-6 4.5-9 9-9h6","m15 4 4.5 4-4.5 4"]),words:["skip","ignore","bypass"]},{glyph:F("flag",["M6 21V4","M6 4h12l-3 4.5 3 4.5H6Z"]),words:["flag","mark","revisit","review"]},{glyph:F("advance",["M4 6l8 6-8 6Z","M13 6l7 6-7 6Z"]),words:["advance","next","forward","step"]},{glyph:F("pause",["M9 5v14M15 5v14"],2.6),words:["pause","hold","suspend","stop"]},{glyph:F("play",["M7 4.5 19 12 7 19.5Z"]),words:["resume","start","begin","play","run"]},{glyph:F("clock",["M12 7.5V12l3.5 2.5"],2.2,[{cx:12,cy:12,r:8.5}]),words:["timeout","expire","tick","delay","after","elapse"]},{glyph:F("change",["M3 14c3-6 6-6 9 0s6 6 9 0"]),words:["change","update","edit","modify","set"]}];[...H.map(a=>a.glyph)];let I=a=>Math.round(100*a)/100;function J(a,b,c,d){return{p0:a,p1:b,p2:c,p3:d,path:`M ${I(a.x)} ${I(a.y)} C ${I(b.x)} ${I(b.y)}, ${I(c.x)} ${I(c.y)}, ${I(d.x)} ${I(d.y)}`,at:e=>{let f=1-e,g=f*f*f,h=3*f*f*e,i=3*f*e*e,j=e*e*e;return{x:g*a.x+h*b.x+i*c.x+j*d.x,y:g*a.y+h*b.y+i*c.y+j*d.y}}}}function K(a,b){let c=a.map(({from:a,to:c})=>{var d,e;return a===c?null:(d=b(a),(e=b(c)).y>=d.y+d.height?["bottom","top"]:e.y+e.height<=d.y?["top","bottom"]:e.x>=d.x+d.width?["right","left"]:e.x+e.width<=d.x?["left","right"]:["bottom","top"])}),d=new Map,e=(a,b,c)=>{let e=`${a}\0${b}`,f=d.get(e);f?f.push(c):d.set(e,[c])},f=(a,b)=>"top"===b||"bottom"===b?a.x+a.width/2:a.y+a.height/2;a.forEach((a,d)=>{let g=c[d];if(!g)return;let[h,i]=g;e(a.from,h,{edge:d,toward:f(b(a.to),h),role:"out"}),e(a.to,i,{edge:d,toward:f(b(a.from),i),role:"in"})});let g=new Map;for(let[a,c]of d){let[d,e]=a.split("\0"),f=b(d),h=[...c].sort((a,b)=>a.toward===b.toward?a.edge-b.edge:a.toward-b.toward);h.forEach((a,b)=>{g.set(`${a.edge}\0${a.role}`,function(a,b,c,d){let e="top"===b||"bottom"===b,f=e?a.width:a.height,g=e?a.x+a.width/2:a.y+a.height/2,h=d>1?Math.min(.72*f,40*(d-1)):0,i=d>1?g-h/2+h*c/(d-1):g;return"top"===b?{x:i,y:a.y}:"bottom"===b?{x:i,y:a.y+a.height}:"left"===b?{x:a.x,y:i}:{x:a.x+a.width,y:i}}(f,e,b,h.length))})}return a.map((a,d)=>{let e=c[d];if(!e){var f;let c,d,e;return c=(f=b(a.from)).x+f.width,d=f.y+.35*f.height,J({x:c,y:d},{x:c+44,y:d-12},{x:c+44,y:(e=f.y+.65*f.height)+12},{x:c,y:e})}let h=g.get(`${d}\0out`),i=g.get(`${d}\0in`);var j=e[0];if("top"===j||"bottom"===j){let a=(h.y+i.y)/2;return J(h,{x:h.x,y:a},{x:i.x,y:a},i)}let k=(h.x+i.x)/2;return J(h,{x:k,y:h.y},{x:k,y:i.y},i)})}let L={min:.2,max:2.5},M={x:0,y:0,scale:1};function N(a,b=L){return Number.isFinite(a)?Math.min(b.max,Math.max(b.min,a)):1}function O(a,b,c){return{x:a.x+b,y:a.y+c,scale:a.scale}}function P(a,b,c,d=L){return Q(a,a.scale*b,c,d)}function Q(a,b,c,d=L){let e=N(b,d);if(e===a.scale)return a;let f={x:(c.x-a.x)/a.scale,y:(c.y-a.y)/a.scale};return{x:c.x-f.x*e,y:c.y-f.y*e,scale:e}}function R(a,b,c,d={}){let e=d.padding??48,f=d.maxScale??1,g=d.limits??L;if(0===a.length||b<=0||c<=0)return{...M};let h=1/0,i=1/0,j=-1/0,k=-1/0;for(let b of a)h=Math.min(h,b.x),i=Math.min(i,b.y),j=Math.max(j,b.x+b.width),k=Math.max(k,b.y+b.height);let l=Math.max(1,j-h),m=Math.max(1,k-i),n=N(Math.min(f,Math.min(Math.max(1,b-2*e)/l,Math.max(1,c-2*e)/m)),g);return{x:(b-l*n)/2-h*n,y:(c-m*n)/2-i*n,scale:n}}function S(a){return`translate(${a.x} ${a.y}) scale(${a.scale})`}function T(a){let b=new Set,c=[];for(let d of a.states??[])b.has(d.name)||(b.add(d.name),c.push(d));return c}function U(a){return a.stateOf?Array.isArray(a.stateOf)?a.stateOf:[a.stateOf]:[]}let V=["1:1","1:N","N:1","N:M"];function W(a){return!!a&&"object"==typeof a&&Array.isArray(a.entities)&&!("state"in a)}function X(a){let b=[],c=function(a){let b=new Map;for(let c of a.entities??[])c?.name&&!b.has(c.name)&&b.set(c.name,c);return b}(a),d=new Set;for(let[e,f]of(a.entities??[]).entries()){if(!f?.name){b.push({ruleId:"E001",message:`Entity at index ${e} has no name`,element:`entities[${e}]`});continue}d.has(f.name)&&b.push({ruleId:"E001",message:`Duplicate entity name "${f.name}"`,element:f.name}),d.add(f.name);let a=new Set;for(let[d,e]of(f.attributes??[]).entries()){if(!e?.name){b.push({ruleId:"E002",message:`Attribute at index ${d} of "${f.name}" has no name`,element:`${f.name}[${d}]`});continue}let g=`${f.name}.${e.name}`;if(a.has(e.name)&&b.push({ruleId:"E002",message:`Duplicate attribute "${g}"`,element:g}),a.add(e.name),e.references){let a=function(a){let b=a.indexOf(".");return b<0?{entity:a}:{entity:a.slice(0,b),attribute:a.slice(b+1)}}(e.references),d=c.get(a.entity);d?a.attribute&&!(d.attributes??[]).some(b=>b?.name===a.attribute)&&b.push({ruleId:"E005",message:`"${g}" references undefined attribute "${e.references}"`,element:g}):b.push({ruleId:"E005",message:`"${g}" references undefined entity "${a.entity}"`,element:g})}}}for(let[d,e]of(a.relationships??[]).entries()){let a=`relationships[${d}]`;for(let f of["from","to"]){let g=e?.[f];g&&c.has(g)||b.push({ruleId:"E003",message:`Relationship ${d} ${f} names undefined entity "${g??""}"`,element:a})}V.includes(e?.cardinality)||b.push({ruleId:"E004",message:`Relationship ${d} cardinality "${e?.cardinality??""}" is not one of ${V.join(", ")}`,element:a})}return b}function Y(a,b){let c=RegExp(`(?<![\\w.])${b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\.([A-Za-z_]\\w*)\\b(?!\\s*\\()`,"g"),d=[];for(let b of a.matchAll(c))d.includes(b[1])||d.push(b[1]);return d}function Z(a,b){let c=[],d=new Map;for(let a of b.entities??[])a?.name&&!d.has(a.name)&&d.set(a.name,a);let e=a.settings?.name??"",f=a.settings?.objects??[],g=a.state?function a(b){let c=[b];for(let d of b.states??[])c.push(...a(d));for(let d of b.parallel?.states??[])c.push(...a(d));return c}(a.state):[],h=g.flatMap(a=>(a.transitions??[]).map(a=>a.condition??"")),i=new Map;for(let a of f){let e=d.get(a.class);if(e){i.set(a.instance,e);continue}h.some(b=>Y(b,a.instance).length>0)&&c.push({ruleId:"L001",message:`Object "${a.instance}" has class "${a.class}", which is not an entity in "${b.settings?.name??""}", and a guard reads its fields`,element:a.instance})}for(let a of g)for(let b of a.transitions??[])if(b.condition)for(let[d,e]of i)for(let f of Y(b.condition,d))(e.attributes??[]).some(a=>a?.name===f)||c.push({ruleId:"L002",message:`Guard on ${a.name} [${b.event}] reads "${d}.${f}", which is not an attribute of "${e.name}"`,element:a.name});if(e){let a=new Set([...i.values()].map(a=>a.name));for(let d of b.entities??[])for(let b of d?.attributes??[])b&&U(b).includes(e)&&(a.has(d.name)||c.push({ruleId:"L003",message:`"${d.name}.${b.name}" stores the state of "${e}", but "${d.name}" is not the class of any of that machine's objects`,element:`${d.name}.${b.name}`}))}return c}function $(a,b){let c=[];for(let d of a.entities??[])for(let a of d?.attributes??[])if(a)for(let e of U(a))b.includes(e)||c.push({ruleId:"L004",message:`"${d.name}.${a.name}" stores the state of "${e}", which is not among the machines checked (${b.join(", ")||"none"})`,element:`${d.name}.${a.name}`});return c}let _=a=>({settings:{...a.settings},entities:(a.entities??[]).map(a=>({...a,attributes:(a.attributes??[]).map(a=>({...a}))})),relationships:(a.relationships??[]).map(a=>({...a}))});function aa(a,b){let c=a.entities.find(a=>a.name===b);if(!c){let c=a.entities.map(a=>a.name).join(", ")||"none";throw Error(`Entity '${b}' not found. Entities: ${c}.`)}return c}function ab(a){return Object.fromEntries(Object.entries(a).filter(([,a])=>void 0!==a))}function ac(a,b){if(!b.name?.trim())throw Error("An entity needs a name.");let c=_(a);if(c.entities.some(a=>a.name===b.name))throw Error(`Entity '${b.name}' already exists.`);return c.entities.push(ab({...b,attributes:b.attributes??[]})),c}function ad(a,b,c){let d=_(a),e=aa(d,b);return void 0!==c.notes&&(c.notes.trim()?e.notes=c.notes:delete e.notes),void 0!==c.description&&(c.description?e.description=c.description:delete e.description),void 0!==c.weak&&(c.weak?e.weak=!0:delete e.weak),d}let ae=a=>(a.attributes??[]).filter(a=>a?.name);function af(a){return Math.max(110,Math.ceil(8.4*(a.name??"").length+36))}function ag(a){return Math.max(38,Math.ceil(3.5*Math.max(0,...a.map(a=>a.name.length))+14))}let ah=a=>Math.ceil(a/2);function ai(a){let b=ae(a),c=af(a);return 0===b.length?{width:c,height:40}:{width:c+2*(34+2*ag(b)),height:Math.max(40,32*ah(b.length))}}let aj={"1:1":"||--||","1:N":"||--o{","N:1":"}o--||","N:M":"}o--o{"},ak=/^[A-Za-z_][A-Za-z0-9_-]*$/,al=a=>ak.test(a)?a:`"${a.replace(/"/g,"'")}"`,am=(a,b)=>{let c=a.trim().replace(/[^A-Za-z0-9_()[\]-]+/g,"_").replace(/^_+|_+$/g,"");return/^[A-Za-z_]/.test(c)?c:c?`_${c}`:b},an=a=>`"${a.replace(/"/g,"'")}"`,ao=["settings","states","parallel","entities","participants","messages","fragments","members","state"];function ap(a){let b=!1,c=a=>{if(Array.isArray(a)){let b=!1,d=a.map(a=>{let d=c(a);return d!==a&&(b=!0),d});return b?d:a}if(!a||"object"!=typeof a)return a;let d=null;if("notes"in a&&"string"!=typeof a.notes&&void 0!==a.notes){d={...a};let c=function(a){if(null!=a)return"string"==typeof a?a:Array.isArray(a)?a.map(a=>"string"==typeof a?a:JSON.stringify(a)).join("\n\n"):JSON.stringify(a)}(a.notes);void 0!==c&&c.trim()?d.notes=c:delete d.notes,b=!0}for(let b of ao){if(!(b in a))continue;let e=(d??a)[b],f=c(e);f!==e&&((d??={...a})[b]=f)}return d??a},d=c(a);return b?d:a}function aq(a){return`${a.name} : ${a.type}`}function ar(a){let b=(a.attributes??[]).filter(a=>a?.name);return{width:Math.min(340,Math.max(170,Math.ceil(6.6*Math.max(1.15*(a.name??"").length,...b.map(a=>aq(a).length+6.96969696969697))+28))),height:30+20*Math.max(1,b.length)+8}}function as(a){return a.trim().replace(/[\s_]+/g,"-").replace(/[^A-Za-z0-9.-]/g,"").replace(/-{2,}/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,60)}let at=["alt","opt","loop"];function au(a){return!!a&&"object"==typeof a&&Array.isArray(a.participants)&&Array.isArray(a.messages)&&!("state"in a)&&!("entities"in a)}function av(a,b,c){return{settings:c?{namespace:a,name:b,description:c}:{namespace:a,name:b},participants:[],messages:[]}}function aw(a,b){return null===a?String(b+1):`f${a+1}.${b+1}`}function ax(a,b){if(/^\d+$/.exec(b)){let c=Number(b)-1,d=a.messages?.[c];return d?{fragment:null,index:c,message:d}:null}let c=/^f(\d+)\.(\d+)$/.exec(b);if(!c)return null;let d=Number(c[1])-1,e=Number(c[2])-1,f=a.fragments?.[d]?.messages?.[e];return f?{fragment:d,index:e,message:f}:null}function ay(a){let b=[];return(a.messages??[]).forEach((a,c)=>b.push({ref:aw(null,c),message:a,fragment:null})),(a.fragments??[]).forEach((a,c)=>(a?.messages??[]).forEach((a,d)=>b.push({ref:aw(c,d),message:a,fragment:c}))),b}function az(a){let b=[];a?.settings?.name||b.push({ruleId:"S001",message:"The sequence has no settings.name",element:"settings"});let c=new Set;for(let[d,e]of(a.participants??[]).entries()){if(!e?.name){b.push({ruleId:"S002",message:`Participant at index ${d} has no name`,element:`participants[${d}]`});continue}c.has(e.name)&&b.push({ruleId:"S002",message:`Duplicate participant "${e.name}"`,element:e.name}),c.add(e.name)}let d=(a,d)=>{if(!a)return void b.push({ruleId:"S003",message:`Message ${d} is empty`,element:`message:${d}`});for(let e of["from","to"])a[e]&&c.has(a[e])||b.push({ruleId:"S003",message:`Message ${d} ${"from"===e?"comes from":"goes to"} "${a[e]??""}", which is not a participant`,element:`message:${d}`});a.label?.trim()||b.push({ruleId:"S004",message:`Message ${d} has no label`,element:`message:${d}`})};(a.messages??[]).forEach((a,b)=>d(a,aw(null,b)));let e=(a.messages??[]).length;for(let[c,f]of(a.fragments??[]).entries()){let a=`fragment:${c+1}`;if(!f||!at.includes(f.kind)){b.push({ruleId:"S005",message:`Fragment ${c+1} has kind "${f?.kind??""}"; expected one of ${at.join(", ")}`,element:a});continue}(!Number.isInteger(f.after)||f.after<0||f.after>e)&&b.push({ruleId:"S005",message:`Fragment ${c+1} branches after message ${f.after}, but the main sequence has messages 1 to ${e}`,element:a}),f.messages?.length||b.push({ruleId:"S006",message:`Fragment ${c+1} (${f.kind}) holds no message`,element:a}),(f.messages??[]).forEach((a,b)=>d(a,aw(c,b)))}return b}let aA=a=>{let b={settings:{...a.settings},participants:(a.participants??[]).map(a=>({...a,...a.holds?{holds:[...a.holds]}:{}})),messages:(a.messages??[]).map(a=>({...a}))};return a.fragments&&(b.fragments=a.fragments.map(a=>({...a,messages:(a.messages??[]).map(a=>({...a}))}))),b};function aB(a){return Object.fromEntries(Object.entries(a).filter(([,a])=>void 0!==a&&""!==a&&!(Array.isArray(a)&&0===a.length)))}function aC(a,b){let c=a.participants.find(a=>a.name===b);if(!c){let c=a.participants.map(a=>a.name).join(", ")||"none";throw Error(`Participant '${b}' not found. Participants: ${c}.`)}return c}function aD(a,b){if(aC(a,b.from),aC(a,b.to),!b.label?.trim())throw Error("A message needs a label: what is said or done, in a few words.")}function aE(a,b){let c=a.fragments?.[b];if(c&&!Array.isArray(c.messages)&&(c.messages=[]),!c)throw Error(`Fragment ${b+1} not found. The sequence has ${a.fragments?.length??0} fragment(s).`);return c}function aF(a,b,c){let d=aA(a),e=aC(d,b),f=aB({...e,...c});return d.participants[d.participants.indexOf(e)]=f,d}function aG(a,b,c){let d=aA(a);aD(d,b);let e=void 0===c?d.messages.length:Math.max(0,Math.min(c,d.messages.length));if(d.messages.splice(e,0,aB({...b})),d.fragments)for(let a of d.fragments)a.after>e&&(a.after+=1);return d}function aH(a,b,c,d=null){let e=aA(a),f=null===d?e.messages:aE(e,d).messages,g=f[b];if(!g)throw Error(`Message ${b+1} not found${null===d?"":` in fragment ${d+1}`}.`);let h=aB({...g,...c});return aD(e,h),f[b]=h,e}function aI(a,b,c){let d=aA(a);if(!d.messages[b])throw Error(`Message ${b+1} not found.`);let e=Math.max(0,Math.min(c,d.messages.length-1)),f=(d.fragments??[]).map(a=>a.after>0?d.messages[a.after-1]:null),[g]=d.messages.splice(b,1);return d.messages.splice(e,0,g),(d.fragments??[]).forEach((a,b)=>{let c=f[b];c&&(a.after=d.messages.indexOf(c)+1)}),d}let aJ={columnGap:150,rowHeight:34,headerHeight:34,topGap:30,fragmentPad:30,margin:24,fontSize:12};function aK(a,b={}){let c={...aJ,...b},d=(Array.isArray(a.participants)?a.participants:[]).map(a=>({...a,name:"string"==typeof a?.name?a.name:""})),e=(Array.isArray(a.messages)?a.messages:[]).filter(a=>!!a&&"object"==typeof a),f=a=>Math.max(90,y(a,c.fontSize)+28),g=[],h=c.margin;d.forEach((b,i)=>{let j=f(b.name);if(0===i)g.push(h+j/2);else{let h=f(d[i-1].name),k=function(a,b,c,d,e){let f=0;for(let g of[...a,...(Array.isArray(b.fragments)?b.fragments:[]).flatMap(a=>(Array.isArray(a?.messages)?a.messages:[]).filter(a=>!!a&&"object"==typeof a))])(g.from===c&&g.to===d||g.from===d&&g.to===c)&&(f=Math.max(f,y("string"==typeof g.label?g.label:"",e)+30));return f}(e,a,d[i-1].name,b.name,c.fontSize),l=Math.max(c.columnGap,(h+j)/2+20,k+24);g.push(g[i-1]+l)}});let i=new Map(d.map((a,b)=>[a.name,g[b]])),j=d.map((a,b)=>{let d=f(a.name);return{name:a.name,x:g[b],left:g[b]-d/2,top:c.margin,width:d,height:c.headerHeight}}),k=[],l=c.margin+c.headerHeight+c.topGap,m=0,n=(a,b,d,e,f)=>{let g=i.get(d)??c.margin,h=i.get(e)??c.margin,j=d===e;j&&(m=Math.max(m,g+44+y("string"==typeof f?f:"",c.fontSize))),k.push({ref:aw(a,b),fragment:a,index:b,y:l,fromX:g,toX:h,self:j}),l+=c.rowHeight};(Array.isArray(a.messages)?a.messages:[]).forEach((a,b)=>{a&&"object"==typeof a&&n(null,b,a.from,a.to,a.label)});let o=c.margin/2,p=Math.max(g.length?g[g.length-1]+f(d[d.length-1].name)/2:c.margin,m)+c.margin/2,q=[];(Array.isArray(a.fragments)?a.fragments:[]).forEach((a,b)=>{if(!a||"object"!=typeof a)return;let d=(l+=c.rowHeight/2)-c.rowHeight/2;l+=c.fragmentPad-c.rowHeight/2+6,(Array.isArray(a.messages)?a.messages:[]).forEach((a,c)=>{a&&"object"==typeof a&&n(b,c,a.from,a.to,a.label)});let e=l-d+c.fragmentPad/2-c.rowHeight/2;q.push({index:b,left:o,top:d,width:p-o,height:e,headingY:d+16}),l=d+e+c.rowHeight/2});let r=c.margin+c.headerHeight,s=l;return{participants:j,rows:k,fragments:q,lifelineTop:r,lifelineBottom:s,width:Math.max(p+c.margin/2,2*c.margin+200),height:s+c.margin}}let aL=a=>a.replace(/[;#\n\r]+/g," ").replace(/\s+/g," ").trim(),aM=["propose","auto"];function aN(a,b){return"auto"===b||"propose"===b?b:a?.settings?.reconcile==="auto"?"auto":"propose"}let aO=["person","agent","service","external"];function aP(a){return a.toLowerCase().endsWith(".sysdf.json")}function aQ(a){return!!a&&"object"==typeof a&&Array.isArray(a.members)&&!("state"in a)&&!("entities"in a)&&!("participants"in a)}function aR(a){return a.toLowerCase().endsWith(".erdf.json")?"erd":a.toLowerCase().endsWith(".sqdf.json")?"sequence":aP(a)?"system":"machine"}function aS(a){return a&&"object"==typeof a?W(a)?"erd":au(a)?"sequence":aQ(a)?"system":"state"in a?"machine":null:null}let aT=["erd","machine","sequence"];function aU(a,b){return b.startsWith("/")?aV(b):aV((a.slice(0,a.lastIndexOf("/")+1)||"./")+b)}function aV(a){let b=a.startsWith("/"),c=[];for(let d of a.split("/"))if(d&&"."!==d){if(".."===d){c.length&&".."!==c[c.length-1]?c.pop():b||c.push("..");continue}c.push(d)}return(b?"/":"")+c.join("/")}let aW=a=>({settings:{...a.settings},members:(a.members??[]).map(a=>({...a})),actors:(a.actors??[]).map(a=>({...a}))});function aX(a){return Object.fromEntries(Object.entries(a).filter(([,a])=>void 0!==a&&""!==a))}function aY(a,b){let c=aW(a);return c.settings=aX({...c.settings,...b}),c}let aZ=["refused","unknown-event","ended","state-mismatch"];function a$(a,b=0){return a.settings?.name||a.state?.name||`machine ${b+1}`}function a_(a){let b=a.map((a,b)=>a$(a,b));return b.map((a,c)=>b.indexOf(a)===c&&b.lastIndexOf(a)===c?a:`${a} #${c+1}`)}function a0(a,b){let c=a.states.get(b);for(;c&&c.states?.length;){let a=c.states.find(a=>"history"!==a.kind);if(!a)return null;c=a}return c?.name??null}function a1(a,b,c){let d=b;for(;d;){if(d===c)return!0;d=a.parent.get(d)}return!1}let a2=(a,b)=>a.states.get(b)?.kind==="final";function a3(a,b){let c,d,e=a_(b),f=b.map((a,b)=>(function(a,b,c){let d=new Map,e=new Map,f=(a,b)=>{if(a?.name){for(let c of(d.has(a.name)||(d.set(a.name,a),e.set(a.name,b)),a.states??[]))f(c,a.name);for(let b of a.parallel?.states??[])f(b,a.name)}};a.state&&f(a.state,null);let g=new Set;for(let b of a.events??[])for(let a of b?.events??[])a?.id&&g.add(a.id);for(let b of a.events??[])for(let a of b?.timers??[])a?.id&&g.add(a.id);let h={name:c,def:a,states:d,parent:e,events:g,initial:null};return h.initial=a.state?a0(h,a.state.name):null,h})(a,0,e[b])),g=(d=[{name:"main",kind:"main",items:c=(a.messages??[]).map((a,b)=>({ref:aw(null,b),message:a}))}],c.some(a=>a.message?.optional)&&d.push({name:"main without optional messages",kind:"without-optional",items:c.filter(a=>!a.message?.optional)}),(a.fragments??[]).forEach((a,b)=>{if(!a)return;let e=(a.messages??[]).map((a,c)=>({ref:aw(b,c),message:a})),f=Math.max(0,Math.min(a.after??0,c.length)),g=c.slice(0,f),h=c.slice(f),i=`${a.kind} ${b+1} \xb7 ${a.label??""}`.trim();"alt"===a.kind?d.push({name:i,kind:"alt",fragment:b,items:[...g,...e]}):"opt"===a.kind?d.push({name:i,kind:"opt",fragment:b,items:[...g,...e,...h]}):"loop"===a.kind&&d.push({name:i,kind:"loop",fragment:b,items:[...g,...e,...e,...h]})}),d).map(a=>(function(a,b){let c=new Map;for(let a of b){let b=a.initial&&a2(a,a.initial)?a.initial:null;c.set(a.name,{states:a.initial?[a.initial]:[],ended:b})}let d=[],e=new Map;for(let a of b){let b=a$(a.def);e.set(b,e.has(b)?null:a),a.name!==b&&e.set(a.name,a)}for(let{ref:f,message:g}of a.items){if(!g)continue;let a=g.label??"";if(!g.event){let e={ref:f,label:a,from:[],to:[],result:"data"};g.state&&function(a,b,c,d){let e=c.filter(a=>b.machine?a.name===b.machine:a.states.has(b.state));if(!e.length){a.result="state-mismatch",a.note=b.machine?`no member machine is named "${b.machine}"`:`no member machine has a state "${b.state}"`;return}for(let c of e){let e=d.get(c.name),f=e.states.filter(a=>a1(c,a,b.state));if(f.length){e.states=f;continue}a.machine=c.name,a.from=a.to=[...e.states],a.result="state-mismatch",a.note=`the scenario says ${c.name} is in ${b.state}; the walk has it in ${e.states.join(" or ")||"no state"}`;return}}(e,g,b,c),d.push(e);continue}let h=g.event,i=b.filter(a=>a.events.has(h));if(g.machine){let b=e.get(g.machine);if(!b){let c=null===b?`two member machines are named "${g.machine}"`:`no member machine is named "${g.machine}"`;d.push({ref:f,label:a,event:h,from:[],to:[],result:"unknown-event",note:c});continue}if(!(i=i.filter(a=>a===b)).length){d.push({ref:f,label:a,event:h,machine:b.name,from:[],to:[],result:"unknown-event",note:`"${b.name}" does not define the event "${h}"`});continue}}if(!i.length){d.push({ref:f,label:a,event:h,from:[],to:[],result:"unknown-event",note:`no member machine defines the event "${h}"`});continue}for(let b of i){let e=c.get(b.name),i=[...e.states];if(e.ended){d.push({ref:f,label:a,event:h,machine:b.name,from:i,to:i,result:"ended",note:`${b.name} ended in ${e.ended} before this message`});continue}let j=i.filter(a=>!a2(b,a));if(!j.length){d.push({ref:f,label:a,event:h,machine:b.name,from:i,to:i,result:"ended",note:`${b.name} ended in ${i.join(" or ")} before this message`});continue}let k=new Set,l=new Map,m=new Set,n=[];for(let a of j)for(let c of function(a,b,c){let d=[],e=b;for(;e;){for(let b of a.states.get(e)?.transitions??[])if(b?.event===c&&(d.push(b),!b.condition))return d;e=a.parent.get(e)}return d}(b,a,h)){let d=c.nextState?a0(b,c.nextState):a;if(!d){n.push(c.nextState);continue}k.add(d),d!==a&&m.add(d),c.condition&&l.set(d,(l.get(d)??new Set).add(c.condition))}if(!k.size){let c=n.length?`${b.name}'s transition for "${h}" from ${j.join(" or ")} leads to ${[...new Set(n)].join(", ")}, which cannot be entered`:`${b.name} has no transition for "${h}" from ${j.join(" or ")}`;d.push({ref:f,label:a,event:h,machine:b.name,from:i,to:i,result:"refused",note:c});continue}let o=[...k],p={ref:f,label:a,event:h,machine:b.name,from:i,to:o,result:"moved"};if(g.state&&(!g.machine||g.machine===b.name)){let a=b.states.has(g.state);if(a||g.machine===b.name){let c=o.filter(a=>a1(b,a,g.state));c.length?o=c:(p.result="state-mismatch",p.note=a?`the scenario says ${b.name} is in ${g.state}; the walk has it in ${o.join(" or ")}`:`${b.name} has no state "${g.state}"`)}}p.to=o,"moved"!==p.result||o.some(a=>m.has(a))||(p.result="stayed");let q=new Set(o.flatMap(a=>[...l.get(a)??[]]));q.size&&(p.guards=[...q]),e.states=o;let r=o.filter(a=>a2(b,a));r.length&&r.length===o.length&&(e.ended=r[0]),d.push(p)}}let f={};for(let[a,b]of c)f[a]=b.states;return{name:a.name,kind:a.kind,...void 0===a.fragment?{}:{fragment:a.fragment},steps:d,accepted:!d.some(a=>aZ.includes(a.result)),end:f}})(a,f));return{scenario:a.settings?.name??"",machines:f.map(a=>a.name),paths:g,accepted:g.every(a=>a.accepted)}}function a4(a){let b={machines:[],erds:[],sequences:[]};for(let c of a)c.def&&!c.error&&aS(c.def)===c.kind&&("machine"===c.kind&&b.machines.push({member:c.path,def:c.def}),"erd"===c.kind&&b.erds.push({member:c.path,def:c.def}),"sequence"===c.kind&&b.sequences.push({member:c.path,def:c.def}));return b}function a5(a,b){let c=[],d=(a,b,d,e)=>{c.push({ruleId:a,message:b,severity:"error",...d?{member:d}:{},...e?{element:e}:{}})},e=(a,b,d,e)=>{c.push({ruleId:a,message:b,severity:"warning",...d?{member:d}:{},...e?{element:e}:{}})};if(a){a.settings?.name||d("Y001","The system has no settings.name"),a.settings?.namespace||d("Y001","The system has no settings.namespace");let b=new Set;for(let[c,e]of(a.members??[]).entries()){if(!e?.path){d("Y002",`Member at index ${c} has no path`,void 0,`members[${c}]`);continue}b.has(e.path)&&d("Y002",`"${e.path}" is listed twice`,e.path),b.add(e.path),aT.includes(aR(e.path))&&e.path.endsWith(".json")||d("Y002",`"${e.path}" is not a document a system holds (.erdf.json, .smdf.json, .sqdf.json)`,e.path)}let c=new Set;for(let[b,e]of(a.actors??[]).entries()){if(!e?.name){d("Y004",`Actor at index ${b} has no name`,void 0,`actors[${b}]`);continue}c.has(e.name)&&d("Y004",`Duplicate actor "${e.name}"`,void 0,e.name),c.add(e.name),aO.includes(e.kind)||d("Y004",`Actor "${e.name}" has kind "${e.kind??""}"; expected one of ${aO.join(", ")}`,void 0,e.name)}}for(let a of b)a.error||!a.def?d("Y003",`"${a.path}" cannot be read: ${a.error??"no content"}`,a.path):aS(a.def)!==a.kind&&d("Y003",`"${a.path}" is named as a ${a.kind} but holds ${aS(a.def)??"something else"}`,a.path);let{machines:f,erds:g,sequences:h}=a4(b),i=new Map;for(let{member:a,def:b}of f){let c=a$(b),e=i.get(c);e?d("Y005",`"${a}" and "${e}" are both machines named "${c}"; a message cannot say which`,a):i.set(c,a)}for(let{member:a,def:b}of g)for(let c of X(b))d(c.ruleId,c.message,a,c.element);for(let{member:a,def:b}of h)for(let c of az(b))d(c.ruleId,c.message,a,c.element);let j=function(a){if(!a.length)return null;let b=new Set,c=a.flatMap(({def:a})=>a.entities??[]).filter(a=>a?.name&&!b.has(a.name)&&b.add(a.name));return{settings:{namespace:a[0].def.settings?.namespace??"",name:a.map(a=>a.def.settings?.name).join(" + ")},entities:c,relationships:a.flatMap(({def:a})=>a.relationships??[])}}(g);if(j){for(let{member:a,def:b}of f)for(let c of Z(b,j))d(c.ruleId,c.message,a,c.element);let a=f.map(({def:a},b)=>a$(a,b));for(let{member:b,def:c}of g)for(let e of $(c,a))d(e.ruleId,e.message,b,e.element)}for(let{member:a,def:b}of f){let c=(d,f)=>{if(!d)return;let g=f||(d.transitions??[]).length>0,h=d.states??[];for(let f of(h.length||d.parallel||d===b.state||"final"===d.kind||"history"===d.kind||g||e("L009",`${a$(b)}: ${d.name} has no way out and is not final; say how the machine leaves it, or mark it final`,a,`state:${d.name}`),h))c(f,g)};c(b.state,!1)}let k=f.map(a=>a.def),l=new Set(k.map((a,b)=>a$(a,b))),m=new Map,n=new Set,o=new Set;k.forEach((a,b)=>{let c=new Set;for(let b of a.events??[]){for(let a of b?.events??[])a?.id&&c.add(a.id);for(let a of b?.timers??[])a?.id&&c.add(a.id)}m.set(a$(a,b),c);let d=a=>{a&&(n.add(a.name),(a.states??[]).forEach(d),(a.parallel?.states??[]).forEach(d))};for(let b of(d(a.state),a.settings?.objects??[]))b?.instance&&o.add(b.instance)});let p=new Set((j?.entities??[]).map(a=>a.name)),q=new Set((a?.actors??[]).map(a=>a.name)),r=[];for(let{member:b,def:c}of h){let f=!1,g=a=>!!j||(f||e("L006",`${a} name entities, but the system has no ERD to hold them`,b),f=!0,!1);for(let e of c.participants??[]){if(!e?.name)continue;let c=`participant:${e.name}`;if(e.actor&&a&&!q.has(e.actor)&&d("L006",`Participant "${e.name}" is the actor "${e.actor}", which the system does not list`,b,c),e.object&&!o.has(e.object)&&d("L006",`Participant "${e.name}" is the object "${e.object}", which no member machine declares`,b,c),e.holds?.length&&g("Participants' holds"))for(let a of e.holds)p.has(a)||d("L006",`Participant "${e.name}" holds "${a}", which is not an entity`,b,c)}for(let{ref:a,message:f}of ay(c)){if(!f)continue;let c=`message:${a}`;f.machine&&!l.has(f.machine)?d("L005",`Message ${a} names the machine "${f.machine}", which is not a member`,b,c):f.event&&((f.machine?m.get(f.machine)?.has(f.event):[...m.values()].some(a=>a.has(f.event)))||d("L005",`Message ${a} fires "${f.event}", which ${f.machine?`"${f.machine}" does not define`:"no member machine defines"}`,b,c)),f.carries&&g("Messages' carries")&&!p.has(f.carries)&&d("L007",`Message ${a} carries "${f.carries}", which is not an entity`,b,c),f.state&&!n.has(f.state)&&e("L008",`Message ${a} says the machine is then in "${f.state}", which no member machine has`,b,c)}let h=a3(c,k);for(let a of(r.push({member:b,report:h}),h.paths)){let c=a.steps.filter(a=>"refused"===a.result||"ended"===a.result||"state-mismatch"===a.result);for(let d of[...new Set(c.map(a=>a.machine??""))]){let f=c.filter(a=>(a.machine??"")===d),g=f[0],h=f.length>1?` (${f.length-1} later message${f.length>2?"s stop":" stops"} too)`:"",i="without-optional"===a.kind?" — a message the rest depends on may not be optional":"";e("L008",`${a.name}, message ${g.ref}: ${g.note??g.result}${h}${i}`,b,`message:${g.ref}`)}}}return{issues:c,replays:r}}function a6(a){return`${a.kind}:${a.name}`}function a7(a){let b=a.indexOf(":");if(b<=0)return null;let c=a.slice(0,b);return["entity","attribute","machine","object","event","state","participant","message"].includes(c)?{kind:c,name:a.slice(b+1)}:null}function a8(a){let{machines:b,erds:c,sequences:d}=a4(a),e=[],f=new Map;for(let{member:a,def:b}of c)for(let c of b.entities??[])c?.name&&!f.has(c.name)&&f.set(c.name,a);let g=new Map;for(let{def:a}of c)for(let b of a.entities??[])g.set(b.name,new Set((b.attributes??[]).map(a=>a.name)));let h=new Map,i=new Map;b.forEach(({member:a,def:b},c)=>{let d=a$(b,c);for(let c of b.events??[])for(let b of[...c?.events??[],...c?.timers??[]]){if(!b?.id)continue;let c=h.get(b.id)??[];c.push({member:a,machine:d}),h.set(b.id,c)}for(let c of b.settings?.objects??[]){if(!c?.instance)continue;i.has(c.instance)||i.set(c.instance,{member:a,className:c.class});let b=f.get(c.class);b&&e.push({from:{member:a,kind:"object",name:c.instance},to:{member:b,kind:"entity",name:c.class},rule:"L001",text:`is constructed as the entity ${c.class}`,back:`is the class of ${d}'s object ${c.instance}`})}let j=c=>{if(c){for(let d of c.transitions??[])if(d?.condition)for(let h of b.settings?.objects??[]){let b=f.get(h.class);if(b)for(let f of Y(d.condition,h.instance))g.get(h.class)?.has(f)&&e.push({from:{member:a,kind:"event",name:d.event},to:{member:b,kind:"attribute",name:`${h.class}.${f}`},rule:"L002",text:`its guard on ${c.name} reads ${h.class}.${f}`,back:`is read by the ${d.event} guard on ${c.name}`})}(c.states??[]).forEach(j)}};j(b.state)});let j=a_(b.map(a=>a.def)),k=new Map(b.map(({member:a},b)=>[j[b],a]));for(let{member:a,def:d}of c)for(let c of d.entities??[])for(let d of c.attributes??[])for(let f of U(d)){let g=k.get(f)??b.find(({def:a})=>a$(a)===f)?.member;g&&e.push({from:{member:a,kind:"attribute",name:`${c.name}.${d.name}`},to:{member:g,kind:"machine",name:f},rule:"L003",text:`stores the state of ${f}`,back:`keeps its state in ${c.name}.${d.name}`})}for(let{member:a,def:c}of d){for(let b of c.participants??[]){if(!b?.name)continue;let c={member:a,kind:"participant",name:b.name},d=b.object?i.get(b.object):void 0;for(let a of(d&&e.push({from:c,to:{member:d.member,kind:"object",name:b.object},rule:"L006",text:`is the object ${b.object}`,back:`is the participant ${b.name}`}),b.holds??[])){let d=f.get(a);d&&e.push({from:c,to:{member:d,kind:"entity",name:a},rule:"L006",text:`holds ${a}`,back:`is held by ${b.name}`})}}for(let{ref:b,message:d}of ay(c)){if(!d)continue;let g={member:a,kind:"message",name:b};if(d.event)for(let a of h.get(d.event)??[])d.machine&&d.machine!==a.machine||e.push({from:g,to:{member:a.member,kind:"event",name:d.event},rule:"L005",text:`fires ${d.event}`,back:`is fired by message ${b} of ${c.settings?.name??"the scenario"}`});if(d.carries){let a=f.get(d.carries);a&&e.push({from:g,to:{member:a,kind:"entity",name:d.carries},rule:"L007",text:`carries ${d.carries}`,back:`is carried by message ${b}`})}}let d=a3(c,b.map(a=>a.def)).paths.find(a=>"main"===a.kind);for(let b of d?.steps??[]){if("moved"!==b.result||!b.machine)continue;let c=k.get(b.machine);if(c)for(let d of b.to)e.push({from:{member:a,kind:"message",name:b.ref},to:{member:c,kind:"state",name:d},rule:"L008",text:`moves ${b.machine} to ${d}`,back:`is entered on message ${b.ref}`})}}return e}let a9=a=>{let b=a.replace(/[^A-Za-z0-9]+(.)?/g,(a,b)=>b?b.toUpperCase():"").replace(/^[^A-Za-z]+/,"");return b?b.charAt(0).toUpperCase()+b.slice(1):"Scenario"};function ba(a,b){let c=a=>!!a&&(a.name===b||(a.states??[]).some(c)||(a.parallel?.states??[]).some(c));return c(a.state)}let bb=(a,b)=>b?"service":/\b(agent|bot|assistant)\b/i.test(a)?"agent":"person";function bc(a,b){let{machines:c,erds:d,sequences:e}=a4(b),f=[],g=a=>{f.includes(a)||f.push(a)},h=a,i=[];if(h)for(let{def:a}of e)for(let b of a.participants??[]){if(!b?.actor||(h.actors??[]).some(a=>a.name===b.actor))continue;let c=bb(b.actor,b.service);h=function(a,b){if(!b.name?.trim())throw Error("An actor needs a name.");if(!aO.includes(b.kind))throw Error(`An actor is one of ${aO.join(", ")}; got '${b.kind}'.`);let c=aW(a);if((c.actors??[]).some(a=>a.name===b.name))throw Error(`Actor '${b.name}' already exists.`);return(c.actors??=[]).push(aX({...b})),c}(h,{name:b.actor,kind:c}),i.push(`the system gains the ${c} "${b.actor}", who takes part in ${a.settings?.name??"a scenario"}`)}let j=d.map(a=>({member:a.member,def:a.def,reasons:[]})),k=new Set(j.flatMap(a=>(a.def.entities??[]).map(a=>a.name)));for(let{def:a}of e){let b=[];for(let c of a.participants??[])for(let d of c?.holds??[])d?.trim()&&b.push({name:d.trim(),why:`${c.name} holds it in ${a.settings?.name??"a scenario"}`});for(let{ref:c,message:d}of ay(a))d?.carries?.trim()&&b.push({name:d.carries,why:`message ${c} of ${a.settings?.name??"a scenario"} carries it`});for(let a of b){if(k.has(a.name))continue;if(!j.length){g(`"${a.name}" is named as data (${a.why}), but the system has no ERD to hold it; add a .erdf.json member`);continue}let b=j[0];b.def=ac(b.def,{name:a.name,notes:`Added from the scenario: ${a.why}.`}),b.reasons.push(`${b.def.settings?.name??b.member} gains the entity ${a.name}, because ${a.why}`),k.add(a.name)}}let l=c.map(a=>a.def),m=a_(l),o=l.map(()=>[]),p=l.map(()=>[]),q=(a,b,c)=>{l=l.map((c,d)=>d===a?n(c,b):c),o[a].push(...b),p[a].push(c)};for(let{def:a}of e){for(let b of a.participants??[]){if(!b?.object||l.some(a=>(a.settings?.objects??[]).some(a=>a.instance===b.object)))continue;let a=(b.holds??[]).filter(a=>a?.trim()),c=1===a.length?a[0].trim():null;1===l.length&&c?q(0,[{op:"settings.update",patch:{objects:[...l[0].settings?.objects??[],{instance:b.object,class:c}]}}],`${m[0]} is constructed with the object ${b.object} : ${c}, because ${b.name} is it`):g(`${b.name} is the object "${b.object}", which no machine declares; ${1===l.length?"say which entity it is by holding exactly one":"declare it on the machine it belongs to"}`)}let b=function(a,b,c={}){let d=c.maxRounds??100,e=b.map(a=>a),f=a_(e),g=new Map,h=[],i=new Set,j=a3(a,e),k=new Set,l="",m=(a,b,c)=>{k.add(`${a}|${JSON.stringify(b)}`),e=e.map((c,d)=>d===a?n(c,b):c);let d=g.get(a)??{machine:f[a],index:a,ops:[],reasons:[]};d.ops.push(...b),d.reasons.push(c),g.set(a,d)},o=!0;for(let b=0;b<d;b++){let b=(function(a){let b=[];for(let c of a.paths)for(let a of c.steps)("refused"===a.result||"unknown-event"===a.result||"ended"===a.result||"state-mismatch"===a.result)&&b.push({path:c,step:a});return b})(a3(a,e)).find(({path:a,step:b})=>!i.has(`${b.ref}|${b.machine??""}|${b.result}|${a.name}`)&&!i.has(`${a.name}|${b.machine??""}`));if(!b){o=!1;break}let{path:c,step:d}=b,g=`${d.ref}|${d.machine??""}|${d.result}|${c.name}`,j=`${g}|${d.from.join("|")}`,n=j===l;l=j;let p=ax(a,d.ref)?.message,q=`message ${d.ref} (${c.name})`,r=(a,b)=>{i.add(g),i.add(`${c.name}|${d.machine??""}`),h.includes(b)||h.push(b)};if("without-optional"===c.kind){let b=(a.messages??[]).map((a,b)=>a?.optional?String(b+1):"").filter(Boolean);r(g,`${q}: without its optional message${b.length>1?"s":""} ${b.join(", ")} the scenario stops (${d.note??d.result}); if the rest depends on ${b.length>1?"them, they are":"it, it is"} not optional`);continue}if(!p){r(g,`${q}: cannot be read back from the sequence`);continue}if(n){r(g,`${q}: the change proposed for it did not let the walk through (${d.note??d.result}); a person has to look at ${d.machine??"the machine"}`);continue}let s=(a,b,c)=>{k.has(`${a}|${JSON.stringify(b)}`)?r(g,`${q}: the change it needs was already proposed and did not take effect (${d.note??d.result})`):m(a,b,c)};if("unknown-event"===d.result){let a=p.machine?e.map((a,b)=>f[b]===p.machine||(a.settings?.name??"")===p.machine?b:-1).filter(a=>a>=0):1===e.length?[0]:[];if(a.length>1){r(g,`${q}: ${a.length} member machines are named "${p.machine}"; rename one so the message can say which`);continue}let b=a.length?a[0]:-1;if(b<0){r(g,p.machine?`${q}: fires "${p.event}" for "${p.machine}", which is not a member machine`:`${q}: fires "${p.event}", which no machine defines; set the message's machine to say which one should`);continue}let c=e[b],d=`${a9(p.from)}Events`,h=a9(p.from),i=(c.events??[]).findIndex(a=>a?.name===d||a?.name===h||a?.name===p.from||a?.feeder===p.from),j=i>=0?c.events[i].name:d,k={id:p.event,...p.label?.trim()?{description:p.label.trim()}:{}};s(b,i>=0?[{op:"event.add",sourceIndex:i,event:k}]:[{op:"eventSource.add",source:{name:d,events:[k]}}],`${f[b]} defines "${p.event}" in ${j}, because ${q} fires it`);continue}if("refused"===d.result){let a=f.indexOf(d.machine??"");if(!p.state){r(g,`${q}: ${d.machine} refuses "${p.event}" from ${d.from.join(" or ")}; give the message a state to say where it leads, and reconcile can add the transition`);continue}if(1!==d.from.length){r(g,`${q}: ${d.machine} could be in ${d.from.join(" or ")}; choose which state "${p.event}" leaves from`);continue}let b=e[a],c=d.from[0],h=ba(b,p.state);if(!h&&!p.machine){let b=f.filter((b,c)=>c!==a&&ba(e[c],p.state)),c=e.filter(a=>(function(a){let b=new Set;for(let c of a.events??[])for(let a of[...c?.events??[],...c?.timers??[]])a?.id&&b.add(a.id);return b})(a).has(p.event)).length;if(b.length||c>1){r(g,`${q}: "${p.state}" ${b.length?"is a state of another machine":"is claimed while several machines hear the event"}; set the message's machine to say which machine it is about`);continue}}if(!function(a,b){let c=a=>!!a&&(a.name===b||(a.states??[]).some(c));return c(a.state)}(b,c)){r(g,`${q}: ${d.machine} is in ${c}, inside a parallel region, which reconcile does not edit`);continue}let i=[],j=[],k=c===b.state?.name&&!(b.state?.states??[]).length;if(h||(i.push({op:"state.add",parent:null,state:{name:p.state,transitions:[]}}),j.push(k?`gains its first state, ${p.state}`:`adds the state ${p.state}`)),k){s(a,i,`${f[a]} ${j.join(" and ")}, because ${q} says the machine is there`);continue}let l=p.label?.trim()?{description:p.label.trim()}:{};i.push(c===p.state?{op:"transition.add",state:c,transition:{event:p.event,...l}}:{op:"transition.add",state:c,transition:{event:p.event,nextState:p.state,...l}}),j.push(c===p.state?`handles "${p.event}" in ${c} without leaving it`:`goes from ${c} to ${p.state} on "${p.event}"`),s(a,i,`${f[a]} ${j.join(" and ")}, because ${q} says so`);continue}if("state-mismatch"===d.result){r(g,`${q}: ${d.note??"the scenario and the machine disagree"}; one of them has to change, and that is a person's call`);continue}r(g,`${q}: ${d.note??d.result}`)}return o&&h.push(`reconcile stopped after ${d} rounds; what it proposed so far is kept, and the rest needs a person`),{proposals:[...g.values()].sort((a,b)=>a.index-b.index),unresolved:h,before:j,after:a3(a,e),machines:e}}(a,l);for(let a of b.proposals)o[a.index].push(...a.ops),p[a.index].push(...a.reasons);for(let c of(l=b.machines,b.unresolved))g(`${a.settings?.name??"scenario"}: ${c}`)}let r=c.map((a,b)=>({member:a.member,index:b,machine:m[b],ops:o[b],reasons:p[b],def:l[b]})).filter(a=>a.ops.length),s=j.filter(a=>a.reasons.length);return{machines:r,erds:s,system:h&&i.length?{def:h,reasons:i}:null,unresolved:f,count:r.reduce((a,b)=>a+b.reasons.length,0)+s.reduce((a,b)=>a+b.reasons.length,0)+i.length}}function bd(a,b){if(!a.count&&!a.unresolved.length)return"auto"===b?"auto: the drawings already agree":"the drawings agree";let c=[...a.machines.map(a=>`${a.machine} +${a.reasons.length}`),...a.erds.map(a=>`${a.def.settings?.name??a.member} +${a.reasons.length}`),...a.system?[`system +${a.system.reasons.length}`]:[]],d=c.length?c.join(", "):"no change",e=a.unresolved.length?`; ${a.unresolved.length} left open`:"";return"auto"===b?`auto: ${d}${e}`:`${a.count} change${1===a.count?"":"s"} proposed (${d})${e}`}function be(a){return a.parallel?a.parallel.states:a.states??[]}function bf(a,b){return be(a).find(a=>a.name===b)??null}let bg={surface:"--slc-surface",nodeFill:"--slc-node-fill",nodeStroke:"--slc-node-stroke",compositeFill:"--slc-composite-fill",finalFill:"--slc-final-fill",accent:"--slc-accent",accentFill:"--slc-accent-fill",accentInk:"--slc-accent-ink",danger:"--slc-danger",drawSource:"--slc-draw-source",edge:"--slc-edge",chipFill:"--slc-chip-fill",chipStroke:"--slc-chip-stroke",label:"--slc-label",muted:"--slc-muted",faint:"--slc-faint",entry:"--slc-entry",exit:"--slc-exit",composite:"--slc-composite",active:"--slc-active",panelBg:"--slc-panel-bg",panelBorder:"--slc-panel-border",panelHover:"--slc-panel-hover"};function bh(a){let b={};if(!a)return b;for(let[c,d]of Object.entries(a)){let a=bg[c];a&&"string"==typeof d&&(b[a]=d)}return b}let bi={x:100,y:100,width:160,height:60};function bj(a,b){return 1===b?16*a:2===b?400*a:a}function bk(a){return!!a&&"string"==typeof a.tagName&&(!!a.isContentEditable||["INPUT","TEXTAREA","SELECT","BUTTON","OPTION"].includes(a.tagName))}function bl(a){return(a.states?.length??0)>0||(a.parallel?.states.length??0)>0}function bm({mark:a,x:b,y:c,selected:d}){return(0,h.jsxs)("g",{transform:`translate(${b} ${c}) scale(0.5)`,strokeWidth:a.strokeWidth,className:`slc-glyph${d?" slc-glyph--selected":""}`,children:[(a.circles??[]).map((a,b)=>(0,h.jsx)("circle",{cx:a.cx,cy:a.cy,r:a.r,className:a.filled?"slc-glyph-dot":void 0},`c${b}`)),a.paths.map((a,b)=>(0,h.jsx)("path",{d:a},`p${b}`))]})}let bn={kind:null,id:null},bo=(0,i.forwardRef)(function(a,b){let{definition:c,positions:d,path:e=[],rootLabel:f,viewport:g,onViewportChange:j,selection:k=bn,activeStates:l,errorElements:m,drawMode:n="select",drawSource:o=null,readOnly:p=!1,showBreadcrumb:q=!0,showHud:r=!0,fitKey:s,onSelect:t,onClearSelection:u,onStateMove:v,onNavigateInto:w,onNavigateTo:x,onContextMenu:y,onCreateTransition:A,onCancelDraw:C,onDeleteState:D,onUndo:F,onRedo:I,hudExtras:J,emptyHint:N,theme:T,className:U,style:V,svgId:W,pinchOwner:X="canvas"}=a,Y=(0,i.useRef)(null),Z=(0,i.useId)().replace(/:/g,""),$=(0,i.useRef)(g);$.current=g;let[_,aa]=(0,i.useState)(null),ab=(0,i.useRef)(null),ac=(0,i.useCallback)(a=>{ab.current=a,aa(a)},[]),[ad,ae]=(0,i.useState)(null),af=(0,i.useRef)(!1),[ag,ah]=(0,i.useState)(!1),ai=(0,i.useRef)(null),[aj,ak]=(0,i.useState)(!1),al=(0,i.useRef)(!1),am=(0,i.useRef)(new Map),an=(0,i.useRef)(new Map),ao=(0,i.useRef)(null),[ap,aq]=(0,i.useState)(!1),ar=(0,i.useRef)(null),as=(0,i.useRef)(!1),[at,au]=(0,i.useState)(!1),av=c.state,aw=(0,i.useMemo)(()=>{let a=function(a,b){let c=[],d=a;for(let a of b){let b=bf(d,a);if(!b)break;c.push(a),d=b}return c}(av,e);return[f??av?.name??"Root",...a]},[av,e,f]),ax=(0,i.useMemo)(()=>av?be(function(a,b){let c=a;for(let a of b){let b=bf(c,a);if(!b)break;c=b}return c}(av,e)):[],[av,e]),ay=aw[aw.length-1],az=(0,i.useMemo)(()=>(function(a){let b=new Set,c=[];for(let d of a.events??[])for(let a of d.events??[])b.has(a.id)||(b.add(a.id),c.push(a.id));return c})(c),[c]),aA=(0,i.useMemo)(()=>new Set(l??[]),[l]),aB=(0,i.useMemo)(()=>new Set(m??[]),[m]),aC=(0,i.useCallback)((a,b)=>{let c=Y.current?.getBoundingClientRect();return{x:a-(c?.left??0),y:b-(c?.top??0)}},[]),aD=(0,i.useCallback)(a=>{let b=am.current.get(a);am.current.delete(a),b?.hasPointerCapture?.(a)&&b.releasePointerCapture?.(a)},[]),aE=(0,i.useCallback)(a=>{let b=ar.current;b&&(void 0===a||b.pointerId===a)&&(clearTimeout(b.timer),ar.current=null)},[]),aF=(0,i.useCallback)((a,b)=>{if("touch"!==a.pointerType||!y)return;aE();let{pointerId:c,clientX:d,clientY:e}=a,f=setTimeout(()=>{ar.current=null,ac(null),ai.current=null,ak(!1),as.current=!0,navigator.vibrate?.(10),y(d,e,b)},500);ar.current={pointerId:c,x:d,y:e,target:b,timer:f}},[aE,y,ac]);(0,i.useEffect)(()=>{},[]),(0,i.useEffect)(()=>{let a=a=>{an.current.delete(a.pointerId)};return window.addEventListener("pointerup",a),window.addEventListener("pointercancel",a),()=>{window.removeEventListener("pointerup",a),window.removeEventListener("pointercancel",a)}},[]),(0,i.useEffect)(()=>()=>aE(),[aE]);let aG=(0,i.useRef)(new Set),aH=(0,i.useRef)(new Map),aI=(0,i.useRef)(ay),aJ=(0,i.useRef)(new Set),[aK,aL]=(0,i.useState)(new Set),[aM,aN]=(0,i.useState)(new Set),[aO,aP]=(0,i.useState)(new Map),aQ=at?10/g.scale:0,aR=at?28/g.scale:0,aS=(0,i.useCallback)(a=>d[a]??bi,[d]);(0,i.useEffect)(()=>{let a=a=>{(a.ctrlKey||a.metaKey)&&"z"===a.key&&F&&(a.preventDefault(),F()),(a.ctrlKey||a.metaKey)&&("y"===a.key||a.shiftKey&&"z"===a.key)&&I&&(a.preventDefault(),I()),"Escape"===a.key&&(ae(null),C?.()),"Delete"===a.key&&"state"===k.kind&&k.id&&D&&D(k.id)};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[F,I,C,D,k]);let aT=(0,i.useCallback)(a=>{let b=$.current;ai.current={pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,origX:b.x,origY:b.y},al.current=!1,ak(!0);let c=Y.current;c&&(am.current.set(a.pointerId,c),c.setPointerCapture(a.pointerId))},[]),aU=(0,i.useCallback)(()=>{let a=[...an.current.entries()];if(a.length<2)return;let[[b,c],[d,e]]=a;aE(),ac(null),ai.current=null;let f=Math.max(1,Math.hypot(e.x-c.x,e.y-c.y)),g=aC((c.x+e.x)/2,(c.y+e.y)/2);ao.current={a:b,b:d,startDist:f,startMidX:g.x,startMidY:g.y,start:$.current},al.current=!0,aq(!0);let h=Y.current;if(h){for(let a of[b,d])if(!am.current.has(a))try{h.setPointerCapture(a),am.current.set(a,h)}catch{}}},[aE,aC,ac]),aV=(0,i.useCallback)(a=>{if(as.current=!1,"touch"!==a.pointerType)return;au(!0),an.current.set(a.pointerId,{x:a.clientX,y:a.clientY});let b=an.current.size;b<2||(a.stopPropagation(),2===b&&aU())},[aU]),aW=(0,i.useCallback)((a,b)=>{if(0!==a.button||af.current)return;if(a.stopPropagation(),aF(a,{kind:"state",id:b}),!p&&"transition"===n)return void(o?o!==b&&ae({stateName:o,targetName:b,x:a.clientX,y:a.clientY}):t?.("state",b));if(t?.("state",b),p||!v)return;let c=aS(b);ac({name:b,pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,origX:c.x,origY:c.y});let d=a.currentTarget;am.current.set(a.pointerId,d),d.setPointerCapture?.(a.pointerId)},[t,aS,n,o,aF,ac,p,v]),aX=(0,i.useCallback)(a=>{if("touch"===a.pointerType){aF(a,{kind:"canvas"}),aT(a);return}(1===a.button||0===a.button&&af.current)&&(a.preventDefault(),aT(a))},[aF,aT]),aY=(0,i.useCallback)(a=>{an.current.has(a.pointerId)&&an.current.set(a.pointerId,{x:a.clientX,y:a.clientY});let b=ar.current;b&&b.pointerId===a.pointerId&&Math.hypot(a.clientX-b.x,a.clientY-b.y)>8&&aE(a.pointerId);let c=ao.current;if(c){if(a.pointerId!==c.a&&a.pointerId!==c.b)return;let b=an.current.get(c.a),d=an.current.get(c.b);if(!b||!d)return;let e=Math.hypot(d.x-b.x,d.y-b.y),f=aC((b.x+d.x)/2,(b.y+d.y)/2);j(O(Q(c.start,c.start.scale*(e/c.startDist),{x:c.startMidX,y:c.startMidY}),f.x-c.startMidX,f.y-c.startMidY));return}let d=ai.current;if(d){if(d.pointerId!==a.pointerId)return;let b=a.clientX-d.startX,c=a.clientY-d.startY,e=8*("touch"===a.pointerType);(Math.abs(b)>e||Math.abs(c)>e)&&(al.current=!0),j({x:d.origX+b,y:d.origY+c,scale:$.current.scale});return}if(!_||_.pointerId!==a.pointerId||!v)return;let e=$.current.scale,f=(a.clientX-_.startX)/e,g=(a.clientY-_.startY)/e,h=aS(_.name);v(_.name,{...h,x:Math.max(0,_.origX+f),y:Math.max(0,_.origY+g)})},[_,aS,v,j,aE,aC]),aZ=(0,i.useCallback)(a=>{an.current.delete(a.pointerId),aE(a.pointerId),aD(a.pointerId);let b=ao.current;if(b&&(b.a===a.pointerId||b.b===a.pointerId)){ao.current=null,aq(!1);let c=b.a===a.pointerId?b.b:b.a,d=an.current.get(c);if(d){let a=$.current;ai.current={pointerId:c,startX:d.x,startY:d.y,origX:a.x,origY:a.y},al.current=!0,ak(!0)}}ai.current?.pointerId===a.pointerId&&(ai.current=null),ab.current?.pointerId===a.pointerId&&ac(null),ai.current||ak(!1),ao.current||aq(!1)},[aE,aD,ac]);(0,i.useEffect)(()=>{let a=Y.current;if(!a)return;let b=a=>{a.preventDefault();let b=$.current,c=bj(a.deltaX,a.deltaMode),d=bj(a.deltaY,a.deltaMode);if(a.ctrlKey||a.metaKey){let c=P(b,Math.exp(-(.0025*d)),aC(a.clientX,a.clientY));c!==b&&j(c);return}let e=a.shiftKey?-(c||d):-c,f=a.shiftKey?0:-d;(0!==e||0!==f)&&j(O(b,e,f))};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[j,aC]),(0,i.useEffect)(()=>{let a=a=>{"Space"!==a.code||a.repeat||bk(a.target)||bk(document.activeElement)||(a.preventDefault(),af.current=!0,ah(!0))},b=a=>{"Space"===a.code&&(af.current=!1,ah(!1))},c=()=>{af.current=!1,ah(!1)};return window.addEventListener("keydown",a),window.addEventListener("keyup",b),window.addEventListener("blur",c),()=>{window.removeEventListener("keydown",a),window.removeEventListener("keyup",b),window.removeEventListener("blur",c)}},[]);let a$=(0,i.useCallback)(a=>{let b=Y.current?.getBoundingClientRect(),c={x:(b?.width??0)/2,y:(b?.height??0)/2},d=$.current,e=P(d,a,c);e!==d&&j(e)},[j]),a_=(0,i.useCallback)(()=>{let a=Y.current?.getBoundingClientRect(),b={x:(a?.width??0)/2,y:(a?.height??0)/2};j(Q($.current,1,b))},[j]),a0=(0,i.useCallback)(()=>{let a=Y.current?.getBoundingClientRect();if(!a)return;let b=ax.map(a=>aS(a.name));j(b.length?R(b,a.width,a.height):{...M})},[ax,aS,j]);(0,i.useImperativeHandle)(b,()=>({fit:a0,zoomIn:()=>a$(1.25),zoomOut:()=>a$(.8),resetZoom:a_,element:()=>Y.current}),[a0,a$,a_]);let a1=(0,i.useRef)(a0);a1.current=a0,(0,i.useEffect)(()=>{if(void 0===s)return;let a=requestAnimationFrame(()=>a1.current());return()=>cancelAnimationFrame(a)},[s]);let a2=(0,i.useCallback)((a,b)=>{y&&(a.preventDefault(),a.stopPropagation(),y(a.clientX,a.clientY,b?{kind:"state",id:b}:{kind:"canvas"}))},[y]),a3=(0,i.useMemo)(()=>{let a=new Set(ax.map(a=>a.name)),b=[];for(let c of ax)for(let[d,e]of(c.transitions??[]).entries())e.nextState&&a.has(e.nextState)&&b.push({from:c.name,to:e.nextState,event:e.event,stateName:c.name,index:d,condition:e.condition});return b},[ax]),a4=(0,i.useMemo)(()=>{let a=K(a3,aS),b=new Map(E(a3.map((b,c)=>{let d=aS(b.from);return{id:`${b.stateName}:${b.index}`,event:b.event,condition:b.condition,glyph:!0,at:b.from===b.to?()=>({x:d.x+d.width+44+30,y:d.y+d.height/2+4}):a[c].at}}),ax.map(a=>aS(a.name))).map(a=>[a.label.id,a]));return a3.flatMap((c,d)=>{let e=`${c.stateName}:${c.index}`,f=b.get(e);return f?[{arrow:c,id:e,curve:a[d],spot:f}]:[]})},[a3,ax,aS]);(0,i.useEffect)(()=>{let a=new Set(ax.map(a=>a.name)),b=new Set(a3.map(a=>`${a.stateName}:${a.index}`)),c=aI.current===ay,d=[...a].filter(a=>!aG.current.has(a));d.length&&aL(a=>{let b=new Set(a);return d.forEach(a=>b.add(a)),b});let e=[...b].filter(a=>!aJ.current.has(a));e.length&&aN(a=>{let b=new Set(a);return e.forEach(a=>b.add(a)),b}),aL(b=>{let c=!1,d=new Set(b);return b.forEach(b=>{a.has(b)||(d.delete(b),c=!0)}),c?d:b}),aN(a=>{let c=!1,d=new Set(a);return a.forEach(a=>{b.has(a)||(d.delete(a),c=!0)}),c?d:a}),c?aP(b=>{let c=new Map(b),d=!1;return aH.current.forEach((b,e)=>{a.has(e)||c.has(e)||(c.set(e,b),d=!0)}),a.forEach(a=>{c.delete(a)&&(d=!0)}),d?c:b}):aP(a=>a.size?new Map:a),aG.current=a,aH.current=new Map(ax.map(a=>[a.name,{state:a,pos:aS(a.name)}])),aJ.current=b,aI.current=ay},[ax,ay,a3,aS]);let a5={...bh(T),...V},a6=at?" slc-hud--coarse":"";return(0,h.jsxs)("div",{className:`slc-pane${U?` ${U}`:""}`,style:a5,"data-pinch-owner":X,children:[q&&aw.length>1&&(0,h.jsx)("div",{className:"slc-crumbs",children:aw.map((a,b)=>(0,h.jsxs)("span",{className:"slc-crumb-item",children:[b>0&&(0,h.jsx)("span",{className:"slc-crumb-sep",children:"›"}),(0,h.jsx)("button",{type:"button",className:`slc-crumb${b===aw.length-1?" slc-crumb--current":""}`,onClick:()=>x?.(b),children:a})]},`${a}-${b}`))}),(0,h.jsxs)("svg",{ref:Y,id:W,className:"slc-surface",style:{cursor:aj?"grabbing":ag?"grab":void 0,touchAction:"none",...at?{WebkitUserSelect:"none",userSelect:"none",WebkitTouchCallout:"none"}:{}},onPointerDownCapture:aV,onPointerDown:aX,onPointerMove:aY,onPointerUp:aZ,onPointerCancel:aZ,onAuxClick:a=>a.preventDefault(),onClick:a=>{if(as.current){as.current=!1,a.stopPropagation();return}if(al.current){al.current=!1;return}a.target?.tagName==="svg"&&(u?.(),ae(null))},onContextMenu:a=>a2(a),children:[(0,h.jsxs)("defs",{children:[(0,h.jsx)("marker",{id:`slc-arrow-${Z}`,markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,h.jsx)("polygon",{points:"0 0, 10 3.5, 0 7",className:"slc-arrowhead"})}),(0,h.jsx)("marker",{id:`slc-arrow-sel-${Z}`,markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,h.jsx)("polygon",{points:"0 0, 10 3.5, 0 7",className:"slc-arrowhead slc-arrowhead--selected"})})]}),"transition"===n&&o&&(0,h.jsxs)("text",{x:"50%",y:"30",textAnchor:"middle",className:"slc-draw-hint",children:['Click target state to create transition from "',o,'"']}),(0,h.jsxs)("g",{transform:S(g),style:aj||ap?{pointerEvents:"none"}:void 0,children:[a4.map(({arrow:a,id:b,curve:c,spot:d})=>{let e="transition"===k.kind&&k.id===b,f=aM.has(b),g=c.at(.5),i=Math.hypot(g.x-d.cx,g.y-d.cy)>4;return(0,h.jsxs)("g",{children:[at&&(0,h.jsx)("path",{d:c.path,fill:"none",stroke:"transparent",strokeWidth:aR,strokeLinecap:"round",pointerEvents:"stroke",onClick:a=>{a.stopPropagation(),t?.("transition",b)}}),(0,h.jsx)("path",{d:c.path,pathLength:1,markerEnd:`url(#slc-arrow${e?"-sel":""}-${Z})`,className:`slc-edge${e?" slc-edge--selected":""}${f?" slc-edge-enter":""}`,onClick:a=>{a.stopPropagation(),t?.("transition",b)}}),(0,h.jsxs)("g",{className:"slc-chip",onClick:a=>{a.stopPropagation(),t?.("transition",b)},children:[i&&(0,h.jsx)("line",{x1:g.x,y1:g.y,x2:d.cx,y2:d.cy-5,className:`slc-chip-leader${e?" slc-chip-leader--selected":""}`}),at&&(0,h.jsx)("rect",{x:d.x-aQ,y:d.y-aQ,width:d.width+2*aQ,height:d.height+2*aQ,fill:"transparent",pointerEvents:"all"}),(0,h.jsx)("rect",{x:d.x,y:d.y,width:d.width,height:d.height,rx:4,className:`slc-chip-plate${e?" slc-chip-plate--selected":""}`}),(0,h.jsx)(bm,{mark:function(a){let b=a.toLowerCase();for(let{glyph:a,words:c}of H)if(c.some(a=>b.includes(a)))return a;return G}(a.event),x:B(d).x,y:B(d).y,selected:e}),(0,h.jsx)("text",{x:d.cx,y:d.cy-5,textAnchor:"middle",className:`slc-chip-text${e?" slc-chip-text--selected":""}`,children:a.event}),a.condition&&(0,h.jsxs)("text",{x:d.cx,y:d.cy+7,textAnchor:"middle",className:"slc-chip-guard",children:[(0,h.jsx)("title",{children:a.condition}),z(a.condition)]})]})]},`arrow-${b}`)}),ax.map(a=>{let b=aS(a.name),c="state"===k.kind&&k.id===a.name,d="final"===a.kind,e="history"===a.kind,f=bl(a),g=o===a.name,i=aB.has(a.name),j=(a.onEntry?.actions?.length??0)>0,l=(a.onExit?.actions?.length??0)>0,m=aA.has(a.name),q=aK.has(a.name),r=ag?void 0:"transition"!==n||p?f?"slc-node--drillable":p||!v?"slc-node--static":"slc-node--draggable":"slc-node--drawing";return(0,h.jsxs)("g",{className:r,onPointerDown:b=>aW(b,a.name),onDoubleClick:b=>{b.stopPropagation(),f&&w?.(a.name)},onContextMenu:b=>a2(b,a.name),children:[at&&(0,h.jsx)("rect",{x:b.x-aQ,y:b.y-aQ,width:b.width+2*aQ,height:b.height+2*aQ,rx:12,fill:"transparent",pointerEvents:"all"}),(0,h.jsxs)("g",{className:q?"slc-node-enter":void 0,children:[(0,h.jsx)("rect",{x:b.x,y:b.y,width:b.width,height:b.height,rx:e?30:d?4:8,strokeDasharray:d?"6 3":f?"4 2":void 0,className:["slc-node",d?"slc-node--final":f?"slc-node--composite":"",g?"slc-node--source":"",i?"slc-node--error":"",c?"slc-node--selected":"",m?"slc-node--active":""].filter(Boolean).join(" ")}),(0,h.jsx)("text",{x:b.x+b.width/2,y:b.y+(j||l?b.height/2:b.height/2+5),textAnchor:"middle",className:"slc-node-name",children:a.name}),a.kind&&"normal"!==a.kind&&(0,h.jsx)("text",{x:b.x+b.width-8,y:b.y+14,textAnchor:"end",className:"slc-node-kind",children:a.kind}),j&&(0,h.jsx)("text",{x:b.x+6,y:b.y+b.height-6,className:"slc-node-entry",children:"▸entry"}),l&&(0,h.jsx)("text",{x:b.x+b.width-6,y:b.y+b.height-6,textAnchor:"end",className:"slc-node-exit",children:"exit◂"}),i&&(0,h.jsx)("path",{d:`M ${b.x+6} ${b.y+15} l 5.5 -9.5 l 5.5 9.5 Z M ${b.x+11.5} ${b.y+9.5} v 2.6`,className:"slc-node-warn-mark"}),a.notes?.trim()&&(0,h.jsxs)("g",{children:[(0,h.jsx)("title",{children:`Notes: ${a.notes}`}),(0,h.jsx)("rect",{x:b.x+b.width-24,y:b.y-5,width:13,height:5,rx:1.5,className:"slc-note-mark"})]}),f&&(0,h.jsxs)("text",{x:b.x+b.width/2,y:b.y+b.height-6,textAnchor:"middle",className:"slc-node-drill",children:["▼ ",(a.states?.length??0)+(a.parallel?.states.length??0)," children — ",at?"double-tap":"double-click"," to enter"]})]})]},a.name)}),Array.from(aO.entries()).map(([a,{state:b,pos:c}])=>{let d="final"===b.kind,e=bl(b);return(0,h.jsxs)("g",{className:"slc-node-exit-group",onAnimationEnd:b=>{"slc-node-out"===b.animationName&&aP(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},children:[(0,h.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,rx:"history"===b.kind?30:d?4:8,strokeDasharray:d?"6 3":e?"4 2":void 0,className:`slc-node${d?" slc-node--final":e?" slc-node--composite":""}`}),(0,h.jsx)("text",{x:c.x+c.width/2,y:c.y+c.height/2+5,textAnchor:"middle",className:"slc-node-name",children:a})]},`exit-${a}`)})]}),0===ax.length&&(0,h.jsx)("text",{x:"50%",y:"50%",textAnchor:"middle",className:"slc-empty",children:N??"This level has no states."})]}),r&&(0,h.jsxs)("div",{className:`slc-hud${a6}`,children:[(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Zoom out (Ctrl + wheel down, or pinch in)",disabled:g.scale<=L.min,onClick:()=>a$(.8),children:"−"}),(0,h.jsxs)("button",{type:"button",className:"slc-hud-btn slc-hud-btn--scale",title:"Reset zoom to 100%",onClick:a_,children:[Math.round(100*g.scale),"%"]}),(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Zoom in (Ctrl + wheel up, or pinch out)",disabled:g.scale>=L.max,onClick:()=>a$(1.25),children:"+"}),(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Fit the whole machine in view",onClick:a0,children:"⤢ Fit"}),J&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),J]}),(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),(0,h.jsx)("span",{className:"slc-hud-hint",title:at?"Drag to pan · pinch with two fingers to zoom · press and hold for the menu · double-tap a composite to enter it":"Wheel scrolls · Shift+wheel scrolls sideways · Ctrl+wheel zooms at the cursor · middle-drag or Space+drag pans",children:ap?"pinching":aj?"panning":at?"drag · pinch · hold":ag?"space to pan":"wheel · ⌃wheel · space"})]}),ad&&(0,h.jsxs)("div",{className:"slc-picker",style:{left:ad.x,top:ad.y-80},onClick:a=>a.stopPropagation(),children:[(0,h.jsxs)("div",{className:"slc-picker-title",children:[ad.stateName," → ",ad.targetName]}),(0,h.jsx)("div",{className:"slc-picker-sub",children:"Select event:"}),0===az.length?(0,h.jsx)("div",{className:"slc-picker-empty",children:"No events defined. Add events first."}):az.map(a=>(0,h.jsx)("button",{type:"button",className:"slc-picker-item",onClick:()=>{ad&&(A?.(ad.stateName,ad.targetName,a),ae(null),C?.())},children:a},a)),(0,h.jsx)("button",{type:"button",className:"slc-picker-cancel",onClick:()=>{ae(null),C?.()},children:"Cancel"})]})]})});function bp(a,b){return 1===b?16*a:2===b?400*a:a}let bq={"1:1":["one","one"],"1:N":["one","many"],"N:1":["many","one"],"N:M":["many","many"]};function br(a,b,c){let d=b.x-a.x,e=b.y-a.y,f=Math.hypot(d,e)||1,g=d/f,h=e/f,i=-h,j=(b,c)=>`${(a.x+g*b+i*c).toFixed(1)} ${(a.y+h*b+g*c).toFixed(1)}`;return"one"===c?`M ${j(9,6)} L ${j(9,-6)}`:`M ${j(13,0)} L ${j(0,7)} M ${j(13,0)} L ${j(0,-7)} M ${j(13,0)} L ${j(0,0)}`}function bs(a){return[a.description??"",a.notes?.trim()?`Notes: ${a.notes}`:""].filter(Boolean).join("\n\n")}function bt(a,b){if(!a)return"";let c=Math.min(a.x+a.width,Math.max(a.x,b.x)),d=Math.min(a.y+a.height,Math.max(a.y,b.y));return c===b.x&&d===b.y?"":`M ${b.x} ${b.y} L ${c} ${d}`}function bu({definition:a,notation:b="crowsfoot",positions:c,viewport:d,onViewportChange:e,selection:f=null,errorElements:g,readOnly:j=!1,fitKey:k,onSelect:l,onClearSelection:m,onEntityMove:n,onOpenMachine:o,onContextMenu:p,emptyHint:q,theme:r,className:s,style:t,svgId:u}){let v=(0,i.useRef)(null),w=(0,i.useRef)(d);w.current=d;let x=(0,i.useRef)(null),y=(0,i.useRef)(new Map),z=(0,i.useRef)(null),A=(0,i.useMemo)(()=>{let b=new Set;return(a.entities??[]).filter(a=>!(!a?.name||b.has(a.name))&&!!c[a.name]&&(b.add(a.name),!0))},[a.entities,c]),B="chen"===b,C=(0,i.useMemo)(()=>new Map(B?A.map(a=>{var b;let d,e,f,g,h,i,j;return[a.name,(b=c[a.name],d=ae(a),e=af(a),f={x:b.x+(b.width-e)/2,y:b.y+(b.height-40)/2,width:e,height:40},g=ag(d),h=f.y+f.height/2,i=ah(d.length),j=d.map((a,b)=>{let c=b<i,e=c?i:d.length-i,j=h+((c?b:b-i)-(e-1)/2)*32,k=c?f.x-34-g:f.x+f.width+34+g;return{attribute:a,cx:k,cy:j,rx:g,ry:13,from:{x:c?f.x:f.x+f.width,y:h},to:{x:c?k+g:k-g,y:j}}}),{rect:f,ovals:j,routingBox:{x:f.x,y:b.y,width:f.width,height:b.height}})]}):[]),[B,A,c]),D=(0,i.useMemo)(()=>{let b=new Map(A.map((a,b)=>[a.name,`e${b}`])),d=(a.relationships??[]).filter(a=>a&&b.has(a.from)&&b.has(a.to)),e=K(d.map(a=>({from:b.get(a.from),to:b.get(a.to)})),a=>{let b=A[Number(a.slice(1))].name;return C.get(b)?.routingBox??c[b]});return d.map((a,b)=>({rel:a,curve:e[b]}))},[a.relationships,A,c,C]),F=(0,i.useMemo)(()=>E(D.filter(({rel:a})=>B||a.label).map(({rel:a,curve:b})=>({event:a.label||" ",at:b.at,rel:a})),A.map(a=>c[a.name])),[B,D,A,c]),G=(0,i.useCallback)((a,b)=>{let c=v.current?.getBoundingClientRect();return{x:a-(c?.left??0),y:b-(c?.top??0)}},[]);(0,i.useEffect)(()=>{if(void 0===k)return;let a=v.current?.getBoundingClientRect(),b=Object.values(c);a&&0!==b.length&&e(R(b,a.width,a.height))},[k]),(0,i.useEffect)(()=>{let a=v.current;if(!a)return;let b=a=>{a.preventDefault();let b=w.current,c=bp(a.deltaX,a.deltaMode),d=bp(a.deltaY,a.deltaMode);if(a.ctrlKey||a.metaKey)return void e(P(b,Math.exp(-(.0025*d)),G(a.clientX,a.clientY)));let f=a.shiftKey?-(c||d):-c,g=a.shiftKey?0:-d;(0!==f||0!==g)&&e(O(b,f,g))};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[e,G]);let H=()=>{let a=[...y.current.values()];if(a.length<2)return null;let[b,c]=a;return{distance:Math.hypot(c.x-b.x,c.y-b.y)||1,mid:{x:(b.x+c.x)/2,y:(b.y+c.y)/2}}},I=(a,b)=>{if(0!==a.button&&"mouse"===a.pointerType)return;if(a.stopPropagation(),v.current?.setPointerCapture(a.pointerId),y.current.set(a.pointerId,G(a.clientX,a.clientY)),y.current.size>=2){x.current=null,z.current=H();return}let d=void 0!==b&&!j;x.current={kind:d?"move":"pan",pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,lastX:a.clientX,lastY:a.clientY,name:b,origin:d?c[b]:void 0,moved:!1}},J=a=>{if(y.current.delete(a.pointerId),z.current){y.current.size<2&&(z.current=null);return}let b=x.current;!b||b.pointerId!==a.pointerId||(x.current=null,b.moved||(b.name?l?.(b.name):m?.()))},L=new Set(g??[]);return(0,h.jsxs)("div",{className:`slc-pane${s?` ${s}`:""}`,style:{...bh(r),...t},children:[(0,h.jsx)("svg",{ref:v,id:u,className:"slc-surface",onPointerDown:a=>I(a),onPointerMove:a=>{if(y.current.has(a.pointerId)&&y.current.set(a.pointerId,G(a.clientX,a.clientY)),z.current){let a=H();if(!a)return;let b=z.current;e(P(O(w.current,a.mid.x-b.mid.x,a.mid.y-b.mid.y),a.distance/b.distance,a.mid)),z.current=a;return}let b=x.current;if(b&&b.pointerId===a.pointerId&&!(!b.moved&&4>Math.hypot(a.clientX-b.startX,a.clientY-b.startY))){if(b.moved=!0,"pan"===b.kind)e(O(w.current,a.clientX-b.lastX,a.clientY-b.lastY));else if(b.name&&b.origin){var c,d,f;let e=(c=w.current,d=a.clientX-b.startX,f=a.clientY-b.startY,{x:d/c.scale,y:f/c.scale});n?.(b.name,{...b.origin,x:b.origin.x+e.x,y:b.origin.y+e.y})}b.lastX=a.clientX,b.lastY=a.clientY}},onPointerUp:J,onPointerCancel:J,onContextMenu:a=>{p&&(a.preventDefault(),p(a.clientX,a.clientY,{kind:"canvas"}))},children:(0,h.jsxs)("g",{transform:S(d),children:[D.map(({rel:a,curve:b},c)=>{if(B){let[d,e]=function(a){switch(a){case"1:1":return["1","1"];case"N:1":return["N","1"];case"N:M":return["M","N"];default:return["1","N"]}}(a.cardinality),f=b.at(.12),g=b.at(.88);return(0,h.jsxs)("g",{className:"slc-erd-rel",children:[(0,h.jsx)("path",{d:bt(C.get(a.from)?.rect,b.p0),className:"slc-erd-line"}),(0,h.jsx)("path",{d:bt(C.get(a.to)?.rect,b.p3),className:"slc-erd-line"}),(0,h.jsx)("path",{d:b.path,className:"slc-erd-line"}),(0,h.jsx)("text",{x:f.x+9,y:f.y+4,className:"slc-erd-card",children:d}),(0,h.jsx)("text",{x:g.x+9,y:g.y+4,className:"slc-erd-card",children:e})]},`r${c}`)}let[d,e]=bq[a.cardinality]??bq["1:N"];return(0,h.jsxs)("g",{className:"slc-erd-rel",children:[(0,h.jsx)("path",{d:b.path,className:"slc-erd-line"}),(0,h.jsx)("path",{d:br(b.p0,b.p1,d),className:"slc-erd-mark"}),(0,h.jsx)("path",{d:br(b.p3,b.p2,e),className:"slc-erd-mark"})]},`r${c}`)}),A.map(a=>{let b=c[a.name],d=(a.attributes??[]).filter(a=>a?.name),e=["slc-node",f===a.name?"slc-node--selected":"",L.has(a.name)?"slc-node--error":""].filter(Boolean).join(" "),g=C.get(a.name);if(g){let{rect:b,ovals:c}=g;return(0,h.jsxs)("g",{className:j?"slc-node--static":"slc-node--draggable",onPointerDown:b=>I(b,a.name),onContextMenu:b=>{p&&(b.preventDefault(),b.stopPropagation(),p(b.clientX,b.clientY,{kind:"entity",id:a.name}))},children:[c.map(a=>(0,h.jsx)("path",{d:`M ${a.from.x} ${a.from.y} L ${a.to.x} ${a.to.y}`,className:"slc-erd-attr-line"},`l-${a.attribute.name}`)),c.map(a=>{var b;let c,d=U(a.attribute),e=d.length>0&&!!o;return(0,h.jsxs)("g",{className:e?"slc-erd-state":void 0,onPointerDown:e?a=>a.stopPropagation():void 0,onClick:e?()=>o(d[0]):void 0,children:[(0,h.jsx)("title",{children:(c=U(b=a.attribute),[`${aq(b)}${b.nullable?" ?":""}`,"pk"===b.key?"primary key":"uk"===b.key?"unique":"",b.references?`references ${b.references}`:"",c.length?`stores the state of ${c.join(", ")}`:"",b.description??""].filter(Boolean).join(" — "))}),(0,h.jsx)("ellipse",{cx:a.cx,cy:a.cy,rx:a.rx,ry:a.ry,className:"slc-erd-oval"}),(0,h.jsxs)("text",{x:a.cx,y:a.cy+4,textAnchor:"middle",className:`slc-erd-oval-text${"pk"===a.attribute.key?" slc-erd-oval-text--pk":""}${d.length?" slc-erd-row--state":""}`,children:[d.length?"◉ ":"",a.attribute.name]})]},a.attribute.name)}),bs(a)&&(0,h.jsx)("title",{children:bs(a)}),(0,h.jsx)("rect",{x:b.x,y:b.y,width:b.width,height:b.height,rx:2,className:e}),a.notes?.trim()&&(0,h.jsx)("rect",{x:b.x+b.width-24,y:b.y-5,width:13,height:5,rx:1.5,className:"slc-note-mark"}),a.weak&&(0,h.jsx)("rect",{x:b.x+4,y:b.y+4,width:b.width-8,height:b.height-8,rx:1,className:"slc-erd-weak"}),(0,h.jsx)("text",{x:b.x+b.width/2,y:b.y+b.height/2+5,textAnchor:"middle",className:"slc-node-name",children:a.name})]},a.name)}return(0,h.jsxs)("g",{className:j?"slc-node--static":"slc-node--draggable",onPointerDown:b=>I(b,a.name),onContextMenu:b=>{p&&(b.preventDefault(),b.stopPropagation(),p(b.clientX,b.clientY,{kind:"entity",id:a.name}))},children:[bs(a)&&(0,h.jsx)("title",{children:bs(a)}),(0,h.jsx)("rect",{x:b.x,y:b.y,width:b.width,height:b.height,rx:6,className:e}),a.notes?.trim()&&(0,h.jsx)("rect",{x:b.x+b.width-24,y:b.y-5,width:13,height:5,rx:1.5,className:"slc-note-mark"}),(0,h.jsx)("path",{d:`M ${b.x} ${b.y+30} h ${b.width}`,className:"slc-erd-rule"}),(0,h.jsx)("text",{x:b.x+b.width/2,y:b.y+15+5,textAnchor:"middle",className:"slc-node-name",children:a.name}),0===d.length&&(0,h.jsx)("text",{x:b.x+14,y:b.y+30+15,className:"slc-erd-row slc-erd-row--empty",children:"no attributes"}),d.map((a,c)=>{let d=b.y+30+20*c+15,e=U(a),f=["pk"===a.key?"PK":"uk"===a.key?"UK":"",a.references?"FK":""].filter(Boolean).join(" ");return(0,h.jsxs)("g",{className:e.length&&o?"slc-erd-state":void 0,onPointerDown:e.length&&o?a=>a.stopPropagation():void 0,onClick:e.length&&o?()=>o(e[0]):void 0,children:[(e.length>0||a.description)&&(0,h.jsx)("title",{children:[e.length?`stores the state of ${e.join(", ")}`:"",a.description??""].filter(Boolean).join(" — ")}),(0,h.jsxs)("text",{x:b.x+14,y:d,className:`slc-erd-row${e.length?" slc-erd-row--state":""}${"pk"===a.key?" slc-erd-row--pk":""}`,children:[e.length?"◉ ":"",aq(a),a.nullable?" ?":""]}),f&&(0,h.jsx)("text",{x:b.x+b.width-14,y:d,textAnchor:"end",className:"slc-erd-badge",children:f})]},a.name)})]},a.name)}),F.map((a,b)=>{if(!B)return null;let c=a.x+a.width/2,d=a.y+a.height/2,e=Math.max(34,Math.ceil(3.7*(a.label.rel.label??"").length+18));return(0,h.jsxs)("g",{pointerEvents:"none",children:[(0,h.jsx)("path",{d:`M ${c-e} ${d} L ${c} ${d-18} L ${c+e} ${d} L ${c} ${d+18} Z`,className:"slc-erd-diamond"}),(0,h.jsx)("text",{x:c,y:d+4,textAnchor:"middle",className:"slc-erd-rel-label",children:a.label.rel.label??""})]},`d${b}`)}),!B&&F.map((a,b)=>(0,h.jsxs)("g",{pointerEvents:"none",children:[(0,h.jsx)("rect",{x:a.x,y:a.y,width:a.width,height:a.height,rx:4,className:"slc-chip-plate"}),(0,h.jsx)("text",{x:a.cx,y:a.cy-5,textAnchor:"middle",className:"slc-erd-rel-label",children:a.label.event})]},`l${b}`))]})}),0===A.length&&q&&(0,h.jsx)("div",{className:"slc-erd-empty",children:q})]})}function bv(a,b){return 1===b?16*a:2===b?400*a:a}function bw(a,b,c,d){let e=a-9*c;return d?`M ${e} ${b-4.5} L ${a} ${b} L ${e} ${b+4.5}`:`M ${e} ${b-4.5} L ${a} ${b} L ${e} ${b+4.5} Z`}function bx(a){return[a.actor?`actor ${a.actor}`:a.object?`object ${a.object}`:a.service?`service ${a.service}`:"",a.holds?.length?`holds ${a.holds.join(", ")}`:"",a.description??"",a.notes?.trim()?`Notes: ${a.notes}`:""].filter(Boolean).join("\n")}let by=a=>"string"==typeof a?a:null==a?"":String(a);function bz(a){let b=a&&"object"==typeof a?a:{};return{from:by(b.from),to:by(b.to),label:by(b.label),event:by(b.event)||void 0,machine:by(b.machine)||void 0,carries:by(b.carries)||void 0,state:by(b.state)||void 0,description:by(b.description)||void 0,notes:by(b.notes)||void 0,optional:!0===b.optional||void 0,reply:!0===b.reply||void 0}}function bA(a){let b=a&&"object"==typeof a?a:{},c=a=>Array.isArray(a)?a:[],d=b.settings&&"object"==typeof b.settings?b.settings:{};return{settings:{namespace:by(d.namespace),name:by(d.name),notes:by(d.notes)||void 0},participants:c(b.participants).map(a=>{let b=a&&"object"==typeof a?a:{};return{name:by(b.name),description:by(b.description)||void 0,notes:by(b.notes)||void 0,actor:by(b.actor)||void 0,service:by(b.service)||void 0,object:by(b.object)||void 0,holds:Array.isArray(b.holds)?b.holds.map(by):"string"==typeof b.holds?[b.holds]:void 0}}),messages:c(b.messages).map(bz),...Array.isArray(b.fragments)?{fragments:b.fragments.map(a=>{let b=a&&"object"==typeof a?a:{};return{kind:by(b.kind),label:by(b.label),after:"number"==typeof b.after&&Number.isFinite(b.after)?b.after:0,notes:by(b.notes)||void 0,messages:c(b.messages).map(bz)}})}:{}}}function bB({definition:a,layout:b,viewport:c,onViewportChange:d,selection:e=null,errorElements:f,warningElements:g,fitKey:j,onSelect:k,onClearSelection:l,onContextMenu:m,emptyHint:n,theme:o,className:p,style:q,svgId:r}){let s=(0,i.useRef)(null),t=(0,i.useRef)(c);t.current=c;let u=(0,i.useRef)(null),v=(0,i.useRef)(new Map),w=(0,i.useRef)(null),x=(0,i.useMemo)(()=>bA(a),[a]),z=(0,i.useMemo)(()=>b??aK(x),[b,x]),A=(0,i.useRef)(new Map),[B,C]=(0,i.useState)({}),D=a=>b=>{b?A.current.set(a,b):A.current.delete(a)};(0,i.useLayoutEffect)(()=>{let a={},b=!1;for(let[c,d]of A.current){let e="function"==typeof d.getComputedTextLength?d.getComputedTextLength():0;e&&(a[c]=e,Math.abs((B[c]??-1)-e)>.5&&(b=!0))}b&&C(a)},[z,x]);let E=(0,i.useMemo)(()=>new Map(ay(x).map(a=>[a.ref,a.message])),[x]),F=(0,i.useMemo)(()=>new Map(x.participants.filter(a=>a.name).map(a=>[a.name,a])),[x.participants]),G=(0,i.useCallback)((a,b)=>{let c=s.current?.getBoundingClientRect();return{x:a-(c?.left??0),y:b-(c?.top??0)}},[]);(0,i.useEffect)(()=>{if(void 0===j)return;let a=s.current?.getBoundingClientRect();a&&0!==z.participants.length&&d(R([{x:0,y:0,width:z.width,height:z.height}],a.width,a.height,{padding:16}))},[j]),(0,i.useEffect)(()=>{let a=s.current;if(!a)return;let b=a=>{a.preventDefault();let b=t.current,c=bv(a.deltaX,a.deltaMode),e=bv(a.deltaY,a.deltaMode);if(a.ctrlKey||a.metaKey)return void d(P(b,Math.exp(-(.0025*e)),G(a.clientX,a.clientY)));let f=a.shiftKey?-(c||e):-c,g=a.shiftKey?0:-e;(0!==f||0!==g)&&d(O(b,f,g))};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[d,G]);let H=()=>{let a=[...v.current.values()];if(a.length<2)return null;let[b,c]=a;return{distance:Math.hypot(c.x-b.x,c.y-b.y)||1,mid:{x:(b.x+c.x)/2,y:(b.y+c.y)/2}}},I=(a,b)=>{if(0===a.button||"mouse"!==a.pointerType){if(a.stopPropagation(),s.current?.setPointerCapture(a.pointerId),v.current.set(a.pointerId,G(a.clientX,a.clientY)),v.current.size>=2){u.current=null,w.current=H();return}u.current={pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,lastX:a.clientX,lastY:a.clientY,target:b,moved:!1}}},J=a=>{if(v.current.delete(a.pointerId),w.current){v.current.size<2&&(w.current=null);return}let b=u.current;!b||b.pointerId!==a.pointerId||(u.current=null,b.moved||(b.target?k?.(b.target.kind,b.target.id):l?.()))},K=a=>b=>{m&&(b.preventDefault(),b.stopPropagation(),m(b.clientX,b.clientY,a))},L=new Set(f??[]),M=new Set(g??[]),N=(a,b)=>e?.kind===a&&e.id===b,Q=e?.kind==="message"?E.get(e.id):void 0;return(0,h.jsxs)("div",{className:`slc-pane${p?` ${p}`:""}`,style:{...bh(o),...q},children:[(0,h.jsx)("svg",{ref:s,id:r,className:"slc-surface",onPointerDown:a=>I(a),onPointerMove:a=>{if(v.current.has(a.pointerId)&&v.current.set(a.pointerId,G(a.clientX,a.clientY)),w.current){let a=H();if(!a)return;let b=w.current;d(P(O(t.current,a.mid.x-b.mid.x,a.mid.y-b.mid.y),a.distance/b.distance,a.mid)),w.current=a;return}let b=u.current;!b||b.pointerId!==a.pointerId||!b.moved&&4>Math.hypot(a.clientX-b.startX,a.clientY-b.startY)||(b.moved=!0,d(O(t.current,a.clientX-b.lastX,a.clientY-b.lastY)),b.lastX=a.clientX,b.lastY=a.clientY)},onPointerUp:J,onPointerCancel:J,onContextMenu:K({kind:"canvas"}),children:(0,h.jsxs)("g",{transform:S(c),children:[z.fragments.map(a=>{let b=x.fragments?.[a.index];if(!b)return null;let c=y(`${b.kind} \xb7 after ${b.after} \xb7 ${b.label}`,11)+18,d=a.top;return(0,h.jsxs)("g",{className:"slc-sqd-fragment",children:[b.notes?.trim()&&(0,h.jsx)("title",{children:`Notes: ${b.notes}`}),(0,h.jsx)("rect",{x:a.left,y:d,width:a.width,height:a.height,rx:3,className:"slc-sqd-frame"}),(0,h.jsx)("path",{d:`M ${a.left} ${d+22} L ${a.left} ${d} L ${a.left+c} ${d} L ${a.left+c} ${d+15} L ${a.left+c-7} ${d+22} Z`,className:"slc-sqd-frame-tab"}),(0,h.jsxs)("text",{x:a.left+8,y:d+15,className:"slc-sqd-frame-heading",children:[(0,h.jsx)("tspan",{className:"slc-sqd-frame-kind",children:b.kind}),` \xb7 after ${b.after} \xb7 ${b.label}`]}),b.notes?.trim()&&(0,h.jsx)("rect",{x:a.left+c+6,y:d+7,width:13,height:5,rx:1.5,className:"slc-note-mark"})]},`f${a.index}`)}),z.participants.map(a=>{let b=N("participant",a.name);return(0,h.jsxs)("g",{onPointerDown:b=>I(b,{kind:"participant",id:a.name}),children:[(0,h.jsx)("path",{d:`M ${a.x} ${z.lifelineTop} V ${z.lifelineBottom}`,className:"slc-sqd-hit"}),(0,h.jsx)("path",{d:`M ${a.x} ${z.lifelineTop} V ${z.lifelineBottom}`,className:`slc-sqd-lifeline${b?" slc-sqd-lifeline--selected":""}`})]},`l-${a.name}`)}),z.fragments.map(a=>{let b=x.fragments?.[a.index],c=b&&b.after>0?z.rows.find(a=>null===a.fragment&&a.index===b.after-1):void 0;if(!c)return null;let d=a.left+4;return(0,h.jsx)("path",{d:`M ${Math.min(c.fromX,c.toX)-14} ${c.y} H ${d} V ${a.top}`,className:"slc-sqd-branch"},`fa${a.index}`)}),z.rows.map(a=>{var b;let c,d,e,f,g=E.get(a.ref);if(!g)return null;let i=`message:${a.ref}`,j=N("message",a.ref),k=L.has(i),l=!k&&M.has(i),m=["slc-sqd-line",g.reply?"slc-sqd-line--reply":"",g.optional?"slc-sqd-line--optional":"",k?"slc-sqd-line--error":l?"slc-sqd-line--warn":"",j?"slc-sqd-line--selected":""].filter(Boolean).join(" "),n=`slc-sqd-head${g.reply?" slc-sqd-head--open":""}${j?" slc-sqd-head--selected":k?" slc-sqd-head--error":""}`,o=a.ref,p=y(o,10)+8,q=B[`${a.ref}:label`]??y(g.label??"",11),r=g.optional?y("opt",10)+8:0,s=g.event?(B[`${a.ref}:event`]??6.1*g.event.length)+12:0,t=g.state?`→ ${g.state}`:"",u=g.state?B[`${a.ref}:state`]??y(t,11):0,v=p+5+q+(r?5+r:0)+(s?5+s:0)+(u?5+u:0);if(a.self){let b=a.fromX,i=a.y-7-2,j=i+14;e=(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("path",{d:`M ${b} ${i} H ${b+30} V ${j} H ${b+2}`,className:m}),(0,h.jsx)("path",{d:bw(b+1,j,-1,!!g.reply),className:n})]}),c=b+30+8,d=a.y+2,f={x:b-6,y:i-8,w:44+v,h:30}}else{let b=a.toX>=a.fromX?1:-1,i=a.toX-b;e=(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("path",{d:`M ${a.fromX} ${a.y} H ${i}`,className:m}),(0,h.jsx)("path",{d:bw(i,a.y,b,!!g.reply),className:n})]}),c=(a.fromX+a.toX)/2-v/2,d=a.y-6;let j=Math.min(a.fromX,a.toX,c),k=Math.max(a.fromX,a.toX,c+v);f={x:j-4,y:a.y-22,w:k-j+8,h:30}}let w=c,x=a=>{let b=w;return w+=a+5,b},z=x(p),A=x(q),C=r?x(r):0,F=s?x(s):0,G=u?x(u):0;return(0,h.jsxs)("g",{className:"slc-sqd-message",onPointerDown:b=>I(b,{kind:"message",id:a.ref}),onContextMenu:K({kind:"message",id:a.ref}),children:[(0,h.jsx)("title",{children:(b=a.ref,[`${b}. ${g.from} → ${g.to}: ${g.label}`,g.event?`fires ${g.event}${g.machine?` on ${g.machine}`:""}`:"",g.carries?`carries ${g.carries}`:"",g.state?`then ${g.state}`:"",g.optional?"optional":"",g.reply?"reply":"",g.description??"",g.notes?.trim()?`Notes: ${g.notes}`:""].filter(Boolean).join("\n"))}),(0,h.jsx)("rect",{x:f.x,y:f.y,width:f.w,height:f.h,className:"slc-sqd-hitbox"}),j&&(0,h.jsx)("rect",{x:f.x,y:f.y,width:f.w,height:f.h,rx:4,className:"slc-sqd-selected-plate"}),e,(0,h.jsx)("rect",{x:z,y:d-10,width:p-2,height:13,rx:6.5,className:`slc-sqd-ref-plate${j?" slc-sqd-ref-plate--selected":""}`}),(0,h.jsx)("text",{x:z+(p-2)/2,y:d,textAnchor:"middle",className:"slc-sqd-ref",children:o}),(0,h.jsx)("text",{ref:D(`${a.ref}:label`),x:A,y:d,className:`slc-sqd-label${j?" slc-sqd-label--selected":""}${k?" slc-sqd-label--error":""}`,children:g.label}),r>0&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("rect",{x:C,y:d-10,width:r,height:13,rx:3,className:"slc-sqd-opt"}),(0,h.jsx)("text",{x:C+r/2,y:d-.5,textAnchor:"middle",className:"slc-sqd-opt-text",children:"opt"})]}),s>0&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("rect",{x:F,y:d-10.5,width:s,height:14,rx:7,className:"slc-sqd-event"}),(0,h.jsx)("text",{ref:D(`${a.ref}:event`),x:F+s/2,y:d-.5,textAnchor:"middle",className:"slc-sqd-event-text",children:g.event})]}),u>0&&(0,h.jsx)("text",{ref:D(`${a.ref}:state`),x:G,y:d,className:"slc-sqd-state",children:t}),g.notes?.trim()&&(0,h.jsx)("rect",{x:w-5+3,y:d-9,width:5,height:11,rx:1.5,className:"slc-note-mark"})]},`m-${a.ref}`)}),z.participants.map(a=>{let b=F.get(a.name);if(!b)return null;let c=`participant:${a.name}`,d=N("participant",a.name)||!!Q&&(Q.from===a.name||Q.to===a.name),e=["slc-node","slc-sqd-header",N("participant",a.name)?"slc-node--selected":d?"slc-sqd-header--involved":"",L.has(c)?"slc-node--error":""].filter(Boolean).join(" "),f=b.actor?"actor":b.object?"object":b.service?"service":"";return(0,h.jsxs)("g",{className:"slc-node--static slc-sqd-participant",onPointerDown:b=>I(b,{kind:"participant",id:a.name}),onContextMenu:K({kind:"participant",id:a.name}),children:[bx(b)&&(0,h.jsx)("title",{children:bx(b)}),(0,h.jsx)("rect",{x:a.left,y:a.top,width:a.width,height:a.height,rx:b.actor?a.height/2:4,className:e}),b.notes?.trim()&&(0,h.jsx)("rect",{x:a.left+a.width-24,y:a.top-5,width:13,height:5,rx:1.5,className:"slc-note-mark"}),(0,h.jsx)("text",{x:a.x,y:a.top+a.height/2+(f?1:4),textAnchor:"middle",className:`slc-node-name slc-sqd-name${b.object?" slc-sqd-name--object":""}`,children:a.name}),f&&(0,h.jsxs)("text",{x:a.x,y:a.top+a.height-4,textAnchor:"middle",className:"slc-sqd-kind",children:["object"===f?`:${b.object}`:"service"===f?"service":"actor",b.holds?.length?` \xb7 holds ${b.holds.length}`:""]})]},`p-${a.name}`)})]})}),0===z.participants.length&&n&&(0,h.jsx)("div",{className:"slc-erd-empty",children:n})]})}let bC=a=>{let b,c=new Set,d=(a,d)=>{let e="function"==typeof a?a(b):a;if(!Object.is(e,b)){let a=b;b=(null!=d?d:"object"!=typeof e||null===e)?e:Object.assign({},b,e),c.forEach(c=>c(b,a))}},e=()=>b,f={setState:d,getState:e,getInitialState:()=>g,subscribe:a=>(c.add(a),()=>c.delete(a))},g=b=a(d,e,f);return f},bD=a=>{let b=a?bC(a):bC,c=a=>(function(a,b=a=>a){let c=i.default.useSyncExternalStore(a.subscribe,i.default.useCallback(()=>b(a.getState()),[a,b]),i.default.useCallback(()=>b(a.getInitialState()),[a,b]));return i.default.useDebugValue(c),c})(b,a);return Object.assign(c,b),c};var bE=a.i(53681);let bF=Object.create(null);bF.open="0",bF.close="1",bF.ping="2",bF.pong="3",bF.message="4",bF.upgrade="5",bF.noop="6";let bG=Object.create(null);Object.keys(bF).forEach(a=>{bG[bF[a]]=a});let bH={type:"error",data:"parser error"},bI=({type:a,data:b},c,d)=>d(b instanceof ArrayBuffer||ArrayBuffer.isView(b)?c?b:"b"+bJ(b,!0).toString("base64"):bF[a]+(b||"")),bJ=(a,b)=>Buffer.isBuffer(a)||a instanceof Uint8Array&&!b?a:a instanceof ArrayBuffer?Buffer.from(a):Buffer.from(a.buffer,a.byteOffset,a.byteLength),bK=(a,b)=>{if("string"!=typeof a)return{type:"message",data:bL(a,b)};let c=a.charAt(0);return"b"===c?{type:"message",data:bL(Buffer.from(a.substring(1),"base64"),b)}:bG[c]?a.length>1?{type:bG[c],data:a.substring(1)}:{type:bG[c]}:bH},bL=(a,b)=>"arraybuffer"===b?a instanceof ArrayBuffer?a:Buffer.isBuffer(a)?a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength):a.buffer:Buffer.isBuffer(a)?a:Buffer.from(a);function bM(a){return a.reduce((a,b)=>a+b.length,0)}function bN(a,b){if(a[0].length===b)return a.shift();let c=new Uint8Array(b),d=0;for(let e=0;e<b;e++)c[e]=a[0][d++],d===a[0].length&&(a.shift(),d=0);return a.length&&d<a[0].length&&(a[0]=a[0].slice(d)),c}function bO(a){if(a){var b=a;for(var c in bO.prototype)b[c]=bO.prototype[c];return b}}bO.prototype.on=bO.prototype.addEventListener=function(a,b){return this._callbacks=this._callbacks||{},(this._callbacks["$"+a]=this._callbacks["$"+a]||[]).push(b),this},bO.prototype.once=function(a,b){function c(){this.off(a,c),b.apply(this,arguments)}return c.fn=b,this.on(a,c),this},bO.prototype.off=bO.prototype.removeListener=bO.prototype.removeAllListeners=bO.prototype.removeEventListener=function(a,b){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var c,d=this._callbacks["$"+a];if(!d)return this;if(1==arguments.length)return delete this._callbacks["$"+a],this;for(var e=0;e<d.length;e++)if((c=d[e])===b||c.fn===b){d.splice(e,1);break}return 0===d.length&&delete this._callbacks["$"+a],this},bO.prototype.emit=function(a){this._callbacks=this._callbacks||{};for(var b=Array(arguments.length-1),c=this._callbacks["$"+a],d=1;d<arguments.length;d++)b[d-1]=arguments[d];if(c){c=c.slice(0);for(var d=0,e=c.length;d<e;++d)c[d].apply(this,b)}return this},bO.prototype.emitReserved=bO.prototype.emit,bO.prototype.listeners=function(a){return this._callbacks=this._callbacks||{},this._callbacks["$"+a]||[]},bO.prototype.hasListeners=function(a){return!!this.listeners(a).length};let bP=process.nextTick,bQ=a.g;class bR{constructor(){this._cookies=new Map}parseCookies(a){a&&a.forEach(a=>{let b=function(a){let b=a.split("; "),c=b[0].indexOf("=");if(-1===c)return;let d=b[0].substring(0,c).trim();if(!d.length)return;let e=b[0].substring(c+1).trim();34===e.charCodeAt(0)&&(e=e.slice(1,-1));let f={name:d,value:e};for(let a=1;a<b.length;a++){let c=b[a].split("=");if(2!==c.length)continue;let d=c[0].trim(),e=c[1].trim();switch(d){case"Expires":f.expires=new Date(e);break;case"Max-Age":let g=new Date;g.setUTCSeconds(g.getUTCSeconds()+parseInt(e,10)),f.expires=g}}return f}(a);b&&this._cookies.set(b.name,b)})}get cookies(){let a=Date.now();return this._cookies.forEach((b,c)=>{var d;(null==(d=b.expires)?void 0:d.getTime())<a&&this._cookies.delete(c)}),this._cookies.entries()}addCookies(a){let b=[];for(let[a,c]of this.cookies)b.push(`${a}=${c.value}`);b.length&&(a.setDisableHeaderCheck(!0),a.setRequestHeader("cookie",b.join("; ")))}appendCookies(a){for(let[b,c]of this.cookies)a.append("cookie",`${b}=${c.value}`)}}function bS(a,...b){return b.reduce((b,c)=>(a.hasOwnProperty(c)&&(b[c]=a[c]),b),{})}let bT=bQ.setTimeout,bU=bQ.clearTimeout;function bV(a,b){b.useNativeTimers?(a.setTimeoutFn=bT.bind(bQ),a.clearTimeoutFn=bU.bind(bQ)):(a.setTimeoutFn=bQ.setTimeout.bind(bQ),a.clearTimeoutFn=bQ.clearTimeout.bind(bQ))}function bW(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}var bX=a.i(72724);let bY=(0,bX.default)("engine.io-client:transport");class bZ extends Error{constructor(a,b,c){super(a),this.description=b,this.context=c,this.type="TransportError"}}class b$ extends bO{constructor(a){super(),this.writable=!1,bV(this,a),this.opts=a,this.query=a.query,this.socket=a.socket,this.supportsBinary=!a.forceBase64}onError(a,b,c){return super.emitReserved("error",new bZ(a,b,c)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return("opening"===this.readyState||"open"===this.readyState)&&(this.doClose(),this.onClose()),this}send(a){"open"===this.readyState?this.write(a):bY("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(a){let b=bK(a,this.socket.binaryType);this.onPacket(b)}onPacket(a){super.emitReserved("packet",a)}onClose(a){this.readyState="closed",super.emitReserved("close",a)}pause(a){}createUri(a,b={}){return a+"://"+this._hostname()+this._port()+this.opts.path+this._query(b)}_hostname(){let a=this.opts.hostname;return -1===a.indexOf(":")?a:"["+a+"]"}_port(){return this.opts.port&&(this.opts.secure&&443!==Number(this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(a){let b=function(a){let b="";for(let c in a)a.hasOwnProperty(c)&&(b.length&&(b+="&"),b+=encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b}(a);return b.length?"?"+b:""}}let b_=(0,bX.default)("engine.io-client:polling");class b0 extends b${constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(a){this.readyState="pausing";let b=()=>{b_("paused"),this.readyState="paused",a()};if(this._polling||!this.writable){let a=0;this._polling&&(b_("we are currently polling - waiting to pause"),a++,this.once("pollComplete",function(){b_("pre-pause polling complete"),--a||b()})),this.writable||(b_("we are currently writing - waiting to pause"),a++,this.once("drain",function(){b_("pre-pause writing complete"),--a||b()}))}else b()}_poll(){b_("polling"),this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(a){b_("polling got data %s",a);let b=a=>{if("opening"===this.readyState&&"open"===a.type&&this.onOpen(),"close"===a.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(a)};((a,b)=>{let c=a.split("\x1e"),d=[];for(let a=0;a<c.length;a++){let e=bK(c[a],b);if(d.push(e),"error"===e.type)break}return d})(a,this.socket.binaryType).forEach(b),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this._poll():b_('ignoring poll - transport state "%s"',this.readyState))}doClose(){let a=()=>{b_("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(b_("transport open - closing"),a()):(b_("transport not open - deferring close"),this.once("open",a))}write(a){var b;let c,d,e;this.writable=!1,b=a=>{this.doWrite(a,()=>{this.writable=!0,this.emitReserved("drain")})},d=Array(c=a.length),e=0,a.forEach((a,f)=>{bI(a,!1,a=>{d[f]=a,++e===c&&b(d.join("\x1e"))})})}uri(){let a=this.opts.secure?"https":"http",b=this.query||{};return!1!==this.opts.timestampRequests&&(b[this.opts.timestampParam]=bW()),this.supportsBinary||b.sid||(b.b64=1),this.createUri(a,b)}}let b1=!1;try{b1="u">typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(a){}let b2=b1,b3=(0,bX.default)("engine.io-client:polling");function b4(){}class b5 extends b0{constructor(a){if(super(a),"u">typeof location){const b="https:"===location.protocol;let c=location.port;c||(c=b?"443":"80"),this.xd="u">typeof location&&a.hostname!==location.hostname||c!==a.port}}doWrite(a,b){let c=this.request({method:"POST",data:a});c.on("success",b),c.on("error",(a,b)=>{this.onError("xhr post error",a,b)})}doPoll(){b3("xhr poll");let a=this.request();a.on("data",this.onData.bind(this)),a.on("error",(a,b)=>{this.onError("xhr poll error",a,b)}),this.pollXhr=a}}class b6 extends bO{constructor(a,b,c){super(),this.createRequest=a,bV(this,c),this._opts=c,this._method=c.method||"GET",this._uri=b,this._data=void 0!==c.data?c.data:null,this._create()}_create(){var a;let b=bS(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");b.xdomain=!!this._opts.xd;let c=this._xhr=this.createRequest(b);try{b3("xhr open %s: %s",this._method,this._uri),c.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders)for(let a in c.setDisableHeaderCheck&&c.setDisableHeaderCheck(!0),this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(a)&&c.setRequestHeader(a,this._opts.extraHeaders[a])}catch(a){}if("POST"===this._method)try{c.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(a){}try{c.setRequestHeader("Accept","*/*")}catch(a){}null==(a=this._opts.cookieJar)||a.addCookies(c),"withCredentials"in c&&(c.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(c.timeout=this._opts.requestTimeout),c.onreadystatechange=()=>{var a;3===c.readyState&&(null==(a=this._opts.cookieJar)||a.parseCookies(c.getResponseHeader("set-cookie"))),4===c.readyState&&(200===c.status||1223===c.status?this._onLoad():this.setTimeoutFn(()=>{this._onError("number"==typeof c.status?c.status:0)},0))},b3("xhr data %s",this._data),c.send(this._data)}catch(a){this.setTimeoutFn(()=>{this._onError(a)},0);return}"u">typeof document&&(this._index=b6.requestsCount++,b6.requests[this._index]=this)}_onError(a){this.emitReserved("error",a,this._xhr),this._cleanup(!0)}_cleanup(a){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=b4,a)try{this._xhr.abort()}catch(a){}"u">typeof document&&delete b6.requests[this._index],this._xhr=null}}_onLoad(){let a=this._xhr.responseText;null!==a&&(this.emitReserved("data",a),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}function b7(){for(let a in b6.requests)b6.requests.hasOwnProperty(a)&&b6.requests[a].abort()}b6.requestsCount=0,b6.requests={},"u">typeof document&&("function"==typeof attachEvent?attachEvent("onunload",b7):"function"==typeof addEventListener&&addEventListener("onpagehide"in bQ?"pagehide":"unload",b7,!1)),(d=function(a){let b=a.xdomain;try{if("u">typeof XMLHttpRequest&&(!b||b2))return new XMLHttpRequest}catch(a){}if(!b)try{return new bQ[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch(a){}}({xdomain:!1}))&&d.responseType;let b8=bE.default||bE;a.i(31594),a.i(15251),a.i(31276),a.i(28719),a.i(63349),a.i(54129);var b9=a.i(50842);a.i(36972),b9.default;let ca=(0,bX.default)("engine.io-client:websocket"),cb="u">typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class cc extends b${get name(){return"websocket"}doOpen(){let a=this.uri(),b=this.opts.protocols,c=cb?{}:bS(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(c.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(a,b,c)}catch(a){return this.emitReserved("error",a)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=a=>this.onClose({description:"websocket connection closed",context:a}),this.ws.onmessage=a=>this.onData(a.data),this.ws.onerror=a=>this.onError("websocket error",a)}write(a){this.writable=!1;for(let b=0;b<a.length;b++){let c=a[b],d=b===a.length-1;bI(c,this.supportsBinary,a=>{try{this.doWrite(c,a)}catch(a){ca("websocket closed before onclose event")}d&&bP(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){void 0!==this.ws&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){let a=this.opts.secure?"wss":"ws",b=this.query||{};return this.opts.timestampRequests&&(b[this.opts.timestampParam]=bW()),this.supportsBinary||(b.b64=1),this.createUri(a,b)}}bQ.WebSocket||bQ.MozWebSocket;let cd=(0,bX.default)("engine.io-client:webtransport"),ce={websocket:class extends cc{createSocket(a,b,c){var d;if(null==(d=this.socket)?void 0:d._cookieJar)for(let[a,b]of(c.headers=c.headers||{},c.headers.cookie="string"==typeof c.headers.cookie?[c.headers.cookie]:c.headers.cookie||[],this.socket._cookieJar.cookies))c.headers.cookie.push(`${a}=${b.value}`);return new b9.default(a,b,c)}doWrite(a,b){let c={};a.options&&(c.compress=a.options.compress),this.opts.perMessageDeflate&&("string"==typeof b?Buffer.byteLength(b):b.length)<this.opts.perMessageDeflate.threshold&&(c.compress=!1),this.ws.send(b,c)}},webtransport:class extends b${get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(a){return this.emitReserved("error",a)}this._transport.closed.then(()=>{cd("transport closed gracefully"),this.onClose()}).catch(a=>{cd("transport closed due to %s",a),this.onError("webtransport error",a)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(a=>{var d,e;let f,g,h,i,j=(d=Number.MAX_SAFE_INTEGER,e=this.socket.binaryType,c||(c=new TextDecoder),f=[],g=0,h=-1,i=!1,new TransformStream({transform(a,b){for(f.push(a);;){if(0===g){if(1>bM(f))break;let a=bN(f,1);i=(128&a[0])==128,g=(h=127&a[0])<126?3:126===h?1:2}else if(1===g){if(2>bM(f))break;let a=bN(f,2);h=new DataView(a.buffer,a.byteOffset,a.length).getUint16(0),g=3}else if(2===g){if(8>bM(f))break;let a=bN(f,8),c=new DataView(a.buffer,a.byteOffset,a.length),d=c.getUint32(0);if(d>2097151){b.enqueue(bH);break}h=0x100000000*d+c.getUint32(4),g=3}else{if(bM(f)<h)break;let a=bN(f,h);b.enqueue(bK(i?a:c.decode(a),e)),g=0}if(0===h||h>d){b.enqueue(bH);break}}}})),k=a.readable.pipeThrough(j).getReader(),l=new TransformStream({transform(a,c){!function(a,c){if(a.data instanceof ArrayBuffer||ArrayBuffer.isView(a.data))return c(bJ(a.data,!1));bI(a,!0,a=>{b||(b=new TextEncoder),c(b.encode(a))})}(a,b=>{let d,e=b.length;if(e<126)new DataView((d=new Uint8Array(1)).buffer).setUint8(0,e);else if(e<65536){let a=new DataView((d=new Uint8Array(3)).buffer);a.setUint8(0,126),a.setUint16(1,e)}else{let a=new DataView((d=new Uint8Array(9)).buffer);a.setUint8(0,127),a.setBigUint64(1,BigInt(e))}a.data&&"string"!=typeof a.data&&(d[0]|=128),c.enqueue(d),c.enqueue(b)})}});l.readable.pipeTo(a.writable),this._writer=l.writable.getWriter();let m=()=>{k.read().then(({done:a,value:b})=>{a?cd("session is closed"):(cd("received chunk: %o",b),this.onPacket(b),m())}).catch(a=>{cd("an error occurred while reading: %s",a)})};m();let n={type:"open"};this.query.sid&&(n.data=`{"sid":"${this.query.sid}"}`),this._writer.write(n).then(()=>this.onOpen())})})}write(a){this.writable=!1;for(let b=0;b<a.length;b++){let c=a[b],d=b===a.length-1;this._writer.write(c).then(()=>{d&&bP(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var a;null==(a=this._transport)||a.close()}},polling:class extends b5{request(a={}){var b;return Object.assign(a,{xd:this.xd,cookieJar:null==(b=this.socket)?void 0:b._cookieJar},this.opts),new b6(a=>new b8(a),this.uri(),a)}}},cf=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,cg=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function ch(a){var b,c;let d,e;if(a.length>8e3)throw"URI too long";let f=a,g=a.indexOf("["),h=a.indexOf("]");-1!=g&&-1!=h&&(a=a.substring(0,g)+a.substring(g,h).replace(/:/g,";")+a.substring(h,a.length));let i=cf.exec(a||""),j={},k=14;for(;k--;)j[cg[k]]=i[k]||"";return -1!=g&&-1!=h&&(j.source=f,j.host=j.host.substring(1,j.host.length-1).replace(/;/g,":"),j.authority=j.authority.replace("[","").replace("]","").replace(/;/g,":"),j.ipv6uri=!0),d=(b=j.path).replace(/\/{2,9}/g,"/").split("/"),("/"==b.slice(0,1)||0===b.length)&&d.splice(0,1),"/"==b.slice(-1)&&d.splice(d.length-1,1),j.pathNames=d,c=j.query,e={},c.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(a,b,c){b&&(e[b]=c)}),j.queryKey=e,j}let ci=(0,bX.default)("engine.io-client:socket"),cj="function"==typeof addEventListener&&"function"==typeof removeEventListener,ck=[];cj&&addEventListener("offline",()=>{ci("closing %d connection(s) because the network was lost",ck.length),ck.forEach(a=>a())},!1);class cl extends bO{constructor(a,b){if(super(),this.binaryType="nodebuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,a&&"object"==typeof a&&(b=a,a=null),a){const c=ch(a);b.hostname=c.host,b.secure="https"===c.protocol||"wss"===c.protocol,b.port=c.port,c.query&&(b.query=c.query)}else b.host&&(b.hostname=ch(b.host).host);bV(this,b),this.secure=null!=b.secure?b.secure:"u">typeof location&&"https:"===location.protocol,b.hostname&&!b.port&&(b.port=this.secure?"443":"80"),this.hostname=b.hostname||("u">typeof location?location.hostname:"localhost"),this.port=b.port||("u">typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},b.transports.forEach(a=>{let b=a.prototype.name;this.transports.push(b),this._transportsByName[b]=a}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},b),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(a){let b={},c=a.split("&");for(let a=0,d=c.length;a<d;a++){let d=c[a].split("=");b[decodeURIComponent(d[0])]=decodeURIComponent(d[1])}return b}(this.opts.query)),cj&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(ci("adding listener for the 'offline' event"),this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},ck.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=new bR),this._open()}createTransport(a){ci('creating transport "%s"',a);let b=Object.assign({},this.opts.query);b.EIO=4,b.transport=a,this.id&&(b.sid=this.id);let c=Object.assign({},this.opts,{query:b,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[a]);return ci("options: %j",c),new this._transportsByName[a](c)}_open(){if(0===this.transports.length)return void this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);let a=this.opts.rememberUpgrade&&cl.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";let b=this.createTransport(a);b.open(),this.setTransport(b)}setTransport(a){ci("setting transport %s",a.name),this.transport&&(ci("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=a,a.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",a=>this._onClose("transport close",a))}onOpen(){ci("socket open"),this.readyState="open",cl.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(a){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(ci('socket receive: type "%s", data "%s"',a.type,a.data),this.emitReserved("packet",a),this.emitReserved("heartbeat"),a.type){case"open":this.onHandshake(JSON.parse(a.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":let b=Error("server error");b.code=a.data,this._onError(b);break;case"message":this.emitReserved("data",a.data),this.emitReserved("message",a.data)}else ci('packet received with socket readyState "%s"',this.readyState)}onHandshake(a){this.emitReserved("handshake",a),this.id=a.sid,this.transport.query.sid=a.sid,this._pingInterval=a.pingInterval,this._pingTimeout=a.pingTimeout,this._maxPayload=a.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);let a=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+a,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},a),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){let a=this._getWritablePackets();ci("flushing %d packets in socket",a.length),this.transport.send(a),this._prevBufferLen=a.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let a=1;for(let b=0;b<this.writeBuffer.length;b++){let c=this.writeBuffer[b].data;if(c&&(a+="string"==typeof c?function(a){let b=0,c=0;for(let d=0,e=a.length;d<e;d++)(b=a.charCodeAt(d))<128?c+=1:b<2048?c+=2:b<55296||b>=57344?c+=3:(d++,c+=4);return c}(c):Math.ceil(1.33*(c.byteLength||c.size))),b>0&&a>this._maxPayload)return ci("only send %d out of %d packets",b,this.writeBuffer.length),this.writeBuffer.slice(0,b);a+=2}return ci("payload size is %d (max: %d)",a,this._maxPayload),this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;let a=Date.now()>this._pingTimeoutTime;return a&&(ci("throttled timer detected, scheduling connection close"),this._pingTimeoutTime=0,bP(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),a}write(a,b,c){return this._sendPacket("message",a,b,c),this}send(a,b,c){return this._sendPacket("message",a,b,c),this}_sendPacket(a,b,c,d){if("function"==typeof b&&(d=b,b=void 0),"function"==typeof c&&(d=c,c=null),"closing"===this.readyState||"closed"===this.readyState)return;(c=c||{}).compress=!1!==c.compress;let e={type:a,data:b,options:c};this.emitReserved("packetCreate",e),this.writeBuffer.push(e),d&&this.once("flush",d),this.flush()}close(){let a=()=>{this._onClose("forced close"),ci("socket closing - telling transport to close"),this.transport.close()},b=()=>{this.off("upgrade",b),this.off("upgradeError",b),a()},c=()=>{this.once("upgrade",b),this.once("upgradeError",b)};return("opening"===this.readyState||"open"===this.readyState)&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?c():a()}):this.upgrading?c():a()),this}_onError(a){if(ci("socket error %j",a),cl.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return ci("trying next transport"),this.transports.shift(),this._open();this.emitReserved("error",a),this._onClose("transport error",a)}_onClose(a,b){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(ci('socket close with reason: "%s"',a),this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),cj&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){let a=ck.indexOf(this._offlineEventListener);-1!==a&&(ci("removing listener for the 'offline' event"),ck.splice(a,1))}this.readyState="closed",this.id=null,this.emitReserved("close",a,b),this.writeBuffer=[],this._prevBufferLen=0}}}cl.protocol=4;class cm extends cl{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade){ci("starting upgrade probes");for(let a=0;a<this._upgrades.length;a++)this._probe(this._upgrades[a])}}_probe(a){ci('probing transport "%s"',a);let b=this.createTransport(a),c=!1;cl.priorWebsocketSuccess=!1;let d=()=>{c||(ci('probe transport "%s" opened',a),b.send([{type:"ping",data:"probe"}]),b.once("packet",d=>{if(!c)if("pong"===d.type&&"probe"===d.data){if(ci('probe transport "%s" pong',a),this.upgrading=!0,this.emitReserved("upgrading",b),!b)return;cl.priorWebsocketSuccess="websocket"===b.name,ci('pausing current transport "%s"',this.transport.name),this.transport.pause(()=>{c||"closed"!==this.readyState&&(ci("changing transport and sending upgrade packet"),j(),this.setTransport(b),b.send([{type:"upgrade"}]),this.emitReserved("upgrade",b),b=null,this.upgrading=!1,this.flush())})}else{ci('probe transport "%s" failed',a);let c=Error("probe error");c.transport=b.name,this.emitReserved("upgradeError",c)}}))};function e(){c||(c=!0,j(),b.close(),b=null)}let f=c=>{let d=Error("probe error: "+c);d.transport=b.name,e(),ci('probe transport "%s" failed because of error: %s',a,c),this.emitReserved("upgradeError",d)};function g(){f("transport closed")}function h(){f("socket closed")}function i(a){b&&a.name!==b.name&&(ci('"%s" works - aborting "%s"',a.name,b.name),e())}let j=()=>{b.removeListener("open",d),b.removeListener("error",f),b.removeListener("close",g),this.off("close",h),this.off("upgrading",i)};b.once("open",d),b.once("error",f),b.once("close",g),this.once("close",h),this.once("upgrading",i),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==a?this.setTimeoutFn(()=>{c||b.open()},200):b.open()}onHandshake(a){this._upgrades=this._filterUpgrades(a.upgrades),super.onHandshake(a)}_filterUpgrades(a){let b=[];for(let c=0;c<a.length;c++)~this.transports.indexOf(a[c])&&b.push(a[c]);return b}}class cn extends cm{constructor(a,b={}){const c="object"==typeof a,d=c?{...a}:{...b};(!d.transports||d.transports&&"string"==typeof d.transports[0])&&(d.transports=(d.transports||["polling","websocket","webtransport"]).map(a=>ce[a]).filter(a=>!!a)),super(c?d:a,d)}}cn.protocol;let co=(0,bX.default)("socket.io-client:url"),cp="function"==typeof ArrayBuffer,cq=Object.prototype.toString,cr="function"==typeof Blob||"u">typeof Blob&&"[object BlobConstructor]"===cq.call(Blob),cs="function"==typeof File||"u">typeof File&&"[object FileConstructor]"===cq.call(File);function ct(a){return cp&&(a instanceof ArrayBuffer||("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(a):a.buffer instanceof ArrayBuffer))||cr&&a instanceof Blob||cs&&a instanceof File}let cu=(0,bX.default)("socket.io-parser"),cv=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];(f=g||(g={}))[f.CONNECT=0]="CONNECT",f[f.DISCONNECT=1]="DISCONNECT",f[f.EVENT=2]="EVENT",f[f.ACK=3]="ACK",f[f.CONNECT_ERROR=4]="CONNECT_ERROR",f[f.BINARY_EVENT=5]="BINARY_EVENT",f[f.BINARY_ACK=6]="BINARY_ACK";class cw{constructor(a){this.replacer=a}encode(a){return(cu("encoding packet %j",a),(a.type===g.EVENT||a.type===g.ACK)&&function a(b,c){if(!b||"object"!=typeof b)return!1;if(Array.isArray(b)){for(let c=0,d=b.length;c<d;c++)if(a(b[c]))return!0;return!1}if(ct(b))return!0;if(b.toJSON&&"function"==typeof b.toJSON&&1==arguments.length)return a(b.toJSON(),!0);for(let c in b)if(Object.prototype.hasOwnProperty.call(b,c)&&a(b[c]))return!0;return!1}(a))?this.encodeAsBinary({type:a.type===g.EVENT?g.BINARY_EVENT:g.BINARY_ACK,nsp:a.nsp,data:a.data,id:a.id}):[this.encodeAsString(a)]}encodeAsString(a){let b=""+a.type;return(a.type===g.BINARY_EVENT||a.type===g.BINARY_ACK)&&(b+=a.attachments+"-"),a.nsp&&"/"!==a.nsp&&(b+=a.nsp+","),null!=a.id&&(b+=a.id),null!=a.data&&(b+=JSON.stringify(a.data,this.replacer)),cu("encoded %j as %s",a,b),b}encodeAsBinary(a){let b,c,d=(b=[],c=a.data,a.data=function a(b,c,d){if(!b)return b;if(ct(b)){let a={_placeholder:!0,num:c.length};return c.push(b),a}if(Array.isArray(b)){let d=Array(b.length);for(let e=0;e<b.length;e++)d[e]=a(b[e],c);return d}if("object"==typeof b&&!(b instanceof Date)){if(b.toJSON&&"function"==typeof b.toJSON&&!d)return a(b.toJSON(),c,!0);let e={};for(let d in b)Object.prototype.hasOwnProperty.call(b,d)&&(e[d]=a(b[d],c));return e}return b}(c,b),a.attachments=b.length,{packet:a,buffers:b}),e=this.encodeAsString(d.packet),f=d.buffers;return f.unshift(e),f}}class cx extends bO{constructor(a){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},"function"==typeof a?{reviver:a}:a)}add(a){let b;if("string"==typeof a){if(this.reconstructor)throw Error("got plaintext data when reconstructing a packet");let c=(b=this.decodeString(a)).type===g.BINARY_EVENT;c||b.type===g.BINARY_ACK?(b.type=c?g.EVENT:g.ACK,this.reconstructor=new cy(b)):super.emitReserved("decoded",b)}else if(ct(a)||a.base64)if(this.reconstructor)(b=this.reconstructor.takeBinaryData(a))&&(this.reconstructor=null,super.emitReserved("decoded",b));else throw Error("got binary data when not reconstructing a packet");else throw Error("Unknown type: "+a)}decodeString(a){let b=0,c={type:Number(a.charAt(0))};if(void 0===g[c.type])throw Error("unknown packet type "+c.type);if(c.type===g.BINARY_EVENT||c.type===g.BINARY_ACK){let d=b+1;for(;"-"!==a.charAt(++b)&&b!=a.length;);let e=a.substring(d,b);if(e!=Number(e)||"-"!==a.charAt(b))throw Error("Illegal attachments");let f=Number(e);if(!cz(f)||f<1)throw Error("Illegal attachments");if(f>this.opts.maxAttachments)throw Error("too many attachments");c.attachments=f}if("/"===a.charAt(b+1)){let d=b+1;for(;++b&&","!==a.charAt(b)&&b!==a.length;);c.nsp=a.substring(d,b)}else c.nsp="/";let d=a.charAt(b+1);if(""!==d&&Number(d)==d){let d=b+1;for(;++b;){let c=a.charAt(b);if(null==c||Number(c)!=c){--b;break}if(b===a.length)break}c.id=Number(a.substring(d,b+1))}if(a.charAt(++b)){let d=this.tryParse(a.substr(b));if(cx.isPayloadValid(c.type,d))c.data=d;else throw Error("invalid payload")}return cu("decoded %s as %j",a,c),c}tryParse(a){try{return JSON.parse(a,this.opts.reviver)}catch(a){return!1}}static isPayloadValid(a,b){switch(a){case g.CONNECT:return cA(b);case g.DISCONNECT:return void 0===b;case g.CONNECT_ERROR:return"string"==typeof b||cA(b);case g.EVENT:case g.BINARY_EVENT:return Array.isArray(b)&&("number"==typeof b[0]||"string"==typeof b[0]&&-1===cv.indexOf(b[0]));case g.ACK:case g.BINARY_ACK:return Array.isArray(b)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class cy{constructor(a){this.packet=a,this.buffers=[],this.reconPack=a}takeBinaryData(a){if(this.buffers.push(a),this.buffers.length===this.reconPack.attachments){var b,c;let a=(b=this.reconPack,c=this.buffers,b.data=function a(b,c){if(!b)return b;if(b&&!0===b._placeholder){if("number"==typeof b.num&&b.num>=0&&b.num<c.length)return c[b.num];throw Error("illegal attachments")}if(Array.isArray(b))for(let d=0;d<b.length;d++)b[d]=a(b[d],c);else if("object"==typeof b)for(let d in b)Object.prototype.hasOwnProperty.call(b,d)&&(b[d]=a(b[d],c));return b}(b.data,c),delete b.attachments,b);return this.finishedReconstruction(),a}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}let cz=Number.isInteger||function(a){return"number"==typeof a&&isFinite(a)&&Math.floor(a)===a};function cA(a){return"[object Object]"===Object.prototype.toString.call(a)}function cB(a){var b;return"string"==typeof a.nsp&&(void 0===(b=a.id)||cz(b))&&function(a,b){switch(a){case g.CONNECT:return void 0===b||cA(b);case g.DISCONNECT:return void 0===b;case g.EVENT:return Array.isArray(b)&&("number"==typeof b[0]||"string"==typeof b[0]&&-1===cv.indexOf(b[0]));case g.ACK:return Array.isArray(b);case g.CONNECT_ERROR:return"string"==typeof b||cA(b);default:return!1}}(a.type,a.data)}function cC(a,b,c){return a.on(b,c),function(){a.off(b,c)}}a.s(["Decoder",()=>cx,"Encoder",()=>cw,"PacketType",()=>g,"isPacketValid",()=>cB,"protocol",0,5],10419);let cD=(0,bX.default)("socket.io-client:socket"),cE=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class cF extends bO{constructor(a,b,c){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=a,this.nsp=b,c&&c.auth&&(this.auth=c.auth),this._opts=Object.assign({},c),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;let a=this.io;this.subs=[cC(a,"open",this.onopen.bind(this)),cC(a,"packet",this.onpacket.bind(this)),cC(a,"error",this.onerror.bind(this)),cC(a,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...a){return a.unshift("message"),this.emit.apply(this,a),this}emit(a,...b){var c,d,e;if(cE.hasOwnProperty(a))throw Error('"'+a.toString()+'" is a reserved event name');if(b.unshift(a),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(b),this;let f={type:g.EVENT,data:b};if(f.options={},f.options.compress=!1!==this.flags.compress,"function"==typeof b[b.length-1]){let a=this.ids++;cD("emitting packet with ack id %d",a);let c=b.pop();this._registerAckCallback(a,c),f.id=a}let h=null==(d=null==(c=this.io.engine)?void 0:c.transport)?void 0:d.writable,i=this.connected&&!(null==(e=this.io.engine)?void 0:e._hasPingExpired());return this.flags.volatile&&!h?cD("discard packet as the transport is not currently writable"):i?(this.notifyOutgoingListeners(f),this.packet(f)):this.sendBuffer.push(f),this.flags={},this}_registerAckCallback(a,b){var c;let d=null!=(c=this.flags.timeout)?c:this._opts.ackTimeout;if(void 0===d){this.acks[a]=b;return}let e=this.io.setTimeoutFn(()=>{delete this.acks[a];for(let b=0;b<this.sendBuffer.length;b++)this.sendBuffer[b].id===a&&(cD("removing packet with ack id %d from the buffer",a),this.sendBuffer.splice(b,1));cD("event with ack id %d has timed out after %d ms",a,d),b.call(this,Error("operation has timed out"))},d),f=(...a)=>{this.io.clearTimeoutFn(e),b.apply(this,a)};f.withError=!0,this.acks[a]=f}emitWithAck(a,...b){return new Promise((c,d)=>{let e=(a,b)=>a?d(a):c(b);e.withError=!0,b.push(e),this.emit(a,...b)})}_addToQueue(a){let b;"function"==typeof a[a.length-1]&&(b=a.pop());let c={id:this._queueSeq++,tryCount:0,pending:!1,args:a,flags:Object.assign({fromQueue:!0},this.flags)};a.push((a,...d)=>c!==this._queue[0]?cD("packet [%d] already acknowledged",c.id):(null!==a?c.tryCount>this._opts.retries&&(cD("packet [%d] is discarded after %d tries",c.id,c.tryCount),this._queue.shift(),b&&b(a)):(cD("packet [%d] was successfully sent",c.id),this._queue.shift(),b&&b(null,...d)),c.pending=!1,this._drainQueue())),this._queue.push(c),this._drainQueue()}_drainQueue(a=!1){if(cD("draining queue"),!this.connected||0===this._queue.length)return;let b=this._queue[0];b.pending&&!a?cD("packet [%d] has already been sent and is waiting for an ack",b.id):(b.pending=!0,b.tryCount++,cD("sending packet [%d] (try n°%d)",b.id,b.tryCount),this.flags=b.flags,this.emit.apply(this,b.args))}packet(a){a.nsp=this.nsp,this.io._packet(a)}onopen(){cD("transport is open - connecting"),"function"==typeof this.auth?this.auth(a=>{this._sendConnectPacket(a)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(a){this.packet({type:g.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},a):a})}onerror(a){this.connected||this.emitReserved("connect_error",a)}onclose(a,b){cD("close (%s)",a),this.connected=!1,delete this.id,this.emitReserved("disconnect",a,b),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(a=>{if(!this.sendBuffer.some(b=>String(b.id)===a)){let b=this.acks[a];delete this.acks[a],b.withError&&b.call(this,Error("socket has been disconnected"))}})}onpacket(a){if(a.nsp===this.nsp)switch(a.type){case g.CONNECT:a.data&&a.data.sid?this.onconnect(a.data.sid,a.data.pid):this.emitReserved("connect_error",Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case g.EVENT:case g.BINARY_EVENT:this.onevent(a);break;case g.ACK:case g.BINARY_ACK:this.onack(a);break;case g.DISCONNECT:this.ondisconnect();break;case g.CONNECT_ERROR:this.destroy();let b=Error(a.data.message);b.data=a.data.data,this.emitReserved("connect_error",b)}}onevent(a){let b=a.data||[];cD("emitting event %j",b),null!=a.id&&(cD("attaching ack callback to event"),b.push(this.ack(a.id))),this.connected?this.emitEvent(b):this.receiveBuffer.push(Object.freeze(b))}emitEvent(a){if(this._anyListeners&&this._anyListeners.length)for(let b of this._anyListeners.slice())b.apply(this,a);super.emit.apply(this,a),this._pid&&a.length&&"string"==typeof a[a.length-1]&&(this._lastOffset=a[a.length-1])}ack(a){let b=this,c=!1;return function(...d){c||(c=!0,cD("sending ack %j",d),b.packet({type:g.ACK,id:a,data:d}))}}onack(a){let b=this.acks[a.id];"function"!=typeof b?cD("bad ack %s",a.id):(delete this.acks[a.id],cD("calling ack %s with %j",a.id,a.data),b.withError&&a.data.unshift(null),b.apply(this,a.data))}onconnect(a,b){cD("socket connected with id %s",a),this.id=a,this.recovered=b&&this._pid===b,this._pid=b,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(a=>this.emitEvent(a)),this.receiveBuffer=[],this.sendBuffer.forEach(a=>{this.notifyOutgoingListeners(a),this.packet(a)}),this.sendBuffer=[]}ondisconnect(){cD("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(a=>a()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&(cD("performing disconnect (%s)",this.nsp),this.packet({type:g.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(a){return this.flags.compress=a,this}get volatile(){return this.flags.volatile=!0,this}timeout(a){return this.flags.timeout=a,this}onAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(a),this}prependAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(a),this}offAny(a){if(!this._anyListeners)return this;if(a){let b=this._anyListeners;for(let c=0;c<b.length;c++)if(a===b[c]){b.splice(c,1);break}}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(a),this}prependAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(a),this}offAnyOutgoing(a){if(!this._anyOutgoingListeners)return this;if(a){let b=this._anyOutgoingListeners;for(let c=0;c<b.length;c++)if(a===b[c]){b.splice(c,1);break}}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(a){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length)for(let b of this._anyOutgoingListeners.slice())b.apply(this,a.data)}}var cG=a.i(10419);function cH(a){a=a||{},this.ms=a.min||100,this.max=a.max||1e4,this.factor=a.factor||2,this.jitter=a.jitter>0&&a.jitter<=1?a.jitter:0,this.attempts=0}cH.prototype.duration=function(){var a=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var b=Math.random(),c=Math.floor(b*this.jitter*a);a=(1&Math.floor(10*b))==0?a-c:a+c}return 0|Math.min(a,this.max)},cH.prototype.reset=function(){this.attempts=0},cH.prototype.setMin=function(a){this.ms=a},cH.prototype.setMax=function(a){this.max=a},cH.prototype.setJitter=function(a){this.jitter=a};let cI=(0,bX.default)("socket.io-client:manager");class cJ extends bO{constructor(a,b){var c;super(),this.nsps={},this.subs=[],a&&"object"==typeof a&&(b=a,a=void 0),(b=b||{}).path=b.path||"/socket.io",this.opts=b,bV(this,b),this.reconnection(!1!==b.reconnection),this.reconnectionAttempts(b.reconnectionAttempts||1/0),this.reconnectionDelay(b.reconnectionDelay||1e3),this.reconnectionDelayMax(b.reconnectionDelayMax||5e3),this.randomizationFactor(null!=(c=b.randomizationFactor)?c:.5),this.backoff=new cH({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==b.timeout?2e4:b.timeout),this._readyState="closed",this.uri=a;const d=b.parser||cG;this.encoder=new d.Encoder,this.decoder=new d.Decoder,this._autoConnect=!1!==b.autoConnect,this._autoConnect&&this.open()}reconnection(a){return arguments.length?(this._reconnection=!!a,a||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(a){return void 0===a?this._reconnectionAttempts:(this._reconnectionAttempts=a,this)}reconnectionDelay(a){var b;return void 0===a?this._reconnectionDelay:(this._reconnectionDelay=a,null==(b=this.backoff)||b.setMin(a),this)}randomizationFactor(a){var b;return void 0===a?this._randomizationFactor:(this._randomizationFactor=a,null==(b=this.backoff)||b.setJitter(a),this)}reconnectionDelayMax(a){var b;return void 0===a?this._reconnectionDelayMax:(this._reconnectionDelayMax=a,null==(b=this.backoff)||b.setMax(a),this)}timeout(a){return arguments.length?(this._timeout=a,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(a){if(cI("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;cI("opening %s",this.uri),this.engine=new cn(this.uri,this.opts);let b=this.engine,c=this;this._readyState="opening",this.skipReconnect=!1;let d=cC(b,"open",function(){c.onopen(),a&&a()}),e=b=>{cI("error"),this.cleanup(),this._readyState="closed",this.emitReserved("error",b),a?a(b):this.maybeReconnectOnOpen()},f=cC(b,"error",e);if(!1!==this._timeout){let a=this._timeout;cI("connect attempt will timeout after %d",a);let c=this.setTimeoutFn(()=>{cI("connect attempt timed out after %d",a),d(),e(Error("timeout")),b.close()},a);this.opts.autoUnref&&c.unref(),this.subs.push(()=>{this.clearTimeoutFn(c)})}return this.subs.push(d),this.subs.push(f),this}connect(a){return this.open(a)}onopen(){cI("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");let a=this.engine;this.subs.push(cC(a,"ping",this.onping.bind(this)),cC(a,"data",this.ondata.bind(this)),cC(a,"error",this.onerror.bind(this)),cC(a,"close",this.onclose.bind(this)),cC(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(a){try{this.decoder.add(a)}catch(a){this.onclose("parse error",a)}}ondecoded(a){bP(()=>{this.emitReserved("packet",a)},this.setTimeoutFn)}onerror(a){cI("error",a),this.emitReserved("error",a)}socket(a,b){let c=this.nsps[a];return c?this._autoConnect&&!c.active&&c.connect():(c=new cF(this,a,b),this.nsps[a]=c),c}_destroy(a){for(let a of Object.keys(this.nsps))if(this.nsps[a].active)return void cI("socket %s is still active, skipping close",a);this._close()}_packet(a){cI("writing packet %j",a);let b=this.encoder.encode(a);for(let c=0;c<b.length;c++)this.engine.write(b[c],a.options)}cleanup(){cI("cleanup"),this.subs.forEach(a=>a()),this.subs.length=0,this.decoder.destroy()}_close(){cI("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(a,b){var c;cI("closed due to %s",a),this.cleanup(),null==(c=this.engine)||c.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",a,b),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;let a=this;if(this.backoff.attempts>=this._reconnectionAttempts)cI("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{let b=this.backoff.duration();cI("will wait %dms before reconnect attempt",b),this._reconnecting=!0;let c=this.setTimeoutFn(()=>{a.skipReconnect||(cI("attempting reconnect"),this.emitReserved("reconnect_attempt",a.backoff.attempts),a.skipReconnect||a.open(b=>{b?(cI("reconnect attempt error"),a._reconnecting=!1,a.reconnect(),this.emitReserved("reconnect_error",b)):(cI("reconnect success"),a.onreconnect())}))},b);this.opts.autoUnref&&c.unref(),this.subs.push(()=>{this.clearTimeoutFn(c)})}}onreconnect(){let a=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",a)}}let cK=(0,bX.default)("socket.io-client"),cL={};function cM(a,b){let c;"object"==typeof a&&(b=a,a=void 0);let d=function(a,b="",c){let d=a;c=c||"u">typeof location&&location,null==a&&(a=c.protocol+"//"+c.host),"string"==typeof a&&("/"===a.charAt(0)&&(a="/"===a.charAt(1)?c.protocol+a:c.host+a),/^(https?|wss?):\/\//.test(a)||(co("protocol-less url %s",a),a=void 0!==c?c.protocol+"//"+a:"https://"+a),co("parse %s",a),d=ch(a)),!d.port&&(/^(http|ws)$/.test(d.protocol)?d.port="80":/^(http|ws)s$/.test(d.protocol)&&(d.port="443")),d.path=d.path||"/";let e=-1!==d.host.indexOf(":")?"["+d.host+"]":d.host;return d.id=d.protocol+"://"+e+":"+d.port+b,d.href=d.protocol+"://"+e+(c&&c.port===d.port?"":":"+d.port),d}(a,(b=b||{}).path||"/socket.io"),e=d.source,f=d.id,g=d.path,h=cL[f]&&g in cL[f].nsps;return b.forceNew||b["force new connection"]||!1===b.multiplex||h?(cK("ignoring socket cache for %s",e),c=new cJ(e,b)):(cL[f]||(cK("new io instance for %s",e),cL[f]=new cJ(e,b)),c=cL[f]),d.query&&!b.query&&(b.query=d.queryKey),c.socket(d.path,b)}function cN(a){if(a&&"object"==typeof a&&"clientId"in a){let b=a.clientId;if("string"==typeof b)return b}}function cO(a){let{url:b,role:c,docId:d,name:e,token:f}=a,g=!1!==a.autoResync,h=cM(b,{auth:{token:f},autoConnect:!1}),i="disconnected",j=0,k="",l=[],m={patch:new Set,full:new Set,ack:new Set,presence:new Set,error:new Set,status:new Set,view:new Set};function n(a,b){for(let c of[...m[a]])c(b)}function o(a){i!==a&&(i=a,n("status",a))}function p(a){h.emit("def:request",{docId:d,sinceSeq:a})}function q(a){"number"==typeof a&&(g&&a>j+1&&p(j),j=Math.max(j,a))}function r(){n("presence",[...l])}function s(){return h.connected?Promise.resolve():new Promise((a,b)=>{o("connecting");let c=()=>{e(),a()},d=a=>{e(),b(a)},e=()=>{h.off("connect",c),h.off("connect_error",d)};h.once("connect",c),h.once("connect_error",d),h.connect()})}async function t(){return await s(),new Promise((a,b)=>{h.emit("bridge:join",{docId:d,role:c,name:e},c=>{if(!c||c.error){let a=c?.error??{code:"join_failed",message:"no join ack"};n("error",a),b(Error(`${a.code}: ${a.message}`));return}k=c.selfId,l=c.presence?[...c.presence]:[],j=c.snapshot?.seq??0,r(),a({selfId:k,snapshot:c.snapshot,presence:[...l]})})})}async function u(a){await s(),h.emit("view:show",{...a,docId:a.docId??d,origin:a.origin??(e||c)})}return h.on("connect",()=>o("connected")),h.on("disconnect",()=>o("disconnected")),h.on("connect_error",a=>{o("error"),n("error",{code:"connect_error",message:a?.message??String(a)})}),h.on("def:patch",a=>{q(a?.seq),a?.origin&&a.origin===k||n("patch",a)}),h.on("def:full",a=>{q(a?.seq),a?.origin&&a.origin===k||n("full",a)}),h.on("def:ack",a=>{n("ack",a)}),h.on("view:show",a=>{n("view",a)}),h.on("bridge:error",a=>{n("error",{code:a?.code??"error",message:a?.message??""})}),h.on("presence:list",a=>{l=Array.isArray(a)?[...a]:[],r()}),h.on("presence:join",a=>{let b=cN(a);b&&(l=[...l.filter(a=>a.clientId!==b),a],r())}),h.on("presence:leave",a=>{let b=cN(a);b&&(l=l.filter(a=>a.clientId!==b),r())}),h.on("presence:update",a=>{let b=cN(a);if(!b)return;let c=l.findIndex(a=>a.clientId===b);if(-1===c)l=[...l,a];else{let b={...l[c],...a};l=l.map((a,d)=>d===c?b:a)}r()}),{connect:s,join:t,emitPatch:function(a,b,c){h.emit("def:patch",{docId:d,ops:a,origin:k,baseSeq:c,mtime:b})},emitFull:function(a,b){h.emit("def:full",{docId:d,def:a,origin:k,mtime:b})},request:p,updatePresence:function(a){h.emit("presence:update",{docId:d,clientId:k,cursor:a.cursor,selection:a.selection})},emitView:u,on:function(a,b){let c=m[a];return c.add(b),()=>c.delete(b)},disconnect:function(){h.connected&&k&&h.emit("bridge:leave",{docId:d,clientId:k}),h.disconnect(),o("disconnected")},get status(){return i},get lastSeq(){return j},get presence(){return[...l]}}}function cP(a){return"runtime.enter"===a.op||"runtime.exit"===a.op}function cQ(a){let{onFull:b,onPatch:c,onPresence:d,...e}=a,f=cO(e),g=null,h=0,i=[],j=[],k={status:f.status,def:null,seq:0,presence:[],activeStates:[]},l=new Set;function m(){for(let a of(k={status:f.status,def:g,seq:h,presence:i,activeStates:j},[...l]))a()}return f.on("status",()=>m()),f.on("full",a=>{g=a.def,"number"==typeof a.seq&&(h=a.seq),b?.(a),m()}),f.on("patch",a=>{"number"==typeof a.seq&&(h=a.seq);let b=a.ops??[],d=b.filter(cP),e=b.filter(a=>!cP(a));e.length>0&&g&&(g=n(g,e));for(let a of d)"runtime.enter"===a.op?j.includes(a.state)||(j=[...j,a.state]):"runtime.exit"===a.op&&j.includes(a.state)&&(j=j.filter(b=>b!==a.state));c?.(a),m()}),f.on("presence",a=>{i=a,d?.(a),m()}),{getSnapshot:function(){return k},subscribe:function(a){return l.add(a),()=>{l.delete(a)}},emitPatch:function(a){f.emitPatch(a)},emitFull:function(a){f.emitFull(a)},enter:function(a,b,c){let d={op:"runtime.enter",state:a,...void 0!==b?{from:b}:{},...void 0!==c?{eventId:c}:{}};f.emitPatch([d])},exit:function(a){f.emitPatch([{op:"runtime.exit",state:a}])},connect:function(){f.join().then(a=>{g=a.snapshot.def,h=a.snapshot.seq,i=a.presence,null!==g&&b?.({docId:a.snapshot.docId,def:g,seq:h,mtime:a.snapshot.mtime,origin:"join"}),m()}).catch(()=>{m()})},disconnect:function(){f.disconnect()}}}function cR(){return{settings:{namespace:"MyApp",name:"MyStateMachine",asynchronous:!1},events:[{name:"Internal",events:[]}],state:{name:"Root",states:[{name:"Idle",kind:"normal"},{name:"End",kind:"final"}]}}}function cS(){return{positions:{}}}function cT(a,b){if(a.name===b)return a;for(let c of a.states??[]){let a=cT(c,b);if(a)return a}return null}function cU(a,b,c){return a.name===b?c(a)??a:{...a,states:a.states?.map(a=>cU(a,b,c))}}function cV(a,b){return{...a,states:a.states?.filter(a=>a.name!==b).map(a=>cV(a,b))}}function cW(a){let b=[a.name];for(let c of a.states??[])b.push(...cW(c));return b}function cX(a){return a.events.flatMap(a=>(a.events??[]).map(a=>a.id))}function cY(a){let b=[],c=cW(a.state),d=cX(a);0===d.length&&b.push({ruleId:"V001",message:"No events defined"});let e=new Set;for(let a of c)e.has(a)&&b.push({ruleId:"V002",message:`Duplicate state name: ${a}`,element:a}),e.add(a);!function a(e){for(let a of e.transitions??[])d.includes(a.event)||b.push({ruleId:"V003",message:`Transition in '${e.name}' references unknown event '${a.event}'`,element:e.name}),a.nextState&&!c.includes(a.nextState)&&b.push({ruleId:"V004",message:`Transition in '${e.name}' targets unknown state '${a.nextState}'`,element:e.name});for(let c of("final"===e.kind&&(e.transitions?.length??0)>0&&b.push({ruleId:"V007",message:`Final state '${e.name}' must not have outgoing transitions`,element:e.name}),"final"===e.kind&&(e.states?.length??0)>0&&b.push({ruleId:"V008",message:`Final state '${e.name}' must not have child states`,element:e.name}),e.states??[]))a(c)}(a.state),a.state.states&&0!==a.state.states.length||b.push({ruleId:"V005",message:"Root state must have at least one child state",element:a.state.name});let f=new Set;for(let a of d)f.has(a)&&b.push({ruleId:"V003",message:`Duplicate event ID: ${a}`,element:a}),f.add(a);return b}function cZ(a,b){return{positions:{...x(a),...b.positions}}}Object.assign(cM,{Manager:cJ,Socket:cF,io:cM,connect:cM});let c$=!1,c_=(e=(a,b)=>({definition:cR(),layout:cZ(cR(),cS()),viewport:{...M},fileName:null,docPath:null,dirty:!1,remoteMtime:null,remoteStatus:"idle",remoteMessage:null,activeStates:[],presence:[],_applyingRemote:!1,selection:{kind:null,id:null},drawMode:"select",drawSource:null,contextMenu:{visible:!1,x:0,y:0,target:null},undoStack:[],redoStack:[],activeTab:"properties",errors:[],showCodePreview:!1,generatedCode:null,navigationPath:["Root"],currentParent:"Root",_pushHistory:()=>{let{definition:c,layout:d,undoStack:e}=b(),f={definition:JSON.parse(JSON.stringify(c)),layout:JSON.parse(JSON.stringify(d))};a({undoStack:[...e.slice(-50),f],redoStack:[]})},setDefinition:c=>{b()._pushHistory();let d=cZ(c,b().layout);a({definition:c,layout:d,dirty:!0,errors:cY(c)})},updateSettings:c=>{b()._pushHistory(),a({definition:{...b().definition,settings:{...b().definition.settings,...c}},dirty:!0})},addState:(c,d)=>{b()._pushHistory();let e={...b().definition},f=c??e.state.name;e.state=cU(e.state,f,a=>({...a,states:[...a.states??[],d]}));let g=cZ(e,b().layout);a({definition:e,layout:g,dirty:!0,errors:cY(e)})},updateState:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=cU(e.state,c,a=>({...a,...d})),a({definition:e,dirty:!0,errors:cY(e)})},removeState:c=>{b()._pushHistory();let d={...b().definition};d.state=cV(d.state,c);let e={positions:{...b().layout.positions}};delete e.positions[c],a({definition:d,layout:e,dirty:!0,errors:cY(d)})},nestState:(c,d)=>{b()._pushHistory();let e={...b().definition},f=cT(e.state,c);if(!f||c===d)return;let g=JSON.parse(JSON.stringify(f));e.state=cV(e.state,c),e.state=cU(e.state,d,a=>({...a,states:[...a.states??[],g]})),a({definition:e,dirty:!0,errors:cY(e)})},addEventSource:c=>{b()._pushHistory(),a({definition:{...b().definition,events:[...b().definition.events,c]},dirty:!0})},updateEventSource:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map((a,b)=>b===c?{...a,...d}:a),a({definition:e,dirty:!0})},removeEventSource:c=>{b()._pushHistory();let d={...b().definition};d.events=d.events.filter((a,b)=>b!==c),a({definition:d,dirty:!0,errors:cY(d)})},addEvent:(c,d=0)=>{b()._pushHistory();let e={...b().definition},f=e.events[d]??{name:"Internal",events:[]};f.events=[...f.events??[],c],e.events=e.events.map((a,b)=>b===d?f:a),a({definition:e,dirty:!0,errors:cY(e)})},updateEvent:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,...d}:a)})),a({definition:e,dirty:!0})},removeEvent:c=>{b()._pushHistory();let d={...b().definition};d.events=d.events.map(a=>({...a,events:a.events?.filter(a=>a.id!==c)})),a({definition:d,dirty:!0,errors:cY(d)})},addParameter:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:[...a.parameters??[],d]}:a)})),a({definition:e,dirty:!0})},removeParameter:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:a.parameters?.filter((a,b)=>b!==d)}:a)})),a({definition:e,dirty:!0})},updateParameter:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.events=f.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:a.parameters?.map((a,b)=>b===d?{...a,...e}:a)}:a)})),a({definition:f,dirty:!0})},addAction:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=cU(f.state,c,a=>{let b=a[d]??{actions:[]};return{...a,[d]:{actions:[...b.actions,e]}}}),a({definition:f,dirty:!0})},removeAction:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=cU(f.state,c,a=>{let b=a[d];return b?{...a,[d]:{actions:b.actions.filter((a,b)=>b!==e)}}:a}),a({definition:f,dirty:!0})},updateAction:(c,d,e,f)=>{b()._pushHistory();let g={...b().definition};g.state=cU(g.state,c,a=>{let b=a[d];return b?{...a,[d]:{actions:b.actions.map((a,b)=>b===e?f:a)}}:a}),a({definition:g,dirty:!0})},addTransition:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=cU(e.state,c,a=>({...a,transitions:[...a.transitions??[],d]})),a({definition:e,dirty:!0,errors:cY(e)})},updateTransition:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=cU(f.state,c,a=>({...a,transitions:a.transitions?.map((a,b)=>b===d?{...a,...e}:a)})),a({definition:f,dirty:!0})},removeTransition:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=cU(e.state,c,a=>({...a,transitions:a.transitions?.filter((a,b)=>b!==d)})),a({definition:e,dirty:!0,errors:cY(e)})},setStatePosition:(c,d)=>{a({layout:{positions:{...b().layout.positions,[c]:d}}})},arrangeLayout:()=>{b()._pushHistory(),a({layout:{positions:x(b().definition)}})},hydrateLayout:(c,d)=>{a({layout:{positions:{...b().layout.positions,...c}},...d?{viewport:d}:{}})},setViewport:b=>a({viewport:b}),select:(b,c)=>a({selection:{kind:b,id:c}}),clearSelection:()=>a({selection:{kind:null,id:null}}),setDrawMode:b=>a({drawMode:b,drawSource:null}),setDrawSource:b=>a({drawSource:b}),showContextMenu:(b,c,d)=>a({contextMenu:{visible:!0,x:b,y:c,target:d}}),hideContextMenu:()=>a({contextMenu:{visible:!1,x:0,y:0,target:null}}),undo:()=>{let{undoStack:c,definition:d,layout:e}=b();if(0===c.length)return;let f=c[c.length-1],g={definition:JSON.parse(JSON.stringify(d)),layout:JSON.parse(JSON.stringify(e))};a({definition:f.definition,layout:f.layout,undoStack:c.slice(0,-1),redoStack:[...b().redoStack,g],dirty:!0,errors:cY(f.definition)})},redo:()=>{let{redoStack:c,definition:d,layout:e}=b();if(0===c.length)return;let f=c[c.length-1],g={definition:JSON.parse(JSON.stringify(d)),layout:JSON.parse(JSON.stringify(e))};a({definition:f.definition,layout:f.layout,undoStack:[...b().undoStack,g],redoStack:c.slice(0,-1),dirty:!0,errors:cY(f.definition)})},canUndo:()=>b().undoStack.length>0,canRedo:()=>b().redoStack.length>0,setActiveTab:b=>a({activeTab:b}),loadFromJson:(b,c)=>{try{let d=JSON.parse(b),e=ap(d.stateMachine??d.StateMachine??d);c$=!!d&&"object"==typeof d&&"state"in d&&!("stateMachine"in d)&&!("StateMachine"in d);let f=cZ(e,cS()),g=e.state?.name??"Root";a({definition:e,layout:f,fileName:c??null,dirty:!1,errors:cY(e),selection:{kind:null,id:null},undoStack:[],redoStack:[],navigationPath:[g],currentParent:g})}catch(a){console.error("Failed to parse definition:",a)}},exportJson:()=>{let{definition:a}=b();return JSON.stringify(c$?a:{stateMachine:a},null,2)},applyRemote:(c,d,e)=>{try{let f=JSON.parse(c),g=ap(f.stateMachine??f.StateMachine??f);c$=!!f&&"object"==typeof f&&"state"in f&&!("stateMachine"in f)&&!("StateMachine"in f);let h=cZ(g,b().layout),i=g.state?.name??"Root",j=b(),k=new Set(cW(g.state)),l=j.navigationPath.filter(a=>k.has(a)),m=l.length?l:[i],n=m[m.length-1],o=j.selection,p=("state"===o.kind?!!o.id&&k.has(o.id):"transition"===o.kind?!!o.id&&k.has(o.id.split(":")[0]):"event"===o.kind&&!!o.id&&cX(g).includes(o.id))?o:{kind:null,id:null};a({definition:g,layout:h,fileName:e??b().fileName,dirty:!1,remoteMtime:d,remoteStatus:"synced",remoteMessage:null,errors:cY(g),selection:p,navigationPath:m,currentParent:n})}catch(b){a({remoteStatus:"error",remoteMessage:String(b)})}},setRemoteStatus:(b,c=null)=>a({remoteStatus:b,remoteMessage:c}),setRemoteMtime:b=>a({remoteMtime:b}),setDocPath:b=>a({docPath:b||null}),enterState:c=>{let d=b().activeStates;d.includes(c)||a({activeStates:[...d,c]})},exitState:c=>{let d=b().activeStates;d.includes(c)&&a({activeStates:d.filter(a=>a!==c)})},setPresence:b=>a({presence:b}),applyRemoteOps:(c,d,e)=>{a({_applyingRemote:!0});try{let e=b(),f=c.filter(a=>"runtime.enter"!==a.op&&"runtime.exit"!==a.op),g=f.length?n(e.definition,f):e.definition,h=e.activeStates;for(let a of c)"runtime.enter"===a.op?h.includes(a.state)||(h=[...h,a.state]):"runtime.exit"===a.op&&h.includes(a.state)&&(h=h.filter(b=>b!==a.state));let i=cZ(g,e.layout),j=g.state?.name??"Root",k=new Set(cW(g.state)),l=e.navigationPath.filter(a=>k.has(a)),m=l.length?l:[j],o=m[m.length-1],p=e.selection,q=("state"===p.kind?!!p.id&&k.has(p.id):"transition"===p.kind?!!p.id&&k.has(p.id.split(":")[0]):"event"===p.kind&&!!p.id&&cX(g).includes(p.id))?p:{kind:null,id:null};a({definition:g,layout:i,activeStates:h,dirty:!1,remoteMtime:d,remoteStatus:"synced",remoteMessage:null,errors:cY(g),selection:q,navigationPath:m,currentParent:o})}catch(b){a({remoteStatus:"error",remoteMessage:String(b)})}finally{a({_applyingRemote:!1})}},validate:()=>{let c=cY(b().definition);return a({errors:c}),c},setGeneratedCode:b=>a({generatedCode:b}),setShowCodePreview:b=>a({showCodePreview:b}),navigateInto:c=>{let{definition:d,navigationPath:e}=b(),f=cT(d.state,c);f&&(f.states?.length??0)>0&&a({navigationPath:[...e,c],currentParent:c,selection:{kind:null,id:null}})},navigateUp:c=>{let{navigationPath:d}=b();if(d.length<=1)return;let e=c??d.length-2,f=d.slice(0,e+1);a({navigationPath:f,currentParent:f[f.length-1],selection:{kind:null,id:null}})},getCurrentChildren:()=>{let{definition:a,currentParent:c}=b(),d=cT(a.state,c);return d?.states??[]}}))?bD(e):bD,c0="canvas",c1=`[data-pinch-owner="${c0}"]`;function c2(a){return!!a&&"function"==typeof a.closest&&null!==a.closest(c1)}let c3="stateloom-canvas",c4="#030712",c5=["png","jpeg","svg","mermaid","markdown"],c6={png:"PNG",jpeg:"JPEG",svg:"SVG",mermaid:"Mermaid",markdown:"Markdown"},c7={png:"image/png",jpeg:"image/jpeg",svg:"image/svg+xml",mermaid:"text/vnd.mermaid",markdown:"text/markdown"},c8={png:"png",jpeg:"jpg",svg:"svg",mermaid:"mmd",markdown:"md"};async function c9(a,b,c={}){var d,e,f;let g;if("mermaid"===a||"markdown"===a){let c,f;g=new Blob([(d=b.definition,e="markdown"===a,c=["stateDiagram-v2"],d.state&&function a(b,c,d){let e=T(b);if(0===e.length)return;let f=" ".repeat(c+1),g=new Set;for(let a of e)for(let b of a.transitions??[]){if(!b.nextState)continue;let c=b.condition?`${b.event} [${b.condition}]`:b.event;d.push(`${f}${a.name} --> ${b.nextState} : ${c}`),g.add(a.name),g.add(b.nextState)}for(let a of e)g.has(a.name)||d.push(`${f}${a.name}`);for(let b of e)0!==T(b).length&&(d.push(`${f}state ${b.name} {`),a(b,c+1,d),d.push(`${f}}`))}(d.state,0,c),f=c.join("\n"),e?`\`\`\`mermaid
|
|
2
|
+
`+Object.keys(d).map(a=>`${a}: ${d[a]}`).join("\r\n")+"\r\n\r\n"+c)}function s(a,b,c,d,e,f){if(a.listenerCount("wsClientError")){let d=Error(e);Error.captureStackTrace(d,s),a.emit("wsClientError",d,c,b)}else r(c,d,e,f)}b.exports=class extends d{constructor(a,b){if(super(),null==(a={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:262144,maxFragments:16384,maxPayload:0x6400000,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:l,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:k,...a}).port&&!a.server&&!a.noServer||null!=a.port&&(a.server||a.noServer)||a.server&&a.noServer)throw TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=a.port?(this._server=e.createServer((a,b)=>{let c=e.STATUS_CODES[426];b.writeHead(426,{"Content-Length":c.length,"Content-Type":"text/plain"}),b.end(c)}),this._server.listen(a.port,a.host,a.backlog,b)):a.server&&(this._server=a.server),this._server){const a=this.emit.bind(this,"connection");this._removeListeners=function(a,b){for(let c of Object.keys(b))a.on(c,b[c]);return function(){for(let c of Object.keys(b))a.removeListener(c,b[c])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(b,c,d)=>{this.handleUpgrade(b,c,d,a)}})}!0===a.perMessageDeflate&&(a.perMessageDeflate={}),a.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=a,this._state=0}address(){if(this.options.noServer)throw Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(a){if(2===this._state){a&&this.once("close",()=>{a(Error("The server is not running"))}),process.nextTick(p,this);return}if(a&&this.once("close",a),1!==this._state)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(p,this);else{let a=this._server;this._removeListeners(),this._removeListeners=this._server=null,a.close(()=>{p(this)})}}shouldHandle(a){if(this.options.path){let b=a.url.indexOf("?");if((-1!==b?a.url.slice(0,b):a.url)!==this.options.path)return!1}return!0}handleUpgrade(a,b,c,d){b.on("error",q);let e=a.headers["sec-websocket-key"],f=a.headers.upgrade,g=+a.headers["sec-websocket-version"];if("GET"!==a.method)return void s(this,a,b,405,"Invalid HTTP method");if(void 0===f||"websocket"!==f.toLowerCase())return void s(this,a,b,400,"Invalid Upgrade header");if(void 0===e||!o.test(e))return void s(this,a,b,400,"Missing or invalid Sec-WebSocket-Key header");if(13!==g&&8!==g)return void s(this,a,b,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});if(!this.shouldHandle(a))return void r(b,400);let k=a.headers["sec-websocket-protocol"],l=new Set;if(void 0!==k)try{l=j.parse(k)}catch(c){s(this,a,b,400,"Invalid Sec-WebSocket-Protocol header");return}let m=a.headers["sec-websocket-extensions"],n={};if(this.options.perMessageDeflate&&void 0!==m){let c=new i({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let a=h.parse(m);a[i.extensionName]&&(c.accept(a[i.extensionName]),n[i.extensionName]=c)}catch(c){s(this,a,b,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:a.headers[`${8===g?"sec-websocket-origin":"origin"}`],secure:!!(a.socket.authorized||a.socket.encrypted),req:a};if(2===this.options.verifyClient.length)return void this.options.verifyClient(f,(f,g,h,i)=>{if(!f)return r(b,g||401,h,i);this.completeUpgrade(n,e,l,a,b,c,d)});if(!this.options.verifyClient(f))return r(b,401)}this.completeUpgrade(n,e,l,a,b,c,d)}completeUpgrade(a,b,c,d,e,f,j){if(!e.readable||!e.writable)return e.destroy();if(e[n])throw Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return r(e,503);let k=g("sha1").update(b+m).digest("base64"),l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${k}`],o=new this.options.WebSocket(null,void 0,this.options);if(c.size){let a=this.options.handleProtocols?this.options.handleProtocols(c,d):c.values().next().value;a&&(l.push(`Sec-WebSocket-Protocol: ${a}`),o._protocol=a)}if(a[i.extensionName]){let b=a[i.extensionName].params,c=h.format({[i.extensionName]:[b]});l.push(`Sec-WebSocket-Extensions: ${c}`),o._extensions=a}this.emit("headers",l,d),e.write(l.concat("\r\n").join("\r\n")),e.removeListener("error",q),o.setSocket(e,f,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(o),o.on("close",()=>{this.clients.delete(o),this._shouldEmitClose&&!this.clients.size&&process.nextTick(p,this)})),j(o,d)}}},95421,a=>{"use strict";let b,c,d,e;var f,g,h=a.i(56856),i=a.i(55132);function j(a){return JSON.parse(JSON.stringify(a))}function k(a,b){for(let c of a.states??[]){if(c.name===b)return a;let d=k(c,b);if(d)return d}return null}function l(a,b,c){let d=function a(b,c){if(b.name===c)return b;for(let d of b.states??[]){let b=a(d,c);if(b)return b}return null}(a,b);if(!d)throw Error(`applyPatchOps: ${c} references missing state "${b}"`);return d}function m(a,b,c){let d=function(a,b){for(let c of a.events){let a=c.events??[];for(let d=0;d<a.length;d++)if(a[d].id===b)return{source:c,event:a[d],index:d}}return null}(a,b);if(!d)throw Error(`applyPatchOps: ${c} references missing event "${b}"`);return d}function n(a,b){let c=j(a);for(let a of(Array.isArray(c.events)||(c.events=[]),b))switch(a.op){case"settings.update":c.settings={...c.settings,...a.patch},""===c.settings.notes&&delete c.settings.notes;break;case"state.add":{let b=null===a.parent?c.state:l(c.state,a.parent,"state.add");b.states||(b.states=[]);let d=a.index??b.states.length;b.states.splice(d,0,j(a.state));break}case"state.update":{let b=l(c.state,a.name,"state.update");Object.assign(b,a.patch),""===b.notes&&delete b.notes,""===b.prompt&&delete b.prompt;break}case"state.remove":{if(c.state.name===a.name)throw Error(`applyPatchOps: cannot remove root state "${a.name}"`);let b=k(c.state,a.name);if(!b||!b.states)throw Error(`applyPatchOps: state.remove references missing state "${a.name}"`);let d=b.states.findIndex(b=>b.name===a.name);if(d<0)throw Error(`applyPatchOps: state.remove references missing state "${a.name}"`);b.states.splice(d,1),0===b.states.length&&delete b.states;break}case"state.nest":{let b=l(c.state,a.child,"state.nest"),d=l(c.state,a.newParent,"state.nest"),e=k(c.state,a.child);if(!e||!e.states)throw Error(`applyPatchOps: state.nest cannot detach root or missing state "${a.child}"`);let f=e.states.findIndex(b=>b.name===a.child),[g]=e.states.splice(f,1);0===e.states.length&&delete e.states,d.states||(d.states=[]),d.states.push(g??j(b));break}case"eventSource.add":{let b=a.index??c.events.length;c.events.splice(b,0,j(a.source));break}case"eventSource.update":{let b=c.events[a.index];if(!b)throw Error(`applyPatchOps: eventSource.update index ${a.index} out of range`);c.events[a.index]={...b,...a.patch};break}case"eventSource.remove":if(!c.events[a.index])throw Error(`applyPatchOps: eventSource.remove index ${a.index} out of range`);c.events.splice(a.index,1);break;case"event.add":{let b=c.events[a.sourceIndex];if(!b)throw Error(`applyPatchOps: event.add sourceIndex ${a.sourceIndex} out of range`);b.events||(b.events=[]);let d=a.index??b.events.length;b.events.splice(d,0,j(a.event));break}case"event.update":Object.assign(m(c,a.id,"event.update").event,a.patch);break;case"event.remove":{let b=m(c,a.id,"event.remove");b.source.events.splice(b.index,1),0===b.source.events.length&&delete b.source.events;break}case"parameter.add":{let b=m(c,a.eventId,"parameter.add");b.event.parameters||(b.event.parameters=[]);let d=a.index??b.event.parameters.length;b.event.parameters.splice(d,0,j(a.parameter));break}case"parameter.update":{let b=m(c,a.eventId,"parameter.update").event.parameters??[];if(!b[a.index])throw Error(`applyPatchOps: parameter.update index ${a.index} out of range for event "${a.eventId}"`);b[a.index]={...b[a.index],...a.patch};break}case"parameter.remove":{let b=m(c,a.eventId,"parameter.remove"),d=b.event.parameters;if(!d||!d[a.index])throw Error(`applyPatchOps: parameter.remove index ${a.index} out of range for event "${a.eventId}"`);d.splice(a.index,1),0===d.length&&delete b.event.parameters;break}case"transition.add":{let b=l(c.state,a.state,"transition.add");b.transitions||(b.transitions=[]);let d=a.index??b.transitions.length;b.transitions.splice(d,0,j(a.transition));break}case"transition.update":{let b=l(c.state,a.state,"transition.update").transitions??[];if(!b[a.index])throw Error(`applyPatchOps: transition.update index ${a.index} out of range for state "${a.state}"`);b[a.index]={...b[a.index],...a.patch};break}case"transition.remove":{let b=l(c.state,a.state,"transition.remove"),d=b.transitions;if(!d||!d[a.index])throw Error(`applyPatchOps: transition.remove index ${a.index} out of range for state "${a.state}"`);d.splice(a.index,1),0===d.length&&delete b.transitions;break}case"action.add":{let b=l(c.state,a.state,"action.add"),d=b[a.hook]??(b[a.hook]={actions:[]}),e=a.index??d.actions.length;d.actions.splice(e,0,j(a.action));break}case"action.update":{let b=l(c.state,a.state,"action.update")[a.hook];if(!b||!b.actions[a.index])throw Error(`applyPatchOps: action.update index ${a.index} out of range for state "${a.state}" ${a.hook}`);b.actions[a.index]=j(a.action);break}case"action.remove":{let b=l(c.state,a.state,"action.remove"),d=b[a.hook];if(!d||!d.actions[a.index])throw Error(`applyPatchOps: action.remove index ${a.index} out of range for state "${a.state}" ${a.hook}`);d.actions.splice(a.index,1),0===d.actions.length&&delete b[a.hook];break}case"runtime.enter":case"runtime.exit":break;default:throw Error(`applyPatchOps: unknown op ${JSON.stringify(a)}`)}return c}function o(a){let b=[a];for(let c of a.states??[])b.push(...o(c));return b}function p(a){let b=new Map;b.set(a.name,null);let c=a=>{for(let d of a.states??[])b.set(d.name,a.name),c(d)};return c(a),b}function q(a,b){return JSON.stringify(a)===JSON.stringify(b)}function r(a,b,c,d,e){let f=Math.min(c.length,d.length);for(let g=0;g<f;g++)q(c[g],d[g])||e.push({op:"action.update",state:a,hook:b,index:g,action:d[g]});for(let c=f;c<d.length;c++)e.push({op:"action.add",state:a,hook:b,action:d[c],index:c});for(let f=c.length-1;f>=d.length;f--)e.push({op:"action.remove",state:a,hook:b,index:f})}function s(a){let b=0;for(let c=0;c<a.length;c++)b=Math.imul(b,31)+a.charCodeAt(c)|0;let c=(b%360+360)%360;return`hsl(${c}, 65%, 55%)`}let t={hSpacing:220,vSpacing:140,nodeWidth:160,nodeHeight:60,compositeWidth:300,compositeHeight:200,originX:100,originY:120,sweeps:2,includeRoot:!0},u=(a,b)=>`${a}\u0000${b}`;function v(a){let b=new Set,c=[];for(let d of a.states??[])b.has(d.name)||(b.add(d.name),c.push(d));return c}function w(a,b){let c=new Map(a.map(a=>[a,[]]));for(let a of b)c.get(a.from).push(a.to);return c}function x(a,b={}){let c={...t,...b},d="state"in a?a.state:a,e={};if(!d)return e;if(!function a(b,c,d,e,f){let g=v(b);if(0===g.length)return;let h=g.map(a=>a.name),i=new Map(g.map(a=>[a.name,a])),j=function(a){let b=new Set,c=[];for(let d of a)for(let e of d.transitions??[]){let f=e.nextState?function(a,b){for(let c of a){if(c.name===b)return c.name;let a=[...c.states??[],...c.parallel?.states??[]];for(;a.length;){let d=a.pop();if(d.name===b)return c.name;a.push(...d.states??[],...d.parallel?.states??[])}}}(a,e.nextState):void 0;if(!f||f===d.name)continue;let g=u(d.name,f);b.has(g)||(b.add(g),c.push({from:d.name,to:f}))}return c}(g),k=function(a,b){let c=w(a,b),d=new Map(a.map(a=>[a,0])),e=new Set;for(let b of a){if(0!==d.get(b))continue;d.set(b,1);let a=[{node:b,i:0}];for(;a.length>0;){let b=a[a.length-1],f=c.get(b.node);if(b.i<f.length){let c=f[b.i++],g=d.get(c);1===g?e.add(u(b.node,c)):0===g&&(d.set(c,1),a.push({node:c,i:0}))}else d.set(b.node,2),a.pop()}}return e}(h,j),l=j.filter(a=>!k.has(u(a.from,a.to))),m=function(a,b){let c=w(a,b),d=new Map(a.map(a=>[a,0]));for(let a of b)d.set(a.to,(d.get(a.to)??0)+1);let e=new Map(a.map(a=>[a,0])),f=a.filter(a=>0===d.get(a));for(let a=0;a<f.length;a++){let b=f[a];for(let a of c.get(b)){e.set(a,Math.max(e.get(a),e.get(b)+1));let c=d.get(a)-1;d.set(a,c),0===c&&f.push(a)}}return e}(h,l),n=function(a,b,c){let d=new Map(a.map(a=>[a,[]]));for(let a of b)d.get(a.from).push(a.to),d.get(a.to).push(a.from);let e=new Set([c]),f=[c];for(;f.length>0;){let a=f.pop();for(let b of d.get(a)??[])e.has(b)||(e.add(b),f.push(b))}return e}(h,j,h[0]),o=0;for(let a of h)n.has(a)&&(o=Math.max(o,m.get(a)));for(let a of h)n.has(a)||m.set(a,m.get(a)+o+1);let p=Array.from({length:Math.max(...h.map(a=>m.get(a)))+1},()=>[]);for(let a of h)p[m.get(a)].push(a);!function(a,b,c){let d=new Map,e=new Map,f=(a,b,c)=>{let d=a.get(b);d?d.push(c):a.set(b,[c])};for(let a of b)f(d,a.to,a.from),f(e,a.from,a.to);let g=new Map,h=()=>{a.forEach(a=>a.forEach((a,b)=>g.set(a,b)))};h();let i=(a,b)=>{let c=a.map((a,c)=>{let d=(b.get(a)??[]).filter(a=>g.has(a));return{name:a,key:d.length?d.reduce((a,b)=>a+g.get(b),0)/d.length:c,i:c}});c.sort((a,b)=>a.key===b.key?a.i-b.i:a.key-b.key);for(let b=0;b<c.length;b++)a[b]=c[b].name};for(let b=0;b<c;b++){for(let b=1;b<a.length;b++)i(a[b],d),h();for(let b=a.length-2;b>=0;b--)i(a[b],e),h()}}(p,l,e.sweeps);let q=e.hSpacing-e.nodeWidth,r=e.vSpacing-e.nodeHeight,s=a=>Math.max(e.hSpacing,a+q),t=new Map(h.map(a=>{var b;return[a,(b=i.get(a),(b.states?.length??0)>0?{width:e.compositeWidth,height:e.compositeHeight}:{width:e.nodeWidth,height:e.nodeHeight})]})),x=p.map(a=>a.reduce((a,b)=>a+s(t.get(b).width),0)),y=c+Math.max(...x,0)/2,z=d;for(let b of(p.forEach((a,b)=>{let c=y-x[b]/2,d=e.nodeHeight;for(let b of a){let a=t.get(b),e=s(a.width);f[b]={x:Math.round(c+(e-a.width)/2),y:Math.round(z),width:a.width,height:a.height},c+=e,d=Math.max(d,a.height)}z+=d+r}),g)){if((b.states?.length??0)===0)continue;let c=f[b.name];a(b,c.x+20,c.y+40,e,f)}}(d,c.originX,c.originY,c,e),c.includeRoot){let a=v(d).map(a=>e[a.name]).filter(Boolean);if(0===a.length)e[d.name]={x:20,y:20,width:400,height:350};else{let b=Math.min(...a.map(a=>a.x)),c=Math.min(...a.map(a=>a.y)),f=Math.max(...a.map(a=>a.x+a.width)),g=Math.max(...a.map(a=>a.y+a.height));e[d.name]={x:Math.round(b-40),y:Math.round(c-40),width:Math.round(f-b+80),height:Math.round(g-c+80)}}}return e}let y=(a,b)=>a.length*b*.55,z=a=>`[${a.length>32?`${a.slice(0,31).trimEnd()}…`:a}]`,A=a=>({width:Math.max(56,Math.max(y(a.event,11),a.condition?y(z(a.condition),9):0)+16)+16*!!a.glyph,height:a.condition?28:18}),B=a=>({x:a.x+5,y:a.cy-12-3}),C=(a,b)=>a.x<b.x+b.width&&b.x<a.x+a.width&&a.y<b.y+b.height&&b.y<a.y+a.height,D={along:[.5,.36,.64,.24,.76,.14,.86],aside:[0,.6,-.6],across:[0,-1.3,1.3,-2.6,2.6]};function E(a,b,c={}){let{along:d,aside:e,across:f}={...D,...c},g=a.map((a,b)=>({label:a,i:b,width:A(a).width})).sort((a,b)=>a.width===b.width?a.i-b.i:b.width-a.width),h=[];for(let{label:a}of g){let{width:c,height:g}=A(a),i=8*!!a.glyph,j=null,k=1/0;a:for(let l of f)for(let f of e)for(let e of d){let d=a.at(e),m=d.x+f*c,n=d.y+l*g,o={x:m-c/2,y:n-18,width:c,height:g},p=[...h,...b].filter(a=>C(o,a)).length,q={...o,cx:m+i,cy:n,label:a};if(0===p){j=q;break a}p<k&&(k=p,j=q)}j&&h.push(j)}return h}let F=(a,b,c=2.2,d)=>({id:a,paths:b,strokeWidth:c,circles:d}),G=F("signal",["M3 12h10","m13 6 6 6-6 6Z"]),H=[{glyph:F("confirm",["m4 13 5.5 5.5L20 6"],2.4),words:["confirm","approve","accept","commit"]},{glyph:F("complete",["m8 12 3 3 5-6"],2.2,[{cx:12,cy:12,r:8.5}]),words:["complete","finish","done","close"]},{glyph:F("skip",["M4 17c0-6 4.5-9 9-9h6","m15 4 4.5 4-4.5 4"]),words:["skip","ignore","bypass"]},{glyph:F("flag",["M6 21V4","M6 4h12l-3 4.5 3 4.5H6Z"]),words:["flag","mark","revisit","review"]},{glyph:F("advance",["M4 6l8 6-8 6Z","M13 6l7 6-7 6Z"]),words:["advance","next","forward","step"]},{glyph:F("pause",["M9 5v14M15 5v14"],2.6),words:["pause","hold","suspend","stop"]},{glyph:F("play",["M7 4.5 19 12 7 19.5Z"]),words:["resume","start","begin","play","run"]},{glyph:F("clock",["M12 7.5V12l3.5 2.5"],2.2,[{cx:12,cy:12,r:8.5}]),words:["timeout","expire","tick","delay","after","elapse"]},{glyph:F("change",["M3 14c3-6 6-6 9 0s6 6 9 0"]),words:["change","update","edit","modify","set"]}];[...H.map(a=>a.glyph)];let I=a=>Math.round(100*a)/100;function J(a,b,c,d){return{p0:a,p1:b,p2:c,p3:d,path:`M ${I(a.x)} ${I(a.y)} C ${I(b.x)} ${I(b.y)}, ${I(c.x)} ${I(c.y)}, ${I(d.x)} ${I(d.y)}`,at:e=>{let f=1-e,g=f*f*f,h=3*f*f*e,i=3*f*e*e,j=e*e*e;return{x:g*a.x+h*b.x+i*c.x+j*d.x,y:g*a.y+h*b.y+i*c.y+j*d.y}}}}function K(a,b){let c=a.map(({from:a,to:c})=>{var d,e;return a===c?null:(d=b(a),(e=b(c)).y>=d.y+d.height?["bottom","top"]:e.y+e.height<=d.y?["top","bottom"]:e.x>=d.x+d.width?["right","left"]:e.x+e.width<=d.x?["left","right"]:["bottom","top"])}),d=new Map,e=(a,b,c)=>{let e=`${a}\0${b}`,f=d.get(e);f?f.push(c):d.set(e,[c])},f=(a,b)=>"top"===b||"bottom"===b?a.x+a.width/2:a.y+a.height/2;a.forEach((a,d)=>{let g=c[d];if(!g)return;let[h,i]=g;e(a.from,h,{edge:d,toward:f(b(a.to),h),role:"out"}),e(a.to,i,{edge:d,toward:f(b(a.from),i),role:"in"})});let g=new Map;for(let[a,c]of d){let[d,e]=a.split("\0"),f=b(d),h=[...c].sort((a,b)=>a.toward===b.toward?a.edge-b.edge:a.toward-b.toward);h.forEach((a,b)=>{g.set(`${a.edge}\0${a.role}`,function(a,b,c,d){let e="top"===b||"bottom"===b,f=e?a.width:a.height,g=e?a.x+a.width/2:a.y+a.height/2,h=d>1?Math.min(.72*f,40*(d-1)):0,i=d>1?g-h/2+h*c/(d-1):g;return"top"===b?{x:i,y:a.y}:"bottom"===b?{x:i,y:a.y+a.height}:"left"===b?{x:a.x,y:i}:{x:a.x+a.width,y:i}}(f,e,b,h.length))})}return a.map((a,d)=>{let e=c[d];if(!e){var f;let c,d,e;return c=(f=b(a.from)).x+f.width,d=f.y+.35*f.height,J({x:c,y:d},{x:c+44,y:d-12},{x:c+44,y:(e=f.y+.65*f.height)+12},{x:c,y:e})}let h=g.get(`${d}\0out`),i=g.get(`${d}\0in`);var j=e[0];if("top"===j||"bottom"===j){let a=(h.y+i.y)/2;return J(h,{x:h.x,y:a},{x:i.x,y:a},i)}let k=(h.x+i.x)/2;return J(h,{x:k,y:h.y},{x:k,y:i.y},i)})}let L={min:.2,max:2.5},M={x:0,y:0,scale:1};function N(a,b=L){return Number.isFinite(a)?Math.min(b.max,Math.max(b.min,a)):1}function O(a,b,c){return{x:a.x+b,y:a.y+c,scale:a.scale}}function P(a,b,c,d=L){return Q(a,a.scale*b,c,d)}function Q(a,b,c,d=L){let e=N(b,d);if(e===a.scale)return a;let f={x:(c.x-a.x)/a.scale,y:(c.y-a.y)/a.scale};return{x:c.x-f.x*e,y:c.y-f.y*e,scale:e}}function R(a,b,c,d={}){let e=d.padding??48,f=d.maxScale??1,g=d.limits??L;if(0===a.length||b<=0||c<=0)return{...M};let h=1/0,i=1/0,j=-1/0,k=-1/0;for(let b of a)h=Math.min(h,b.x),i=Math.min(i,b.y),j=Math.max(j,b.x+b.width),k=Math.max(k,b.y+b.height);let l=Math.max(1,j-h),m=Math.max(1,k-i),n=N(Math.min(f,Math.min(Math.max(1,b-2*e)/l,Math.max(1,c-2*e)/m)),g);return{x:(b-l*n)/2-h*n,y:(c-m*n)/2-i*n,scale:n}}function S(a){return`translate(${a.x} ${a.y}) scale(${a.scale})`}function T(a){let b=new Set,c=[];for(let d of a.states??[])b.has(d.name)||(b.add(d.name),c.push(d));return c}function U(a){return a.stateOf?Array.isArray(a.stateOf)?a.stateOf:[a.stateOf]:[]}let V=["1:1","1:N","N:1","N:M"];function W(a){return!!a&&"object"==typeof a&&Array.isArray(a.entities)&&!("state"in a)}function X(a){let b=[],c=function(a){let b=new Map;for(let c of a.entities??[])c?.name&&!b.has(c.name)&&b.set(c.name,c);return b}(a),d=new Set;for(let[e,f]of(a.entities??[]).entries()){if(!f?.name){b.push({ruleId:"E001",message:`Entity at index ${e} has no name`,element:`entities[${e}]`});continue}d.has(f.name)&&b.push({ruleId:"E001",message:`Duplicate entity name "${f.name}"`,element:f.name}),d.add(f.name);let a=new Set;for(let[d,e]of(f.attributes??[]).entries()){if(!e?.name){b.push({ruleId:"E002",message:`Attribute at index ${d} of "${f.name}" has no name`,element:`${f.name}[${d}]`});continue}let g=`${f.name}.${e.name}`;if(a.has(e.name)&&b.push({ruleId:"E002",message:`Duplicate attribute "${g}"`,element:g}),a.add(e.name),e.references){let a=function(a){let b=a.indexOf(".");return b<0?{entity:a}:{entity:a.slice(0,b),attribute:a.slice(b+1)}}(e.references),d=c.get(a.entity);d?a.attribute&&!(d.attributes??[]).some(b=>b?.name===a.attribute)&&b.push({ruleId:"E005",message:`"${g}" references undefined attribute "${e.references}"`,element:g}):b.push({ruleId:"E005",message:`"${g}" references undefined entity "${a.entity}"`,element:g})}}}for(let[d,e]of(a.relationships??[]).entries()){let a=`relationships[${d}]`;for(let f of["from","to"]){let g=e?.[f];g&&c.has(g)||b.push({ruleId:"E003",message:`Relationship ${d} ${f} names undefined entity "${g??""}"`,element:a})}V.includes(e?.cardinality)||b.push({ruleId:"E004",message:`Relationship ${d} cardinality "${e?.cardinality??""}" is not one of ${V.join(", ")}`,element:a})}return b}function Y(a,b){let c=RegExp(`(?<![\\w.])${b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\.([A-Za-z_]\\w*)\\b(?!\\s*\\()`,"g"),d=[];for(let b of a.matchAll(c))d.includes(b[1])||d.push(b[1]);return d}function Z(a,b){let c=[],d=new Map;for(let a of b.entities??[])a?.name&&!d.has(a.name)&&d.set(a.name,a);let e=a.settings?.name??"",f=a.settings?.objects??[],g=a.state?function a(b){let c=[b];for(let d of b.states??[])c.push(...a(d));for(let d of b.parallel?.states??[])c.push(...a(d));return c}(a.state):[],h=g.flatMap(a=>(a.transitions??[]).map(a=>a.condition??"")),i=new Map;for(let a of f){let e=d.get(a.class);if(e){i.set(a.instance,e);continue}h.some(b=>Y(b,a.instance).length>0)&&c.push({ruleId:"L001",message:`Object "${a.instance}" has class "${a.class}", which is not an entity in "${b.settings?.name??""}", and a guard reads its fields`,element:a.instance})}for(let a of g)for(let b of a.transitions??[])if(b.condition)for(let[d,e]of i)for(let f of Y(b.condition,d))(e.attributes??[]).some(a=>a?.name===f)||c.push({ruleId:"L002",message:`Guard on ${a.name} [${b.event}] reads "${d}.${f}", which is not an attribute of "${e.name}"`,element:a.name});if(e){let a=new Set([...i.values()].map(a=>a.name));for(let d of b.entities??[])for(let b of d?.attributes??[])b&&U(b).includes(e)&&(a.has(d.name)||c.push({ruleId:"L003",message:`"${d.name}.${b.name}" stores the state of "${e}", but "${d.name}" is not the class of any of that machine's objects`,element:`${d.name}.${b.name}`}))}return c}function $(a,b){let c=[];for(let d of a.entities??[])for(let a of d?.attributes??[])if(a)for(let e of U(a))b.includes(e)||c.push({ruleId:"L004",message:`"${d.name}.${a.name}" stores the state of "${e}", which is not among the machines checked (${b.join(", ")||"none"})`,element:`${d.name}.${a.name}`});return c}let _=a=>({settings:{...a.settings},entities:(a.entities??[]).map(a=>({...a,attributes:(a.attributes??[]).map(a=>({...a}))})),relationships:(a.relationships??[]).map(a=>({...a}))});function aa(a,b){let c=a.entities.find(a=>a.name===b);if(!c){let c=a.entities.map(a=>a.name).join(", ")||"none";throw Error(`Entity '${b}' not found. Entities: ${c}.`)}return c}function ab(a){return Object.fromEntries(Object.entries(a).filter(([,a])=>void 0!==a))}function ac(a,b){if(!b.name?.trim())throw Error("An entity needs a name.");let c=_(a);if(c.entities.some(a=>a.name===b.name))throw Error(`Entity '${b.name}' already exists.`);return c.entities.push(ab({...b,attributes:b.attributes??[]})),c}function ad(a,b,c){let d=_(a),e=aa(d,b);return void 0!==c.notes&&(c.notes.trim()?e.notes=c.notes:delete e.notes),void 0!==c.description&&(c.description?e.description=c.description:delete e.description),void 0!==c.weak&&(c.weak?e.weak=!0:delete e.weak),d}let ae=a=>(a.attributes??[]).filter(a=>a?.name);function af(a){return Math.max(110,Math.ceil(8.4*(a.name??"").length+36))}function ag(a){return Math.max(38,Math.ceil(3.5*Math.max(0,...a.map(a=>a.name.length))+14))}let ah=a=>Math.ceil(a/2);function ai(a){let b=ae(a),c=af(a);return 0===b.length?{width:c,height:40}:{width:c+2*(34+2*ag(b)),height:Math.max(40,32*ah(b.length))}}let aj={"1:1":"||--||","1:N":"||--o{","N:1":"}o--||","N:M":"}o--o{"},ak=/^[A-Za-z_][A-Za-z0-9_-]*$/,al=a=>ak.test(a)?a:`"${a.replace(/"/g,"'")}"`,am=(a,b)=>{let c=a.trim().replace(/[^A-Za-z0-9_()[\]-]+/g,"_").replace(/^_+|_+$/g,"");return/^[A-Za-z_]/.test(c)?c:c?`_${c}`:b},an=a=>`"${a.replace(/"/g,"'")}"`,ao=["settings","states","parallel","entities","participants","messages","fragments","members","state"];function ap(a){let b=!1,c=a=>{if(Array.isArray(a)){let b=!1,d=a.map(a=>{let d=c(a);return d!==a&&(b=!0),d});return b?d:a}if(!a||"object"!=typeof a)return a;let d=null;if("notes"in a&&"string"!=typeof a.notes&&void 0!==a.notes){d={...a};let c=function(a){if(null!=a)return"string"==typeof a?a:Array.isArray(a)?a.map(a=>"string"==typeof a?a:JSON.stringify(a)).join("\n\n"):JSON.stringify(a)}(a.notes);void 0!==c&&c.trim()?d.notes=c:delete d.notes,b=!0}for(let b of ao){if(!(b in a))continue;let e=(d??a)[b],f=c(e);f!==e&&((d??={...a})[b]=f)}return d??a},d=c(a);return b?d:a}function aq(a){return`${a.name} : ${a.type}`}function ar(a){let b=(a.attributes??[]).filter(a=>a?.name);return{width:Math.min(340,Math.max(170,Math.ceil(6.6*Math.max(1.15*(a.name??"").length,...b.map(a=>aq(a).length+6.96969696969697))+28))),height:30+20*Math.max(1,b.length)+8}}function as(a){return a.trim().replace(/[\s_]+/g,"-").replace(/[^A-Za-z0-9.-]/g,"").replace(/-{2,}/g,"-").replace(/^[-.]+|[-.]+$/g,"").slice(0,60)}let at=["alt","opt","loop"];function au(a){return!!a&&"object"==typeof a&&Array.isArray(a.participants)&&Array.isArray(a.messages)&&!("state"in a)&&!("entities"in a)}function av(a,b,c){return{settings:c?{namespace:a,name:b,description:c}:{namespace:a,name:b},participants:[],messages:[]}}function aw(a,b){return null===a?String(b+1):`f${a+1}.${b+1}`}function ax(a,b){if(/^\d+$/.exec(b)){let c=Number(b)-1,d=a.messages?.[c];return d?{fragment:null,index:c,message:d}:null}let c=/^f(\d+)\.(\d+)$/.exec(b);if(!c)return null;let d=Number(c[1])-1,e=Number(c[2])-1,f=a.fragments?.[d]?.messages?.[e];return f?{fragment:d,index:e,message:f}:null}function ay(a){let b=[];return(a.messages??[]).forEach((a,c)=>b.push({ref:aw(null,c),message:a,fragment:null})),(a.fragments??[]).forEach((a,c)=>(a?.messages??[]).forEach((a,d)=>b.push({ref:aw(c,d),message:a,fragment:c}))),b}function az(a){let b=[];a?.settings?.name||b.push({ruleId:"S001",message:"The sequence has no settings.name",element:"settings"});let c=new Set;for(let[d,e]of(a.participants??[]).entries()){if(!e?.name){b.push({ruleId:"S002",message:`Participant at index ${d} has no name`,element:`participants[${d}]`});continue}c.has(e.name)&&b.push({ruleId:"S002",message:`Duplicate participant "${e.name}"`,element:e.name}),c.add(e.name)}let d=(a,d)=>{if(!a)return void b.push({ruleId:"S003",message:`Message ${d} is empty`,element:`message:${d}`});for(let e of["from","to"])a[e]&&c.has(a[e])||b.push({ruleId:"S003",message:`Message ${d} ${"from"===e?"comes from":"goes to"} "${a[e]??""}", which is not a participant`,element:`message:${d}`});a.label?.trim()||b.push({ruleId:"S004",message:`Message ${d} has no label`,element:`message:${d}`})};(a.messages??[]).forEach((a,b)=>d(a,aw(null,b)));let e=(a.messages??[]).length;for(let[c,f]of(a.fragments??[]).entries()){let a=`fragment:${c+1}`;if(!f||!at.includes(f.kind)){b.push({ruleId:"S005",message:`Fragment ${c+1} has kind "${f?.kind??""}"; expected one of ${at.join(", ")}`,element:a});continue}(!Number.isInteger(f.after)||f.after<0||f.after>e)&&b.push({ruleId:"S005",message:`Fragment ${c+1} branches after message ${f.after}, but the main sequence has messages 1 to ${e}`,element:a}),f.messages?.length||b.push({ruleId:"S006",message:`Fragment ${c+1} (${f.kind}) holds no message`,element:a}),(f.messages??[]).forEach((a,b)=>d(a,aw(c,b)))}return b}let aA=a=>{let b={settings:{...a.settings},participants:(a.participants??[]).map(a=>({...a,...a.holds?{holds:[...a.holds]}:{}})),messages:(a.messages??[]).map(a=>({...a}))};return a.fragments&&(b.fragments=a.fragments.map(a=>({...a,messages:(a.messages??[]).map(a=>({...a}))}))),b};function aB(a){return Object.fromEntries(Object.entries(a).filter(([,a])=>void 0!==a&&""!==a&&!(Array.isArray(a)&&0===a.length)))}function aC(a,b){let c=a.participants.find(a=>a.name===b);if(!c){let c=a.participants.map(a=>a.name).join(", ")||"none";throw Error(`Participant '${b}' not found. Participants: ${c}.`)}return c}function aD(a,b){if(aC(a,b.from),aC(a,b.to),!b.label?.trim())throw Error("A message needs a label: what is said or done, in a few words.")}function aE(a,b){let c=a.fragments?.[b];if(c&&!Array.isArray(c.messages)&&(c.messages=[]),!c)throw Error(`Fragment ${b+1} not found. The sequence has ${a.fragments?.length??0} fragment(s).`);return c}function aF(a,b,c){let d=aA(a),e=aC(d,b),f=aB({...e,...c});return d.participants[d.participants.indexOf(e)]=f,d}function aG(a,b,c){let d=aA(a);aD(d,b);let e=void 0===c?d.messages.length:Math.max(0,Math.min(c,d.messages.length));if(d.messages.splice(e,0,aB({...b})),d.fragments)for(let a of d.fragments)a.after>e&&(a.after+=1);return d}function aH(a,b,c,d=null){let e=aA(a),f=null===d?e.messages:aE(e,d).messages,g=f[b];if(!g)throw Error(`Message ${b+1} not found${null===d?"":` in fragment ${d+1}`}.`);let h=aB({...g,...c});return aD(e,h),f[b]=h,e}function aI(a,b,c){let d=aA(a);if(!d.messages[b])throw Error(`Message ${b+1} not found.`);let e=Math.max(0,Math.min(c,d.messages.length-1)),f=(d.fragments??[]).map(a=>a.after>0?d.messages[a.after-1]:null),[g]=d.messages.splice(b,1);return d.messages.splice(e,0,g),(d.fragments??[]).forEach((a,b)=>{let c=f[b];c&&(a.after=d.messages.indexOf(c)+1)}),d}let aJ={columnGap:150,rowHeight:34,headerHeight:34,topGap:30,fragmentPad:30,margin:24,fontSize:12};function aK(a,b={}){let c={...aJ,...b},d=(Array.isArray(a.participants)?a.participants:[]).map(a=>({...a,name:"string"==typeof a?.name?a.name:""})),e=(Array.isArray(a.messages)?a.messages:[]).filter(a=>!!a&&"object"==typeof a),f=a=>Math.max(90,y(a,c.fontSize)+28),g=[],h=c.margin;d.forEach((b,i)=>{let j=f(b.name);if(0===i)g.push(h+j/2);else{let h=f(d[i-1].name),k=function(a,b,c,d,e){let f=0;for(let g of[...a,...(Array.isArray(b.fragments)?b.fragments:[]).flatMap(a=>(Array.isArray(a?.messages)?a.messages:[]).filter(a=>!!a&&"object"==typeof a))])(g.from===c&&g.to===d||g.from===d&&g.to===c)&&(f=Math.max(f,y("string"==typeof g.label?g.label:"",e)+30));return f}(e,a,d[i-1].name,b.name,c.fontSize),l=Math.max(c.columnGap,(h+j)/2+20,k+24);g.push(g[i-1]+l)}});let i=new Map(d.map((a,b)=>[a.name,g[b]])),j=d.map((a,b)=>{let d=f(a.name);return{name:a.name,x:g[b],left:g[b]-d/2,top:c.margin,width:d,height:c.headerHeight}}),k=[],l=c.margin+c.headerHeight+c.topGap,m=0,n=(a,b,d,e,f)=>{let g=i.get(d)??c.margin,h=i.get(e)??c.margin,j=d===e;j&&(m=Math.max(m,g+44+y("string"==typeof f?f:"",c.fontSize))),k.push({ref:aw(a,b),fragment:a,index:b,y:l,fromX:g,toX:h,self:j}),l+=c.rowHeight};(Array.isArray(a.messages)?a.messages:[]).forEach((a,b)=>{a&&"object"==typeof a&&n(null,b,a.from,a.to,a.label)});let o=c.margin/2,p=Math.max(g.length?g[g.length-1]+f(d[d.length-1].name)/2:c.margin,m)+c.margin/2,q=[];(Array.isArray(a.fragments)?a.fragments:[]).forEach((a,b)=>{if(!a||"object"!=typeof a)return;let d=(l+=c.rowHeight/2)-c.rowHeight/2;l+=c.fragmentPad-c.rowHeight/2+6,(Array.isArray(a.messages)?a.messages:[]).forEach((a,c)=>{a&&"object"==typeof a&&n(b,c,a.from,a.to,a.label)});let e=l-d+c.fragmentPad/2-c.rowHeight/2;q.push({index:b,left:o,top:d,width:p-o,height:e,headingY:d+16}),l=d+e+c.rowHeight/2});let r=c.margin+c.headerHeight,s=l;return{participants:j,rows:k,fragments:q,lifelineTop:r,lifelineBottom:s,width:Math.max(p+c.margin/2,2*c.margin+200),height:s+c.margin}}let aL=a=>a.replace(/[;#\n\r]+/g," ").replace(/\s+/g," ").trim(),aM=["propose","auto"];function aN(a,b){return"auto"===b||"propose"===b?b:a?.settings?.reconcile==="auto"?"auto":"propose"}let aO=["person","agent","service","external"];function aP(a){return a.toLowerCase().endsWith(".sysdf.json")}function aQ(a){return!!a&&"object"==typeof a&&Array.isArray(a.members)&&!("state"in a)&&!("entities"in a)&&!("participants"in a)}function aR(a){return a.toLowerCase().endsWith(".erdf.json")?"erd":a.toLowerCase().endsWith(".sqdf.json")?"sequence":aP(a)?"system":"machine"}function aS(a){return a&&"object"==typeof a?W(a)?"erd":au(a)?"sequence":aQ(a)?"system":"state"in a?"machine":null:null}let aT=["erd","machine","sequence"];function aU(a,b){return b.startsWith("/")?aV(b):aV((a.slice(0,a.lastIndexOf("/")+1)||"./")+b)}function aV(a){let b=a.startsWith("/"),c=[];for(let d of a.split("/"))if(d&&"."!==d){if(".."===d){c.length&&".."!==c[c.length-1]?c.pop():b||c.push("..");continue}c.push(d)}return(b?"/":"")+c.join("/")}let aW=a=>({settings:{...a.settings},members:(a.members??[]).map(a=>({...a})),actors:(a.actors??[]).map(a=>({...a}))});function aX(a){return Object.fromEntries(Object.entries(a).filter(([,a])=>void 0!==a&&""!==a))}function aY(a,b){let c=aW(a);return c.settings=aX({...c.settings,...b}),c}let aZ=["refused","unknown-event","ended","state-mismatch"];function a$(a,b=0){return a.settings?.name||a.state?.name||`machine ${b+1}`}function a_(a){let b=a.map((a,b)=>a$(a,b));return b.map((a,c)=>b.indexOf(a)===c&&b.lastIndexOf(a)===c?a:`${a} #${c+1}`)}function a0(a,b){let c=a.states.get(b);for(;c&&c.states?.length;){let a=c.states.find(a=>"history"!==a.kind);if(!a)return null;c=a}return c?.name??null}function a1(a,b,c){let d=b;for(;d;){if(d===c)return!0;d=a.parent.get(d)}return!1}let a2=(a,b)=>a.states.get(b)?.kind==="final";function a3(a,b){let c,d,e=a_(b),f=b.map((a,b)=>(function(a,b,c){let d=new Map,e=new Map,f=(a,b)=>{if(a?.name){for(let c of(d.has(a.name)||(d.set(a.name,a),e.set(a.name,b)),a.states??[]))f(c,a.name);for(let b of a.parallel?.states??[])f(b,a.name)}};a.state&&f(a.state,null);let g=new Set;for(let b of a.events??[])for(let a of b?.events??[])a?.id&&g.add(a.id);for(let b of a.events??[])for(let a of b?.timers??[])a?.id&&g.add(a.id);let h={name:c,def:a,states:d,parent:e,events:g,initial:null};return h.initial=a.state?a0(h,a.state.name):null,h})(a,0,e[b])),g=(d=[{name:"main",kind:"main",items:c=(a.messages??[]).map((a,b)=>({ref:aw(null,b),message:a}))}],c.some(a=>a.message?.optional)&&d.push({name:"main without optional messages",kind:"without-optional",items:c.filter(a=>!a.message?.optional)}),(a.fragments??[]).forEach((a,b)=>{if(!a)return;let e=(a.messages??[]).map((a,c)=>({ref:aw(b,c),message:a})),f=Math.max(0,Math.min(a.after??0,c.length)),g=c.slice(0,f),h=c.slice(f),i=`${a.kind} ${b+1} \xb7 ${a.label??""}`.trim();"alt"===a.kind?d.push({name:i,kind:"alt",fragment:b,items:[...g,...e]}):"opt"===a.kind?d.push({name:i,kind:"opt",fragment:b,items:[...g,...e,...h]}):"loop"===a.kind&&d.push({name:i,kind:"loop",fragment:b,items:[...g,...e,...e,...h]})}),d).map(a=>(function(a,b){let c=new Map;for(let a of b){let b=a.initial&&a2(a,a.initial)?a.initial:null;c.set(a.name,{states:a.initial?[a.initial]:[],ended:b})}let d=[],e=new Map;for(let a of b){let b=a$(a.def);e.set(b,e.has(b)?null:a),a.name!==b&&e.set(a.name,a)}for(let{ref:f,message:g}of a.items){if(!g)continue;let a=g.label??"";if(!g.event){let e={ref:f,label:a,from:[],to:[],result:"data"};g.state&&function(a,b,c,d){let e=c.filter(a=>b.machine?a.name===b.machine:a.states.has(b.state));if(!e.length){a.result="state-mismatch",a.note=b.machine?`no member machine is named "${b.machine}"`:`no member machine has a state "${b.state}"`;return}for(let c of e){let e=d.get(c.name),f=e.states.filter(a=>a1(c,a,b.state));if(f.length){e.states=f;continue}a.machine=c.name,a.from=a.to=[...e.states],a.result="state-mismatch",a.note=`the scenario says ${c.name} is in ${b.state}; the walk has it in ${e.states.join(" or ")||"no state"}`;return}}(e,g,b,c),d.push(e);continue}let h=g.event,i=b.filter(a=>a.events.has(h));if(g.machine){let b=e.get(g.machine);if(!b){let c=null===b?`two member machines are named "${g.machine}"`:`no member machine is named "${g.machine}"`;d.push({ref:f,label:a,event:h,from:[],to:[],result:"unknown-event",note:c});continue}if(!(i=i.filter(a=>a===b)).length){d.push({ref:f,label:a,event:h,machine:b.name,from:[],to:[],result:"unknown-event",note:`"${b.name}" does not define the event "${h}"`});continue}}if(!i.length){d.push({ref:f,label:a,event:h,from:[],to:[],result:"unknown-event",note:`no member machine defines the event "${h}"`});continue}for(let b of i){let e=c.get(b.name),i=[...e.states];if(e.ended){d.push({ref:f,label:a,event:h,machine:b.name,from:i,to:i,result:"ended",note:`${b.name} ended in ${e.ended} before this message`});continue}let j=i.filter(a=>!a2(b,a));if(!j.length){d.push({ref:f,label:a,event:h,machine:b.name,from:i,to:i,result:"ended",note:`${b.name} ended in ${i.join(" or ")} before this message`});continue}let k=new Set,l=new Map,m=new Set,n=[];for(let a of j)for(let c of function(a,b,c){let d=[],e=b;for(;e;){for(let b of a.states.get(e)?.transitions??[])if(b?.event===c&&(d.push(b),!b.condition))return d;e=a.parent.get(e)}return d}(b,a,h)){let d=c.nextState?a0(b,c.nextState):a;if(!d){n.push(c.nextState);continue}k.add(d),d!==a&&m.add(d),c.condition&&l.set(d,(l.get(d)??new Set).add(c.condition))}if(!k.size){let c=n.length?`${b.name}'s transition for "${h}" from ${j.join(" or ")} leads to ${[...new Set(n)].join(", ")}, which cannot be entered`:`${b.name} has no transition for "${h}" from ${j.join(" or ")}`;d.push({ref:f,label:a,event:h,machine:b.name,from:i,to:i,result:"refused",note:c});continue}let o=[...k],p={ref:f,label:a,event:h,machine:b.name,from:i,to:o,result:"moved"};if(g.state&&(!g.machine||g.machine===b.name)){let a=b.states.has(g.state);if(a||g.machine===b.name){let c=o.filter(a=>a1(b,a,g.state));c.length?o=c:(p.result="state-mismatch",p.note=a?`the scenario says ${b.name} is in ${g.state}; the walk has it in ${o.join(" or ")}`:`${b.name} has no state "${g.state}"`)}}p.to=o,"moved"!==p.result||o.some(a=>m.has(a))||(p.result="stayed");let q=new Set(o.flatMap(a=>[...l.get(a)??[]]));q.size&&(p.guards=[...q]),e.states=o;let r=o.filter(a=>a2(b,a));r.length&&r.length===o.length&&(e.ended=r[0]),d.push(p)}}let f={};for(let[a,b]of c)f[a]=b.states;return{name:a.name,kind:a.kind,...void 0===a.fragment?{}:{fragment:a.fragment},steps:d,accepted:!d.some(a=>aZ.includes(a.result)),end:f}})(a,f));return{scenario:a.settings?.name??"",machines:f.map(a=>a.name),paths:g,accepted:g.every(a=>a.accepted)}}function a4(a){let b={machines:[],erds:[],sequences:[]};for(let c of a)c.def&&!c.error&&aS(c.def)===c.kind&&("machine"===c.kind&&b.machines.push({member:c.path,def:c.def}),"erd"===c.kind&&b.erds.push({member:c.path,def:c.def}),"sequence"===c.kind&&b.sequences.push({member:c.path,def:c.def}));return b}function a5(a,b){let c=[],d=(a,b,d,e)=>{c.push({ruleId:a,message:b,severity:"error",...d?{member:d}:{},...e?{element:e}:{}})},e=(a,b,d,e)=>{c.push({ruleId:a,message:b,severity:"warning",...d?{member:d}:{},...e?{element:e}:{}})};if(a){a.settings?.name||d("Y001","The system has no settings.name"),a.settings?.namespace||d("Y001","The system has no settings.namespace");let b=new Set;for(let[c,e]of(a.members??[]).entries()){if(!e?.path){d("Y002",`Member at index ${c} has no path`,void 0,`members[${c}]`);continue}b.has(e.path)&&d("Y002",`"${e.path}" is listed twice`,e.path),b.add(e.path),aT.includes(aR(e.path))&&e.path.endsWith(".json")||d("Y002",`"${e.path}" is not a document a system holds (.erdf.json, .smdf.json, .sqdf.json)`,e.path)}let c=new Set;for(let[b,e]of(a.actors??[]).entries()){if(!e?.name){d("Y004",`Actor at index ${b} has no name`,void 0,`actors[${b}]`);continue}c.has(e.name)&&d("Y004",`Duplicate actor "${e.name}"`,void 0,e.name),c.add(e.name),aO.includes(e.kind)||d("Y004",`Actor "${e.name}" has kind "${e.kind??""}"; expected one of ${aO.join(", ")}`,void 0,e.name)}}for(let a of b)a.error||!a.def?d("Y003",`"${a.path}" cannot be read: ${a.error??"no content"}`,a.path):aS(a.def)!==a.kind&&d("Y003",`"${a.path}" is named as a ${a.kind} but holds ${aS(a.def)??"something else"}`,a.path);let{machines:f,erds:g,sequences:h}=a4(b),i=new Map;for(let{member:a,def:b}of f){let c=a$(b),e=i.get(c);e?d("Y005",`"${a}" and "${e}" are both machines named "${c}"; a message cannot say which`,a):i.set(c,a)}for(let{member:a,def:b}of g)for(let c of X(b))d(c.ruleId,c.message,a,c.element);for(let{member:a,def:b}of h)for(let c of az(b))d(c.ruleId,c.message,a,c.element);let j=function(a){if(!a.length)return null;let b=new Set,c=a.flatMap(({def:a})=>a.entities??[]).filter(a=>a?.name&&!b.has(a.name)&&b.add(a.name));return{settings:{namespace:a[0].def.settings?.namespace??"",name:a.map(a=>a.def.settings?.name).join(" + ")},entities:c,relationships:a.flatMap(({def:a})=>a.relationships??[])}}(g);if(j){for(let{member:a,def:b}of f)for(let c of Z(b,j))d(c.ruleId,c.message,a,c.element);let a=f.map(({def:a},b)=>a$(a,b));for(let{member:b,def:c}of g)for(let e of $(c,a))d(e.ruleId,e.message,b,e.element)}for(let{member:a,def:b}of f){let c=(d,f)=>{if(!d)return;let g=f||(d.transitions??[]).length>0,h=d.states??[];for(let f of(h.length||d.parallel||d===b.state||"final"===d.kind||"history"===d.kind||g||e("L009",`${a$(b)}: ${d.name} has no way out and is not final; say how the machine leaves it, or mark it final`,a,`state:${d.name}`),h))c(f,g)};c(b.state,!1)}let k=f.map(a=>a.def),l=new Set(k.map((a,b)=>a$(a,b))),m=new Map,n=new Set,o=new Set;k.forEach((a,b)=>{let c=new Set;for(let b of a.events??[]){for(let a of b?.events??[])a?.id&&c.add(a.id);for(let a of b?.timers??[])a?.id&&c.add(a.id)}m.set(a$(a,b),c);let d=a=>{a&&(n.add(a.name),(a.states??[]).forEach(d),(a.parallel?.states??[]).forEach(d))};for(let b of(d(a.state),a.settings?.objects??[]))b?.instance&&o.add(b.instance)});let p=new Set((j?.entities??[]).map(a=>a.name)),q=new Set((a?.actors??[]).map(a=>a.name)),r=[];for(let{member:b,def:c}of h){let f=!1,g=a=>!!j||(f||e("L006",`${a} name entities, but the system has no ERD to hold them`,b),f=!0,!1);for(let e of c.participants??[]){if(!e?.name)continue;let c=`participant:${e.name}`;if(e.actor&&a&&!q.has(e.actor)&&d("L006",`Participant "${e.name}" is the actor "${e.actor}", which the system does not list`,b,c),e.object&&!o.has(e.object)&&d("L006",`Participant "${e.name}" is the object "${e.object}", which no member machine declares`,b,c),e.holds?.length&&g("Participants' holds"))for(let a of e.holds)p.has(a)||d("L006",`Participant "${e.name}" holds "${a}", which is not an entity`,b,c)}for(let{ref:a,message:f}of ay(c)){if(!f)continue;let c=`message:${a}`;f.machine&&!l.has(f.machine)?d("L005",`Message ${a} names the machine "${f.machine}", which is not a member`,b,c):f.event&&((f.machine?m.get(f.machine)?.has(f.event):[...m.values()].some(a=>a.has(f.event)))||d("L005",`Message ${a} fires "${f.event}", which ${f.machine?`"${f.machine}" does not define`:"no member machine defines"}`,b,c)),f.carries&&g("Messages' carries")&&!p.has(f.carries)&&d("L007",`Message ${a} carries "${f.carries}", which is not an entity`,b,c),f.state&&!n.has(f.state)&&e("L008",`Message ${a} says the machine is then in "${f.state}", which no member machine has`,b,c)}let h=a3(c,k);for(let a of(r.push({member:b,report:h}),h.paths)){let c=a.steps.filter(a=>"refused"===a.result||"ended"===a.result||"state-mismatch"===a.result);for(let d of[...new Set(c.map(a=>a.machine??""))]){let f=c.filter(a=>(a.machine??"")===d),g=f[0],h=f.length>1?` (${f.length-1} later message${f.length>2?"s stop":" stops"} too)`:"",i="without-optional"===a.kind?" — a message the rest depends on may not be optional":"";e("L008",`${a.name}, message ${g.ref}: ${g.note??g.result}${h}${i}`,b,`message:${g.ref}`)}}}return{issues:c,replays:r}}function a6(a){return`${a.kind}:${a.name}`}function a7(a){let b=a.indexOf(":");if(b<=0)return null;let c=a.slice(0,b);return["entity","attribute","machine","object","event","state","participant","message"].includes(c)?{kind:c,name:a.slice(b+1)}:null}function a8(a){let{machines:b,erds:c,sequences:d}=a4(a),e=[],f=new Map;for(let{member:a,def:b}of c)for(let c of b.entities??[])c?.name&&!f.has(c.name)&&f.set(c.name,a);let g=new Map;for(let{def:a}of c)for(let b of a.entities??[])g.set(b.name,new Set((b.attributes??[]).map(a=>a.name)));let h=new Map,i=new Map;b.forEach(({member:a,def:b},c)=>{let d=a$(b,c);for(let c of b.events??[])for(let b of[...c?.events??[],...c?.timers??[]]){if(!b?.id)continue;let c=h.get(b.id)??[];c.push({member:a,machine:d}),h.set(b.id,c)}for(let c of b.settings?.objects??[]){if(!c?.instance)continue;i.has(c.instance)||i.set(c.instance,{member:a,className:c.class});let b=f.get(c.class);b&&e.push({from:{member:a,kind:"object",name:c.instance},to:{member:b,kind:"entity",name:c.class},rule:"L001",text:`is constructed as the entity ${c.class}`,back:`is the class of ${d}'s object ${c.instance}`})}let j=c=>{if(c){for(let d of c.transitions??[])if(d?.condition)for(let h of b.settings?.objects??[]){let b=f.get(h.class);if(b)for(let f of Y(d.condition,h.instance))g.get(h.class)?.has(f)&&e.push({from:{member:a,kind:"event",name:d.event},to:{member:b,kind:"attribute",name:`${h.class}.${f}`},rule:"L002",text:`its guard on ${c.name} reads ${h.class}.${f}`,back:`is read by the ${d.event} guard on ${c.name}`})}(c.states??[]).forEach(j)}};j(b.state)});let j=a_(b.map(a=>a.def)),k=new Map(b.map(({member:a},b)=>[j[b],a]));for(let{member:a,def:d}of c)for(let c of d.entities??[])for(let d of c.attributes??[])for(let f of U(d)){let g=k.get(f)??b.find(({def:a})=>a$(a)===f)?.member;g&&e.push({from:{member:a,kind:"attribute",name:`${c.name}.${d.name}`},to:{member:g,kind:"machine",name:f},rule:"L003",text:`stores the state of ${f}`,back:`keeps its state in ${c.name}.${d.name}`})}for(let{member:a,def:c}of d){for(let b of c.participants??[]){if(!b?.name)continue;let c={member:a,kind:"participant",name:b.name},d=b.object?i.get(b.object):void 0;for(let a of(d&&e.push({from:c,to:{member:d.member,kind:"object",name:b.object},rule:"L006",text:`is the object ${b.object}`,back:`is the participant ${b.name}`}),b.holds??[])){let d=f.get(a);d&&e.push({from:c,to:{member:d,kind:"entity",name:a},rule:"L006",text:`holds ${a}`,back:`is held by ${b.name}`})}}for(let{ref:b,message:d}of ay(c)){if(!d)continue;let g={member:a,kind:"message",name:b};if(d.event)for(let a of h.get(d.event)??[])d.machine&&d.machine!==a.machine||e.push({from:g,to:{member:a.member,kind:"event",name:d.event},rule:"L005",text:`fires ${d.event}`,back:`is fired by message ${b} of ${c.settings?.name??"the scenario"}`});if(d.carries){let a=f.get(d.carries);a&&e.push({from:g,to:{member:a,kind:"entity",name:d.carries},rule:"L007",text:`carries ${d.carries}`,back:`is carried by message ${b}`})}}let d=a3(c,b.map(a=>a.def)).paths.find(a=>"main"===a.kind);for(let b of d?.steps??[]){if("moved"!==b.result||!b.machine)continue;let c=k.get(b.machine);if(c)for(let d of b.to)e.push({from:{member:a,kind:"message",name:b.ref},to:{member:c,kind:"state",name:d},rule:"L008",text:`moves ${b.machine} to ${d}`,back:`is entered on message ${b.ref}`})}}return e}let a9=a=>{let b=a.replace(/[^A-Za-z0-9]+(.)?/g,(a,b)=>b?b.toUpperCase():"").replace(/^[^A-Za-z]+/,"");return b?b.charAt(0).toUpperCase()+b.slice(1):"Scenario"};function ba(a,b){let c=a=>!!a&&(a.name===b||(a.states??[]).some(c)||(a.parallel?.states??[]).some(c));return c(a.state)}let bb=(a,b)=>b?"service":/\b(agent|bot|assistant)\b/i.test(a)?"agent":"person";function bc(a,b){let{machines:c,erds:d,sequences:e}=a4(b),f=[],g=a=>{f.includes(a)||f.push(a)},h=a,i=[];if(h)for(let{def:a}of e)for(let b of a.participants??[]){if(!b?.actor||(h.actors??[]).some(a=>a.name===b.actor))continue;let c=bb(b.actor,b.service);h=function(a,b){if(!b.name?.trim())throw Error("An actor needs a name.");if(!aO.includes(b.kind))throw Error(`An actor is one of ${aO.join(", ")}; got '${b.kind}'.`);let c=aW(a);if((c.actors??[]).some(a=>a.name===b.name))throw Error(`Actor '${b.name}' already exists.`);return(c.actors??=[]).push(aX({...b})),c}(h,{name:b.actor,kind:c}),i.push(`the system gains the ${c} "${b.actor}", who takes part in ${a.settings?.name??"a scenario"}`)}let j=d.map(a=>({member:a.member,def:a.def,reasons:[]})),k=new Set(j.flatMap(a=>(a.def.entities??[]).map(a=>a.name)));for(let{def:a}of e){let b=[];for(let c of a.participants??[])for(let d of c?.holds??[])d?.trim()&&b.push({name:d.trim(),why:`${c.name} holds it in ${a.settings?.name??"a scenario"}`});for(let{ref:c,message:d}of ay(a))d?.carries?.trim()&&b.push({name:d.carries,why:`message ${c} of ${a.settings?.name??"a scenario"} carries it`});for(let a of b){if(k.has(a.name))continue;if(!j.length){g(`"${a.name}" is named as data (${a.why}), but the system has no ERD to hold it; add a .erdf.json member`);continue}let b=j[0];b.def=ac(b.def,{name:a.name,notes:`Added from the scenario: ${a.why}.`}),b.reasons.push(`${b.def.settings?.name??b.member} gains the entity ${a.name}, because ${a.why}`),k.add(a.name)}}let l=c.map(a=>a.def),m=a_(l),o=l.map(()=>[]),p=l.map(()=>[]),q=(a,b,c)=>{l=l.map((c,d)=>d===a?n(c,b):c),o[a].push(...b),p[a].push(c)},r=a=>a.charAt(0).toLowerCase()+a.slice(1);for(let{def:a}of j)for(let b of a.entities??[])for(let a of b.attributes??[])for(let c of a?.stateOf===void 0?[]:Array.isArray(a.stateOf)?a.stateOf:[a.stateOf]){let d=m.findIndex((a,b)=>a===c||a$(l[b])===c);if(d<0)continue;let e=l[d].settings?.objects??[];if(e.some(a=>a.class===b.name))continue;let f=r(b.name);for(;e.some(a=>a.instance===f);)f+="_";q(d,[{op:"settings.update",patch:{objects:[...e,{instance:f,class:b.name}]}}],`${m[d]} is constructed with the object ${f} : ${b.name}, because ${b.name}.${a.name} stores its state`)}for(let{def:a}of e){for(let b of a.participants??[]){if(!b?.object||l.some(a=>(a.settings?.objects??[]).some(a=>a.instance===b.object)))continue;let a=(b.holds??[]).filter(a=>a?.trim()),c=1===a.length?a[0].trim():null;1===l.length&&c?q(0,[{op:"settings.update",patch:{objects:[...l[0].settings?.objects??[],{instance:b.object,class:c}]}}],`${m[0]} is constructed with the object ${b.object} : ${c}, because ${b.name} is it`):g(`${b.name} is the object "${b.object}", which no machine declares; ${1===l.length?"say which entity it is by holding exactly one":"declare it on the machine it belongs to"}`)}let b=function(a,b,c={}){let d=c.maxRounds??100,e=b.map(a=>a),f=a_(e),g=new Map,h=[],i=new Set,j=a3(a,e),k=new Set,l="",m=(a,b,c)=>{k.add(`${a}|${JSON.stringify(b)}`),e=e.map((c,d)=>d===a?n(c,b):c);let d=g.get(a)??{machine:f[a],index:a,ops:[],reasons:[]};d.ops.push(...b),d.reasons.push(c),g.set(a,d)},o=!0;for(let b=0;b<d;b++){let b=(function(a){let b=[];for(let c of a.paths)for(let a of c.steps)("refused"===a.result||"unknown-event"===a.result||"ended"===a.result||"state-mismatch"===a.result)&&b.push({path:c,step:a});return b})(a3(a,e)).find(({path:a,step:b})=>!i.has(`${b.ref}|${b.machine??""}|${b.result}|${a.name}`)&&!i.has(`${a.name}|${b.machine??""}`));if(!b){o=!1;break}let{path:c,step:d}=b,g=`${d.ref}|${d.machine??""}|${d.result}|${c.name}`,j=`${g}|${d.from.join("|")}`,n=j===l;l=j;let p=ax(a,d.ref)?.message,q=`message ${d.ref} (${c.name})`,r=(a,b)=>{i.add(g),i.add(`${c.name}|${d.machine??""}`),h.includes(b)||h.push(b)};if("without-optional"===c.kind){let b=(a.messages??[]).map((a,b)=>a?.optional?String(b+1):"").filter(Boolean);r(g,`${q}: without its optional message${b.length>1?"s":""} ${b.join(", ")} the scenario stops (${d.note??d.result}); if the rest depends on ${b.length>1?"them, they are":"it, it is"} not optional`);continue}if(!p){r(g,`${q}: cannot be read back from the sequence`);continue}if(n){r(g,`${q}: the change proposed for it did not let the walk through (${d.note??d.result}); a person has to look at ${d.machine??"the machine"}`);continue}let s=(a,b,c)=>{k.has(`${a}|${JSON.stringify(b)}`)?r(g,`${q}: the change it needs was already proposed and did not take effect (${d.note??d.result})`):m(a,b,c)};if("unknown-event"===d.result){let a=p.machine?e.map((a,b)=>f[b]===p.machine||(a.settings?.name??"")===p.machine?b:-1).filter(a=>a>=0):1===e.length?[0]:[];if(a.length>1){r(g,`${q}: ${a.length} member machines are named "${p.machine}"; rename one so the message can say which`);continue}let b=a.length?a[0]:-1;if(b<0){r(g,p.machine?`${q}: fires "${p.event}" for "${p.machine}", which is not a member machine`:`${q}: fires "${p.event}", which no machine defines; set the message's machine to say which one should`);continue}let c=e[b],d=`${a9(p.from)}Events`,h=a9(p.from),i=(c.events??[]).findIndex(a=>a?.name===d||a?.name===h||a?.name===p.from||a?.feeder===p.from),j=i>=0?c.events[i].name:d,k={id:p.event,...p.label?.trim()?{description:p.label.trim()}:{}};s(b,i>=0?[{op:"event.add",sourceIndex:i,event:k}]:[{op:"eventSource.add",source:{name:d,events:[k]}}],`${f[b]} defines "${p.event}" in ${j}, because ${q} fires it`);continue}if("refused"===d.result){let a=f.indexOf(d.machine??"");if(!p.state){r(g,`${q}: ${d.machine} refuses "${p.event}" from ${d.from.join(" or ")}; give the message a state to say where it leads, and reconcile can add the transition`);continue}if(1!==d.from.length){r(g,`${q}: ${d.machine} could be in ${d.from.join(" or ")}; choose which state "${p.event}" leaves from`);continue}let b=e[a],c=d.from[0],h=ba(b,p.state);if(!h&&!p.machine){let b=f.filter((b,c)=>c!==a&&ba(e[c],p.state)),c=e.filter(a=>(function(a){let b=new Set;for(let c of a.events??[])for(let a of[...c?.events??[],...c?.timers??[]])a?.id&&b.add(a.id);return b})(a).has(p.event)).length;if(b.length||c>1){r(g,`${q}: "${p.state}" ${b.length?"is a state of another machine":"is claimed while several machines hear the event"}; set the message's machine to say which machine it is about`);continue}}if(!function(a,b){let c=a=>!!a&&(a.name===b||(a.states??[]).some(c));return c(a.state)}(b,c)){r(g,`${q}: ${d.machine} is in ${c}, inside a parallel region, which reconcile does not edit`);continue}let i=[],j=[],k=c===b.state?.name&&!(b.state?.states??[]).length;if(h||(i.push({op:"state.add",parent:null,state:{name:p.state,transitions:[]}}),j.push(k?`gains its first state, ${p.state}`:`adds the state ${p.state}`)),k){s(a,i,`${f[a]} ${j.join(" and ")}, because ${q} says the machine is there`);continue}let l=p.label?.trim()?{description:p.label.trim()}:{};i.push(c===p.state?{op:"transition.add",state:c,transition:{event:p.event,...l}}:{op:"transition.add",state:c,transition:{event:p.event,nextState:p.state,...l}}),j.push(c===p.state?`handles "${p.event}" in ${c} without leaving it`:`goes from ${c} to ${p.state} on "${p.event}"`),s(a,i,`${f[a]} ${j.join(" and ")}, because ${q} says so`);continue}if("state-mismatch"===d.result){r(g,`${q}: ${d.note??"the scenario and the machine disagree"}; one of them has to change, and that is a person's call`);continue}r(g,`${q}: ${d.note??d.result}`)}return o&&h.push(`reconcile stopped after ${d} rounds; what it proposed so far is kept, and the rest needs a person`),{proposals:[...g.values()].sort((a,b)=>a.index-b.index),unresolved:h,before:j,after:a3(a,e),machines:e}}(a,l);for(let a of b.proposals)o[a.index].push(...a.ops),p[a.index].push(...a.reasons);for(let c of(l=b.machines,b.unresolved))g(`${a.settings?.name??"scenario"}: ${c}`)}let s=c.map((a,b)=>({member:a.member,index:b,machine:m[b],ops:o[b],reasons:p[b],def:l[b]})).filter(a=>a.ops.length),t=j.filter(a=>a.reasons.length);return{machines:s,erds:t,system:h&&i.length?{def:h,reasons:i}:null,unresolved:f,count:s.reduce((a,b)=>a+b.reasons.length,0)+t.reduce((a,b)=>a+b.reasons.length,0)+i.length}}function bd(a,b){if(!a.count&&!a.unresolved.length)return"auto"===b?"auto: the drawings already agree":"the drawings agree";let c=[...a.machines.map(a=>`${a.machine} +${a.reasons.length}`),...a.erds.map(a=>`${a.def.settings?.name??a.member} +${a.reasons.length}`),...a.system?[`system +${a.system.reasons.length}`]:[]],d=c.length?c.join(", "):"no change",e=a.unresolved.length?`; ${a.unresolved.length} left open`:"";return"auto"===b?`auto: ${d}${e}`:`${a.count} change${1===a.count?"":"s"} proposed (${d})${e}`}function be(a){return a.parallel?a.parallel.states:a.states??[]}function bf(a,b){return be(a).find(a=>a.name===b)??null}let bg={surface:"--slc-surface",nodeFill:"--slc-node-fill",nodeStroke:"--slc-node-stroke",compositeFill:"--slc-composite-fill",finalFill:"--slc-final-fill",accent:"--slc-accent",accentFill:"--slc-accent-fill",accentInk:"--slc-accent-ink",danger:"--slc-danger",drawSource:"--slc-draw-source",edge:"--slc-edge",chipFill:"--slc-chip-fill",chipStroke:"--slc-chip-stroke",label:"--slc-label",muted:"--slc-muted",faint:"--slc-faint",entry:"--slc-entry",exit:"--slc-exit",composite:"--slc-composite",active:"--slc-active",panelBg:"--slc-panel-bg",panelBorder:"--slc-panel-border",panelHover:"--slc-panel-hover"};function bh(a){let b={};if(!a)return b;for(let[c,d]of Object.entries(a)){let a=bg[c];a&&"string"==typeof d&&(b[a]=d)}return b}let bi={x:100,y:100,width:160,height:60};function bj(a,b){return 1===b?16*a:2===b?400*a:a}function bk(a){return!!a&&"string"==typeof a.tagName&&(!!a.isContentEditable||["INPUT","TEXTAREA","SELECT","BUTTON","OPTION"].includes(a.tagName))}function bl(a){return(a.states?.length??0)>0||(a.parallel?.states.length??0)>0}function bm({mark:a,x:b,y:c,selected:d}){return(0,h.jsxs)("g",{transform:`translate(${b} ${c}) scale(0.5)`,strokeWidth:a.strokeWidth,className:`slc-glyph${d?" slc-glyph--selected":""}`,children:[(a.circles??[]).map((a,b)=>(0,h.jsx)("circle",{cx:a.cx,cy:a.cy,r:a.r,className:a.filled?"slc-glyph-dot":void 0},`c${b}`)),a.paths.map((a,b)=>(0,h.jsx)("path",{d:a},`p${b}`))]})}let bn={kind:null,id:null},bo=(0,i.forwardRef)(function(a,b){let{definition:c,positions:d,path:e=[],rootLabel:f,viewport:g,onViewportChange:j,selection:k=bn,activeStates:l,errorElements:m,drawMode:n="select",drawSource:o=null,readOnly:p=!1,showBreadcrumb:q=!0,showHud:r=!0,fitKey:s,onSelect:t,onClearSelection:u,onStateMove:v,onNavigateInto:w,onNavigateTo:x,onContextMenu:y,onCreateTransition:A,onCancelDraw:C,onDeleteState:D,onUndo:F,onRedo:I,hudExtras:J,emptyHint:N,theme:T,className:U,style:V,svgId:W,pinchOwner:X="canvas"}=a,Y=(0,i.useRef)(null),Z=(0,i.useId)().replace(/:/g,""),$=(0,i.useRef)(g);$.current=g;let[_,aa]=(0,i.useState)(null),ab=(0,i.useRef)(null),ac=(0,i.useCallback)(a=>{ab.current=a,aa(a)},[]),[ad,ae]=(0,i.useState)(null),af=(0,i.useRef)(!1),[ag,ah]=(0,i.useState)(!1),ai=(0,i.useRef)(null),[aj,ak]=(0,i.useState)(!1),al=(0,i.useRef)(!1),am=(0,i.useRef)(new Map),an=(0,i.useRef)(new Map),ao=(0,i.useRef)(null),[ap,aq]=(0,i.useState)(!1),ar=(0,i.useRef)(null),as=(0,i.useRef)(!1),[at,au]=(0,i.useState)(!1),av=c.state,aw=(0,i.useMemo)(()=>{let a=function(a,b){let c=[],d=a;for(let a of b){let b=bf(d,a);if(!b)break;c.push(a),d=b}return c}(av,e);return[f??av?.name??"Root",...a]},[av,e,f]),ax=(0,i.useMemo)(()=>av?be(function(a,b){let c=a;for(let a of b){let b=bf(c,a);if(!b)break;c=b}return c}(av,e)):[],[av,e]),ay=aw[aw.length-1],az=(0,i.useMemo)(()=>(function(a){let b=new Set,c=[];for(let d of a.events??[])for(let a of d.events??[])b.has(a.id)||(b.add(a.id),c.push(a.id));return c})(c),[c]),aA=(0,i.useMemo)(()=>new Set(l??[]),[l]),aB=(0,i.useMemo)(()=>new Set(m??[]),[m]),aC=(0,i.useCallback)((a,b)=>{let c=Y.current?.getBoundingClientRect();return{x:a-(c?.left??0),y:b-(c?.top??0)}},[]),aD=(0,i.useCallback)(a=>{let b=am.current.get(a);am.current.delete(a),b?.hasPointerCapture?.(a)&&b.releasePointerCapture?.(a)},[]),aE=(0,i.useCallback)(a=>{let b=ar.current;b&&(void 0===a||b.pointerId===a)&&(clearTimeout(b.timer),ar.current=null)},[]),aF=(0,i.useCallback)((a,b)=>{if("touch"!==a.pointerType||!y)return;aE();let{pointerId:c,clientX:d,clientY:e}=a,f=setTimeout(()=>{ar.current=null,ac(null),ai.current=null,ak(!1),as.current=!0,navigator.vibrate?.(10),y(d,e,b)},500);ar.current={pointerId:c,x:d,y:e,target:b,timer:f}},[aE,y,ac]);(0,i.useEffect)(()=>{},[]),(0,i.useEffect)(()=>{let a=a=>{an.current.delete(a.pointerId)};return window.addEventListener("pointerup",a),window.addEventListener("pointercancel",a),()=>{window.removeEventListener("pointerup",a),window.removeEventListener("pointercancel",a)}},[]),(0,i.useEffect)(()=>()=>aE(),[aE]);let aG=(0,i.useRef)(new Set),aH=(0,i.useRef)(new Map),aI=(0,i.useRef)(ay),aJ=(0,i.useRef)(new Set),[aK,aL]=(0,i.useState)(new Set),[aM,aN]=(0,i.useState)(new Set),[aO,aP]=(0,i.useState)(new Map),aQ=at?10/g.scale:0,aR=at?28/g.scale:0,aS=(0,i.useCallback)(a=>d[a]??bi,[d]);(0,i.useEffect)(()=>{let a=a=>{(a.ctrlKey||a.metaKey)&&"z"===a.key&&F&&(a.preventDefault(),F()),(a.ctrlKey||a.metaKey)&&("y"===a.key||a.shiftKey&&"z"===a.key)&&I&&(a.preventDefault(),I()),"Escape"===a.key&&(ae(null),C?.()),"Delete"===a.key&&"state"===k.kind&&k.id&&D&&D(k.id)};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[F,I,C,D,k]);let aT=(0,i.useCallback)(a=>{let b=$.current;ai.current={pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,origX:b.x,origY:b.y},al.current=!1,ak(!0);let c=Y.current;c&&(am.current.set(a.pointerId,c),c.setPointerCapture(a.pointerId))},[]),aU=(0,i.useCallback)(()=>{let a=[...an.current.entries()];if(a.length<2)return;let[[b,c],[d,e]]=a;aE(),ac(null),ai.current=null;let f=Math.max(1,Math.hypot(e.x-c.x,e.y-c.y)),g=aC((c.x+e.x)/2,(c.y+e.y)/2);ao.current={a:b,b:d,startDist:f,startMidX:g.x,startMidY:g.y,start:$.current},al.current=!0,aq(!0);let h=Y.current;if(h){for(let a of[b,d])if(!am.current.has(a))try{h.setPointerCapture(a),am.current.set(a,h)}catch{}}},[aE,aC,ac]),aV=(0,i.useCallback)(a=>{if(as.current=!1,"touch"!==a.pointerType)return;au(!0),an.current.set(a.pointerId,{x:a.clientX,y:a.clientY});let b=an.current.size;b<2||(a.stopPropagation(),2===b&&aU())},[aU]),aW=(0,i.useCallback)((a,b)=>{if(0!==a.button||af.current)return;if(a.stopPropagation(),aF(a,{kind:"state",id:b}),!p&&"transition"===n)return void(o?o!==b&&ae({stateName:o,targetName:b,x:a.clientX,y:a.clientY}):t?.("state",b));if(t?.("state",b),p||!v)return;let c=aS(b);ac({name:b,pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,origX:c.x,origY:c.y});let d=a.currentTarget;am.current.set(a.pointerId,d),d.setPointerCapture?.(a.pointerId)},[t,aS,n,o,aF,ac,p,v]),aX=(0,i.useCallback)(a=>{if("touch"===a.pointerType){aF(a,{kind:"canvas"}),aT(a);return}(1===a.button||0===a.button&&af.current)&&(a.preventDefault(),aT(a))},[aF,aT]),aY=(0,i.useCallback)(a=>{an.current.has(a.pointerId)&&an.current.set(a.pointerId,{x:a.clientX,y:a.clientY});let b=ar.current;b&&b.pointerId===a.pointerId&&Math.hypot(a.clientX-b.x,a.clientY-b.y)>8&&aE(a.pointerId);let c=ao.current;if(c){if(a.pointerId!==c.a&&a.pointerId!==c.b)return;let b=an.current.get(c.a),d=an.current.get(c.b);if(!b||!d)return;let e=Math.hypot(d.x-b.x,d.y-b.y),f=aC((b.x+d.x)/2,(b.y+d.y)/2);j(O(Q(c.start,c.start.scale*(e/c.startDist),{x:c.startMidX,y:c.startMidY}),f.x-c.startMidX,f.y-c.startMidY));return}let d=ai.current;if(d){if(d.pointerId!==a.pointerId)return;let b=a.clientX-d.startX,c=a.clientY-d.startY,e=8*("touch"===a.pointerType);(Math.abs(b)>e||Math.abs(c)>e)&&(al.current=!0),j({x:d.origX+b,y:d.origY+c,scale:$.current.scale});return}if(!_||_.pointerId!==a.pointerId||!v)return;let e=$.current.scale,f=(a.clientX-_.startX)/e,g=(a.clientY-_.startY)/e,h=aS(_.name);v(_.name,{...h,x:Math.max(0,_.origX+f),y:Math.max(0,_.origY+g)})},[_,aS,v,j,aE,aC]),aZ=(0,i.useCallback)(a=>{an.current.delete(a.pointerId),aE(a.pointerId),aD(a.pointerId);let b=ao.current;if(b&&(b.a===a.pointerId||b.b===a.pointerId)){ao.current=null,aq(!1);let c=b.a===a.pointerId?b.b:b.a,d=an.current.get(c);if(d){let a=$.current;ai.current={pointerId:c,startX:d.x,startY:d.y,origX:a.x,origY:a.y},al.current=!0,ak(!0)}}ai.current?.pointerId===a.pointerId&&(ai.current=null),ab.current?.pointerId===a.pointerId&&ac(null),ai.current||ak(!1),ao.current||aq(!1)},[aE,aD,ac]);(0,i.useEffect)(()=>{let a=Y.current;if(!a)return;let b=a=>{a.preventDefault();let b=$.current,c=bj(a.deltaX,a.deltaMode),d=bj(a.deltaY,a.deltaMode);if(a.ctrlKey||a.metaKey){let c=P(b,Math.exp(-(.0025*d)),aC(a.clientX,a.clientY));c!==b&&j(c);return}let e=a.shiftKey?-(c||d):-c,f=a.shiftKey?0:-d;(0!==e||0!==f)&&j(O(b,e,f))};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[j,aC]),(0,i.useEffect)(()=>{let a=a=>{"Space"!==a.code||a.repeat||bk(a.target)||bk(document.activeElement)||(a.preventDefault(),af.current=!0,ah(!0))},b=a=>{"Space"===a.code&&(af.current=!1,ah(!1))},c=()=>{af.current=!1,ah(!1)};return window.addEventListener("keydown",a),window.addEventListener("keyup",b),window.addEventListener("blur",c),()=>{window.removeEventListener("keydown",a),window.removeEventListener("keyup",b),window.removeEventListener("blur",c)}},[]);let a$=(0,i.useCallback)(a=>{let b=Y.current?.getBoundingClientRect(),c={x:(b?.width??0)/2,y:(b?.height??0)/2},d=$.current,e=P(d,a,c);e!==d&&j(e)},[j]),a_=(0,i.useCallback)(()=>{let a=Y.current?.getBoundingClientRect(),b={x:(a?.width??0)/2,y:(a?.height??0)/2};j(Q($.current,1,b))},[j]),a0=(0,i.useCallback)(()=>{let a=Y.current?.getBoundingClientRect();if(!a)return;let b=ax.map(a=>aS(a.name));j(b.length?R(b,a.width,a.height):{...M})},[ax,aS,j]);(0,i.useImperativeHandle)(b,()=>({fit:a0,zoomIn:()=>a$(1.25),zoomOut:()=>a$(.8),resetZoom:a_,element:()=>Y.current}),[a0,a$,a_]);let a1=(0,i.useRef)(a0);a1.current=a0,(0,i.useEffect)(()=>{if(void 0===s)return;let a=requestAnimationFrame(()=>a1.current());return()=>cancelAnimationFrame(a)},[s]);let a2=(0,i.useCallback)((a,b)=>{y&&(a.preventDefault(),a.stopPropagation(),y(a.clientX,a.clientY,b?{kind:"state",id:b}:{kind:"canvas"}))},[y]),a3=(0,i.useMemo)(()=>{let a=new Set(ax.map(a=>a.name)),b=[];for(let c of ax)for(let[d,e]of(c.transitions??[]).entries())e.nextState&&a.has(e.nextState)&&b.push({from:c.name,to:e.nextState,event:e.event,stateName:c.name,index:d,condition:e.condition});return b},[ax]),a4=(0,i.useMemo)(()=>{let a=K(a3,aS),b=new Map(E(a3.map((b,c)=>{let d=aS(b.from);return{id:`${b.stateName}:${b.index}`,event:b.event,condition:b.condition,glyph:!0,at:b.from===b.to?()=>({x:d.x+d.width+44+30,y:d.y+d.height/2+4}):a[c].at}}),ax.map(a=>aS(a.name))).map(a=>[a.label.id,a]));return a3.flatMap((c,d)=>{let e=`${c.stateName}:${c.index}`,f=b.get(e);return f?[{arrow:c,id:e,curve:a[d],spot:f}]:[]})},[a3,ax,aS]);(0,i.useEffect)(()=>{let a=new Set(ax.map(a=>a.name)),b=new Set(a3.map(a=>`${a.stateName}:${a.index}`)),c=aI.current===ay,d=[...a].filter(a=>!aG.current.has(a));d.length&&aL(a=>{let b=new Set(a);return d.forEach(a=>b.add(a)),b});let e=[...b].filter(a=>!aJ.current.has(a));e.length&&aN(a=>{let b=new Set(a);return e.forEach(a=>b.add(a)),b}),aL(b=>{let c=!1,d=new Set(b);return b.forEach(b=>{a.has(b)||(d.delete(b),c=!0)}),c?d:b}),aN(a=>{let c=!1,d=new Set(a);return a.forEach(a=>{b.has(a)||(d.delete(a),c=!0)}),c?d:a}),c?aP(b=>{let c=new Map(b),d=!1;return aH.current.forEach((b,e)=>{a.has(e)||c.has(e)||(c.set(e,b),d=!0)}),a.forEach(a=>{c.delete(a)&&(d=!0)}),d?c:b}):aP(a=>a.size?new Map:a),aG.current=a,aH.current=new Map(ax.map(a=>[a.name,{state:a,pos:aS(a.name)}])),aJ.current=b,aI.current=ay},[ax,ay,a3,aS]);let a5={...bh(T),...V},a6=at?" slc-hud--coarse":"";return(0,h.jsxs)("div",{className:`slc-pane${U?` ${U}`:""}`,style:a5,"data-pinch-owner":X,children:[q&&aw.length>1&&(0,h.jsx)("div",{className:"slc-crumbs",children:aw.map((a,b)=>(0,h.jsxs)("span",{className:"slc-crumb-item",children:[b>0&&(0,h.jsx)("span",{className:"slc-crumb-sep",children:"›"}),(0,h.jsx)("button",{type:"button",className:`slc-crumb${b===aw.length-1?" slc-crumb--current":""}`,onClick:()=>x?.(b),children:a})]},`${a}-${b}`))}),(0,h.jsxs)("svg",{ref:Y,id:W,className:"slc-surface",style:{cursor:aj?"grabbing":ag?"grab":void 0,touchAction:"none",...at?{WebkitUserSelect:"none",userSelect:"none",WebkitTouchCallout:"none"}:{}},onPointerDownCapture:aV,onPointerDown:aX,onPointerMove:aY,onPointerUp:aZ,onPointerCancel:aZ,onAuxClick:a=>a.preventDefault(),onClick:a=>{if(as.current){as.current=!1,a.stopPropagation();return}if(al.current){al.current=!1;return}a.target?.tagName==="svg"&&(u?.(),ae(null))},onContextMenu:a=>a2(a),children:[(0,h.jsxs)("defs",{children:[(0,h.jsx)("marker",{id:`slc-arrow-${Z}`,markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,h.jsx)("polygon",{points:"0 0, 10 3.5, 0 7",className:"slc-arrowhead"})}),(0,h.jsx)("marker",{id:`slc-arrow-sel-${Z}`,markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto",children:(0,h.jsx)("polygon",{points:"0 0, 10 3.5, 0 7",className:"slc-arrowhead slc-arrowhead--selected"})})]}),"transition"===n&&o&&(0,h.jsxs)("text",{x:"50%",y:"30",textAnchor:"middle",className:"slc-draw-hint",children:['Click target state to create transition from "',o,'"']}),(0,h.jsxs)("g",{transform:S(g),style:aj||ap?{pointerEvents:"none"}:void 0,children:[a4.map(({arrow:a,id:b,curve:c,spot:d})=>{let e="transition"===k.kind&&k.id===b,f=aM.has(b),g=c.at(.5),i=Math.hypot(g.x-d.cx,g.y-d.cy)>4;return(0,h.jsxs)("g",{children:[at&&(0,h.jsx)("path",{d:c.path,fill:"none",stroke:"transparent",strokeWidth:aR,strokeLinecap:"round",pointerEvents:"stroke",onClick:a=>{a.stopPropagation(),t?.("transition",b)}}),(0,h.jsx)("path",{d:c.path,pathLength:1,markerEnd:`url(#slc-arrow${e?"-sel":""}-${Z})`,className:`slc-edge${e?" slc-edge--selected":""}${f?" slc-edge-enter":""}`,onClick:a=>{a.stopPropagation(),t?.("transition",b)}}),(0,h.jsxs)("g",{className:"slc-chip",onClick:a=>{a.stopPropagation(),t?.("transition",b)},children:[i&&(0,h.jsx)("line",{x1:g.x,y1:g.y,x2:d.cx,y2:d.cy-5,className:`slc-chip-leader${e?" slc-chip-leader--selected":""}`}),at&&(0,h.jsx)("rect",{x:d.x-aQ,y:d.y-aQ,width:d.width+2*aQ,height:d.height+2*aQ,fill:"transparent",pointerEvents:"all"}),(0,h.jsx)("rect",{x:d.x,y:d.y,width:d.width,height:d.height,rx:4,className:`slc-chip-plate${e?" slc-chip-plate--selected":""}`}),(0,h.jsx)(bm,{mark:function(a){let b=a.toLowerCase();for(let{glyph:a,words:c}of H)if(c.some(a=>b.includes(a)))return a;return G}(a.event),x:B(d).x,y:B(d).y,selected:e}),(0,h.jsx)("text",{x:d.cx,y:d.cy-5,textAnchor:"middle",className:`slc-chip-text${e?" slc-chip-text--selected":""}`,children:a.event}),a.condition&&(0,h.jsxs)("text",{x:d.cx,y:d.cy+7,textAnchor:"middle",className:"slc-chip-guard",children:[(0,h.jsx)("title",{children:a.condition}),z(a.condition)]})]})]},`arrow-${b}`)}),ax.map(a=>{let b=aS(a.name),c="state"===k.kind&&k.id===a.name,d="final"===a.kind,e="history"===a.kind,f=bl(a),g=o===a.name,i=aB.has(a.name),j=(a.onEntry?.actions?.length??0)>0,l=(a.onExit?.actions?.length??0)>0,m=aA.has(a.name),q=aK.has(a.name),r=ag?void 0:"transition"!==n||p?f?"slc-node--drillable":p||!v?"slc-node--static":"slc-node--draggable":"slc-node--drawing";return(0,h.jsxs)("g",{className:r,onPointerDown:b=>aW(b,a.name),onDoubleClick:b=>{b.stopPropagation(),f&&w?.(a.name)},onContextMenu:b=>a2(b,a.name),children:[at&&(0,h.jsx)("rect",{x:b.x-aQ,y:b.y-aQ,width:b.width+2*aQ,height:b.height+2*aQ,rx:12,fill:"transparent",pointerEvents:"all"}),(0,h.jsxs)("g",{className:q?"slc-node-enter":void 0,children:[(0,h.jsx)("rect",{x:b.x,y:b.y,width:b.width,height:b.height,rx:e?30:d?4:8,strokeDasharray:d?"6 3":f?"4 2":void 0,className:["slc-node",d?"slc-node--final":f?"slc-node--composite":"",g?"slc-node--source":"",i?"slc-node--error":"",c?"slc-node--selected":"",m?"slc-node--active":""].filter(Boolean).join(" ")}),(0,h.jsx)("text",{x:b.x+b.width/2,y:b.y+(j||l?b.height/2:b.height/2+5),textAnchor:"middle",className:"slc-node-name",children:a.name}),a.kind&&"normal"!==a.kind&&(0,h.jsx)("text",{x:b.x+b.width-8,y:b.y+14,textAnchor:"end",className:"slc-node-kind",children:a.kind}),j&&(0,h.jsx)("text",{x:b.x+6,y:b.y+b.height-6,className:"slc-node-entry",children:"▸entry"}),l&&(0,h.jsx)("text",{x:b.x+b.width-6,y:b.y+b.height-6,textAnchor:"end",className:"slc-node-exit",children:"exit◂"}),i&&(0,h.jsx)("path",{d:`M ${b.x+6} ${b.y+15} l 5.5 -9.5 l 5.5 9.5 Z M ${b.x+11.5} ${b.y+9.5} v 2.6`,className:"slc-node-warn-mark"}),a.notes?.trim()&&(0,h.jsxs)("g",{children:[(0,h.jsx)("title",{children:`Notes: ${a.notes}`}),(0,h.jsx)("rect",{x:b.x+b.width-24,y:b.y-5,width:13,height:5,rx:1.5,className:"slc-note-mark"})]}),f&&(0,h.jsxs)("text",{x:b.x+b.width/2,y:b.y+b.height-6,textAnchor:"middle",className:"slc-node-drill",children:["▼ ",(a.states?.length??0)+(a.parallel?.states.length??0)," children — ",at?"double-tap":"double-click"," to enter"]})]})]},a.name)}),Array.from(aO.entries()).map(([a,{state:b,pos:c}])=>{let d="final"===b.kind,e=bl(b);return(0,h.jsxs)("g",{className:"slc-node-exit-group",onAnimationEnd:b=>{"slc-node-out"===b.animationName&&aP(b=>{if(!b.has(a))return b;let c=new Map(b);return c.delete(a),c})},children:[(0,h.jsx)("rect",{x:c.x,y:c.y,width:c.width,height:c.height,rx:"history"===b.kind?30:d?4:8,strokeDasharray:d?"6 3":e?"4 2":void 0,className:`slc-node${d?" slc-node--final":e?" slc-node--composite":""}`}),(0,h.jsx)("text",{x:c.x+c.width/2,y:c.y+c.height/2+5,textAnchor:"middle",className:"slc-node-name",children:a})]},`exit-${a}`)})]}),0===ax.length&&(0,h.jsx)("text",{x:"50%",y:"50%",textAnchor:"middle",className:"slc-empty",children:N??"This level has no states."})]}),r&&(0,h.jsxs)("div",{className:`slc-hud${a6}`,children:[(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Zoom out (Ctrl + wheel down, or pinch in)",disabled:g.scale<=L.min,onClick:()=>a$(.8),children:"−"}),(0,h.jsxs)("button",{type:"button",className:"slc-hud-btn slc-hud-btn--scale",title:"Reset zoom to 100%",onClick:a_,children:[Math.round(100*g.scale),"%"]}),(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Zoom in (Ctrl + wheel up, or pinch out)",disabled:g.scale>=L.max,onClick:()=>a$(1.25),children:"+"}),(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),(0,h.jsx)("button",{type:"button",className:"slc-hud-btn",title:"Fit the whole machine in view",onClick:a0,children:"⤢ Fit"}),J&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),J]}),(0,h.jsx)("span",{className:"slc-hud-sep",children:"|"}),(0,h.jsx)("span",{className:"slc-hud-hint",title:at?"Drag to pan · pinch with two fingers to zoom · press and hold for the menu · double-tap a composite to enter it":"Wheel scrolls · Shift+wheel scrolls sideways · Ctrl+wheel zooms at the cursor · middle-drag or Space+drag pans",children:ap?"pinching":aj?"panning":at?"drag · pinch · hold":ag?"space to pan":"wheel · ⌃wheel · space"})]}),ad&&(0,h.jsxs)("div",{className:"slc-picker",style:{left:ad.x,top:ad.y-80},onClick:a=>a.stopPropagation(),children:[(0,h.jsxs)("div",{className:"slc-picker-title",children:[ad.stateName," → ",ad.targetName]}),(0,h.jsx)("div",{className:"slc-picker-sub",children:"Select event:"}),0===az.length?(0,h.jsx)("div",{className:"slc-picker-empty",children:"No events defined. Add events first."}):az.map(a=>(0,h.jsx)("button",{type:"button",className:"slc-picker-item",onClick:()=>{ad&&(A?.(ad.stateName,ad.targetName,a),ae(null),C?.())},children:a},a)),(0,h.jsx)("button",{type:"button",className:"slc-picker-cancel",onClick:()=>{ae(null),C?.()},children:"Cancel"})]})]})});function bp(a,b){return 1===b?16*a:2===b?400*a:a}let bq={"1:1":["one","one"],"1:N":["one","many"],"N:1":["many","one"],"N:M":["many","many"]};function br(a,b,c){let d=b.x-a.x,e=b.y-a.y,f=Math.hypot(d,e)||1,g=d/f,h=e/f,i=-h,j=(b,c)=>`${(a.x+g*b+i*c).toFixed(1)} ${(a.y+h*b+g*c).toFixed(1)}`;return"one"===c?`M ${j(9,6)} L ${j(9,-6)}`:`M ${j(13,0)} L ${j(0,7)} M ${j(13,0)} L ${j(0,-7)} M ${j(13,0)} L ${j(0,0)}`}function bs(a){return[a.description??"",a.notes?.trim()?`Notes: ${a.notes}`:""].filter(Boolean).join("\n\n")}function bt(a,b){if(!a)return"";let c=Math.min(a.x+a.width,Math.max(a.x,b.x)),d=Math.min(a.y+a.height,Math.max(a.y,b.y));return c===b.x&&d===b.y?"":`M ${b.x} ${b.y} L ${c} ${d}`}function bu({definition:a,notation:b="crowsfoot",positions:c,viewport:d,onViewportChange:e,selection:f=null,errorElements:g,readOnly:j=!1,fitKey:k,onSelect:l,onClearSelection:m,onEntityMove:n,onOpenMachine:o,onContextMenu:p,emptyHint:q,theme:r,className:s,style:t,svgId:u}){let v=(0,i.useRef)(null),w=(0,i.useRef)(d);w.current=d;let x=(0,i.useRef)(null),y=(0,i.useRef)(new Map),z=(0,i.useRef)(null),A=(0,i.useMemo)(()=>{let b=new Set;return(a.entities??[]).filter(a=>!(!a?.name||b.has(a.name))&&!!c[a.name]&&(b.add(a.name),!0))},[a.entities,c]),B="chen"===b,C=(0,i.useMemo)(()=>new Map(B?A.map(a=>{var b;let d,e,f,g,h,i,j;return[a.name,(b=c[a.name],d=ae(a),e=af(a),f={x:b.x+(b.width-e)/2,y:b.y+(b.height-40)/2,width:e,height:40},g=ag(d),h=f.y+f.height/2,i=ah(d.length),j=d.map((a,b)=>{let c=b<i,e=c?i:d.length-i,j=h+((c?b:b-i)-(e-1)/2)*32,k=c?f.x-34-g:f.x+f.width+34+g;return{attribute:a,cx:k,cy:j,rx:g,ry:13,from:{x:c?f.x:f.x+f.width,y:h},to:{x:c?k+g:k-g,y:j}}}),{rect:f,ovals:j,routingBox:{x:f.x,y:b.y,width:f.width,height:b.height}})]}):[]),[B,A,c]),D=(0,i.useMemo)(()=>{let b=new Map(A.map((a,b)=>[a.name,`e${b}`])),d=(a.relationships??[]).filter(a=>a&&b.has(a.from)&&b.has(a.to)),e=K(d.map(a=>({from:b.get(a.from),to:b.get(a.to)})),a=>{let b=A[Number(a.slice(1))].name;return C.get(b)?.routingBox??c[b]});return d.map((a,b)=>({rel:a,curve:e[b]}))},[a.relationships,A,c,C]),F=(0,i.useMemo)(()=>E(D.filter(({rel:a})=>B||a.label).map(({rel:a,curve:b})=>({event:a.label||" ",at:b.at,rel:a})),A.map(a=>c[a.name])),[B,D,A,c]),G=(0,i.useCallback)((a,b)=>{let c=v.current?.getBoundingClientRect();return{x:a-(c?.left??0),y:b-(c?.top??0)}},[]);(0,i.useEffect)(()=>{if(void 0===k)return;let a=v.current?.getBoundingClientRect(),b=Object.values(c);a&&0!==b.length&&e(R(b,a.width,a.height))},[k]),(0,i.useEffect)(()=>{let a=v.current;if(!a)return;let b=a=>{a.preventDefault();let b=w.current,c=bp(a.deltaX,a.deltaMode),d=bp(a.deltaY,a.deltaMode);if(a.ctrlKey||a.metaKey)return void e(P(b,Math.exp(-(.0025*d)),G(a.clientX,a.clientY)));let f=a.shiftKey?-(c||d):-c,g=a.shiftKey?0:-d;(0!==f||0!==g)&&e(O(b,f,g))};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[e,G]);let H=()=>{let a=[...y.current.values()];if(a.length<2)return null;let[b,c]=a;return{distance:Math.hypot(c.x-b.x,c.y-b.y)||1,mid:{x:(b.x+c.x)/2,y:(b.y+c.y)/2}}},I=(a,b)=>{if(0!==a.button&&"mouse"===a.pointerType)return;if(a.stopPropagation(),v.current?.setPointerCapture(a.pointerId),y.current.set(a.pointerId,G(a.clientX,a.clientY)),y.current.size>=2){x.current=null,z.current=H();return}let d=void 0!==b&&!j;x.current={kind:d?"move":"pan",pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,lastX:a.clientX,lastY:a.clientY,name:b,origin:d?c[b]:void 0,moved:!1}},J=a=>{if(y.current.delete(a.pointerId),z.current){y.current.size<2&&(z.current=null);return}let b=x.current;!b||b.pointerId!==a.pointerId||(x.current=null,b.moved||(b.name?l?.(b.name):m?.()))},L=new Set(g??[]);return(0,h.jsxs)("div",{className:`slc-pane${s?` ${s}`:""}`,style:{...bh(r),...t},children:[(0,h.jsx)("svg",{ref:v,id:u,className:"slc-surface",onPointerDown:a=>I(a),onPointerMove:a=>{if(y.current.has(a.pointerId)&&y.current.set(a.pointerId,G(a.clientX,a.clientY)),z.current){let a=H();if(!a)return;let b=z.current;e(P(O(w.current,a.mid.x-b.mid.x,a.mid.y-b.mid.y),a.distance/b.distance,a.mid)),z.current=a;return}let b=x.current;if(b&&b.pointerId===a.pointerId&&!(!b.moved&&4>Math.hypot(a.clientX-b.startX,a.clientY-b.startY))){if(b.moved=!0,"pan"===b.kind)e(O(w.current,a.clientX-b.lastX,a.clientY-b.lastY));else if(b.name&&b.origin){var c,d,f;let e=(c=w.current,d=a.clientX-b.startX,f=a.clientY-b.startY,{x:d/c.scale,y:f/c.scale});n?.(b.name,{...b.origin,x:b.origin.x+e.x,y:b.origin.y+e.y})}b.lastX=a.clientX,b.lastY=a.clientY}},onPointerUp:J,onPointerCancel:J,onContextMenu:a=>{p&&(a.preventDefault(),p(a.clientX,a.clientY,{kind:"canvas"}))},children:(0,h.jsxs)("g",{transform:S(d),children:[D.map(({rel:a,curve:b},c)=>{if(B){let[d,e]=function(a){switch(a){case"1:1":return["1","1"];case"N:1":return["N","1"];case"N:M":return["M","N"];default:return["1","N"]}}(a.cardinality),f=b.at(.12),g=b.at(.88);return(0,h.jsxs)("g",{className:"slc-erd-rel",children:[(0,h.jsx)("path",{d:bt(C.get(a.from)?.rect,b.p0),className:"slc-erd-line"}),(0,h.jsx)("path",{d:bt(C.get(a.to)?.rect,b.p3),className:"slc-erd-line"}),(0,h.jsx)("path",{d:b.path,className:"slc-erd-line"}),(0,h.jsx)("text",{x:f.x+9,y:f.y+4,className:"slc-erd-card",children:d}),(0,h.jsx)("text",{x:g.x+9,y:g.y+4,className:"slc-erd-card",children:e})]},`r${c}`)}let[d,e]=bq[a.cardinality]??bq["1:N"];return(0,h.jsxs)("g",{className:"slc-erd-rel",children:[(0,h.jsx)("path",{d:b.path,className:"slc-erd-line"}),(0,h.jsx)("path",{d:br(b.p0,b.p1,d),className:"slc-erd-mark"}),(0,h.jsx)("path",{d:br(b.p3,b.p2,e),className:"slc-erd-mark"})]},`r${c}`)}),A.map(a=>{let b=c[a.name],d=(a.attributes??[]).filter(a=>a?.name),e=["slc-node",f===a.name?"slc-node--selected":"",L.has(a.name)?"slc-node--error":""].filter(Boolean).join(" "),g=C.get(a.name);if(g){let{rect:b,ovals:c}=g;return(0,h.jsxs)("g",{className:j?"slc-node--static":"slc-node--draggable",onPointerDown:b=>I(b,a.name),onContextMenu:b=>{p&&(b.preventDefault(),b.stopPropagation(),p(b.clientX,b.clientY,{kind:"entity",id:a.name}))},children:[c.map(a=>(0,h.jsx)("path",{d:`M ${a.from.x} ${a.from.y} L ${a.to.x} ${a.to.y}`,className:"slc-erd-attr-line"},`l-${a.attribute.name}`)),c.map(a=>{var b;let c,d=U(a.attribute),e=d.length>0&&!!o;return(0,h.jsxs)("g",{className:e?"slc-erd-state":void 0,onPointerDown:e?a=>a.stopPropagation():void 0,onClick:e?()=>o(d[0]):void 0,children:[(0,h.jsx)("title",{children:(c=U(b=a.attribute),[`${aq(b)}${b.nullable?" ?":""}`,"pk"===b.key?"primary key":"uk"===b.key?"unique":"",b.references?`references ${b.references}`:"",c.length?`stores the state of ${c.join(", ")}`:"",b.description??""].filter(Boolean).join(" — "))}),(0,h.jsx)("ellipse",{cx:a.cx,cy:a.cy,rx:a.rx,ry:a.ry,className:"slc-erd-oval"}),(0,h.jsxs)("text",{x:a.cx,y:a.cy+4,textAnchor:"middle",className:`slc-erd-oval-text${"pk"===a.attribute.key?" slc-erd-oval-text--pk":""}${d.length?" slc-erd-row--state":""}`,children:[d.length?"◉ ":"",a.attribute.name]})]},a.attribute.name)}),bs(a)&&(0,h.jsx)("title",{children:bs(a)}),(0,h.jsx)("rect",{x:b.x,y:b.y,width:b.width,height:b.height,rx:2,className:e}),a.notes?.trim()&&(0,h.jsx)("rect",{x:b.x+b.width-24,y:b.y-5,width:13,height:5,rx:1.5,className:"slc-note-mark"}),a.weak&&(0,h.jsx)("rect",{x:b.x+4,y:b.y+4,width:b.width-8,height:b.height-8,rx:1,className:"slc-erd-weak"}),(0,h.jsx)("text",{x:b.x+b.width/2,y:b.y+b.height/2+5,textAnchor:"middle",className:"slc-node-name",children:a.name})]},a.name)}return(0,h.jsxs)("g",{className:j?"slc-node--static":"slc-node--draggable",onPointerDown:b=>I(b,a.name),onContextMenu:b=>{p&&(b.preventDefault(),b.stopPropagation(),p(b.clientX,b.clientY,{kind:"entity",id:a.name}))},children:[bs(a)&&(0,h.jsx)("title",{children:bs(a)}),(0,h.jsx)("rect",{x:b.x,y:b.y,width:b.width,height:b.height,rx:6,className:e}),a.notes?.trim()&&(0,h.jsx)("rect",{x:b.x+b.width-24,y:b.y-5,width:13,height:5,rx:1.5,className:"slc-note-mark"}),(0,h.jsx)("path",{d:`M ${b.x} ${b.y+30} h ${b.width}`,className:"slc-erd-rule"}),(0,h.jsx)("text",{x:b.x+b.width/2,y:b.y+15+5,textAnchor:"middle",className:"slc-node-name",children:a.name}),0===d.length&&(0,h.jsx)("text",{x:b.x+14,y:b.y+30+15,className:"slc-erd-row slc-erd-row--empty",children:"no attributes"}),d.map((a,c)=>{let d=b.y+30+20*c+15,e=U(a),f=["pk"===a.key?"PK":"uk"===a.key?"UK":"",a.references?"FK":""].filter(Boolean).join(" ");return(0,h.jsxs)("g",{className:e.length&&o?"slc-erd-state":void 0,onPointerDown:e.length&&o?a=>a.stopPropagation():void 0,onClick:e.length&&o?()=>o(e[0]):void 0,children:[(e.length>0||a.description)&&(0,h.jsx)("title",{children:[e.length?`stores the state of ${e.join(", ")}`:"",a.description??""].filter(Boolean).join(" — ")}),(0,h.jsxs)("text",{x:b.x+14,y:d,className:`slc-erd-row${e.length?" slc-erd-row--state":""}${"pk"===a.key?" slc-erd-row--pk":""}`,children:[e.length?"◉ ":"",aq(a),a.nullable?" ?":""]}),f&&(0,h.jsx)("text",{x:b.x+b.width-14,y:d,textAnchor:"end",className:"slc-erd-badge",children:f})]},a.name)})]},a.name)}),F.map((a,b)=>{if(!B)return null;let c=a.x+a.width/2,d=a.y+a.height/2,e=Math.max(34,Math.ceil(3.7*(a.label.rel.label??"").length+18));return(0,h.jsxs)("g",{pointerEvents:"none",children:[(0,h.jsx)("path",{d:`M ${c-e} ${d} L ${c} ${d-18} L ${c+e} ${d} L ${c} ${d+18} Z`,className:"slc-erd-diamond"}),(0,h.jsx)("text",{x:c,y:d+4,textAnchor:"middle",className:"slc-erd-rel-label",children:a.label.rel.label??""})]},`d${b}`)}),!B&&F.map((a,b)=>(0,h.jsxs)("g",{pointerEvents:"none",children:[(0,h.jsx)("rect",{x:a.x,y:a.y,width:a.width,height:a.height,rx:4,className:"slc-chip-plate"}),(0,h.jsx)("text",{x:a.cx,y:a.cy-5,textAnchor:"middle",className:"slc-erd-rel-label",children:a.label.event})]},`l${b}`))]})}),0===A.length&&q&&(0,h.jsx)("div",{className:"slc-erd-empty",children:q})]})}function bv(a,b){return 1===b?16*a:2===b?400*a:a}function bw(a,b,c,d){let e=a-9*c;return d?`M ${e} ${b-4.5} L ${a} ${b} L ${e} ${b+4.5}`:`M ${e} ${b-4.5} L ${a} ${b} L ${e} ${b+4.5} Z`}function bx(a){return[a.actor?`actor ${a.actor}`:a.object?`object ${a.object}`:a.service?`service ${a.service}`:"",a.holds?.length?`holds ${a.holds.join(", ")}`:"",a.description??"",a.notes?.trim()?`Notes: ${a.notes}`:""].filter(Boolean).join("\n")}let by=a=>"string"==typeof a?a:null==a?"":String(a);function bz(a){let b=a&&"object"==typeof a?a:{};return{from:by(b.from),to:by(b.to),label:by(b.label),event:by(b.event)||void 0,machine:by(b.machine)||void 0,carries:by(b.carries)||void 0,state:by(b.state)||void 0,description:by(b.description)||void 0,notes:by(b.notes)||void 0,optional:!0===b.optional||void 0,reply:!0===b.reply||void 0}}function bA(a){let b=a&&"object"==typeof a?a:{},c=a=>Array.isArray(a)?a:[],d=b.settings&&"object"==typeof b.settings?b.settings:{};return{settings:{namespace:by(d.namespace),name:by(d.name),notes:by(d.notes)||void 0},participants:c(b.participants).map(a=>{let b=a&&"object"==typeof a?a:{};return{name:by(b.name),description:by(b.description)||void 0,notes:by(b.notes)||void 0,actor:by(b.actor)||void 0,service:by(b.service)||void 0,object:by(b.object)||void 0,holds:Array.isArray(b.holds)?b.holds.map(by):"string"==typeof b.holds?[b.holds]:void 0}}),messages:c(b.messages).map(bz),...Array.isArray(b.fragments)?{fragments:b.fragments.map(a=>{let b=a&&"object"==typeof a?a:{};return{kind:by(b.kind),label:by(b.label),after:"number"==typeof b.after&&Number.isFinite(b.after)?b.after:0,notes:by(b.notes)||void 0,messages:c(b.messages).map(bz)}})}:{}}}function bB({definition:a,layout:b,viewport:c,onViewportChange:d,selection:e=null,errorElements:f,warningElements:g,fitKey:j,onSelect:k,onClearSelection:l,onContextMenu:m,emptyHint:n,theme:o,className:p,style:q,svgId:r}){let s=(0,i.useRef)(null),t=(0,i.useRef)(c);t.current=c;let u=(0,i.useRef)(null),v=(0,i.useRef)(new Map),w=(0,i.useRef)(null),x=(0,i.useMemo)(()=>bA(a),[a]),z=(0,i.useMemo)(()=>b??aK(x),[b,x]),A=(0,i.useRef)(new Map),[B,C]=(0,i.useState)({}),D=a=>b=>{b?A.current.set(a,b):A.current.delete(a)};(0,i.useLayoutEffect)(()=>{let a={},b=!1;for(let[c,d]of A.current){let e="function"==typeof d.getComputedTextLength?d.getComputedTextLength():0;e&&(a[c]=e,Math.abs((B[c]??-1)-e)>.5&&(b=!0))}b&&C(a)},[z,x]);let E=(0,i.useMemo)(()=>new Map(ay(x).map(a=>[a.ref,a.message])),[x]),F=(0,i.useMemo)(()=>new Map(x.participants.filter(a=>a.name).map(a=>[a.name,a])),[x.participants]),G=(0,i.useCallback)((a,b)=>{let c=s.current?.getBoundingClientRect();return{x:a-(c?.left??0),y:b-(c?.top??0)}},[]);(0,i.useEffect)(()=>{if(void 0===j)return;let a=s.current?.getBoundingClientRect();a&&0!==z.participants.length&&d(R([{x:0,y:0,width:z.width,height:z.height}],a.width,a.height,{padding:16}))},[j]),(0,i.useEffect)(()=>{let a=s.current;if(!a)return;let b=a=>{a.preventDefault();let b=t.current,c=bv(a.deltaX,a.deltaMode),e=bv(a.deltaY,a.deltaMode);if(a.ctrlKey||a.metaKey)return void d(P(b,Math.exp(-(.0025*e)),G(a.clientX,a.clientY)));let f=a.shiftKey?-(c||e):-c,g=a.shiftKey?0:-e;(0!==f||0!==g)&&d(O(b,f,g))};return a.addEventListener("wheel",b,{passive:!1}),()=>a.removeEventListener("wheel",b)},[d,G]);let H=()=>{let a=[...v.current.values()];if(a.length<2)return null;let[b,c]=a;return{distance:Math.hypot(c.x-b.x,c.y-b.y)||1,mid:{x:(b.x+c.x)/2,y:(b.y+c.y)/2}}},I=(a,b)=>{if(0===a.button||"mouse"!==a.pointerType){if(a.stopPropagation(),s.current?.setPointerCapture(a.pointerId),v.current.set(a.pointerId,G(a.clientX,a.clientY)),v.current.size>=2){u.current=null,w.current=H();return}u.current={pointerId:a.pointerId,startX:a.clientX,startY:a.clientY,lastX:a.clientX,lastY:a.clientY,target:b,moved:!1}}},J=a=>{if(v.current.delete(a.pointerId),w.current){v.current.size<2&&(w.current=null);return}let b=u.current;!b||b.pointerId!==a.pointerId||(u.current=null,b.moved||(b.target?k?.(b.target.kind,b.target.id):l?.()))},K=a=>b=>{m&&(b.preventDefault(),b.stopPropagation(),m(b.clientX,b.clientY,a))},L=new Set(f??[]),M=new Set(g??[]),N=(a,b)=>e?.kind===a&&e.id===b,Q=e?.kind==="message"?E.get(e.id):void 0;return(0,h.jsxs)("div",{className:`slc-pane${p?` ${p}`:""}`,style:{...bh(o),...q},children:[(0,h.jsx)("svg",{ref:s,id:r,className:"slc-surface",onPointerDown:a=>I(a),onPointerMove:a=>{if(v.current.has(a.pointerId)&&v.current.set(a.pointerId,G(a.clientX,a.clientY)),w.current){let a=H();if(!a)return;let b=w.current;d(P(O(t.current,a.mid.x-b.mid.x,a.mid.y-b.mid.y),a.distance/b.distance,a.mid)),w.current=a;return}let b=u.current;!b||b.pointerId!==a.pointerId||!b.moved&&4>Math.hypot(a.clientX-b.startX,a.clientY-b.startY)||(b.moved=!0,d(O(t.current,a.clientX-b.lastX,a.clientY-b.lastY)),b.lastX=a.clientX,b.lastY=a.clientY)},onPointerUp:J,onPointerCancel:J,onContextMenu:K({kind:"canvas"}),children:(0,h.jsxs)("g",{transform:S(c),children:[z.fragments.map(a=>{let b=x.fragments?.[a.index];if(!b)return null;let c=y(`${b.kind} \xb7 after ${b.after} \xb7 ${b.label}`,11)+18,d=a.top;return(0,h.jsxs)("g",{className:"slc-sqd-fragment",children:[b.notes?.trim()&&(0,h.jsx)("title",{children:`Notes: ${b.notes}`}),(0,h.jsx)("rect",{x:a.left,y:d,width:a.width,height:a.height,rx:3,className:"slc-sqd-frame"}),(0,h.jsx)("path",{d:`M ${a.left} ${d+22} L ${a.left} ${d} L ${a.left+c} ${d} L ${a.left+c} ${d+15} L ${a.left+c-7} ${d+22} Z`,className:"slc-sqd-frame-tab"}),(0,h.jsxs)("text",{x:a.left+8,y:d+15,className:"slc-sqd-frame-heading",children:[(0,h.jsx)("tspan",{className:"slc-sqd-frame-kind",children:b.kind}),` \xb7 after ${b.after} \xb7 ${b.label}`]}),b.notes?.trim()&&(0,h.jsx)("rect",{x:a.left+c+6,y:d+7,width:13,height:5,rx:1.5,className:"slc-note-mark"})]},`f${a.index}`)}),z.participants.map(a=>{let b=N("participant",a.name);return(0,h.jsxs)("g",{onPointerDown:b=>I(b,{kind:"participant",id:a.name}),children:[(0,h.jsx)("path",{d:`M ${a.x} ${z.lifelineTop} V ${z.lifelineBottom}`,className:"slc-sqd-hit"}),(0,h.jsx)("path",{d:`M ${a.x} ${z.lifelineTop} V ${z.lifelineBottom}`,className:`slc-sqd-lifeline${b?" slc-sqd-lifeline--selected":""}`})]},`l-${a.name}`)}),z.fragments.map(a=>{let b=x.fragments?.[a.index],c=b&&b.after>0?z.rows.find(a=>null===a.fragment&&a.index===b.after-1):void 0;if(!c)return null;let d=a.left+4;return(0,h.jsx)("path",{d:`M ${Math.min(c.fromX,c.toX)-14} ${c.y} H ${d} V ${a.top}`,className:"slc-sqd-branch"},`fa${a.index}`)}),z.rows.map(a=>{var b;let c,d,e,f,g=E.get(a.ref);if(!g)return null;let i=`message:${a.ref}`,j=N("message",a.ref),k=L.has(i),l=!k&&M.has(i),m=["slc-sqd-line",g.reply?"slc-sqd-line--reply":"",g.optional?"slc-sqd-line--optional":"",k?"slc-sqd-line--error":l?"slc-sqd-line--warn":"",j?"slc-sqd-line--selected":""].filter(Boolean).join(" "),n=`slc-sqd-head${g.reply?" slc-sqd-head--open":""}${j?" slc-sqd-head--selected":k?" slc-sqd-head--error":""}`,o=a.ref,p=y(o,10)+8,q=B[`${a.ref}:label`]??y(g.label??"",11),r=g.optional?y("opt",10)+8:0,s=g.event?(B[`${a.ref}:event`]??6.1*g.event.length)+12:0,t=g.state?`→ ${g.state}`:"",u=g.state?B[`${a.ref}:state`]??y(t,11):0,v=p+5+q+(r?5+r:0)+(s?5+s:0)+(u?5+u:0);if(a.self){let b=a.fromX,i=a.y-7-2,j=i+14;e=(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("path",{d:`M ${b} ${i} H ${b+30} V ${j} H ${b+2}`,className:m}),(0,h.jsx)("path",{d:bw(b+1,j,-1,!!g.reply),className:n})]}),c=b+30+8,d=a.y+2,f={x:b-6,y:i-8,w:44+v,h:30}}else{let b=a.toX>=a.fromX?1:-1,i=a.toX-b;e=(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("path",{d:`M ${a.fromX} ${a.y} H ${i}`,className:m}),(0,h.jsx)("path",{d:bw(i,a.y,b,!!g.reply),className:n})]}),c=(a.fromX+a.toX)/2-v/2,d=a.y-6;let j=Math.min(a.fromX,a.toX,c),k=Math.max(a.fromX,a.toX,c+v);f={x:j-4,y:a.y-22,w:k-j+8,h:30}}let w=c,x=a=>{let b=w;return w+=a+5,b},z=x(p),A=x(q),C=r?x(r):0,F=s?x(s):0,G=u?x(u):0;return(0,h.jsxs)("g",{className:"slc-sqd-message",onPointerDown:b=>I(b,{kind:"message",id:a.ref}),onContextMenu:K({kind:"message",id:a.ref}),children:[(0,h.jsx)("title",{children:(b=a.ref,[`${b}. ${g.from} → ${g.to}: ${g.label}`,g.event?`fires ${g.event}${g.machine?` on ${g.machine}`:""}`:"",g.carries?`carries ${g.carries}`:"",g.state?`then ${g.state}`:"",g.optional?"optional":"",g.reply?"reply":"",g.description??"",g.notes?.trim()?`Notes: ${g.notes}`:""].filter(Boolean).join("\n"))}),(0,h.jsx)("rect",{x:f.x,y:f.y,width:f.w,height:f.h,className:"slc-sqd-hitbox"}),j&&(0,h.jsx)("rect",{x:f.x,y:f.y,width:f.w,height:f.h,rx:4,className:"slc-sqd-selected-plate"}),e,(0,h.jsx)("rect",{x:z,y:d-10,width:p-2,height:13,rx:6.5,className:`slc-sqd-ref-plate${j?" slc-sqd-ref-plate--selected":""}`}),(0,h.jsx)("text",{x:z+(p-2)/2,y:d,textAnchor:"middle",className:"slc-sqd-ref",children:o}),(0,h.jsx)("text",{ref:D(`${a.ref}:label`),x:A,y:d,className:`slc-sqd-label${j?" slc-sqd-label--selected":""}${k?" slc-sqd-label--error":""}`,children:g.label}),r>0&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("rect",{x:C,y:d-10,width:r,height:13,rx:3,className:"slc-sqd-opt"}),(0,h.jsx)("text",{x:C+r/2,y:d-.5,textAnchor:"middle",className:"slc-sqd-opt-text",children:"opt"})]}),s>0&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)("rect",{x:F,y:d-10.5,width:s,height:14,rx:7,className:"slc-sqd-event"}),(0,h.jsx)("text",{ref:D(`${a.ref}:event`),x:F+s/2,y:d-.5,textAnchor:"middle",className:"slc-sqd-event-text",children:g.event})]}),u>0&&(0,h.jsx)("text",{ref:D(`${a.ref}:state`),x:G,y:d,className:"slc-sqd-state",children:t}),g.notes?.trim()&&(0,h.jsx)("rect",{x:w-5+3,y:d-9,width:5,height:11,rx:1.5,className:"slc-note-mark"})]},`m-${a.ref}`)}),z.participants.map(a=>{let b=F.get(a.name);if(!b)return null;let c=`participant:${a.name}`,d=N("participant",a.name)||!!Q&&(Q.from===a.name||Q.to===a.name),e=["slc-node","slc-sqd-header",N("participant",a.name)?"slc-node--selected":d?"slc-sqd-header--involved":"",L.has(c)?"slc-node--error":""].filter(Boolean).join(" "),f=b.actor?"actor":b.object?"object":b.service?"service":"";return(0,h.jsxs)("g",{className:"slc-node--static slc-sqd-participant",onPointerDown:b=>I(b,{kind:"participant",id:a.name}),onContextMenu:K({kind:"participant",id:a.name}),children:[bx(b)&&(0,h.jsx)("title",{children:bx(b)}),(0,h.jsx)("rect",{x:a.left,y:a.top,width:a.width,height:a.height,rx:b.actor?a.height/2:4,className:e}),b.notes?.trim()&&(0,h.jsx)("rect",{x:a.left+a.width-24,y:a.top-5,width:13,height:5,rx:1.5,className:"slc-note-mark"}),(0,h.jsx)("text",{x:a.x,y:a.top+a.height/2+(f?1:4),textAnchor:"middle",className:`slc-node-name slc-sqd-name${b.object?" slc-sqd-name--object":""}`,children:a.name}),f&&(0,h.jsxs)("text",{x:a.x,y:a.top+a.height-4,textAnchor:"middle",className:"slc-sqd-kind",children:["object"===f?`:${b.object}`:"service"===f?"service":"actor",b.holds?.length?` \xb7 holds ${b.holds.length}`:""]})]},`p-${a.name}`)})]})}),0===z.participants.length&&n&&(0,h.jsx)("div",{className:"slc-erd-empty",children:n})]})}let bC=a=>{let b,c=new Set,d=(a,d)=>{let e="function"==typeof a?a(b):a;if(!Object.is(e,b)){let a=b;b=(null!=d?d:"object"!=typeof e||null===e)?e:Object.assign({},b,e),c.forEach(c=>c(b,a))}},e=()=>b,f={setState:d,getState:e,getInitialState:()=>g,subscribe:a=>(c.add(a),()=>c.delete(a))},g=b=a(d,e,f);return f},bD=a=>{let b=a?bC(a):bC,c=a=>(function(a,b=a=>a){let c=i.default.useSyncExternalStore(a.subscribe,i.default.useCallback(()=>b(a.getState()),[a,b]),i.default.useCallback(()=>b(a.getInitialState()),[a,b]));return i.default.useDebugValue(c),c})(b,a);return Object.assign(c,b),c};var bE=a.i(53681);let bF=Object.create(null);bF.open="0",bF.close="1",bF.ping="2",bF.pong="3",bF.message="4",bF.upgrade="5",bF.noop="6";let bG=Object.create(null);Object.keys(bF).forEach(a=>{bG[bF[a]]=a});let bH={type:"error",data:"parser error"},bI=({type:a,data:b},c,d)=>d(b instanceof ArrayBuffer||ArrayBuffer.isView(b)?c?b:"b"+bJ(b,!0).toString("base64"):bF[a]+(b||"")),bJ=(a,b)=>Buffer.isBuffer(a)||a instanceof Uint8Array&&!b?a:a instanceof ArrayBuffer?Buffer.from(a):Buffer.from(a.buffer,a.byteOffset,a.byteLength),bK=(a,b)=>{if("string"!=typeof a)return{type:"message",data:bL(a,b)};let c=a.charAt(0);return"b"===c?{type:"message",data:bL(Buffer.from(a.substring(1),"base64"),b)}:bG[c]?a.length>1?{type:bG[c],data:a.substring(1)}:{type:bG[c]}:bH},bL=(a,b)=>"arraybuffer"===b?a instanceof ArrayBuffer?a:Buffer.isBuffer(a)?a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength):a.buffer:Buffer.isBuffer(a)?a:Buffer.from(a);function bM(a){return a.reduce((a,b)=>a+b.length,0)}function bN(a,b){if(a[0].length===b)return a.shift();let c=new Uint8Array(b),d=0;for(let e=0;e<b;e++)c[e]=a[0][d++],d===a[0].length&&(a.shift(),d=0);return a.length&&d<a[0].length&&(a[0]=a[0].slice(d)),c}function bO(a){if(a){var b=a;for(var c in bO.prototype)b[c]=bO.prototype[c];return b}}bO.prototype.on=bO.prototype.addEventListener=function(a,b){return this._callbacks=this._callbacks||{},(this._callbacks["$"+a]=this._callbacks["$"+a]||[]).push(b),this},bO.prototype.once=function(a,b){function c(){this.off(a,c),b.apply(this,arguments)}return c.fn=b,this.on(a,c),this},bO.prototype.off=bO.prototype.removeListener=bO.prototype.removeAllListeners=bO.prototype.removeEventListener=function(a,b){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var c,d=this._callbacks["$"+a];if(!d)return this;if(1==arguments.length)return delete this._callbacks["$"+a],this;for(var e=0;e<d.length;e++)if((c=d[e])===b||c.fn===b){d.splice(e,1);break}return 0===d.length&&delete this._callbacks["$"+a],this},bO.prototype.emit=function(a){this._callbacks=this._callbacks||{};for(var b=Array(arguments.length-1),c=this._callbacks["$"+a],d=1;d<arguments.length;d++)b[d-1]=arguments[d];if(c){c=c.slice(0);for(var d=0,e=c.length;d<e;++d)c[d].apply(this,b)}return this},bO.prototype.emitReserved=bO.prototype.emit,bO.prototype.listeners=function(a){return this._callbacks=this._callbacks||{},this._callbacks["$"+a]||[]},bO.prototype.hasListeners=function(a){return!!this.listeners(a).length};let bP=process.nextTick,bQ=a.g;class bR{constructor(){this._cookies=new Map}parseCookies(a){a&&a.forEach(a=>{let b=function(a){let b=a.split("; "),c=b[0].indexOf("=");if(-1===c)return;let d=b[0].substring(0,c).trim();if(!d.length)return;let e=b[0].substring(c+1).trim();34===e.charCodeAt(0)&&(e=e.slice(1,-1));let f={name:d,value:e};for(let a=1;a<b.length;a++){let c=b[a].split("=");if(2!==c.length)continue;let d=c[0].trim(),e=c[1].trim();switch(d){case"Expires":f.expires=new Date(e);break;case"Max-Age":let g=new Date;g.setUTCSeconds(g.getUTCSeconds()+parseInt(e,10)),f.expires=g}}return f}(a);b&&this._cookies.set(b.name,b)})}get cookies(){let a=Date.now();return this._cookies.forEach((b,c)=>{var d;(null==(d=b.expires)?void 0:d.getTime())<a&&this._cookies.delete(c)}),this._cookies.entries()}addCookies(a){let b=[];for(let[a,c]of this.cookies)b.push(`${a}=${c.value}`);b.length&&(a.setDisableHeaderCheck(!0),a.setRequestHeader("cookie",b.join("; ")))}appendCookies(a){for(let[b,c]of this.cookies)a.append("cookie",`${b}=${c.value}`)}}function bS(a,...b){return b.reduce((b,c)=>(a.hasOwnProperty(c)&&(b[c]=a[c]),b),{})}let bT=bQ.setTimeout,bU=bQ.clearTimeout;function bV(a,b){b.useNativeTimers?(a.setTimeoutFn=bT.bind(bQ),a.clearTimeoutFn=bU.bind(bQ)):(a.setTimeoutFn=bQ.setTimeout.bind(bQ),a.clearTimeoutFn=bQ.clearTimeout.bind(bQ))}function bW(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}var bX=a.i(72724);let bY=(0,bX.default)("engine.io-client:transport");class bZ extends Error{constructor(a,b,c){super(a),this.description=b,this.context=c,this.type="TransportError"}}class b$ extends bO{constructor(a){super(),this.writable=!1,bV(this,a),this.opts=a,this.query=a.query,this.socket=a.socket,this.supportsBinary=!a.forceBase64}onError(a,b,c){return super.emitReserved("error",new bZ(a,b,c)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return("opening"===this.readyState||"open"===this.readyState)&&(this.doClose(),this.onClose()),this}send(a){"open"===this.readyState?this.write(a):bY("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(a){let b=bK(a,this.socket.binaryType);this.onPacket(b)}onPacket(a){super.emitReserved("packet",a)}onClose(a){this.readyState="closed",super.emitReserved("close",a)}pause(a){}createUri(a,b={}){return a+"://"+this._hostname()+this._port()+this.opts.path+this._query(b)}_hostname(){let a=this.opts.hostname;return -1===a.indexOf(":")?a:"["+a+"]"}_port(){return this.opts.port&&(this.opts.secure&&443!==Number(this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(a){let b=function(a){let b="";for(let c in a)a.hasOwnProperty(c)&&(b.length&&(b+="&"),b+=encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b}(a);return b.length?"?"+b:""}}let b_=(0,bX.default)("engine.io-client:polling");class b0 extends b${constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(a){this.readyState="pausing";let b=()=>{b_("paused"),this.readyState="paused",a()};if(this._polling||!this.writable){let a=0;this._polling&&(b_("we are currently polling - waiting to pause"),a++,this.once("pollComplete",function(){b_("pre-pause polling complete"),--a||b()})),this.writable||(b_("we are currently writing - waiting to pause"),a++,this.once("drain",function(){b_("pre-pause writing complete"),--a||b()}))}else b()}_poll(){b_("polling"),this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(a){b_("polling got data %s",a);let b=a=>{if("opening"===this.readyState&&"open"===a.type&&this.onOpen(),"close"===a.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(a)};((a,b)=>{let c=a.split("\x1e"),d=[];for(let a=0;a<c.length;a++){let e=bK(c[a],b);if(d.push(e),"error"===e.type)break}return d})(a,this.socket.binaryType).forEach(b),"closed"!==this.readyState&&(this._polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this._poll():b_('ignoring poll - transport state "%s"',this.readyState))}doClose(){let a=()=>{b_("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(b_("transport open - closing"),a()):(b_("transport not open - deferring close"),this.once("open",a))}write(a){var b;let c,d,e;this.writable=!1,b=a=>{this.doWrite(a,()=>{this.writable=!0,this.emitReserved("drain")})},d=Array(c=a.length),e=0,a.forEach((a,f)=>{bI(a,!1,a=>{d[f]=a,++e===c&&b(d.join("\x1e"))})})}uri(){let a=this.opts.secure?"https":"http",b=this.query||{};return!1!==this.opts.timestampRequests&&(b[this.opts.timestampParam]=bW()),this.supportsBinary||b.sid||(b.b64=1),this.createUri(a,b)}}let b1=!1;try{b1="u">typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(a){}let b2=b1,b3=(0,bX.default)("engine.io-client:polling");function b4(){}class b5 extends b0{constructor(a){if(super(a),"u">typeof location){const b="https:"===location.protocol;let c=location.port;c||(c=b?"443":"80"),this.xd="u">typeof location&&a.hostname!==location.hostname||c!==a.port}}doWrite(a,b){let c=this.request({method:"POST",data:a});c.on("success",b),c.on("error",(a,b)=>{this.onError("xhr post error",a,b)})}doPoll(){b3("xhr poll");let a=this.request();a.on("data",this.onData.bind(this)),a.on("error",(a,b)=>{this.onError("xhr poll error",a,b)}),this.pollXhr=a}}class b6 extends bO{constructor(a,b,c){super(),this.createRequest=a,bV(this,c),this._opts=c,this._method=c.method||"GET",this._uri=b,this._data=void 0!==c.data?c.data:null,this._create()}_create(){var a;let b=bS(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");b.xdomain=!!this._opts.xd;let c=this._xhr=this.createRequest(b);try{b3("xhr open %s: %s",this._method,this._uri),c.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders)for(let a in c.setDisableHeaderCheck&&c.setDisableHeaderCheck(!0),this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(a)&&c.setRequestHeader(a,this._opts.extraHeaders[a])}catch(a){}if("POST"===this._method)try{c.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(a){}try{c.setRequestHeader("Accept","*/*")}catch(a){}null==(a=this._opts.cookieJar)||a.addCookies(c),"withCredentials"in c&&(c.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(c.timeout=this._opts.requestTimeout),c.onreadystatechange=()=>{var a;3===c.readyState&&(null==(a=this._opts.cookieJar)||a.parseCookies(c.getResponseHeader("set-cookie"))),4===c.readyState&&(200===c.status||1223===c.status?this._onLoad():this.setTimeoutFn(()=>{this._onError("number"==typeof c.status?c.status:0)},0))},b3("xhr data %s",this._data),c.send(this._data)}catch(a){this.setTimeoutFn(()=>{this._onError(a)},0);return}"u">typeof document&&(this._index=b6.requestsCount++,b6.requests[this._index]=this)}_onError(a){this.emitReserved("error",a,this._xhr),this._cleanup(!0)}_cleanup(a){if(void 0!==this._xhr&&null!==this._xhr){if(this._xhr.onreadystatechange=b4,a)try{this._xhr.abort()}catch(a){}"u">typeof document&&delete b6.requests[this._index],this._xhr=null}}_onLoad(){let a=this._xhr.responseText;null!==a&&(this.emitReserved("data",a),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}function b7(){for(let a in b6.requests)b6.requests.hasOwnProperty(a)&&b6.requests[a].abort()}b6.requestsCount=0,b6.requests={},"u">typeof document&&("function"==typeof attachEvent?attachEvent("onunload",b7):"function"==typeof addEventListener&&addEventListener("onpagehide"in bQ?"pagehide":"unload",b7,!1)),(d=function(a){let b=a.xdomain;try{if("u">typeof XMLHttpRequest&&(!b||b2))return new XMLHttpRequest}catch(a){}if(!b)try{return new bQ[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch(a){}}({xdomain:!1}))&&d.responseType;let b8=bE.default||bE;a.i(31594),a.i(15251),a.i(31276),a.i(28719),a.i(63349),a.i(54129);var b9=a.i(50842);a.i(36972),b9.default;let ca=(0,bX.default)("engine.io-client:websocket"),cb="u">typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class cc extends b${get name(){return"websocket"}doOpen(){let a=this.uri(),b=this.opts.protocols,c=cb?{}:bS(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(c.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(a,b,c)}catch(a){return this.emitReserved("error",a)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=a=>this.onClose({description:"websocket connection closed",context:a}),this.ws.onmessage=a=>this.onData(a.data),this.ws.onerror=a=>this.onError("websocket error",a)}write(a){this.writable=!1;for(let b=0;b<a.length;b++){let c=a[b],d=b===a.length-1;bI(c,this.supportsBinary,a=>{try{this.doWrite(c,a)}catch(a){ca("websocket closed before onclose event")}d&&bP(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){void 0!==this.ws&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){let a=this.opts.secure?"wss":"ws",b=this.query||{};return this.opts.timestampRequests&&(b[this.opts.timestampParam]=bW()),this.supportsBinary||(b.b64=1),this.createUri(a,b)}}bQ.WebSocket||bQ.MozWebSocket;let cd=(0,bX.default)("engine.io-client:webtransport"),ce={websocket:class extends cc{createSocket(a,b,c){var d;if(null==(d=this.socket)?void 0:d._cookieJar)for(let[a,b]of(c.headers=c.headers||{},c.headers.cookie="string"==typeof c.headers.cookie?[c.headers.cookie]:c.headers.cookie||[],this.socket._cookieJar.cookies))c.headers.cookie.push(`${a}=${b.value}`);return new b9.default(a,b,c)}doWrite(a,b){let c={};a.options&&(c.compress=a.options.compress),this.opts.perMessageDeflate&&("string"==typeof b?Buffer.byteLength(b):b.length)<this.opts.perMessageDeflate.threshold&&(c.compress=!1),this.ws.send(b,c)}},webtransport:class extends b${get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(a){return this.emitReserved("error",a)}this._transport.closed.then(()=>{cd("transport closed gracefully"),this.onClose()}).catch(a=>{cd("transport closed due to %s",a),this.onError("webtransport error",a)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(a=>{var d,e;let f,g,h,i,j=(d=Number.MAX_SAFE_INTEGER,e=this.socket.binaryType,c||(c=new TextDecoder),f=[],g=0,h=-1,i=!1,new TransformStream({transform(a,b){for(f.push(a);;){if(0===g){if(1>bM(f))break;let a=bN(f,1);i=(128&a[0])==128,g=(h=127&a[0])<126?3:126===h?1:2}else if(1===g){if(2>bM(f))break;let a=bN(f,2);h=new DataView(a.buffer,a.byteOffset,a.length).getUint16(0),g=3}else if(2===g){if(8>bM(f))break;let a=bN(f,8),c=new DataView(a.buffer,a.byteOffset,a.length),d=c.getUint32(0);if(d>2097151){b.enqueue(bH);break}h=0x100000000*d+c.getUint32(4),g=3}else{if(bM(f)<h)break;let a=bN(f,h);b.enqueue(bK(i?a:c.decode(a),e)),g=0}if(0===h||h>d){b.enqueue(bH);break}}}})),k=a.readable.pipeThrough(j).getReader(),l=new TransformStream({transform(a,c){!function(a,c){if(a.data instanceof ArrayBuffer||ArrayBuffer.isView(a.data))return c(bJ(a.data,!1));bI(a,!0,a=>{b||(b=new TextEncoder),c(b.encode(a))})}(a,b=>{let d,e=b.length;if(e<126)new DataView((d=new Uint8Array(1)).buffer).setUint8(0,e);else if(e<65536){let a=new DataView((d=new Uint8Array(3)).buffer);a.setUint8(0,126),a.setUint16(1,e)}else{let a=new DataView((d=new Uint8Array(9)).buffer);a.setUint8(0,127),a.setBigUint64(1,BigInt(e))}a.data&&"string"!=typeof a.data&&(d[0]|=128),c.enqueue(d),c.enqueue(b)})}});l.readable.pipeTo(a.writable),this._writer=l.writable.getWriter();let m=()=>{k.read().then(({done:a,value:b})=>{a?cd("session is closed"):(cd("received chunk: %o",b),this.onPacket(b),m())}).catch(a=>{cd("an error occurred while reading: %s",a)})};m();let n={type:"open"};this.query.sid&&(n.data=`{"sid":"${this.query.sid}"}`),this._writer.write(n).then(()=>this.onOpen())})})}write(a){this.writable=!1;for(let b=0;b<a.length;b++){let c=a[b],d=b===a.length-1;this._writer.write(c).then(()=>{d&&bP(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var a;null==(a=this._transport)||a.close()}},polling:class extends b5{request(a={}){var b;return Object.assign(a,{xd:this.xd,cookieJar:null==(b=this.socket)?void 0:b._cookieJar},this.opts),new b6(a=>new b8(a),this.uri(),a)}}},cf=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,cg=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function ch(a){var b,c;let d,e;if(a.length>8e3)throw"URI too long";let f=a,g=a.indexOf("["),h=a.indexOf("]");-1!=g&&-1!=h&&(a=a.substring(0,g)+a.substring(g,h).replace(/:/g,";")+a.substring(h,a.length));let i=cf.exec(a||""),j={},k=14;for(;k--;)j[cg[k]]=i[k]||"";return -1!=g&&-1!=h&&(j.source=f,j.host=j.host.substring(1,j.host.length-1).replace(/;/g,":"),j.authority=j.authority.replace("[","").replace("]","").replace(/;/g,":"),j.ipv6uri=!0),d=(b=j.path).replace(/\/{2,9}/g,"/").split("/"),("/"==b.slice(0,1)||0===b.length)&&d.splice(0,1),"/"==b.slice(-1)&&d.splice(d.length-1,1),j.pathNames=d,c=j.query,e={},c.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(a,b,c){b&&(e[b]=c)}),j.queryKey=e,j}let ci=(0,bX.default)("engine.io-client:socket"),cj="function"==typeof addEventListener&&"function"==typeof removeEventListener,ck=[];cj&&addEventListener("offline",()=>{ci("closing %d connection(s) because the network was lost",ck.length),ck.forEach(a=>a())},!1);class cl extends bO{constructor(a,b){if(super(),this.binaryType="nodebuffer",this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,a&&"object"==typeof a&&(b=a,a=null),a){const c=ch(a);b.hostname=c.host,b.secure="https"===c.protocol||"wss"===c.protocol,b.port=c.port,c.query&&(b.query=c.query)}else b.host&&(b.hostname=ch(b.host).host);bV(this,b),this.secure=null!=b.secure?b.secure:"u">typeof location&&"https:"===location.protocol,b.hostname&&!b.port&&(b.port=this.secure?"443":"80"),this.hostname=b.hostname||("u">typeof location?location.hostname:"localhost"),this.port=b.port||("u">typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},b.transports.forEach(a=>{let b=a.prototype.name;this.transports.push(b),this._transportsByName[b]=a}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},b),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(a){let b={},c=a.split("&");for(let a=0,d=c.length;a<d;a++){let d=c[a].split("=");b[decodeURIComponent(d[0])]=decodeURIComponent(d[1])}return b}(this.opts.query)),cj&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(ci("adding listener for the 'offline' event"),this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},ck.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=new bR),this._open()}createTransport(a){ci('creating transport "%s"',a);let b=Object.assign({},this.opts.query);b.EIO=4,b.transport=a,this.id&&(b.sid=this.id);let c=Object.assign({},this.opts,{query:b,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[a]);return ci("options: %j",c),new this._transportsByName[a](c)}_open(){if(0===this.transports.length)return void this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);let a=this.opts.rememberUpgrade&&cl.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";let b=this.createTransport(a);b.open(),this.setTransport(b)}setTransport(a){ci("setting transport %s",a.name),this.transport&&(ci("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=a,a.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",a=>this._onClose("transport close",a))}onOpen(){ci("socket open"),this.readyState="open",cl.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()}_onPacket(a){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(ci('socket receive: type "%s", data "%s"',a.type,a.data),this.emitReserved("packet",a),this.emitReserved("heartbeat"),a.type){case"open":this.onHandshake(JSON.parse(a.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":let b=Error("server error");b.code=a.data,this._onError(b);break;case"message":this.emitReserved("data",a.data),this.emitReserved("message",a.data)}else ci('packet received with socket readyState "%s"',this.readyState)}onHandshake(a){this.emitReserved("handshake",a),this.id=a.sid,this.transport.query.sid=a.sid,this._pingInterval=a.pingInterval,this._pingTimeout=a.pingTimeout,this._maxPayload=a.maxPayload,this.onOpen(),"closed"!==this.readyState&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);let a=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+a,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},a),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){let a=this._getWritablePackets();ci("flushing %d packets in socket",a.length),this.transport.send(a),this._prevBufferLen=a.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let a=1;for(let b=0;b<this.writeBuffer.length;b++){let c=this.writeBuffer[b].data;if(c&&(a+="string"==typeof c?function(a){let b=0,c=0;for(let d=0,e=a.length;d<e;d++)(b=a.charCodeAt(d))<128?c+=1:b<2048?c+=2:b<55296||b>=57344?c+=3:(d++,c+=4);return c}(c):Math.ceil(1.33*(c.byteLength||c.size))),b>0&&a>this._maxPayload)return ci("only send %d out of %d packets",b,this.writeBuffer.length),this.writeBuffer.slice(0,b);a+=2}return ci("payload size is %d (max: %d)",a,this._maxPayload),this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;let a=Date.now()>this._pingTimeoutTime;return a&&(ci("throttled timer detected, scheduling connection close"),this._pingTimeoutTime=0,bP(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),a}write(a,b,c){return this._sendPacket("message",a,b,c),this}send(a,b,c){return this._sendPacket("message",a,b,c),this}_sendPacket(a,b,c,d){if("function"==typeof b&&(d=b,b=void 0),"function"==typeof c&&(d=c,c=null),"closing"===this.readyState||"closed"===this.readyState)return;(c=c||{}).compress=!1!==c.compress;let e={type:a,data:b,options:c};this.emitReserved("packetCreate",e),this.writeBuffer.push(e),d&&this.once("flush",d),this.flush()}close(){let a=()=>{this._onClose("forced close"),ci("socket closing - telling transport to close"),this.transport.close()},b=()=>{this.off("upgrade",b),this.off("upgradeError",b),a()},c=()=>{this.once("upgrade",b),this.once("upgradeError",b)};return("opening"===this.readyState||"open"===this.readyState)&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?c():a()}):this.upgrading?c():a()),this}_onError(a){if(ci("socket error %j",a),cl.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return ci("trying next transport"),this.transports.shift(),this._open();this.emitReserved("error",a),this._onClose("transport error",a)}_onClose(a,b){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(ci('socket close with reason: "%s"',a),this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),cj&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){let a=ck.indexOf(this._offlineEventListener);-1!==a&&(ci("removing listener for the 'offline' event"),ck.splice(a,1))}this.readyState="closed",this.id=null,this.emitReserved("close",a,b),this.writeBuffer=[],this._prevBufferLen=0}}}cl.protocol=4;class cm extends cl{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),"open"===this.readyState&&this.opts.upgrade){ci("starting upgrade probes");for(let a=0;a<this._upgrades.length;a++)this._probe(this._upgrades[a])}}_probe(a){ci('probing transport "%s"',a);let b=this.createTransport(a),c=!1;cl.priorWebsocketSuccess=!1;let d=()=>{c||(ci('probe transport "%s" opened',a),b.send([{type:"ping",data:"probe"}]),b.once("packet",d=>{if(!c)if("pong"===d.type&&"probe"===d.data){if(ci('probe transport "%s" pong',a),this.upgrading=!0,this.emitReserved("upgrading",b),!b)return;cl.priorWebsocketSuccess="websocket"===b.name,ci('pausing current transport "%s"',this.transport.name),this.transport.pause(()=>{c||"closed"!==this.readyState&&(ci("changing transport and sending upgrade packet"),j(),this.setTransport(b),b.send([{type:"upgrade"}]),this.emitReserved("upgrade",b),b=null,this.upgrading=!1,this.flush())})}else{ci('probe transport "%s" failed',a);let c=Error("probe error");c.transport=b.name,this.emitReserved("upgradeError",c)}}))};function e(){c||(c=!0,j(),b.close(),b=null)}let f=c=>{let d=Error("probe error: "+c);d.transport=b.name,e(),ci('probe transport "%s" failed because of error: %s',a,c),this.emitReserved("upgradeError",d)};function g(){f("transport closed")}function h(){f("socket closed")}function i(a){b&&a.name!==b.name&&(ci('"%s" works - aborting "%s"',a.name,b.name),e())}let j=()=>{b.removeListener("open",d),b.removeListener("error",f),b.removeListener("close",g),this.off("close",h),this.off("upgrading",i)};b.once("open",d),b.once("error",f),b.once("close",g),this.once("close",h),this.once("upgrading",i),-1!==this._upgrades.indexOf("webtransport")&&"webtransport"!==a?this.setTimeoutFn(()=>{c||b.open()},200):b.open()}onHandshake(a){this._upgrades=this._filterUpgrades(a.upgrades),super.onHandshake(a)}_filterUpgrades(a){let b=[];for(let c=0;c<a.length;c++)~this.transports.indexOf(a[c])&&b.push(a[c]);return b}}class cn extends cm{constructor(a,b={}){const c="object"==typeof a,d=c?{...a}:{...b};(!d.transports||d.transports&&"string"==typeof d.transports[0])&&(d.transports=(d.transports||["polling","websocket","webtransport"]).map(a=>ce[a]).filter(a=>!!a)),super(c?d:a,d)}}cn.protocol;let co=(0,bX.default)("socket.io-client:url"),cp="function"==typeof ArrayBuffer,cq=Object.prototype.toString,cr="function"==typeof Blob||"u">typeof Blob&&"[object BlobConstructor]"===cq.call(Blob),cs="function"==typeof File||"u">typeof File&&"[object FileConstructor]"===cq.call(File);function ct(a){return cp&&(a instanceof ArrayBuffer||("function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(a):a.buffer instanceof ArrayBuffer))||cr&&a instanceof Blob||cs&&a instanceof File}let cu=(0,bX.default)("socket.io-parser"),cv=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];(f=g||(g={}))[f.CONNECT=0]="CONNECT",f[f.DISCONNECT=1]="DISCONNECT",f[f.EVENT=2]="EVENT",f[f.ACK=3]="ACK",f[f.CONNECT_ERROR=4]="CONNECT_ERROR",f[f.BINARY_EVENT=5]="BINARY_EVENT",f[f.BINARY_ACK=6]="BINARY_ACK";class cw{constructor(a){this.replacer=a}encode(a){return(cu("encoding packet %j",a),(a.type===g.EVENT||a.type===g.ACK)&&function a(b,c){if(!b||"object"!=typeof b)return!1;if(Array.isArray(b)){for(let c=0,d=b.length;c<d;c++)if(a(b[c]))return!0;return!1}if(ct(b))return!0;if(b.toJSON&&"function"==typeof b.toJSON&&1==arguments.length)return a(b.toJSON(),!0);for(let c in b)if(Object.prototype.hasOwnProperty.call(b,c)&&a(b[c]))return!0;return!1}(a))?this.encodeAsBinary({type:a.type===g.EVENT?g.BINARY_EVENT:g.BINARY_ACK,nsp:a.nsp,data:a.data,id:a.id}):[this.encodeAsString(a)]}encodeAsString(a){let b=""+a.type;return(a.type===g.BINARY_EVENT||a.type===g.BINARY_ACK)&&(b+=a.attachments+"-"),a.nsp&&"/"!==a.nsp&&(b+=a.nsp+","),null!=a.id&&(b+=a.id),null!=a.data&&(b+=JSON.stringify(a.data,this.replacer)),cu("encoded %j as %s",a,b),b}encodeAsBinary(a){let b,c,d=(b=[],c=a.data,a.data=function a(b,c,d){if(!b)return b;if(ct(b)){let a={_placeholder:!0,num:c.length};return c.push(b),a}if(Array.isArray(b)){let d=Array(b.length);for(let e=0;e<b.length;e++)d[e]=a(b[e],c);return d}if("object"==typeof b&&!(b instanceof Date)){if(b.toJSON&&"function"==typeof b.toJSON&&!d)return a(b.toJSON(),c,!0);let e={};for(let d in b)Object.prototype.hasOwnProperty.call(b,d)&&(e[d]=a(b[d],c));return e}return b}(c,b),a.attachments=b.length,{packet:a,buffers:b}),e=this.encodeAsString(d.packet),f=d.buffers;return f.unshift(e),f}}class cx extends bO{constructor(a){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},"function"==typeof a?{reviver:a}:a)}add(a){let b;if("string"==typeof a){if(this.reconstructor)throw Error("got plaintext data when reconstructing a packet");let c=(b=this.decodeString(a)).type===g.BINARY_EVENT;c||b.type===g.BINARY_ACK?(b.type=c?g.EVENT:g.ACK,this.reconstructor=new cy(b)):super.emitReserved("decoded",b)}else if(ct(a)||a.base64)if(this.reconstructor)(b=this.reconstructor.takeBinaryData(a))&&(this.reconstructor=null,super.emitReserved("decoded",b));else throw Error("got binary data when not reconstructing a packet");else throw Error("Unknown type: "+a)}decodeString(a){let b=0,c={type:Number(a.charAt(0))};if(void 0===g[c.type])throw Error("unknown packet type "+c.type);if(c.type===g.BINARY_EVENT||c.type===g.BINARY_ACK){let d=b+1;for(;"-"!==a.charAt(++b)&&b!=a.length;);let e=a.substring(d,b);if(e!=Number(e)||"-"!==a.charAt(b))throw Error("Illegal attachments");let f=Number(e);if(!cz(f)||f<1)throw Error("Illegal attachments");if(f>this.opts.maxAttachments)throw Error("too many attachments");c.attachments=f}if("/"===a.charAt(b+1)){let d=b+1;for(;++b&&","!==a.charAt(b)&&b!==a.length;);c.nsp=a.substring(d,b)}else c.nsp="/";let d=a.charAt(b+1);if(""!==d&&Number(d)==d){let d=b+1;for(;++b;){let c=a.charAt(b);if(null==c||Number(c)!=c){--b;break}if(b===a.length)break}c.id=Number(a.substring(d,b+1))}if(a.charAt(++b)){let d=this.tryParse(a.substr(b));if(cx.isPayloadValid(c.type,d))c.data=d;else throw Error("invalid payload")}return cu("decoded %s as %j",a,c),c}tryParse(a){try{return JSON.parse(a,this.opts.reviver)}catch(a){return!1}}static isPayloadValid(a,b){switch(a){case g.CONNECT:return cA(b);case g.DISCONNECT:return void 0===b;case g.CONNECT_ERROR:return"string"==typeof b||cA(b);case g.EVENT:case g.BINARY_EVENT:return Array.isArray(b)&&("number"==typeof b[0]||"string"==typeof b[0]&&-1===cv.indexOf(b[0]));case g.ACK:case g.BINARY_ACK:return Array.isArray(b)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class cy{constructor(a){this.packet=a,this.buffers=[],this.reconPack=a}takeBinaryData(a){if(this.buffers.push(a),this.buffers.length===this.reconPack.attachments){var b,c;let a=(b=this.reconPack,c=this.buffers,b.data=function a(b,c){if(!b)return b;if(b&&!0===b._placeholder){if("number"==typeof b.num&&b.num>=0&&b.num<c.length)return c[b.num];throw Error("illegal attachments")}if(Array.isArray(b))for(let d=0;d<b.length;d++)b[d]=a(b[d],c);else if("object"==typeof b)for(let d in b)Object.prototype.hasOwnProperty.call(b,d)&&(b[d]=a(b[d],c));return b}(b.data,c),delete b.attachments,b);return this.finishedReconstruction(),a}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}let cz=Number.isInteger||function(a){return"number"==typeof a&&isFinite(a)&&Math.floor(a)===a};function cA(a){return"[object Object]"===Object.prototype.toString.call(a)}function cB(a){var b;return"string"==typeof a.nsp&&(void 0===(b=a.id)||cz(b))&&function(a,b){switch(a){case g.CONNECT:return void 0===b||cA(b);case g.DISCONNECT:return void 0===b;case g.EVENT:return Array.isArray(b)&&("number"==typeof b[0]||"string"==typeof b[0]&&-1===cv.indexOf(b[0]));case g.ACK:return Array.isArray(b);case g.CONNECT_ERROR:return"string"==typeof b||cA(b);default:return!1}}(a.type,a.data)}function cC(a,b,c){return a.on(b,c),function(){a.off(b,c)}}a.s(["Decoder",()=>cx,"Encoder",()=>cw,"PacketType",()=>g,"isPacketValid",()=>cB,"protocol",0,5],10419);let cD=(0,bX.default)("socket.io-client:socket"),cE=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class cF extends bO{constructor(a,b,c){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=a,this.nsp=b,c&&c.auth&&(this.auth=c.auth),this._opts=Object.assign({},c),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;let a=this.io;this.subs=[cC(a,"open",this.onopen.bind(this)),cC(a,"packet",this.onpacket.bind(this)),cC(a,"error",this.onerror.bind(this)),cC(a,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...a){return a.unshift("message"),this.emit.apply(this,a),this}emit(a,...b){var c,d,e;if(cE.hasOwnProperty(a))throw Error('"'+a.toString()+'" is a reserved event name');if(b.unshift(a),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(b),this;let f={type:g.EVENT,data:b};if(f.options={},f.options.compress=!1!==this.flags.compress,"function"==typeof b[b.length-1]){let a=this.ids++;cD("emitting packet with ack id %d",a);let c=b.pop();this._registerAckCallback(a,c),f.id=a}let h=null==(d=null==(c=this.io.engine)?void 0:c.transport)?void 0:d.writable,i=this.connected&&!(null==(e=this.io.engine)?void 0:e._hasPingExpired());return this.flags.volatile&&!h?cD("discard packet as the transport is not currently writable"):i?(this.notifyOutgoingListeners(f),this.packet(f)):this.sendBuffer.push(f),this.flags={},this}_registerAckCallback(a,b){var c;let d=null!=(c=this.flags.timeout)?c:this._opts.ackTimeout;if(void 0===d){this.acks[a]=b;return}let e=this.io.setTimeoutFn(()=>{delete this.acks[a];for(let b=0;b<this.sendBuffer.length;b++)this.sendBuffer[b].id===a&&(cD("removing packet with ack id %d from the buffer",a),this.sendBuffer.splice(b,1));cD("event with ack id %d has timed out after %d ms",a,d),b.call(this,Error("operation has timed out"))},d),f=(...a)=>{this.io.clearTimeoutFn(e),b.apply(this,a)};f.withError=!0,this.acks[a]=f}emitWithAck(a,...b){return new Promise((c,d)=>{let e=(a,b)=>a?d(a):c(b);e.withError=!0,b.push(e),this.emit(a,...b)})}_addToQueue(a){let b;"function"==typeof a[a.length-1]&&(b=a.pop());let c={id:this._queueSeq++,tryCount:0,pending:!1,args:a,flags:Object.assign({fromQueue:!0},this.flags)};a.push((a,...d)=>c!==this._queue[0]?cD("packet [%d] already acknowledged",c.id):(null!==a?c.tryCount>this._opts.retries&&(cD("packet [%d] is discarded after %d tries",c.id,c.tryCount),this._queue.shift(),b&&b(a)):(cD("packet [%d] was successfully sent",c.id),this._queue.shift(),b&&b(null,...d)),c.pending=!1,this._drainQueue())),this._queue.push(c),this._drainQueue()}_drainQueue(a=!1){if(cD("draining queue"),!this.connected||0===this._queue.length)return;let b=this._queue[0];b.pending&&!a?cD("packet [%d] has already been sent and is waiting for an ack",b.id):(b.pending=!0,b.tryCount++,cD("sending packet [%d] (try n°%d)",b.id,b.tryCount),this.flags=b.flags,this.emit.apply(this,b.args))}packet(a){a.nsp=this.nsp,this.io._packet(a)}onopen(){cD("transport is open - connecting"),"function"==typeof this.auth?this.auth(a=>{this._sendConnectPacket(a)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(a){this.packet({type:g.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},a):a})}onerror(a){this.connected||this.emitReserved("connect_error",a)}onclose(a,b){cD("close (%s)",a),this.connected=!1,delete this.id,this.emitReserved("disconnect",a,b),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(a=>{if(!this.sendBuffer.some(b=>String(b.id)===a)){let b=this.acks[a];delete this.acks[a],b.withError&&b.call(this,Error("socket has been disconnected"))}})}onpacket(a){if(a.nsp===this.nsp)switch(a.type){case g.CONNECT:a.data&&a.data.sid?this.onconnect(a.data.sid,a.data.pid):this.emitReserved("connect_error",Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case g.EVENT:case g.BINARY_EVENT:this.onevent(a);break;case g.ACK:case g.BINARY_ACK:this.onack(a);break;case g.DISCONNECT:this.ondisconnect();break;case g.CONNECT_ERROR:this.destroy();let b=Error(a.data.message);b.data=a.data.data,this.emitReserved("connect_error",b)}}onevent(a){let b=a.data||[];cD("emitting event %j",b),null!=a.id&&(cD("attaching ack callback to event"),b.push(this.ack(a.id))),this.connected?this.emitEvent(b):this.receiveBuffer.push(Object.freeze(b))}emitEvent(a){if(this._anyListeners&&this._anyListeners.length)for(let b of this._anyListeners.slice())b.apply(this,a);super.emit.apply(this,a),this._pid&&a.length&&"string"==typeof a[a.length-1]&&(this._lastOffset=a[a.length-1])}ack(a){let b=this,c=!1;return function(...d){c||(c=!0,cD("sending ack %j",d),b.packet({type:g.ACK,id:a,data:d}))}}onack(a){let b=this.acks[a.id];"function"!=typeof b?cD("bad ack %s",a.id):(delete this.acks[a.id],cD("calling ack %s with %j",a.id,a.data),b.withError&&a.data.unshift(null),b.apply(this,a.data))}onconnect(a,b){cD("socket connected with id %s",a),this.id=a,this.recovered=b&&this._pid===b,this._pid=b,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(a=>this.emitEvent(a)),this.receiveBuffer=[],this.sendBuffer.forEach(a=>{this.notifyOutgoingListeners(a),this.packet(a)}),this.sendBuffer=[]}ondisconnect(){cD("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(a=>a()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&(cD("performing disconnect (%s)",this.nsp),this.packet({type:g.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(a){return this.flags.compress=a,this}get volatile(){return this.flags.volatile=!0,this}timeout(a){return this.flags.timeout=a,this}onAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(a),this}prependAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(a),this}offAny(a){if(!this._anyListeners)return this;if(a){let b=this._anyListeners;for(let c=0;c<b.length;c++)if(a===b[c]){b.splice(c,1);break}}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(a),this}prependAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(a),this}offAnyOutgoing(a){if(!this._anyOutgoingListeners)return this;if(a){let b=this._anyOutgoingListeners;for(let c=0;c<b.length;c++)if(a===b[c]){b.splice(c,1);break}}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(a){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length)for(let b of this._anyOutgoingListeners.slice())b.apply(this,a.data)}}var cG=a.i(10419);function cH(a){a=a||{},this.ms=a.min||100,this.max=a.max||1e4,this.factor=a.factor||2,this.jitter=a.jitter>0&&a.jitter<=1?a.jitter:0,this.attempts=0}cH.prototype.duration=function(){var a=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var b=Math.random(),c=Math.floor(b*this.jitter*a);a=(1&Math.floor(10*b))==0?a-c:a+c}return 0|Math.min(a,this.max)},cH.prototype.reset=function(){this.attempts=0},cH.prototype.setMin=function(a){this.ms=a},cH.prototype.setMax=function(a){this.max=a},cH.prototype.setJitter=function(a){this.jitter=a};let cI=(0,bX.default)("socket.io-client:manager");class cJ extends bO{constructor(a,b){var c;super(),this.nsps={},this.subs=[],a&&"object"==typeof a&&(b=a,a=void 0),(b=b||{}).path=b.path||"/socket.io",this.opts=b,bV(this,b),this.reconnection(!1!==b.reconnection),this.reconnectionAttempts(b.reconnectionAttempts||1/0),this.reconnectionDelay(b.reconnectionDelay||1e3),this.reconnectionDelayMax(b.reconnectionDelayMax||5e3),this.randomizationFactor(null!=(c=b.randomizationFactor)?c:.5),this.backoff=new cH({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==b.timeout?2e4:b.timeout),this._readyState="closed",this.uri=a;const d=b.parser||cG;this.encoder=new d.Encoder,this.decoder=new d.Decoder,this._autoConnect=!1!==b.autoConnect,this._autoConnect&&this.open()}reconnection(a){return arguments.length?(this._reconnection=!!a,a||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(a){return void 0===a?this._reconnectionAttempts:(this._reconnectionAttempts=a,this)}reconnectionDelay(a){var b;return void 0===a?this._reconnectionDelay:(this._reconnectionDelay=a,null==(b=this.backoff)||b.setMin(a),this)}randomizationFactor(a){var b;return void 0===a?this._randomizationFactor:(this._randomizationFactor=a,null==(b=this.backoff)||b.setJitter(a),this)}reconnectionDelayMax(a){var b;return void 0===a?this._reconnectionDelayMax:(this._reconnectionDelayMax=a,null==(b=this.backoff)||b.setMax(a),this)}timeout(a){return arguments.length?(this._timeout=a,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(a){if(cI("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;cI("opening %s",this.uri),this.engine=new cn(this.uri,this.opts);let b=this.engine,c=this;this._readyState="opening",this.skipReconnect=!1;let d=cC(b,"open",function(){c.onopen(),a&&a()}),e=b=>{cI("error"),this.cleanup(),this._readyState="closed",this.emitReserved("error",b),a?a(b):this.maybeReconnectOnOpen()},f=cC(b,"error",e);if(!1!==this._timeout){let a=this._timeout;cI("connect attempt will timeout after %d",a);let c=this.setTimeoutFn(()=>{cI("connect attempt timed out after %d",a),d(),e(Error("timeout")),b.close()},a);this.opts.autoUnref&&c.unref(),this.subs.push(()=>{this.clearTimeoutFn(c)})}return this.subs.push(d),this.subs.push(f),this}connect(a){return this.open(a)}onopen(){cI("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");let a=this.engine;this.subs.push(cC(a,"ping",this.onping.bind(this)),cC(a,"data",this.ondata.bind(this)),cC(a,"error",this.onerror.bind(this)),cC(a,"close",this.onclose.bind(this)),cC(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(a){try{this.decoder.add(a)}catch(a){this.onclose("parse error",a)}}ondecoded(a){bP(()=>{this.emitReserved("packet",a)},this.setTimeoutFn)}onerror(a){cI("error",a),this.emitReserved("error",a)}socket(a,b){let c=this.nsps[a];return c?this._autoConnect&&!c.active&&c.connect():(c=new cF(this,a,b),this.nsps[a]=c),c}_destroy(a){for(let a of Object.keys(this.nsps))if(this.nsps[a].active)return void cI("socket %s is still active, skipping close",a);this._close()}_packet(a){cI("writing packet %j",a);let b=this.encoder.encode(a);for(let c=0;c<b.length;c++)this.engine.write(b[c],a.options)}cleanup(){cI("cleanup"),this.subs.forEach(a=>a()),this.subs.length=0,this.decoder.destroy()}_close(){cI("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(a,b){var c;cI("closed due to %s",a),this.cleanup(),null==(c=this.engine)||c.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",a,b),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;let a=this;if(this.backoff.attempts>=this._reconnectionAttempts)cI("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{let b=this.backoff.duration();cI("will wait %dms before reconnect attempt",b),this._reconnecting=!0;let c=this.setTimeoutFn(()=>{a.skipReconnect||(cI("attempting reconnect"),this.emitReserved("reconnect_attempt",a.backoff.attempts),a.skipReconnect||a.open(b=>{b?(cI("reconnect attempt error"),a._reconnecting=!1,a.reconnect(),this.emitReserved("reconnect_error",b)):(cI("reconnect success"),a.onreconnect())}))},b);this.opts.autoUnref&&c.unref(),this.subs.push(()=>{this.clearTimeoutFn(c)})}}onreconnect(){let a=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",a)}}let cK=(0,bX.default)("socket.io-client"),cL={};function cM(a,b){let c;"object"==typeof a&&(b=a,a=void 0);let d=function(a,b="",c){let d=a;c=c||"u">typeof location&&location,null==a&&(a=c.protocol+"//"+c.host),"string"==typeof a&&("/"===a.charAt(0)&&(a="/"===a.charAt(1)?c.protocol+a:c.host+a),/^(https?|wss?):\/\//.test(a)||(co("protocol-less url %s",a),a=void 0!==c?c.protocol+"//"+a:"https://"+a),co("parse %s",a),d=ch(a)),!d.port&&(/^(http|ws)$/.test(d.protocol)?d.port="80":/^(http|ws)s$/.test(d.protocol)&&(d.port="443")),d.path=d.path||"/";let e=-1!==d.host.indexOf(":")?"["+d.host+"]":d.host;return d.id=d.protocol+"://"+e+":"+d.port+b,d.href=d.protocol+"://"+e+(c&&c.port===d.port?"":":"+d.port),d}(a,(b=b||{}).path||"/socket.io"),e=d.source,f=d.id,g=d.path,h=cL[f]&&g in cL[f].nsps;return b.forceNew||b["force new connection"]||!1===b.multiplex||h?(cK("ignoring socket cache for %s",e),c=new cJ(e,b)):(cL[f]||(cK("new io instance for %s",e),cL[f]=new cJ(e,b)),c=cL[f]),d.query&&!b.query&&(b.query=d.queryKey),c.socket(d.path,b)}function cN(a){if(a&&"object"==typeof a&&"clientId"in a){let b=a.clientId;if("string"==typeof b)return b}}function cO(a){let{url:b,role:c,docId:d,name:e,token:f}=a,g=!1!==a.autoResync,h=cM(b,{auth:{token:f},autoConnect:!1}),i="disconnected",j=0,k="",l=[],m={patch:new Set,full:new Set,ack:new Set,presence:new Set,error:new Set,status:new Set,view:new Set};function n(a,b){for(let c of[...m[a]])c(b)}function o(a){i!==a&&(i=a,n("status",a))}function p(a){h.emit("def:request",{docId:d,sinceSeq:a})}function q(a){"number"==typeof a&&(g&&a>j+1&&p(j),j=Math.max(j,a))}function r(){n("presence",[...l])}function s(){return h.connected?Promise.resolve():new Promise((a,b)=>{o("connecting");let c=()=>{e(),a()},d=a=>{e(),b(a)},e=()=>{h.off("connect",c),h.off("connect_error",d)};h.once("connect",c),h.once("connect_error",d),h.connect()})}async function t(){return await s(),new Promise((a,b)=>{h.emit("bridge:join",{docId:d,role:c,name:e},c=>{if(!c||c.error){let a=c?.error??{code:"join_failed",message:"no join ack"};n("error",a),b(Error(`${a.code}: ${a.message}`));return}k=c.selfId,l=c.presence?[...c.presence]:[],j=c.snapshot?.seq??0,r(),a({selfId:k,snapshot:c.snapshot,presence:[...l]})})})}async function u(a){await s(),h.emit("view:show",{...a,docId:a.docId??d,origin:a.origin??(e||c)})}return h.on("connect",()=>o("connected")),h.on("disconnect",()=>o("disconnected")),h.on("connect_error",a=>{o("error"),n("error",{code:"connect_error",message:a?.message??String(a)})}),h.on("def:patch",a=>{q(a?.seq),a?.origin&&a.origin===k||n("patch",a)}),h.on("def:full",a=>{q(a?.seq),a?.origin&&a.origin===k||n("full",a)}),h.on("def:ack",a=>{n("ack",a)}),h.on("view:show",a=>{n("view",a)}),h.on("bridge:error",a=>{n("error",{code:a?.code??"error",message:a?.message??""})}),h.on("presence:list",a=>{l=Array.isArray(a)?[...a]:[],r()}),h.on("presence:join",a=>{let b=cN(a);b&&(l=[...l.filter(a=>a.clientId!==b),a],r())}),h.on("presence:leave",a=>{let b=cN(a);b&&(l=l.filter(a=>a.clientId!==b),r())}),h.on("presence:update",a=>{let b=cN(a);if(!b)return;let c=l.findIndex(a=>a.clientId===b);if(-1===c)l=[...l,a];else{let b={...l[c],...a};l=l.map((a,d)=>d===c?b:a)}r()}),{connect:s,join:t,emitPatch:function(a,b,c){h.emit("def:patch",{docId:d,ops:a,origin:k,baseSeq:c,mtime:b})},emitFull:function(a,b){h.emit("def:full",{docId:d,def:a,origin:k,mtime:b})},request:p,updatePresence:function(a){h.emit("presence:update",{docId:d,clientId:k,cursor:a.cursor,selection:a.selection})},emitView:u,on:function(a,b){let c=m[a];return c.add(b),()=>c.delete(b)},disconnect:function(){h.connected&&k&&h.emit("bridge:leave",{docId:d,clientId:k}),h.disconnect(),o("disconnected")},get status(){return i},get lastSeq(){return j},get presence(){return[...l]}}}function cP(a){return"runtime.enter"===a.op||"runtime.exit"===a.op}function cQ(a){let{onFull:b,onPatch:c,onPresence:d,...e}=a,f=cO(e),g=null,h=0,i=[],j=[],k={status:f.status,def:null,seq:0,presence:[],activeStates:[]},l=new Set;function m(){for(let a of(k={status:f.status,def:g,seq:h,presence:i,activeStates:j},[...l]))a()}return f.on("status",()=>m()),f.on("full",a=>{g=a.def,"number"==typeof a.seq&&(h=a.seq),b?.(a),m()}),f.on("patch",a=>{"number"==typeof a.seq&&(h=a.seq);let b=a.ops??[],d=b.filter(cP),e=b.filter(a=>!cP(a));e.length>0&&g&&(g=n(g,e));for(let a of d)"runtime.enter"===a.op?j.includes(a.state)||(j=[...j,a.state]):"runtime.exit"===a.op&&j.includes(a.state)&&(j=j.filter(b=>b!==a.state));c?.(a),m()}),f.on("presence",a=>{i=a,d?.(a),m()}),{getSnapshot:function(){return k},subscribe:function(a){return l.add(a),()=>{l.delete(a)}},emitPatch:function(a){f.emitPatch(a)},emitFull:function(a){f.emitFull(a)},enter:function(a,b,c){let d={op:"runtime.enter",state:a,...void 0!==b?{from:b}:{},...void 0!==c?{eventId:c}:{}};f.emitPatch([d])},exit:function(a){f.emitPatch([{op:"runtime.exit",state:a}])},connect:function(){f.join().then(a=>{g=a.snapshot.def,h=a.snapshot.seq,i=a.presence,null!==g&&b?.({docId:a.snapshot.docId,def:g,seq:h,mtime:a.snapshot.mtime,origin:"join"}),m()}).catch(()=>{m()})},disconnect:function(){f.disconnect()}}}function cR(){return{settings:{namespace:"MyApp",name:"MyStateMachine",asynchronous:!1},events:[{name:"Internal",events:[]}],state:{name:"Root",states:[{name:"Idle",kind:"normal"},{name:"End",kind:"final"}]}}}function cS(){return{positions:{}}}function cT(a,b){if(a.name===b)return a;for(let c of a.states??[]){let a=cT(c,b);if(a)return a}return null}function cU(a,b,c){return a.name===b?c(a)??a:{...a,states:a.states?.map(a=>cU(a,b,c))}}function cV(a,b){return{...a,states:a.states?.filter(a=>a.name!==b).map(a=>cV(a,b))}}function cW(a){let b=[a.name];for(let c of a.states??[])b.push(...cW(c));return b}function cX(a){return a.events.flatMap(a=>(a.events??[]).map(a=>a.id))}function cY(a){let b=[],c=cW(a.state),d=cX(a);0===d.length&&b.push({ruleId:"V001",message:"No events defined"});let e=new Set;for(let a of c)e.has(a)&&b.push({ruleId:"V002",message:`Duplicate state name: ${a}`,element:a}),e.add(a);!function a(e){for(let a of e.transitions??[])d.includes(a.event)||b.push({ruleId:"V003",message:`Transition in '${e.name}' references unknown event '${a.event}'`,element:e.name}),a.nextState&&!c.includes(a.nextState)&&b.push({ruleId:"V004",message:`Transition in '${e.name}' targets unknown state '${a.nextState}'`,element:e.name});for(let c of("final"===e.kind&&(e.transitions?.length??0)>0&&b.push({ruleId:"V007",message:`Final state '${e.name}' must not have outgoing transitions`,element:e.name}),"final"===e.kind&&(e.states?.length??0)>0&&b.push({ruleId:"V008",message:`Final state '${e.name}' must not have child states`,element:e.name}),e.states??[]))a(c)}(a.state),a.state.states&&0!==a.state.states.length||b.push({ruleId:"V005",message:"Root state must have at least one child state",element:a.state.name});let f=new Set;for(let a of d)f.has(a)&&b.push({ruleId:"V003",message:`Duplicate event ID: ${a}`,element:a}),f.add(a);return b}function cZ(a,b){return{positions:{...x(a),...b.positions}}}Object.assign(cM,{Manager:cJ,Socket:cF,io:cM,connect:cM});let c$=!1,c_=(e=(a,b)=>({definition:cR(),layout:cZ(cR(),cS()),viewport:{...M},fileName:null,docPath:null,dirty:!1,remoteMtime:null,remoteStatus:"idle",remoteMessage:null,activeStates:[],presence:[],_applyingRemote:!1,selection:{kind:null,id:null},drawMode:"select",drawSource:null,contextMenu:{visible:!1,x:0,y:0,target:null},undoStack:[],redoStack:[],activeTab:"properties",errors:[],showCodePreview:!1,generatedCode:null,navigationPath:["Root"],currentParent:"Root",_pushHistory:()=>{let{definition:c,layout:d,undoStack:e}=b(),f={definition:JSON.parse(JSON.stringify(c)),layout:JSON.parse(JSON.stringify(d))};a({undoStack:[...e.slice(-50),f],redoStack:[]})},setDefinition:c=>{b()._pushHistory();let d=cZ(c,b().layout);a({definition:c,layout:d,dirty:!0,errors:cY(c)})},updateSettings:c=>{b()._pushHistory(),a({definition:{...b().definition,settings:{...b().definition.settings,...c}},dirty:!0})},addState:(c,d)=>{b()._pushHistory();let e={...b().definition},f=c??e.state.name;e.state=cU(e.state,f,a=>({...a,states:[...a.states??[],d]}));let g=cZ(e,b().layout);a({definition:e,layout:g,dirty:!0,errors:cY(e)})},updateState:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=cU(e.state,c,a=>({...a,...d})),a({definition:e,dirty:!0,errors:cY(e)})},removeState:c=>{b()._pushHistory();let d={...b().definition};d.state=cV(d.state,c);let e={positions:{...b().layout.positions}};delete e.positions[c],a({definition:d,layout:e,dirty:!0,errors:cY(d)})},nestState:(c,d)=>{b()._pushHistory();let e={...b().definition},f=cT(e.state,c);if(!f||c===d)return;let g=JSON.parse(JSON.stringify(f));e.state=cV(e.state,c),e.state=cU(e.state,d,a=>({...a,states:[...a.states??[],g]})),a({definition:e,dirty:!0,errors:cY(e)})},addEventSource:c=>{b()._pushHistory(),a({definition:{...b().definition,events:[...b().definition.events,c]},dirty:!0})},updateEventSource:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map((a,b)=>b===c?{...a,...d}:a),a({definition:e,dirty:!0})},removeEventSource:c=>{b()._pushHistory();let d={...b().definition};d.events=d.events.filter((a,b)=>b!==c),a({definition:d,dirty:!0,errors:cY(d)})},addEvent:(c,d=0)=>{b()._pushHistory();let e={...b().definition},f=e.events[d]??{name:"Internal",events:[]};f.events=[...f.events??[],c],e.events=e.events.map((a,b)=>b===d?f:a),a({definition:e,dirty:!0,errors:cY(e)})},updateEvent:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,...d}:a)})),a({definition:e,dirty:!0})},removeEvent:c=>{b()._pushHistory();let d={...b().definition};d.events=d.events.map(a=>({...a,events:a.events?.filter(a=>a.id!==c)})),a({definition:d,dirty:!0,errors:cY(d)})},addParameter:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:[...a.parameters??[],d]}:a)})),a({definition:e,dirty:!0})},removeParameter:(c,d)=>{b()._pushHistory();let e={...b().definition};e.events=e.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:a.parameters?.filter((a,b)=>b!==d)}:a)})),a({definition:e,dirty:!0})},updateParameter:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.events=f.events.map(a=>({...a,events:a.events?.map(a=>a.id===c?{...a,parameters:a.parameters?.map((a,b)=>b===d?{...a,...e}:a)}:a)})),a({definition:f,dirty:!0})},addAction:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=cU(f.state,c,a=>{let b=a[d]??{actions:[]};return{...a,[d]:{actions:[...b.actions,e]}}}),a({definition:f,dirty:!0})},removeAction:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=cU(f.state,c,a=>{let b=a[d];return b?{...a,[d]:{actions:b.actions.filter((a,b)=>b!==e)}}:a}),a({definition:f,dirty:!0})},updateAction:(c,d,e,f)=>{b()._pushHistory();let g={...b().definition};g.state=cU(g.state,c,a=>{let b=a[d];return b?{...a,[d]:{actions:b.actions.map((a,b)=>b===e?f:a)}}:a}),a({definition:g,dirty:!0})},addTransition:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=cU(e.state,c,a=>({...a,transitions:[...a.transitions??[],d]})),a({definition:e,dirty:!0,errors:cY(e)})},updateTransition:(c,d,e)=>{b()._pushHistory();let f={...b().definition};f.state=cU(f.state,c,a=>({...a,transitions:a.transitions?.map((a,b)=>b===d?{...a,...e}:a)})),a({definition:f,dirty:!0})},removeTransition:(c,d)=>{b()._pushHistory();let e={...b().definition};e.state=cU(e.state,c,a=>({...a,transitions:a.transitions?.filter((a,b)=>b!==d)})),a({definition:e,dirty:!0,errors:cY(e)})},setStatePosition:(c,d)=>{a({layout:{positions:{...b().layout.positions,[c]:d}}})},arrangeLayout:()=>{b()._pushHistory(),a({layout:{positions:x(b().definition)}})},hydrateLayout:(c,d)=>{a({layout:{positions:{...b().layout.positions,...c}},...d?{viewport:d}:{}})},setViewport:b=>a({viewport:b}),select:(b,c)=>a({selection:{kind:b,id:c}}),clearSelection:()=>a({selection:{kind:null,id:null}}),setDrawMode:b=>a({drawMode:b,drawSource:null}),setDrawSource:b=>a({drawSource:b}),showContextMenu:(b,c,d)=>a({contextMenu:{visible:!0,x:b,y:c,target:d}}),hideContextMenu:()=>a({contextMenu:{visible:!1,x:0,y:0,target:null}}),undo:()=>{let{undoStack:c,definition:d,layout:e}=b();if(0===c.length)return;let f=c[c.length-1],g={definition:JSON.parse(JSON.stringify(d)),layout:JSON.parse(JSON.stringify(e))};a({definition:f.definition,layout:f.layout,undoStack:c.slice(0,-1),redoStack:[...b().redoStack,g],dirty:!0,errors:cY(f.definition)})},redo:()=>{let{redoStack:c,definition:d,layout:e}=b();if(0===c.length)return;let f=c[c.length-1],g={definition:JSON.parse(JSON.stringify(d)),layout:JSON.parse(JSON.stringify(e))};a({definition:f.definition,layout:f.layout,undoStack:[...b().undoStack,g],redoStack:c.slice(0,-1),dirty:!0,errors:cY(f.definition)})},canUndo:()=>b().undoStack.length>0,canRedo:()=>b().redoStack.length>0,setActiveTab:b=>a({activeTab:b}),loadFromJson:(b,c)=>{try{let d=JSON.parse(b),e=ap(d.stateMachine??d.StateMachine??d);c$=!!d&&"object"==typeof d&&"state"in d&&!("stateMachine"in d)&&!("StateMachine"in d);let f=cZ(e,cS()),g=e.state?.name??"Root";a({definition:e,layout:f,fileName:c??null,dirty:!1,errors:cY(e),selection:{kind:null,id:null},undoStack:[],redoStack:[],navigationPath:[g],currentParent:g})}catch(a){console.error("Failed to parse definition:",a)}},exportJson:()=>{let{definition:a}=b();return JSON.stringify(c$?a:{stateMachine:a},null,2)},applyRemote:(c,d,e)=>{try{let f=JSON.parse(c),g=ap(f.stateMachine??f.StateMachine??f);c$=!!f&&"object"==typeof f&&"state"in f&&!("stateMachine"in f)&&!("StateMachine"in f);let h=cZ(g,b().layout),i=g.state?.name??"Root",j=b(),k=new Set(cW(g.state)),l=j.navigationPath.filter(a=>k.has(a)),m=l.length?l:[i],n=m[m.length-1],o=j.selection,p=("state"===o.kind?!!o.id&&k.has(o.id):"transition"===o.kind?!!o.id&&k.has(o.id.split(":")[0]):"event"===o.kind&&!!o.id&&cX(g).includes(o.id))?o:{kind:null,id:null};a({definition:g,layout:h,fileName:e??b().fileName,dirty:!1,remoteMtime:d,remoteStatus:"synced",remoteMessage:null,errors:cY(g),selection:p,navigationPath:m,currentParent:n})}catch(b){a({remoteStatus:"error",remoteMessage:String(b)})}},setRemoteStatus:(b,c=null)=>a({remoteStatus:b,remoteMessage:c}),setRemoteMtime:b=>a({remoteMtime:b}),setDocPath:b=>a({docPath:b||null}),enterState:c=>{let d=b().activeStates;d.includes(c)||a({activeStates:[...d,c]})},exitState:c=>{let d=b().activeStates;d.includes(c)&&a({activeStates:d.filter(a=>a!==c)})},setPresence:b=>a({presence:b}),applyRemoteOps:(c,d,e)=>{a({_applyingRemote:!0});try{let e=b(),f=c.filter(a=>"runtime.enter"!==a.op&&"runtime.exit"!==a.op),g=f.length?n(e.definition,f):e.definition,h=e.activeStates;for(let a of c)"runtime.enter"===a.op?h.includes(a.state)||(h=[...h,a.state]):"runtime.exit"===a.op&&h.includes(a.state)&&(h=h.filter(b=>b!==a.state));let i=cZ(g,e.layout),j=g.state?.name??"Root",k=new Set(cW(g.state)),l=e.navigationPath.filter(a=>k.has(a)),m=l.length?l:[j],o=m[m.length-1],p=e.selection,q=("state"===p.kind?!!p.id&&k.has(p.id):"transition"===p.kind?!!p.id&&k.has(p.id.split(":")[0]):"event"===p.kind&&!!p.id&&cX(g).includes(p.id))?p:{kind:null,id:null};a({definition:g,layout:i,activeStates:h,dirty:!1,remoteMtime:d,remoteStatus:"synced",remoteMessage:null,errors:cY(g),selection:q,navigationPath:m,currentParent:o})}catch(b){a({remoteStatus:"error",remoteMessage:String(b)})}finally{a({_applyingRemote:!1})}},validate:()=>{let c=cY(b().definition);return a({errors:c}),c},setGeneratedCode:b=>a({generatedCode:b}),setShowCodePreview:b=>a({showCodePreview:b}),navigateInto:c=>{let{definition:d,navigationPath:e}=b(),f=cT(d.state,c);f&&(f.states?.length??0)>0&&a({navigationPath:[...e,c],currentParent:c,selection:{kind:null,id:null}})},navigateUp:c=>{let{navigationPath:d}=b();if(d.length<=1)return;let e=c??d.length-2,f=d.slice(0,e+1);a({navigationPath:f,currentParent:f[f.length-1],selection:{kind:null,id:null}})},getCurrentChildren:()=>{let{definition:a,currentParent:c}=b(),d=cT(a.state,c);return d?.states??[]}}))?bD(e):bD,c0="canvas",c1=`[data-pinch-owner="${c0}"]`;function c2(a){return!!a&&"function"==typeof a.closest&&null!==a.closest(c1)}let c3="stateloom-canvas",c4="#030712",c5=["png","jpeg","svg","mermaid","markdown"],c6={png:"PNG",jpeg:"JPEG",svg:"SVG",mermaid:"Mermaid",markdown:"Markdown"},c7={png:"image/png",jpeg:"image/jpeg",svg:"image/svg+xml",mermaid:"text/vnd.mermaid",markdown:"text/markdown"},c8={png:"png",jpeg:"jpg",svg:"svg",mermaid:"mmd",markdown:"md"};async function c9(a,b,c={}){var d,e,f;let g;if("mermaid"===a||"markdown"===a){let c,f;g=new Blob([(d=b.definition,e="markdown"===a,c=["stateDiagram-v2"],d.state&&function a(b,c,d){let e=T(b);if(0===e.length)return;let f=" ".repeat(c+1),g=new Set;for(let a of e)for(let b of a.transitions??[]){if(!b.nextState)continue;let c=b.condition?`${b.event} [${b.condition}]`:b.event;d.push(`${f}${a.name} --> ${b.nextState} : ${c}`),g.add(a.name),g.add(b.nextState)}for(let a of e)g.has(a.name)||d.push(`${f}${a.name}`);for(let b of e)0!==T(b).length&&(d.push(`${f}state ${b.name} {`),a(b,c+1,d),d.push(`${f}}`))}(d.state,0,c),f=c.join("\n"),e?`\`\`\`mermaid
|
|
3
3
|
${f}
|
|
4
4
|
\`\`\`
|
|
5
5
|
`:`${f}
|