koppler 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){return typeof e?.then==`function`}function m(e){return e()}function h(e){for(var t=0;t<e.length;t++)e[t]()}function g(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function _(e,t,n=!1){return e===void 0?n?t():t:e}function v(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}function y(e,t){var n={};for(var r in e)t.includes(r)||(n[r]=e[r]);for(var i of Object.getOwnPropertySymbols(e))Object.propertyIsEnumerable.call(e,i)&&!t.includes(i)&&(n[i]=e[i]);return n}var b=1<<24,x=1024,S=2048,C=4096,w=8192,T=16384,ee=32768,te=1<<25,E=65536,ne=1<<19,re=1<<20,ie=1<<25,ae=1<<21,oe=1<<22,se=1<<23,ce=Symbol(`$state`),le=Symbol(`component`),ue=Symbol(`legacy props`),de=Symbol(``),fe=Symbol(`attributes`),pe=Symbol(`class`),me=Symbol(`style`),he=Symbol(`text`),ge=Symbol(`form reset`),_e=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},ve=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`),ye={},be=Symbol(`uninitialized`),xe=`http://www.w3.org/1999/xhtml`,Se=`http://www.w3.org/2000/svg`;function Ce(){console.warn(`https://svelte.dev/e/derived_inert`)}function we(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Te(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Ee(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var De=!1;function Oe(e){De=e}var ke;function Ae(e){if(e===null)throw we(),ye;return ke=e}function je(){return Ae(Tn(ke))}function D(e){if(De){if(Tn(ke)!==null)throw we(),ye;ke=e}}function Me(e=1){if(De){for(var t=e,n=ke;t--;)n=Tn(n);ke=n}}function Ne(e=!0){for(var t=0,n=ke;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=Tn(n);e&&n.remove(),n=i}}function Pe(e){if(!e||e.nodeType!==8)throw we(),ye;return e.data}function Fe(e){return e===this.v}function Ie(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Le(e){return!Ie(e,this.v)}function Re(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function ze(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Be(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Ve(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function He(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Ue(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function We(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Ge(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Ke(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function qe(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Je(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ye(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Xe=!1;function Ze(){Xe=!0}var Qe=[];function $e(e,t=!1,n=!1){return et(e,new Map,``,Qe,null,n)}function et(t,n,r,i,a=null,o=!1){if(typeof t==`object`&&t){var c=n.get(t);if(c!==void 0)return c;if(t instanceof Map)return new Map(t);if(t instanceof Set)return new Set(t);if(e(t)){var u=Array(t.length);n.set(t,u),a!==null&&n.set(a,u);for(var d=0;d<t.length;d+=1){var f=t[d];d in t&&(u[d]=et(f,n,r,i,null,o))}return u}if(l(t)===s){u={},n.set(t,u),a!==null&&n.set(a,u);for(var p of Object.keys(t))u[p]=et(t[p],n,r,i,null,o);return u}if(t instanceof Date)return t.getTime(),structuredClone(t);if(typeof t.toJSON==`function`&&!o)return et(t.toJSON(),n,r,i,t)}if(t instanceof EventTarget)return t;try{return structuredClone(t)}catch{return t}}function tt(e){let t=e.p;for(;t!==null&&t.c===null;)t=t.p;return t?.c??null}function nt(e,t){return e===null&&Re(t),e.c??=new Map(tt(e)||void 0)}var rt=null;function it(e){rt=e}function at(e){return nt(rt,`getContext`).get(e)}function ot(e,t){return nt(rt,`setContext`).set(e,t),t}function st(e){return nt(rt,`hasContext`).has(e)}function O(e,t=!1,n){rt={p:rt,i:!1,c:null,e:null,s:e,x:null,r:dr,l:Xe&&!t?{s:null,u:null,$:[]}:null}}function k(e){var t=rt,n=t.e;if(n!==null){t.e=null;for(var r of n)Rn(r)}return e!==void 0&&(t.x=e),t.i=!0,rt=t.p,ct(e)}function ct(e={}){return i(e,le,{value:!0}),e}function lt(){return!Xe||rt!==null&&rt.l===null}var ut=[];function dt(){var e=ut;ut=[],h(e)}function ft(e){if(ut.length===0&&!Ht){var t=ut;queueMicrotask(()=>{t===ut&&dt()})}ut.push(e)}function pt(){for(;ut.length>0;)dt()}var mt=~(S|C|x);function ht(e,t){e.f=e.f&mt|t}function gt(e){e.f&512||e.deps===null?ht(e,x):ht(e,C)}function _t(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),ht(e,x)}function vt(e,t){if(t){let t=document.body;e.autofocus=!0,ft(()=>{document.activeElement===t&&e.focus()})}}function yt(e){De&&wn(e)!==null&&En(e)}var bt=!1;function xt(){bt||(bt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ge]?.()})},{capture:!0}))}function St(e){var t=cr,n=dr;ur(null),fr(null);try{return e()}finally{ur(t),fr(n)}}function Ct(e,t,n,r=n){e.addEventListener(t,()=>St(n));let i=e[ge];e[ge]=i?()=>{i(),r(!0)}:()=>r(!0),xt()}function wt(e,t,n,r){let i=lt()?Ot:jt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=dr,c=Tt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){jn(e,s)}Et()}}var d=Dt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>At(e))).then(u).catch(e=>jn(e,s)).finally(d)}l?l.then(()=>{s.f&16384?d():(c(),f(),Et())}):f()}function Tt(){var e=dr,t=cr,n=rt,r=Rt;return function(i=!0){fr(e),ur(t),it(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function Et(e=!0){fr(null),ur(null),it(null),e&&Rt?.deactivate()}function Dt(){var e=dr,t=e.b,n=Rt,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function Ot(e){var t=2|S;return dr!==null&&(dr.f|=ne),{ctx:rt,deps:null,effects:null,equals:Fe,f:t,fn:e,reactions:null,rv:0,v:be,wv:0,parent:dr,ac:null}}var kt=Symbol(`obsolete`);function At(e,t,n){let r=dr;r===null&&ze();var i=void 0,a=on(be),o=!cr,s=new Set;return Un(()=>{var t=dr,n=g();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==_e&&n.reject(e)}).finally(Et)}catch(e){n.reject(e),Et()}var c=Rt;if(o){if(t.f&32768)var l=Dt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(kt);else for(let e of s.values())e.reject(kt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==kt&&(c.activate(),t?(a.f|=se,un(a,t)):(a.f&8388608&&(a.f^=se),un(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),In(()=>{for(let e of s)e.reject(kt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function A(e){let t=Ot(e);return mr(t),t}function jt(e){let t=Ot(e);return t.equals=Le,t}function Mt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Zn(t[n])}}function Nt(e){var t,n=dr,r=e.parent;if(!or&&r!==null&&e.v!==be&&r.f&24576)return Ce(),e.v;fr(r);try{Mt(e),t=Er(e)}finally{fr(n)}return t}function Pt(e){var t=Nt(e);!e.equals(t)&&(e.wv=Cr(),(!Rt?.is_fork||e.deps===null)&&(Rt===null?e.v=t:(Rt.capture(e,t,!0),zt?.capture(e,t,!0)),e.deps===null))?ht(e,x):or||(Bt===null?gt(e):(Fn()||Rt?.is_fork)&&Bt.set(e,t))}function Ft(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac!==null&&St(()=>{t.ac.abort(_e),t.ac=null}),t.fn!==null&&(t.teardown=f),kr(t,0),Yn(t))}function It(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&Ar(t)}var Lt=null,Rt=null,zt=null,Bt=null,Vt=null,Ht=!1,Ut=!1,Wt=null,Gt=null,Kt=0,qt=1,Jt=class e{id=qt++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Lt===null?Lt=this:(Lt.#n=this,this.#t=Lt),Lt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)ht(r,S),t(r);for(r of n.m)ht(r,C),t(r)}this.#p.add(e)}#g(){var e=[];for(let i of this.#c)if(!(i.f&16384||!(i.f&6144))){for(var t=i,n=!1;t.parent!==null;){t=t.parent;var r=t.f;if(r&96){if(!(r&1024)){n=!0;break}t.f^=x}}n||e.push(t)}return this.#c=[],e}#_(){this.#e=!0;for(let e of this.#u)this.#d.delete(e),ht(e,S),this.schedule(e);for(let e of this.#d)ht(e,C),this.schedule(e);this.apply();for(var t=Wt=[],n=[],r=Gt=[];this.#c.length>0;){Kt++>1e3&&(this.#S(),Xt());for(let e of this.#g())try{this.#v(e,t,n)}catch(t){throw tn(e),this.#h()||this.discard(),t}}if(Rt=null,r.length>0){var i=e.ensure();for(let e of r)i.schedule(e)}if(Wt=null,Gt=null,this.#h()){this.#x(n),this.#x(t);for(let[e,t]of this.#f)en(e,t);r.length>0&&Rt.#_();return}let a=this.#y();if(a)this.#x(n),this.#x(t),a.#b(this);else{this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),zt=this,Qt(n),Qt(t),zt=null,this.#s?.resolve();var o=Rt;if(this.#a===0&&(this.#c.length===0||o!==null)&&this.#S(),this.#c.length>0){if(o!==null){for(let e of this.#c)o.#c.push(e);this.#c=[]}else o=this}o!==null&&(rn.clear(),o.#_())}}#v(e,t,n){e.f^=x;for(var r=e.first;r!==null;){var i=r.f,a=!!(i&96);if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=x:i&4?t.push(r):wr(r)&&(i&16&&this.#d.add(r),Ar(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#y(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#b(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),ht(i,S),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),Rt=this,this.#_()}#x(e){for(var t=0;t<e.length;t+=1)_t(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==be&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),Bt?.set(e,t)),this.is_fork||(e.v=t)}activate(){Rt=this}deactivate(){Rt=null,Bt=null}flush(){try{Ut=!0,Rt=this,this.#_()}finally{Kt=0,Vt=null,Wt=null,Gt=null,Ut=!1,Rt=null,Bt=null,rn.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(kt);this.#S(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,ft(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=g()).promise}static ensure(){if(Rt===null){let t=Rt=new e;!Ut&&!Ht&&ft(()=>{t.#e||t.flush()})}return Rt}apply(){Bt=null}schedule(e){Vt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)?e.b.defer_effect(e):this.#c.push(e)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Lt=e:t.#t=e,this.linked=!1}}};function Yt(e){var t=Ht,n=zt;zt=null,Ht=!0;try{var r;for(e&&(Yt(),r=e());;){if(pt(),Rt===null)return r;Rt.flush()}}finally{Ht=t,zt=n}}function Xt(){try{We()}catch(e){jn(e,Vt)}}var Zt=null;function Qt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&wr(r)&&(Zt=new Set,Ar(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&$n(r),Zt?.size>0)){rn.clear();for(let e of Zt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Zt.has(n)&&(Zt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Ar(n)}}Zt.clear()}}Zt=null}}function $t(e){Rt.schedule(e)}function en(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),ht(e,x);for(var n=e.first;n!==null;)en(n,t),n=n.next}}function tn(e){ht(e,x);for(var t=e.first;t!==null;)tn(t),t=t.next}var nn=new Set,rn=new Map,an=!1;function on(e,t){return{f:0,v:e,reactions:null,equals:Fe,rv:0,wv:0}}function j(e,t){let n=on(e,t);return mr(n),n}function sn(e,t=!1,n=!0){let r=on(e);return t||(r.equals=Le),Xe&&n&&rt!==null&&rt.l!==null&&(rt.l.s??=[]).push(r),r}function M(e,t,n=!1){return cr!==null&&(!lr||cr.f&131072)&&lt()&&cr.f&4325394&&(pr===null||!pr.has(e))&&Je(),un(e,n?mn(t):t,Gt)}var cn=null,ln=0;function un(e,t,n=null){if(!e.equals(t)){or?rn.set(e,t):rn.has(e)||rn.set(e,e.v);var r=Jt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&Nt(t),Bt===null&&gt(t)}e.wv=Cr(),cn=null,ln=0,pn(e,S,n),cn=null,lt()&&dr!==null&&dr.f&1024&&!(dr.f&96)&&(_r===null?vr([e]):_r.push(e)),!r.is_fork&&nn.size>0&&!an&&dn()}return t}function dn(){an=!1;for(let e of nn){e.f&1024&&ht(e,C);let t;try{t=wr(e)}catch{t=!0}t&&Ar(e)}nn.clear()}function fn(e){M(e,e.v+1)}function pn(e,t,n){var r=e.reactions;if(r!==null){var i=lt(),a=r.length;if(ln+=a,ln>1e5&&cn===null&&(cn=new Set),cn!==null){if(cn.has(e))return;cn.add(e)}for(var o=0;o<a;o++){var s=r[o],c=s.f;if(i||s!==dr){var l=(c&S)===0;if(l&&ht(s,t),c&131072)nn.add(s);else if(c&2){var u=s;Bt?.delete(u),pn(u,C,n)}else if(l){var d=s;c&16&&Zt!==null&&Zt.add(d),n===null?$t(d):n.push(d)}}}}}function mn(t){if(typeof t!=`object`||!t||ce in t||le in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=j(0),u=null,d=xr,f=e=>{if(xr===d)return e();var t=cr,n=xr;ur(null),Sr(d);var r=e();return ur(t),Sr(n),r};return i&&r.set(`length`,j(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Ke();var i=r.get(t);return i===void 0?f(()=>{var e=j(n.value,u);return r.set(t,e),e}):M(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>j(be,u));r.set(t,e),fn(o)}}else M(n,be),fn(o);return!0},get(e,n,i){if(n===ce)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>j(mn(s?e[n]:be),u)),r.set(n,o)),o!==void 0){var c=R(o);return c===be?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){this.has?.(e,t);var n=Reflect.getOwnPropertyDescriptor(e,t),i=r.get(t);if(i!==void 0){var a=R(i);if(a===be)return;if(n&&`value`in n)n.value=a;else return{enumerable:!0,configurable:!0,value:a,writable:!0}}return n},has(e,t){if(t===ce)return!0;var n=r.get(t),i=n!==void 0&&n.v!==be||Reflect.has(e,t);return(n!==void 0||dr!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>j(i?mn(e[t]):be,u)),r.set(t,n)),R(n)===be)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;d<c.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>j(be,u)),r.set(d+``,p)):M(p,be)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>j(void 0,u)),M(c,mn(n)),r.set(t,c));else{l=c.v!==be;var m=f(()=>mn(n));M(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&M(g,_+1)}fn(o)}return!0},ownKeys(e){R(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==be});for(var[n,i]of r)i.v!==be&&!(n in e)&&t.push(n);return t},setPrototypeOf(){qe()}})}function hn(e){try{if(typeof e==`object`&&e&&ce in e)return e[ce]}catch{}return e}function gn(e,t){return Object.is(hn(e),hn(t))}var _n,vn,yn,bn,xn;function Sn(){if(_n===void 0){_n=window,vn=document,yn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;bn=a(t,`firstChild`).get,xn=a(t,`nextSibling`).get,u(e)&&(e[pe]=void 0,e[fe]=null,e[me]=void 0,e.__e=void 0),u(n)&&(n[he]=void 0)}}function Cn(e=``){return document.createTextNode(e)}function wn(e){return bn.call(e)}function Tn(e){return xn.call(e)}function N(e,t){if(!De)return wn(e);var n=wn(ke);if(n===null)n=ke.appendChild(Cn());else if(t&&n.nodeType!==3){var r=Cn();return n?.before(r),Ae(r),r}return t&&kn(n),Ae(n),n}function P(e,t=!1){if(!De){var n=wn(e);return n instanceof Comment&&n.data===``?Tn(n):n}if(t){if(ke?.nodeType!==3){var r=Cn();return ke?.before(r),Ae(r),r}kn(ke)}return ke}function F(e,t=!1){if(!De)return wn(e);var n=N(e,t);return D(e),n}function I(e,t=1,n=!1){let r=De?ke:e;for(var i;t--;)i=r,r=Tn(r);if(!De)return r;if(n){if(r?.nodeType!==3){var a=Cn();return r===null?i?.after(a):r.before(a),Ae(a),a}kn(r)}return Ae(r),r}function En(e){e.textContent=``}function Dn(){return!1}function On(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function kn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function An(e){var t=dr;if(t===null)return cr.f|=se,e;if(!(t.f&32768)&&!(t.f&4))throw e;jn(e,t)}function jn(e,t){if(e===ye)throw e;if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128&&!(t.f&33570816)){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}function Mn(e){dr===null&&(cr===null&&Ue(e),He()),or&&Ve(e)}function Nn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Pn(e,t){var n=dr;n!==null&&n.f&8192&&(e|=w);var r={ctx:rt,deps:null,nodes:null,f:e|S|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};Rt?.register_created_effect(r);var i=r;if(e&4)Wt===null?Jt.ensure().schedule(r):Wt.push(r);else if(t!==null){try{Ar(r)}catch(e){throw Zn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=E))}if(i!==null&&(i.parent=n,n!==null&&Nn(i,n),cr!==null&&cr.f&2&&!(e&64))){var a=cr;(a.effects??=[]).push(i)}return r}function Fn(){return cr!==null&&!lr}function In(e){let t=Pn(8,null);return ht(t,x),t.teardown=e,t}function Ln(e){Mn(`$effect`);var t=dr.f;if(!cr&&t&32&&rt!==null&&!rt.i){var n=rt;(n.e??=[]).push(e)}else return Rn(e)}function Rn(e){return Pn(4|re,e)}function zn(e){return Mn(`$effect.pre`),Pn(8|re,e)}function Bn(e){Jt.ensure();let t=Pn(64|ne,e);return()=>{Zn(t)}}function Vn(e){Jt.ensure();let t=Pn(64|ne,e);return(e={})=>new Promise(n=>{e.outro?er(t,()=>{Zn(t),n(void 0)}):(Zn(t),n(void 0))})}function Hn(e){return Pn(4,e)}function Un(e){return Pn(oe|ne,e)}function Wn(e,t=0){return Pn(8|t,e)}function L(e,t=[],n=[],r=[]){wt(r,t,n,t=>{Pn(8,()=>{e(...t.map(R))})})}function Gn(e,t=0){return Pn(16|t,e)}function Kn(e,t=0){return Pn(b|t,e)}function qn(e){return Pn(32|ne,e)}function Jn(e){var t=e.teardown;if(t!==null){let n=or,r=cr;sr(!0),ur(null);try{t.call(null)}catch(t){jn(t,e.parent)}finally{sr(n),ur(r)}}}function Yn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&St(()=>{e.abort(_e)});var r=n.next;n.f&64?n.parent=null:Zn(n,t),n=r}}function Xn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Zn(t),t=n}}function Zn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Qn(e.nodes.start,e.nodes.end),n=!0),e.f|=te,Yn(e,t&&!n),kr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Jn(e),e.f^=te,e.f|=T;var i=e.parent;i!==null&&i.first!==null&&$n(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Qn(e,t){for(;e!==null;){var n=e===t?null:Tn(e);e.remove(),e=n}}function $n(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function er(e,t,n=!0){var r=[];e.f|=256,tr(e,r,!0);var i=()=>{n&&Zn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function tr(e,t,n){if(!(e.f&8192)){e.f^=w;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=!!(i.f&65536)||!!(i.f&32)&&!!(e.f&16);tr(i,t,o?n:!1)}i=a}}}function nr(e){e.f&=-257,rr(e,!0)}function rr(e,t){if(!(e.f&256)&&e.f&8192){e.f^=w,e.f&1024||(ht(e,S),Jt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=!!(n.f&65536)||!!(n.f&32);rr(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function ir(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:Tn(n);t.append(n),n=i}}var ar=null,or=!1;function sr(e){or=e}var cr=null,lr=!1;function ur(e){cr=e}var dr=null;function fr(e){dr=e}var pr=null;function mr(e){cr!==null&&(cr.f&2097152||cr.f&2)&&(pr??=new Set).add(e)}var hr=null,gr=0,_r=null;function vr(e){_r=e}var yr=1,br=0,xr=br;function Sr(e){xr=e}function Cr(){return++yr}function wr(e){var t=e.f;if(t&2048)return!0;if(t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(wr(a)&&Pt(a),a.wv>e.wv)return!0}t&512&&Bt===null&&ht(e,x)}return!1}function Tr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(pr!==null&&pr.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?Tr(a,t,!1):t===a&&(n?ht(a,S):a.f&1024&&ht(a,C),$t(a))}}function Er(e){var t=hr,n=gr,r=_r,i=cr,a=pr,o=rt,s=lr,c=xr,l=e.f;hr=null,gr=0,_r=null,cr=l&96?null:e,pr=null,it(e.ctx),lr=!1,xr=++br,e.ac!==null&&(St(()=>{e.ac.abort(_e)}),e.ac=null);try{e.f|=ae;var u=e.fn,d=u();e.f|=ee;var f=Dr(e);if(lt()&&_r!==null&&!lr&&f!==null&&!(e.f&6146))for(var p=0;p<_r.length;p++)Tr(_r[p],e);if(i!==null&&i!==e){if(br++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=br;if(t!==null)for(let e of t)e.rv=br;_r!==null&&(r===null?r=_r:r.push(..._r))}return e.f&8388608&&(e.f^=se),d}catch(t){return Dr(e),An(t)}finally{e.f^=ae,hr=t,gr=n,_r=r,cr=i,pr=a,it(o),lr=s,xr=c}}function Dr(e){var t=e.deps,n=Rt?.is_fork;if(hr!==null){var r;if(n||kr(e,gr),t!==null&&gr>0)for(t.length=gr+hr.length,r=0;r<hr.length;r++)t[gr+r]=hr[r];else e.deps=t=hr;if(Fn()&&e.f&512)for(r=gr;r<t.length;r++)(t[r].reactions??=[]).push(e)}else!n&&t!==null&&gr<t.length&&(kr(e,gr),t.length=gr);return t}function Or(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(hr===null||!n.call(hr,r))){var s=r;s.f&512&&(s.f^=512),s.v!==be&&gt(s),s.ac!==null&&St(()=>{s.ac.abort(_e),s.ac=null,ht(s,S)}),Ft(s),kr(s,0)}}function kr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Or(e,n[r])}function Ar(e){var t=e.f;if(!(t&16384)){ht(e,x);var n=dr;dr=e;try{t&16777232?Xn(e):Yn(e),Jn(e);var r=Er(e);e.teardown=typeof r==`function`?r:null,e.wv=yr}finally{dr=n}}}async function jr(){await Promise.resolve(),Yt()}function R(e){var t=!!(e.f&2);if(ar?.add(e),cr!==null&&!lr&&!(dr!==null&&dr.f&16384)&&(pr===null||!pr.has(e))){var r=cr.deps;if(cr.f&2097152)e.rv<br&&(e.rv=br,hr===null&&r!==null&&r[gr]===e?gr++:hr===null?hr=[e]:hr.push(e));else{cr.deps??=[],n.call(cr.deps,e)||cr.deps.push(e);var i=e.reactions;i===null?e.reactions=[cr]:n.call(i,cr)||i.push(cr)}}if(or&&rn.has(e))return rn.get(e);if(t){var a=e;if(or){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||Nr(a))&&(o=Nt(a)),rn.set(a,o),o}var s=!(a.f&512)&&!lr&&cr!==null&&!!(cr.f&512),c=(a.f&ee)===0;wr(a)&&(s&&(a.f|=512),Pt(a)),s&&!c&&(It(a),Mr(a))}if(Bt?.has(e))return Bt.get(e);if(e.f&8388608)throw e.v;return e.v}function Mr(e){if(e.f|=512,e.deps!==null)for(let r of e.deps){var t=r.reactions;t===null?r.reactions=[e]:n.call(t,e)||t.push(e),r.f&2&&!(r.f&512)&&(It(r),Mr(r))}}function Nr(e){if(e.v===be)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(rn.has(t)||t.f&2&&Nr(t))return!0;return!1}function Pr(e){var t=lr;try{return lr=!0,e()}finally{lr=t}}function Fr(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(ce in e)Ir(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&ce in n&&Ir(n)}}}function Ir(e,t=new Set){if(typeof e==`object`&&e&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{Ir(e[n],t)}catch{}let n=l(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){let t=o(n);for(let n in t){let r=t[n].get;if(r)try{r.call(e)}catch{}}}}}function Lr(e){return e.endsWith(`capture`)&&e!==`gotpointercapture`&&e!==`lostpointercapture`}var Rr=[`beforeinput`,`click`,`change`,`dblclick`,`contextmenu`,`focusin`,`focusout`,`input`,`keydown`,`keyup`,`mousedown`,`mousemove`,`mouseout`,`mouseover`,`mouseup`,`pointerdown`,`pointermove`,`pointerout`,`pointerover`,`pointerup`,`touchend`,`touchmove`,`touchstart`];function zr(e){return Rr.includes(e)}var Br=`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`),Vr={formnovalidate:`formNoValidate`,ismap:`isMap`,nomodule:`noModule`,playsinline:`playsInline`,readonly:`readOnly`,defaultvalue:`defaultValue`,defaultchecked:`defaultChecked`,srcobject:`srcObject`,novalidate:`noValidate`,allowfullscreen:`allowFullscreen`,disablepictureinpicture:`disablePictureInPicture`,disableremoteplayback:`disableRemotePlayback`};function Hr(e){return e=e.toLowerCase(),Vr[e]??e}[...Br];var Ur=[`touchstart`,`touchmove`];function Wr(e){return Ur.includes(e)}var Gr=[`textarea`,`script`,`style`,`title`];function Kr(e){return Gr.includes(e)}var qr=Symbol(`events`),Jr=new Set,Yr=new Set;function Xr(e,t,n,r={}){function i(e){if(r.capture||ti.call(t,e),!e.cancelBubble)return St(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?(i.__removed=!1,ft(()=>{i.__removed||t.addEventListener(e,i,r)})):t.addEventListener(e,i,r),i}function Zr(e,t,n,r={}){var i=Xr(t,e,n,r);return()=>{i.__removed=!0,e.removeEventListener(t,i,r)}}function z(e,t,n,r,i){var a={capture:r,passive:i},o=Xr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&In(()=>{o.__removed=!0,t.removeEventListener(e,o,a)})}function B(e,t,n){(t[qr]??={})[e]=n}function Qr(e){for(var t=0;t<e.length;t++)Jr.add(e[t]);for(var n of Yr)n(e)}var $r=null,ei=!1;function ti(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;$r=e,ei||(ei=!0,setTimeout(()=>{ei=!1,$r=null}));var s=0,c=$r===e&&e[qr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[qr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=cr,f=dr;ur(null),fr(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[qr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[qr]=t,delete e.currentTarget,ur(d),fr(f)}}}var ni=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function ri(e){return ni?.createHTML(e)??e}function ii(e){var t=On(`template`);return t.innerHTML=ri(e.replaceAll(`<!>`,`<!---->`)),t.content}function ai(e,t){var n=dr;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function V(e,t){var n=!!(t&1),r=!!(t&2),i,a=!e.startsWith(`<!>`);return()=>{if(De)return ai(ke,null),ke;i===void 0&&(i=ii(a?e:`<!>`+e),n||(i=wn(i)));var t=r||yn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=wn(t),s=t.lastChild;ai(o,s)}else ai(t,t);return t}}function oi(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=!!(t&1),a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(De)return ai(ke,null),ke;if(!o){var e=wn(ii(a));if(i)for(o=document.createDocumentFragment();wn(e);)o.appendChild(wn(e));else o=wn(e)}var t=o.cloneNode(!0);if(i){var n=wn(t),r=t.lastChild;ai(n,r)}else ai(t,t);return t}}function si(e,t){return oi(e,t,`svg`)}function ci(e=``){if(!De){var t=Cn(e+``);return ai(t,t),t}var n=ke;return n.nodeType===3?kn(n):(n.before(n=Cn()),Ae(n)),ai(n,n),n}function li(){if(De)return ai(ke,null),ke;var e=document.createDocumentFragment(),t=document.createComment(``),n=Cn();return e.append(t,n),ai(t,n),e}function H(e,t){if(De){var n=dr;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=ke),je()}else e!==null&&e.before(t)}function ui(){if(De&&ke&&ke.nodeType===8&&ke.textContent?.startsWith(`$`)){let e=ke.textContent.substring(1);return je(),e}return(window.__svelte??={}).uid??=1,`c${window.__svelte.uid++}`}function di(e){let t=0,n=on(0),r;return()=>{Fn()&&(R(n),Wn(()=>(t===0&&(r=Pr(()=>e(()=>fn(n)))),t+=1,()=>{ft(()=>{--t,t===0&&(r?.(),r=void 0,fn(n))})})))}}var fi=E|ne;function pi(e,t,n,r){new mi(e,t,n,r)}var mi=class{parent;is_pending=!1;transform_error;#e;#t=De?ke:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=di(()=>(this.#m=on(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=dr;t.b=this,t.f|=128,n(e)},this.parent=dr.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Gn(()=>{if(De){let e=Pe(this.#t);je();let t=e===`[!`;if(e.startsWith(`[?`)){let t=JSON.parse(e.slice(2));this.#_(t)}else t?this.#b():this.#g()}else this.#x()},fi),De&&(this.#e=ke)}#g(){try{this.#a=qn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed,{reset:n,invoke_onerror:r}=this.#v(e);ft(r),t&&(this.#s=qn(()=>{t(this.#e,()=>e,()=>n)}))}#v(e){var t=!1,n=!1;let r=()=>{this.#y()||(t?Ee():(t=!0,n&&Ye(),this.#s!==null&&er(this.#s,()=>{this.#s=null}),this.#C(()=>{this.#x()})))};return{reset:r,invoke_onerror:()=>{if(!this.#y())try{n=!0,this.#n.onerror?.(e,r),n=!1}catch(e){jn(e,this.#i&&this.#i.parent)}}}}#y(){return(this.#i.f&(T|te))!==0}#b(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=qn(()=>e(this.#e)),ft(()=>{if(!this.#y()){var e=this.#c=document.createDocumentFragment(),t=Cn(),n=!1;e.append(t),this.#a=this.#C(()=>{try{return qn(()=>this.#r(t))}catch(e){try{this.error(e),n=!0}catch(e){jn(e,this.#i.parent)}return null}}),this.#a===null?(this.#c=null,n&&this.#S(Rt)):this.#u===0&&(this.#e.before(e),this.#c=null,er(this.#o,()=>{this.#o=null}),this.#S(Rt))}}))}#x(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=qn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();ir(this.#a,e);let t=this.#n.pending;this.#o=qn(()=>t(this.#e))}else this.#S(Rt)}catch(e){this.error(e)}}#S(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){_t(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#C(e){var t=dr,n=cr,r=rt;fr(this.#i),ur(this.#i),it(this.#i.ctx);try{return Jt.ensure(),e()}finally{fr(t),ur(n),it(r)}}#w(e,t){this.has_pending_snippet()?(this.#u+=e,this.#u===0&&(this.#S(t),this.#o&&er(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))):this.parent&&this.parent.#w(e,t)}update_pending_count(e,t){this.#w(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,ft(()=>{this.#d=!1,this.#m&&un(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),R(this.#m)}error(e){if(e===ye||!this.#n.onerror&&!this.#n.failed)throw e;Rt?.is_fork?(this.#a&&Rt.skip_effect(this.#a),this.#o&&Rt.skip_effect(this.#o),this.#s&&Rt.skip_effect(this.#s),Rt.oncommit(()=>{this.#y()||this.#T(e)})):this.#T(e)}#T(e){this.#a&&=(Zn(this.#a),null),this.#o&&=(Zn(this.#o),null),this.#s&&=(Zn(this.#s),null),De&&(Ae(this.#t),Me(),Ae(Ne()));let t=this.#n.failed,n=e=>{if(this.#y())return;let{reset:n,invoke_onerror:r}=this.#v(e);r(),t&&!this.#y()&&(this.#s=this.#C(()=>{try{return qn(()=>{var r=dr;r.b=this,r.f|=128,t(this.#e,()=>e,()=>n)})}catch(e){return jn(e,this.#i.parent),null}}))};ft(()=>{if(!this.#y()){var t;try{t=this.transform_error(e)}catch(e){jn(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(n,e=>jn(e,this.#i&&this.#i.parent)):n(t)}})}};function U(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[he]??=e.nodeValue)&&(e[he]=n,e.nodeValue=`${n}`)}function hi(e,t){return _i(e,t)}var gi=new Map;function _i(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){Sn();var l=void 0,u=Vn(()=>{var s=n??t.appendChild(Cn());pi(s,{pending:()=>{}},t=>{O({});var n=rt;if(o&&(n.c=o),a&&(i.$$events=a),De&&ai(t,null),l=e(t,i)||ct(),De&&(dr.nodes.end=ke,ke===null||ke.nodeType!==8||ke.data!==`]`))throw we(),ye;k()},c);var u=new Set,d=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!u.has(r)){u.add(r);var i=Wr(r);for(let e of[t,document]){var a=gi.get(e);a===void 0&&(a=new Map,gi.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,ti,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(Jr)),Yr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=gi.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,ti),r.delete(e),r.size===0&&gi.delete(n)):r.set(e,i)}Yr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return vi.set(l,u),l}var vi=new WeakMap,yi=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)nr(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(nr(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Zn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();ir(r,t),t.append(Cn()),this.#n.set(e,{effect:r,fragment:t})}else Zn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),er(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Zn(n.effect),this.#n.delete(e))};ensure(e,t){var n=Rt,r=Dn();if(t&&!this.#t.has(e)&&!this.#n.has(e)){if(r){var i=document.createDocumentFragment(),a=Cn();i.append(a),this.#n.set(e,{effect:qn(()=>t(a)),fragment:i})}else this.#t.set(e,qn(()=>t(this.anchor)))}if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else De&&(this.anchor=ke),this.#a(n)}},bi=0,xi=1,Si=2;function Ci(e,t,n,r,i){De&&je();var a=lt(),o=be,s=a?on(o):sn(o,!1,!1),c=a?on(o):sn(o,!1,!1),l=new yi(e);Gn(()=>{var a=Rt,o=t(),u=!1;let d=De&&p(o)===(e.data===`[!`);if(d&&(Ae(Ne()),Oe(!1)),p(o)){var f=Tt(),m=!1;let e=e=>{if(!u){m=!0,f(!1),Rt===a&&a.deactivate(),Jt.ensure();try{e()}finally{Et(!1),Ht||Yt()}}};o.then(t=>{e(()=>{un(s,t),l.ensure(xi,r&&(e=>r(e,s)))})},t=>{e(()=>{if(un(c,t),l.ensure(Si,i&&(e=>i(e,c))),!i)throw c.v})}),De?l.ensure(bi,n):ft(()=>{m||e(()=>{l.ensure(bi,n)})})}else un(s,o),l.ensure(xi,r&&(e=>r(e,s)));return d&&Oe(!0),()=>{u=!0}})}function W(e,t,n=!1){var r;De&&(r=ke,je());var i=new yi(e),a=n?E:0;function o(e,t){if(De){var n=Pe(r);if(e!==parseInt(n.substring(1))){var a=Ne();Ae(a),i.anchor=a,Oe(!1),i.ensure(e,t),Oe(!0);return}}i.ensure(e,t)}Gn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}var wi=Symbol(`NaN`);function Ti(e,t,n){De&&je();var r=new yi(e),i=!lt();Gn(()=>{var e=t();e!==e&&(e=wi),i&&typeof e==`object`&&e&&(e={}),r.ensure(e,n)})}function Ei(e,t){De&&Ae(wn(e)),Wn(()=>{var n=t();for(var r in n){var i=n[r];i==null||i===``?e.style.removeProperty(r):e.style.setProperty(r,i)}})}function Di(e,t){return t}function Oi(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];er(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;ki(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null&&e.pending.size===0;if(l){var u=n,d=u.parentNode;En(d),d.append(u),e.items.clear()}ki(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function ki(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=ie,ir(a,document.createDocumentFragment())):Zn(t[i],n)}}var Ai;function G(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=De?Ae(wn(u)):u.appendChild(Cn())}De&&je();var d=null,f=jt(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p=new Map,m=!0;function h(e){if(!(_.effect.f&16384)){_.pending.delete(e);var t=R(f);_.fallback=d,Mi(_,t,c,n,a),d!==null&&(t.length===0?d.f&33554432?(d.f^=ie,Pi(d,null,c)):nr(d):er(d,()=>{d=null}))}}function g(e){_.pending.delete(e)}var _={effect:Gn(()=>{var e=R(f),t=e.length;let r=!1;De&&Pe(c)===`[!`!=(t===0)&&(c=Ne(),Ae(c),Oe(!1),r=!0);for(var u=new Set,_=Rt,v=Dn(),y=0;y<t;y+=1){De&&ke.nodeType===8&&ke.data===`]`&&(c=ke,r=!0,Oe(!1));var b=e[y],x=a(b,y),S=m?null:l.get(x);S?(S.v&&un(S.v,b),S.i&&un(S.i,y),v&&_.unskip_effect(S.e)):(S=Ni(l,m?c:Ai??=Cn(),b,x,y,o,n,i),m||(S.e.f|=ie),l.set(x,S)),u.add(x)}if(t===0&&s&&!d&&(m?d=qn(()=>s(c)):(d=qn(()=>s(Ai??=Cn())),d.f|=ie)),t>u.size&&Be(``,``,``),De&&t>0&&Ae(Ne()),!m){if(p.set(_,u),v){for(let[e,t]of l)u.has(e)||_.skip_effect(t.e);_.oncommit(h),_.ondiscard(g)}else h(_)}r&&Oe(!0),R(f)}),flags:n,items:l,pending:p,outrogroups:null,fallback:d};m=!1,De&&(c=ke)}function ji(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Mi(e,t,n,i,a){var o=!!(i&8),s=t.length,c=e.items,l=ji(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(nr(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432){if(_.f^=ie,_===l)Pi(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Fi(e,d,_),Fi(e,_,y),Pi(_,y,n),d=_,p=[],m=[],l=ji(d.next);continue}}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)Pi(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Fi(e,S.prev,C.next),Fi(e,d,S),Fi(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),Pi(_,l,n),Fi(e,_.prev,_.next),Fi(e,_,d===null?e.effect.first:d.next),Fi(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=ji(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=ji(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(ki(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=ji(l.next);var T=w.length;if(T>0){var ee=i&4&&s===0?n:null;if(o){for(v=0;v<T;v+=1)w[v].nodes?.a?.measure();for(v=0;v<T;v+=1)w[v].nodes?.a?.fix()}Oi(e,w,ee)}}o&&ft(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Ni(e,t,n,r,i,a,o,s){var c=o&1?o&16?on(n):sn(n,!1,!1):null,l=o&2?on(i):null;return{v:c,i:l,e:qn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Pi(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=Tn(r);if(a.before(r),r===i)return;r=o}}function Fi(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Ii(e,t,...n){var r=new yi(e);Gn(()=>{let e=t()??null;r.ensure(e,e&&(t=>e(t,...n)))},E)}function Li(e,t,n){var r;De&&(r=ke,je());var i=new yi(e);Gn(()=>{var e=t()??null;if(De&&Pe(r)===`[`!=(e!==null)){var a=Ne();Ae(a),i.anchor=a,Oe(!1),i.ensure(e,e&&(t=>n(t,e))),Oe(!0)}else i.ensure(e,e&&(t=>n(t,e)))},E)}function Ri(e,t,n,r,i,a){let o=De;De&&je();var s=null;De&&ke.nodeType===1&&(s=ke,je());var c=De?ke:e,l=new yi(c,!1);Gn(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Se:void 0;if(e===null)l.ensure(null,null);else return l.ensure(e,t=>{if(e){var n=De;if(s=De?s:On(e,a),ai(s,s),r){var i=null;De&&Kr(e)&&s.append(i=document.createComment(``));var o=De?wn(s):s.appendChild(Cn());De&&(o===null?Oe(!1):Ae(o)),r(s,o),i?.remove()}dr.nodes.end=s,n||t.before(s)}De&&Ae(t)}),()=>{}},E),In(()=>{}),o&&(Oe(!0),Ae(c))}function zi(e,t,n){Hn(()=>{var r=Pr(()=>t(e,n?.())||{});if(n&&r?.update){var i=!1,a={};Wn(()=>{var e=n();Fr(e),i&&Ie(a,e)&&(a=e,r.update(e))}),i=!0}if(r?.destroy)return()=>r.destroy()})}function Bi(e,t){var n=void 0,r;Kn(()=>{n!==(n=t())&&(r&&=(Zn(r),null),n&&(r=qn(()=>{Hn(()=>n(e))})))})}function Vi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=Vi(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n)}return r}function Hi(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=Vi(e))&&(r&&(r+=` `),r+=t);return r}function Ui(e){return typeof e==`object`?Hi(e):e??``}var Wi=[...`
2
2
  \r\f\xA0\v`];function Gi(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||Wi.includes(r[o-1]))&&(s===r.length||Wi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Ki(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function qi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Ji(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\/\*.*?\*\//g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(qi)),i&&c.push(...Object.keys(i).map(qi));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=qi(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=Ki(r)),i&&(n+=Ki(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function K(e,t,n,r,i,a){var o=e[pe];if(De||o!==n||o===void 0){var s=Gi(n,r,a);(!De||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[pe]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function Yi(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function Xi(e,t,n,r){var i=e[me];if(De||i!==t){var a=Ji(t,r);(!De||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[me]=t}else r&&(Array.isArray(r)?(Yi(e,n?.[0],r[0]),Yi(e,n?.[1],r[1],`important`)):Yi(e,n,r));return r}function Zi(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function Qi(e,t){var n=!(`__defaultValue`in e);(n||e.__defaultValue!==t)&&(e.__defaultValue=t,$i(e,!n||`__value`in e))}function $i(t,n){var r=t.__defaultValue,i=t.multiple,a=i?r??[]:null;if(!i||e(a)){var o=t.selectedIndex,s=n&&i?new Set(t.selectedOptions):null;for(var c of t.options){var l=ra(c);Zi(c,i?a.includes(l):gn(l,r))}if(n){if(s!==null)for(c of t.options){var u=s.has(c);c.selected!==u&&(c.selected=u)}else t.selectedIndex!==o&&(t.selectedIndex=o)}}}function ea(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return Te();for(var i of t.options)i.selected=n.includes(ra(i))}else{for(i of t.options)if(gn(ra(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}}function ta(e){var t=new MutationObserver(t=>{t.every(ia)||(`__defaultValue`in e&&$i(e,!1),`__value`in e&&ea(e,e.__value))});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),In(()=>{t.disconnect()})}function na(e,t,n=t){var r=new WeakSet,i=!0;Ct(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),ra);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&ra(o)}n(a),e.__value=a,Rt!==null&&r.add(Rt)}),Hn(()=>{var a=t();if(e===document.activeElement){var o=Rt;if(r.has(o))return}if(ea(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=ra(s),n(a))}e.__value=a,i=!1})}function ra(e){return`__value`in e?e.__value:e.value}function ia(e){if(e.target.closest(`selectedcontent`)!==null)return!0;if(e.type===`childList`){var t=[...e.addedNodes,...e.removedNodes];return t.length>0&&t.every(e=>e.nodeName===`SELECTEDCONTENT`)}return!1}var aa=Symbol(`class`),oa=Symbol(`style`),sa=Symbol(`is custom element`),ca=Symbol(`is html`),la=ve?`link`:`LINK`,ua=ve?`input`:`INPUT`,da=ve?`option`:`OPTION`,fa=ve?`select`:`SELECT`,pa=ve?`progress`:`PROGRESS`;function ma(e){if(De){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;q(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;q(e,`checked`,null),e.checked=r}}};e[ge]=n,ft(n),xt()}}function ha(e,t){var n=ya(e);n.value!==(n.value=t??void 0)&&(e.value!==t||t===0&&e.nodeName===pa)&&(e.value=t??``)}function ga(e,t){var n=ya(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function q(e,t,n,r){var i=ya(e);De&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===la)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[de]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&xa(e).has(t)?e[t]=n:e.setAttribute(t,n))}function _a(e,t,n,r,i=!1,a=!1){De&&i&&e.nodeName===ua&&(`defaultValue`in n||`defaultChecked`in n||ma(e));var o=ya(e),s=o[sa],c=!o[ca];let l=De&&s;l&&Oe(!1);var u=t||{},d=e.nodeName===da,f=e.nodeName===fa;try{for(var p in t)!(p in n)&&p[0]+p[1]!==`$$`&&(n[p]=null);n.class?n.class=Ui(n.class):(r||n[aa])&&(n.class=null),n[oa]&&(n.style??=null);var m=xa(e);if(e.nodeName===ua&&`type`in n&&(`value`in n||`__value`in n)){var h=n.type;(h!==u.type||h===void 0&&e.hasAttribute(`type`))&&(u.type=h,q(e,`type`,h,a))}for(let i in n){let l=n[i];if(d&&i===`value`&&l==null)e.value=e.__value=``,u[i]=l;else if(i===`class`)K(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,l,r,t?.[aa],n[aa]),u[i]=l,u[aa]=n[aa];else if(i===`style`)Xi(e,l,t?.[oa],n[oa]),u[i]=l,u[oa]=n[oa];else{var g=u[i];if(l!==g||l===void 0&&e.hasAttribute(i)){u[i]=l;var _=i[0]+i[1];if(_!==`$$`){if(_===`on`){let t={},n=`$$`+i,r=i.slice(2);var v=zr(r);if(Lr(r)&&(r=r.slice(0,-7),t.capture=!0),!v&&g){if(l!=null)continue;e.removeEventListener(r,u[n],t),u[n]=null}if(v)B(r,e,l),Qr([r]);else if(l!=null){function a(e){u[i].call(this,e)}u[n]=Xr(r,e,a,t)}}else if(i===`style`)q(e,i,l);else if(i===`autofocus`)vt(e,!!l);else if(!s&&(i===`__value`||i===`value`&&l!=null))e.__value=l,(g==null||e.value!==l||l===0&&e.nodeName===pa)&&(e.value=l);else if(i===`selected`&&d)Zi(e,l);else{var y=i;c||(y=Hr(y));var b=y===`defaultValue`||y===`defaultChecked`;if(f&&y===`defaultValue`)continue;if(l==null&&!s&&!b){if(o[i]=null,y===`value`||y===`checked`){let n=e,r=t===void 0;if(y===`value`){let e=n.defaultValue;n.removeAttribute(y),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(y),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i)}else b||(s||typeof l!=`string`)&&m.has(y)?(e[y]=l,y in o&&(o[y]=be)):typeof l!=`function`&&q(e,y,l,a)}}}}}}finally{l&&Oe(!0)}return u}function va(e,t,n=[],r=[],i=[],a,o=!1,s=!1){wt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===fa,l=!1;if(Kn(()=>{var u=t(...n.map(R)),d=_a(e,r,u,a,o,s);if(l&&c){var f=e;`defaultValue`in u&&Qi(f,u.defaultValue),`value`in u&&ea(f,u.value)}for(let e of Object.getOwnPropertySymbols(i))u[e]||Zn(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var p=u[t];t.description===`@attach`&&(!r||p!==r[t])&&(i[t]&&Zn(i[t]),i[t]=qn(()=>Bi(e,()=>p))),d[t]=p}r=d}),c){var u=e;Hn(()=>{var e=r;`defaultValue`in e&&Qi(u,e.defaultValue),ea(u,e.value,!0),ta(u)})}l=!0})}function ya(e){return e[fe]??={[sa]:e.nodeName.includes(`-`),[ca]:e.namespaceURI===xe}}var ba=new Map;function xa(e){var t=e.getAttribute(`is`)||e.nodeName,n=ba.get(t);if(n)return n;ba.set(t,n=new Set);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.add(s);i=l(i)}return n}function Sa(e,t,n=t){var r=new WeakSet;Ct(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Da(e)?Oa(a):a,n(a),Rt!==null&&r.add(Rt),await jr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(De&&e.defaultValue!==e.value||Pr(t)==null&&e.value)&&(n(Da(e)?Oa(e.value):e.value),Rt!==null&&r.add(Rt)),Wn(()=>{var n=t();if(e===document.activeElement){var i=Rt;if(r.has(i))return}Da(e)&&n===Oa(e.value)||(e.type!==`date`||n||e.value)&&n!==e.value&&(e.value=n??``)})}var Ca=new Set;function wa(e,t,n,r,i=r){var a=n.getAttribute(`type`)===`checkbox`,o=e;let s=!1;if(t!==null)for(var c of t)o=o[c]??=[];o.push(n),Ct(n,`change`,()=>{var e=n.__value;a&&(e=Ea(o,e,n.checked)),i(e)},()=>i(a?[]:null)),Wn(()=>{var e=r();De&&n.defaultChecked!==n.checked?s=!0:a?(e||=[],n.checked=e.includes(n.__value)):n.checked=gn(n.__value,e)}),In(()=>{var e=o.indexOf(n);e!==-1&&o.splice(e,1)}),Ca.has(o)||(Ca.add(o),ft(()=>{o.sort((e,t)=>e.compareDocumentPosition(t)===4?-1:1),Ca.delete(o)})),ft(()=>{if(s){var e=a?Ea(o,e,n.checked):o.find(e=>e.checked)?.__value;i(e)}})}function Ta(e,t,n=t){Ct(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(De&&e.defaultChecked!==e.checked||Pr(t)==null)&&n(e.checked),Wn(()=>{e.checked=!!t()})}function Ea(e,t,n){for(var r=new Set,i=0;i<e.length;i+=1)e[i].checked&&r.add(e[i].__value);return n||r.delete(t),Array.from(r)}function Da(e){var t=e.type;return t===`number`||t===`range`}function Oa(e){return e===``?null:+e}var ka=new class e{#e=new WeakMap;#t;#n;static entries=new WeakMap;constructor(e){this.#n=e}observe(e,t){var n=this.#e.get(e)||new Set;return n.add(t),this.#e.set(e,n),this.#r().observe(e,this.#n),()=>{var n=this.#e.get(e);n.delete(t),n.size===0&&(this.#e.delete(e),this.#t.unobserve(e))}}#r(){return this.#t??=new ResizeObserver(t=>{for(var n of t){e.entries.set(n.target,n);for(var r of this.#e.get(n.target)||[])r(n)}})}}({box:`border-box`});function Aa(e,t,n){var r=ka.observe(e,()=>n(e[t]));Hn(()=>(Pr(()=>n(e[t])),r))}function ja(e,t){return e===t||e?.[ce]===t}function Ma(e=ct(),t,n,r){var i=rt.r,a=dr;return Hn(()=>{var o,s;return Wn(()=>{o=s,s=r?.()||[],Pr(()=>{ja(n(...s),e)||(t(e,...s),o&&ja(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&ja(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Na(e,t,n,r,i){var a=()=>{r(n[e])};n.addEventListener(t,a),i?Wn(()=>{n[e]=i()}):a(),(n===document.body||n===window||n===document)&&In(()=>{n.removeEventListener(t,a)})}function Pa(e=!1){let t=rt,n=t.l.u;if(!n)return;let r=()=>Fr(t.s);if(e){let e=0,n={},i=Ot(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>R(i)}n.b.length&&zn(()=>{Fa(t,r),h(n.b)}),Ln(()=>{let e=Pr(()=>n.m.map(m));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Ln(()=>{Fa(t,r),h(n.a)})}function Fa(e,t){if(e.l.s)for(let t of e.l.s)R(t);t()}var Ia=!1;function La(e){var t=Ia;try{return Ia=!1,[e(),Ia]}finally{Ia=t}}var Ra={get(e,t){if(!e.exclude.has(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.has(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return!e.exclude.has(t)&&t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.has(t))}};function J(e,t,n){return new Proxy({props:e,exclude:t},Ra)}var za={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(d(r)&&(r=r()),typeof r==`object`&&r&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let i=e.props[r];d(i)&&(i=i());let o=a(i,t);if(o&&o.set)return o.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(d(r)&&(r=r()),typeof r==`object`&&r&&t in r){let e=a(r,t);return e&&!e.configurable&&(e.configurable=!0),e}}},has(e,t){if(t===ce||t===ue)return!1;for(let n of e.props)if(d(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){let t=[];for(let n of e.props)if(d(n)&&(n=n()),n){for(let e in n)t.includes(e)||t.push(e);for(let e of Object.getOwnPropertySymbols(n))t.includes(e)||t.push(e)}return t}};function Ba(...e){return new Proxy({props:e},za)}function Y(e,t,n,r){var i=!Xe||!!(n&2),o=!!(n&8),s=!!(n&16),c=r,l=!0,u=void 0,d=()=>s&&i?(u??=Ot(r),R(u)):(l&&(l=!1,c=s?Pr(r):r),c);let f;if(o){var p=ce in e||ue in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=La(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Ge(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?Ot:jt)(()=>(v=!1,g()));o&&R(y);var b=dr;return(function(e,t){if(arguments.length>0){let n=t?R(y):i&&o?mn(e):e;return M(y,n),v=!0,c!==void 0&&(c=n),e}return or&&v||b.f&16384?y.v:R(y)})}function Va(e){rt===null&&Re(`onMount`),Xe&&rt.l!==null?Ua(rt).m.push(e):Ln(()=>{let t=Pr(e);if(typeof t==`function`)return t})}function Ha(e){rt===null&&Re(`onDestroy`),Va(()=>()=>Pr(e))}function Ua(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);function X(e,t){let n=Y(t,`size`,3,16),r=Y(t,`filled`,3,!1);var i=li(),a=P(i);{let e=A(()=>r()?`currentColor`:`none`),i=A(()=>t.label?`img`:void 0),o=A(()=>t.label?void 0:`true`);Li(a,()=>t.of,(r,a)=>{a(r,{get size(){return n()},strokeWidth:1.5,absoluteStrokeWidth:!0,get fill(){return R(e)},get role(){return R(i)},get"aria-label"(){return t.label},get"aria-hidden"(){return R(o)}})})}H(e,i)}var Wa={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},Ga=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim();function Ka(e){return e!=null}function qa(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??Wa.width,a=e.size??e.height??Wa.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?Ga(...c):Ga(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??Wa[`stroke-width`])*Number(e.size??e.width??Wa.width)/Number(t.size??t.width??Wa.width):t.strokeWidth??Wa[`stroke-width`];return[`svg`,{...Object.entries(Wa).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&Ka(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&Ka(t.width)&&{[r(`width`)]:t.width},...`height`in t&&Ka(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}var Ja=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},Ya=Symbol(`lucide-context`),Xa=()=>at(Ya),Za=new Set([`$$slots`,`$$events`,`$$legacy`,`color`,`size`,`width`,`height`,`strokeWidth`,`absoluteStrokeWidth`,`nonScalingStroke`,`iconNode`,`icon`,`class`,`children`]),Qa=si(`<svg><!><!></svg>`);function $a(e,t){O(t,!0);let n=Xa()??{},r=Y(t,`color`,19,()=>n.color??`currentColor`),i=Y(t,`size`,19,()=>n.size??24),a=Y(t,`width`,19,i),o=Y(t,`height`,19,i),s=Y(t,`strokeWidth`,19,()=>n.strokeWidth??2),c=Y(t,`absoluteStrokeWidth`,19,()=>n.absoluteStrokeWidth??!1),l=Y(t,`nonScalingStroke`,19,()=>n.nonScalingStroke??!1),u=Y(t,`iconNode`,19,()=>[]),d=Y(t,`icon`,19,()=>({node:u(),aliases:[],size:24})),p=J(t,Za),m=A(()=>!!t.children||Ja(p)),h=A(()=>qa(d(),{color:r(),width:a(),height:o(),strokeWidth:s(),absoluteStrokeWidth:c(),nonScalingStroke:l(),className:Ga(`lucide-icon`,n.class),hasA11yProp:R(m),attributes:p})),g=A(()=>v(R(h),3)),y=A(()=>R(g)[1]),b=A(()=>_(R(g)[2],()=>[],!0)),x=A(()=>({...R(y),class:[...R(y).class.split(` `),t.class]}));var S=Qa();va(S,()=>({...R(x)}));var C=N(S);G(C,17,()=>R(b),Di,(e,t)=>{var n=A(()=>v(R(t),2));let r=()=>R(n)[0],i=()=>R(n)[1];var a=li();Ri(P(a),r,!0,(e,t)=>{va(e,()=>({...i()}))}),H(e,a)}),Ii(I(C),()=>t.children??f),D(S),H(e,S),k()}var eo=new Set([`$$slots`,`$$events`,`$$legacy`]);function to(e,t){let n=J(t,eo),r={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var no=new Set([`$$slots`,`$$events`,`$$legacy`]);function ro(e,t){let n=J(t,no),r={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var io=new Set([`$$slots`,`$$events`,`$$legacy`]);function ao(e,t){let n=J(t,io),r={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}],[`path`,{d:`m7 10 5 5 5-5`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var oo=new Set([`$$slots`,`$$events`,`$$legacy`]);function so(e,t){let n=J(t,oo),r={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var co=new Set([`$$slots`,`$$events`,`$$legacy`]);function lo(e,t){let n=J(t,co),r={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var uo=new Set([`$$slots`,`$$events`,`$$legacy`]);function fo(e,t){let n=J(t,uo),r={name:`sprout`,size:24,node:[[`path`,{d:`M14 9.536V7a4 4 0 0 1 4-4h1.5a.5.5 0 0 1 .5.5V5a4 4 0 0 1-4 4 4 4 0 0 0-4 4c0 2 1 3 1 5a5 5 0 0 1-1 3`}],[`path`,{d:`M4 9a5 5 0 0 1 8 4 5 5 0 0 1-8-4`}],[`path`,{d:`M5 21h14`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var po=new Set([`$$slots`,`$$events`,`$$legacy`]);function mo(e,t){let n=J(t,po),r={name:`square-terminal`,size:24,node:[[`path`,{d:`m7 11 2-2-2-2`}],[`path`,{d:`M11 13h4`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`}]],aliases:[`terminal-square`]};$a(e,Ba(()=>n,{get icon(){return r}}))}var ho=new Set([`$$slots`,`$$events`,`$$legacy`]);function go(e,t){let n=J(t,ho),r={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]],aliases:[`trash-2`]};$a(e,Ba(()=>n,{get icon(){return r}}))}var _o=new Set([`$$slots`,`$$events`,`$$legacy`]);function vo(e,t){let n=J(t,_o),r={name:`upload`,size:24,node:[[`path`,{d:`M12 3v12`}],[`path`,{d:`m17 8-5-5-5 5`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}async function yo(e){try{let t=await fetch(`data/${e}.json`);return t.ok?await t.json():null}catch{return null}}async function bo(){let[e,t,n]=await Promise.all([yo(`registry`),yo(`local`),yo(`state`)]);return e?{stack:e,clones:t?.apps??{},roots:t?.roots??[],saved:n}:null}async function xo(e,t={},n=!1){let r=location.pathname.split(`/`)[2]??``;try{return await fetch(`/${e}?token=${encodeURIComponent(r)}`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t),keepalive:n})}catch{return null}}var So=async(e,t=!1)=>!!(await xo(`state`,e,t))?.ok;async function Co(e,t={}){let n=await xo(e,t);return n?await n.json().catch(()=>({error:`The canvas server answered ${String(n.status)}.`})):{error:`Could not reach the canvas server.`}}var wo=()=>yo(`repos`),To=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Eo=/\{\{\s*([a-z0-9-]+)\.([A-Za-z]\w*)\s*\}\}/g,Do=/^\{\{\s*([a-z0-9-]+)\.([A-Za-z]\w*)\s*\}\}$/,Oo=e=>typeof e==`string`&&!e.includes(`{{`)||typeof e==`number`||typeof e==`boolean`;function ko(e){let t=(r,i,a)=>{let o=`${r}.${i}`,s=Object.hasOwn(e,r)?e[r]:void 0;if(!To(s)||a.includes(o))return;if(Object.hasOwn(s,i)){let e=n(s[i],[...a,o]);return Oo(e)?e:void 0}if(i!==`port`&&i!==`host`)return;let c=t(r,`url`,[...a,o]);if(typeof c!=`string`||!URL.canParse(c))return;let{port:l,hostname:u}=new URL(c);return i===`host`?u:Number(l)||void 0},n=(e,r)=>{if(typeof e==`string`){let n=Do.exec(e);return n?t(n[1]??``,n[2]??``,r)??e:e.replace(Eo,(e,n,i)=>{let a=t(n,i,r);return a===void 0?e:String(a)})}return Array.isArray(e)?e.map(e=>n(e,r)):To(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,n(t,r)])):e};return n}function Ao(e){return!To(e)||!To(e.apps)?e:ko(e.apps)(e,[])}var jo=80,Mo=90,No=(e,t)=>e[t];function Po(e,t){let n=e.map(e=>[...e]),r=[],i={};n.forEach((e,t)=>{for(let n of e)i[n]=t});for(let e of t){let t=No(i,e.from)<=No(i,e.to),a=t?e.to:e.from,o=t?e.from:e.to;if(i[o]!==i[a]){for(let t=No(i,o)+1;t<No(i,a);t++){let a=`~${e.from}>${e.to}:${String(t)}`;i[a]=t,n[t]?.push(a),r.push([o,a]),o=a}r.push([o,a])}}return{rows:n,links:r,row:i}}var Fo=e=>{let t={};for(let n of e)n.forEach((e,n)=>t[e]=n);return t};function Io(e,t,n){let r=Fo(e),i=0;return t.forEach(([e,a],o)=>{for(let[s,c]of t.slice(o+1))n[e]===n[s]&&(No(r,e)-No(r,s))*(No(r,a)-No(r,c))<0&&i++}),i}function Lo(e,t){let{rows:n,links:r,row:i}=Po(e,t),a={};for(let[e,t]of r)(a[e]??=[]).push(t),(a[t]??=[]).push(e);let o=n.map(e=>[...e]),s=Io(n,r,i);for(let e=0;e<12&&s;e++){let t=e%2==0,c=t?n.map((e,t)=>t).slice(1):n.map((e,t)=>n.length-2-t).filter(e=>e>=0);for(let e of c){let r=Fo(n),o=n=>{let o=(a[n]??[]).filter(n=>i[n]===e+(t?-1:1));return o.length?o.reduce((e,t)=>e+No(r,t),0)/o.length:No(r,n)};n[e]?.sort((e,t)=>o(e)-o(t))}let l=Io(n,r,i);l<s&&(s=l,o=n.map(e=>[...e]))}return e.forEach((e,t)=>{e.splice(0,e.length,...(o[t]??[]).filter(e=>!e.startsWith(`~`)))}),s}function Ro(e,t){let n=Object.fromEntries(e.map(e=>[e,[]]));for(let{from:e,to:r}of t)e in n&&r in n&&e!==r&&n[e]?.push(r);let r=e=>{let t=[e];for(let e=0;e<t.length;e++)for(let r of n[t[e]??``]??[])t.includes(r)||t.push(r);return t.length},i=new Set(Object.values(n).flat()),a=[...e.filter(e=>!i.has(e)).sort((e,t)=>r(t)-r(e)),...[...e].sort((e,t)=>r(t)-r(e))],o=Object.fromEntries(e.map(e=>[e,[]])),s=[],c={},l=e=>{c[e]=`open`;for(let t of n[e]??[])c[t]!==`open`&&(o[e]?.push(t),c[t]||l(t));c[e]=`done`,s.push(e)};for(let e of a)c[e]||l(e);let u=[...s].reverse(),d=Object.fromEntries(e.map(e=>[e,0]));for(let e of u)for(let t of o[e]??[])d[t]=Math.max(No(d,t),No(d,e)+1);for(let e of s){let t=(o[e]??[]).map(e=>No(d,e));t.length&&(d[e]=Math.max(No(d,e),Math.min(...t)-1))}return d}function zo(e,t,n,r,i,a){let o={};e.forEach((e,t)=>{for(let n of e)o[n]=t});let s={};for(let{from:e,to:n}of t)e in o&&n in o&&o[e]!==o[n]&&((s[e]??=[]).push(n),(s[n]??=[]).push(e));let c=Object.fromEntries(Object.keys(o).map(e=>[e,No(n,e)+a(e)]));for(let t=0,n=1/0;t<500&&n>.01;t++){n=0;for(let o of t%2?[...e].reverse():e){let e=[];o.forEach((t,n)=>{let s=o[n-1];e.push(s===void 0?0:(e[n-1]??0)+r(s)-a(s)+i+a(t))});let t=[];o.forEach((n,r)=>{let i=s[n]??[],a=i.length||.001,o=i.length?i.reduce((e,t)=>e+No(c,t),0)/i.length:No(c,n);for(t.push({sum:(o-(e[r]??0))*a,weight:a,count:1});;){let e=t.at(-1),n=t.at(-2);if(!e||!n||n.sum/n.weight<=e.sum/e.weight)break;t.pop(),n.sum+=e.sum,n.weight+=e.weight,n.count+=e.count}});let l=0;for(let r of t)for(let t=0;t<r.count;t++,l++){let t=o[l]??``,i=r.sum/r.weight+(e[l]??0);n=Math.max(n,Math.abs(i-No(c,t))),c[t]=i}}}for(let e of Object.keys(c))n[e]=No(c,e)-a(e)}function Bo(e,t,n,r=`down`,i=!1,{pad:a,tight:o=!1,anchor:s}={pad:0}){let c=Ro(e,t),l=[];for(let t of e)(l[No(c,t)]??=[]).push(t);let u=l.filter(Boolean);if(Lo(u,t.filter(({from:e,to:t})=>e in c&&t in c&&e!==t)),i)for(let e of u)e.reverse();let d=Object.fromEntries(e.map(e=>[e,n(e)])),f=o?.6:1,p=r===`down`,m=p?`w`:`h`,h=p?`h`:`w`,g=p?jo*f:Mo*.6*f,_=p?Mo*f:jo*1.6*f,v=e=>e.reduce((e,t)=>e+No(d,t)[m],0)+g*(e.length-1),y=Math.max(...u.map(v)),b={},x={},S=a+40;for(let e of u){let t=a+40+(y-v(e))/2;for(let n of e)b[n]=t,x[n]=S,t+=No(d,n)[m]+g;S+=Math.max(...e.map(e=>No(d,e)[h]))+_}zo(u,t,b,e=>No(d,e)[m],g,e=>s?.(e)??No(d,e)[m]/2);let C=Math.min(...Object.values(b)),w={};for(let t of e){let e=Math.round(No(b,t)-C+a+40);w[t]=p?{x:e,y:No(x,t)}:{x:No(x,t),y:e}}return w}function Vo(e,t,n,r,i={}){let a=t=>{let n=No(e,t),{w:i,h:a}=r(t);return{...n,w:i,h:a,cx:n.x+i/2,cy:n.y+a/2}},o=a(t.from),s=a(t.to),c=Math.max(s.x-(o.x+o.w),o.x-(s.x+s.w)),l=Math.max(s.y-(o.y+o.h),o.y-(s.y+s.h)),u=s.cy>o.cy?{fromSide:`bottom`,toSide:`top`}:{fromSide:`top`,toSide:`bottom`},d=s.cx>=o.cx?{fromSide:`right`,toSide:`left`}:{fromSide:`left`,toSide:`right`},[f,p]=l>c||l===c&&n===`down`?[u,d]:[d,u],m=e=>i[t.from]!==e.fromSide&&i[t.to]!==e.toSide;return m(f)||!m(p)?f:p}function Ho(e,t){let n=e=>[...e].sort((e,t)=>e[0]-t[0]).reduce((e,[t,n])=>{let r=e.at(-1);return r&&t<=r[1]?r[1]=Math.max(r[1],n):e.push([t,n]),e},[]),r=n(e),i=n(t).flatMap(([e,t])=>{let n=[],i=e;for(let[e,a]of r)a<=i||e>=t||(e>i&&n.push([i,e]),i=Math.max(i,a));return i<t&&n.push([i,t]),n});return{show:e=>e-i.reduce((t,[n,r])=>t+Math.max(0,Math.min(e,r)-n),0),back:e=>{let t=0;for(let[n,r]of i){if(e<n-t)break;t+=r-n}return e+t}}}var Uo={top:[0,-1],right:[1,0],bottom:[0,1],left:[-1,0]},Wo={top:`bottom`,bottom:`top`,left:`right`,right:`left`},Go=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),Ko=(e,t,n)=>t?{x:e.x+Uo[t][0]*n,y:e.y+Uo[t][1]*n}:e,qo=({x:e,y:t})=>`${String(e)},${String(t)}`,Jo=({x:e,y:t,w:n,h:r},i)=>({top:{x:e+n/2,y:t},right:{x:e+n,y:t+r/2},bottom:{x:e+n/2,y:t+r},left:{x:e,y:t+r/2}})[i];function Yo(e,t,n,r){let i=Go(Math.hypot(n.x-e.x,n.y-e.y)*.4,30,140);return[e,Ko(e,t,i),Ko(n,r,i),n]}function Xo(e,t,n,r){let[,i,a]=Yo(e,t,n,r);return`M${qo(e)} C${qo(i)} ${qo(a)} ${qo(n)}`}function Zo(e,t,n,r,i){let a=Ko(e,t,40),o=[a,...i,Ko(n,r,40)],s=`M${qo(e)} L${qo(a)}`;for(let t=0;t<o.length-1;t++){let r=o[t-1]??e,i=o[t]??e,a=o[t+1]??n,c=o[t+2]??n,l={x:i.x+(a.x-r.x)/6,y:i.y+(a.y-r.y)/6},u={x:a.x-(c.x-i.x)/6,y:a.y-(c.y-i.y)/6};s+=` C${qo(l)} ${qo(u)} ${qo(a)}`}return`${s} L${qo(n)}`}var Qo=e=>e===`left`||e===`right`,$o=e=>[[`from`,e.from,e.fromSide,e.to],[`to`,e.to,e.toSide,e.from]];function es(e){let t=new Map;return e.forEach((e,n)=>{for(let[r,i,a,o]of $o(e)){let s=`${i}|${a}`,c=t.get(s)??[];c.push({cable:e,index:n,end:r,side:a,id:i,other:o}),t.set(s,c)}}),t}var ts=(e,t)=>t>1?Math.min(26,(e-48)/(t-1)):0,ns=e=>e.every(t=>t.other===e[0]?.other)&&e.every(({cable:e,end:t,side:n})=>(t===`from`?e.toSide:e.fromSide)===Wo[n])?e[0]?.other:void 0;function rs(e,t){for(let n of es(e).values()){let[{id:e,side:r}={id:``,side:`top`}]=n,i=Qo(r)?`y`:`x`,a=e=>i===`x`?e.w:e.h,o=e=>e[i]+a(e)/2,s=t(e),c=ns(n),l;if(c){let e=Math.max(s[i],t(c)[i]),r=Math.min(s[i]+a(s),t(c)[i]+a(t(c))),u=Math.min(ts(a(s),n.length),ts(a(t(c)),n.length));r-e>=u*(n.length-1)+32&&(l=Math.round((e+r)/2-o(s)))}let u=Jo(s,r),[d,f]=Uo[r],p=({cable:e,end:n,other:r})=>{let a=Jo(t(r),n===`from`?e.toSide:e.fromSide),[o,s]=[a.x-u.x,a.y-u.y];return Math.atan2(i===`x`?o:s,o*d+s*f)};n.sort((e,n)=>p(e)-p(n)||o(t(e.other))-o(t(n.other))).forEach(({cable:e,end:t},n)=>{e[`${t}Slot`]=n,l?e[`${t}Shift`]=l:t===`from`?delete e.fromShift:delete e.toShift})}}function is(e,{cardOf:t,coveredBelow:n}){let r={},i=[];for(let a of es(e).values()){let[{id:e,side:o}={id:``,side:`top`}]=a,s=t(e);if(!s)continue;let c=Qo(o)?`y`:`x`,l=e=>c===`x`?e.w:e.h,u=l(s),d=a.length;a.sort((e,t)=>(e.cable[`${e.end}Slot`]??1/0)-(t.cable[`${t.end}Slot`]??1/0)||e.index-t.index);let{covered:f,atRight:p}=o===`bottom`&&n?.(e)||{covered:0,atRight:!1},m=f&&u-f>=56?u-f:0,h=m?p?m/2-u/2:f+m/2-u/2:0,g=d>1?Math.min(26,((m||u)-(m?20:48))/(d-1)):0,_=h;if(!h){let e=t(ns(a)??``);e&&(g=Math.min(g,ts(l(e),d)));let n=a.map(({cable:e,end:t})=>e[`${t}Shift`]).find(e=>e!==void 0)??0,r=Math.max(0,u/2-16-(d-1)/2*g);_=Go(n,-r,r)}a.forEach(({index:e,end:t},n)=>{r[`${String(e)}|${t}`]=_+(n-(d-1)/2)*g}),d===1&&!_&&i.push({id:e,side:o})}return{offset:r,onPort:i}}var as=[[`cli`,`Koppler`],[`ide`,`Your IDE`]],os={tool:`docker`,fix:`Install a Docker runtime (Docker Desktop or Colima)`},ss={tool:`npm`,fix:`Comes with Node`},cs={dotnet:{label:`.NET`,runIn:as,serves:!0,needs:[{tool:`dotnet`,fix:`Install the .NET SDK the repo targets`}]},flutter:{label:`Flutter`,runIn:as,serves:!1,platforms:[[`ios`,`iOS simulator`],[`android`,`Android emulator`],[`phone`,`Phone`]],needs:[{tool:`fvm`,fix:`brew tap leoafarias/fvm && brew install fvm`}]},node:{label:`Node`,runIn:as,serves:!0,needs:[ss]},web:{label:`Web`,runIn:as,serves:!1,browser:!0,needs:[ss]},lambda:{label:`Lambda`,runIn:as,serves:!0,needs:[os,{tool:`aws`,fix:`brew install awscli`}]},sam:{label:`AWS SAM`,runIn:as,serves:!0,needs:[os,{tool:`sam`,fix:`brew install aws-sam-cli (or: uv tool install aws-sam-cli)`}]},other:{label:`Other`,runIn:as,serves:!0}},ls=(e,t)=>e.read(t)??``,us=(e,t)=>t.map(t=>ls(e,t)).join(`
3
- `).toLowerCase(),ds=(e,t)=>t?` ${e}${String(t)}`:``,fs=e=>us(e,[`pyproject.toml`,`requirements.txt`,`Pipfile`]);function ps(e){return e.has(`uv.lock`)?`uv run `:e.has(`poetry.lock`)?`poetry run `:e.has(`Pipfile`)?`pipenv run `:e.has(`.venv/bin/python`)?`.venv/bin/`:``}var ms=e=>/spring-boot|springframework\.boot/.test(us(e,[`pom.xml`,`build.gradle`,`build.gradle.kts`])),hs=e=>[`compose.yaml`,`compose.yml`,`docker-compose.yml`,`docker-compose.yaml`].find(t=>e.has(t)),gs={reactnative:{label:`React Native`,color:[`#087EA4`,`#58C4DC`],serves:!1,platforms:[[`ios`,`iOS simulator`],[`android`,`Android emulator`]],detect:e=>/"(expo|react-native)"\s*:/.test(ls(e,`package.json`)),start:(e,{platform:t=`ios`})=>/"expo"\s*:/.test(ls(e,`package.json`))?`npx expo start --${t}`:`npx react-native run-${t}`},go:{label:`Go`,color:[`#00758D`,`#5AD1E6`],detect:e=>e.has(`go.mod`),start:e=>{if(e.has(`main.go`))return`go run .`;let t=e.list(`cmd`);return t.length===1?`go run ./cmd/${t[0]??``}`:null}},rust:{label:`Rust`,color:[`#A0522D`,`#E8A27C`],detect:e=>e.has(`Cargo.toml`),start:()=>`cargo run`},java:{label:`Java / Kotlin`,color:[`#B0562B`,`#F0975F`],detect:e=>e.has(`pom.xml`)||e.has(`build.gradle`)||e.has(`build.gradle.kts`),port:e=>ms(e)?8080:null,start:e=>e.has(`pom.xml`)?ms(e)?`${e.has(`mvnw`)?`./mvnw`:`mvn`} spring-boot:run`:null:`${e.has(`gradlew`)?`./gradlew`:`gradle`} ${ms(e)?`bootRun`:`run`}`},python:{label:`Python`,color:[`#2F6F9F`,`#7FB8E6`],detect:e=>[`manage.py`,`pyproject.toml`,`requirements.txt`,`Pipfile`].some(t=>e.has(t)),port:e=>{let t=fs(e);return e.has(`manage.py`)||/fastapi|uvicorn/.test(t)?8e3:t.includes(`flask`)?5e3:null},start:(e,{port:t})=>{let n=ps(e),r=fs(e);if(e.has(`manage.py`))return`${n}python manage.py runserver${ds(``,t)}`;if(/fastapi|uvicorn/.test(r)){let r=[`main.py`,`app/main.py`,`src/main.py`].find(t=>e.has(t))?.replace(/\.py$/,``).replace(/\//g,`.`);return r?`${n}uvicorn ${r}:app --reload${ds(`--port `,t)}`:null}return r.includes(`flask`)?`${n}flask run${ds(`--port `,t)}`:null}},ruby:{label:`Ruby`,color:[`#B3261E`,`#F28B82`],detect:e=>e.has(`Gemfile`),port:e=>e.has(`config/application.rb`)?3e3:null,start:(e,{port:t})=>e.has(`config/application.rb`)?`bin/rails server${ds(`-p `,t)}`:null},php:{label:`PHP`,color:[`#6C5FC7`,`#A99FF5`],detect:e=>e.has(`artisan`)||e.has(`composer.json`),port:e=>e.has(`artisan`)?8e3:null,start:(e,{port:t})=>e.has(`artisan`)?`php artisan serve${ds(`--port=`,t)}`:null},compose:{label:`Docker Compose`,color:[`#1D63ED`,`#7AA7FF`],detect:e=>!!hs(e),port:e=>Number(/["'\s-](\d{2,5}):\d{2,5}["'\s]/.exec(ls(e,hs(e)??``))?.[1])||null,start:()=>`docker compose up`,stop:`docker compose down`}};for(let[e,t]of Object.entries(gs))cs[e]={label:t.label,runIn:as,serves:t.serves!==!1,...t.platforms&&{platforms:t.platforms},...t.color&&{color:t.color}};Object.keys(cs);var _s={kinds:cs,recipes:gs,custom:[]},vs=new WeakMap;function ys(e){let t=e?.kinds;if(typeof t!=`object`||!t)return _s;let n=vs.get(t);if(n)return n;let r={kinds:{...cs},recipes:{...gs},custom:[]};for(let[e,n]of Object.entries(t)){if(!/^[a-z0-9-]{1,32}$/.test(e)||Object.hasOwn(cs,e)||typeof n!=`object`||!n)continue;let t=n,i=[t.detect??[]].flat().filter(e=>typeof e==`string`),a=typeof t.label==`string`&&t.label?t.label:e;r.recipes[e]={label:a,detect:e=>i.length>0&&i.every(t=>e.has(t)),port:()=>Number(t.port)||null,start:()=>typeof t.start==`string`&&t.start?t.start:null},r.kinds[e]={label:a,runIn:as,serves:t.serves!==!1,custom:!0},r.custom.push(e)}return vs.set(t,r),r}var bs=e=>ys(e).kinds;function xs(e,t){let n=e?.kind,r=bs(t);return n!==void 0&&Object.hasOwn(r,n)&&r[n]||{label:n??`App`,runIn:as,serves:!0}}var Ss=e=>typeof e==`string`?e:``,Cs=e=>({branch:e?.branch||``,run:e?.run||`cli`,...e?.platform&&{platform:e.platform},...Ss(e?.note)&&{note:Ss(e?.note)},...e?.tunnels===!1&&{tunnels:!1},...e?.queues===!0&&{queues:!0},...Ss(e?.changes)&&{changes:Ss(e?.changes)},...Array.isArray(e?.libraries)&&e.libraries.length>0&&{libraries:e.libraries.map(String).sort()},...e?.restart===!0&&{restart:!0},...e?.watch===!0&&{watch:!0}}),ws=e=>e?.run===`mock`?{branch:``,run:`mock`,...e.restart===!0&&{restart:!0}}:Cs(e);function Ts(e){let t=e?.nodes??{},n=Array.isArray(t)?t.map(e=>[e.id,e]):Object.entries(t),r=Object.fromEntries(n.filter(([e])=>typeof e==`string`).map(([e,t])=>[e,ws(t)])),i=(Array.isArray(e?.edges)?e.edges:[]).filter(e=>!!e&&Object.hasOwn(r,e.from)&&Object.hasOwn(r,e.to)).map(e=>({from:e.from,to:e.to})),a=Object.fromEntries(Object.entries(e?.queues??{}).flatMap(([e,t])=>t===`local`?[[e,`local`]]:[]));return{env:e?.env??null,nodes:r,edges:i,queues:a}}var Es=(e,t)=>e.edges.filter(e=>e.from===t).map(e=>e.to).sort(),Ds=e=>e.toUpperCase(),Os=e=>({ide:`your IDE`,cli:`the command line`,mock:`a mock`})[e];function ks(e,t,n,r,i){let a=t.nodes[e],o=n.nodes[e];if(!a||!o)return[];let s=e=>i.name?.(e)??e,c=[];o.restart&&c.push(`you asked to restart it`),r&&c.push(`the environment changes from ${Ds(r.from)} to ${Ds(r.to)}`),a.branch!==o.branch&&a.run!==`mock`&&o.run!==`mock`&&c.push(`its branch changes from ${a.branch||i.current?.(e)||`the current one`} to ${o.branch||`the current one`}`),a.run!==o.run&&c.push(`it moves from ${Os(a.run)} to ${Os(o.run)}`),(a.platform??``)!==(o.platform??``)&&o.run===`cli`&&c.push(`its device changes to ${String(o.platform)}`);let l=Es(t,e),u=Es(n,e);for(let e of u.filter(e=>!l.includes(e)))c.push(`it starts calling your local ${s(e)}`);for(let e of l.filter(e=>!u.includes(e)))c.push(`it goes back to the deployed ${s(e)}`);(a.note??``)!==(o.note??``)&&c.push(`its note changed`);let d=a.libraries??[],f=o.libraries??[];for(let e of f.filter(e=>!d.includes(e)))c.push(`it uses your local ${e}`);for(let e of d.filter(e=>!f.includes(e)))c.push(`it goes back to the published ${e}`);let p=(e,t,n)=>t.queues===!0&&Object.hasOwn(e.queues,n);for(let r of i.queuesOf?.(e)??[])p(t,a,r)!==p(n,o,r)&&c.push(`it moves to the ${p(n,o,r)?`local`:`deployed`} ${r} queue`);return c}function As(e,t,n={}){let r=Ts(e),i=Ts(t),a=n.strays??[],o=r.env&&i.env&&r.env!==i.env&&Object.keys(r.nodes).length>0?{from:r.env,to:i.env}:null,s=[],c=[],l=[],u=[];for(let[e,t]of Object.entries(i.nodes))if(!Object.hasOwn(r.nodes,e)){let r=n.startedOn?.(e)===i.env&&Es(i,e).length===0&&!t.note&&!t.branch;a.includes(e)?r?u.push({id:e,why:[`you started it with koppler run`]}):c.push({id:e,why:[`it is running, but not from a run Koppler recorded`]}):s.push({id:e,why:[]})}else if(n.running?.(e)===!1&&t.run!==`ide`)s.push({id:e,why:[`it was started before but is not running now`]});else{let t=ks(e,r,i,o,n);(t.length>0?c:u).push({id:e,why:t})}for(let e of[...Object.keys(r.nodes),...a])!Object.hasOwn(i.nodes,e)&&!l.some(t=>t.id===e)&&l.push({id:e,why:[]});let d=s.length+c.length+l.length===0;return{env:i.env,envChange:o,starts:s,restarts:c,stops:l,keeps:u,nothing:d}}var js=[[`starts`,`START`],[`restarts`,`RESTART`],[`stops`,`STOP AND REVERT`],[`keeps`,`KEEP RUNNING`]];function Ms(e,t={}){let n=e=>t.name?.(e)??e,r=e=>n(e.id)+(e.why.length>0?` (${e.why.join(`; `)})`:``),i=js.filter(([t])=>e[t].length>0).map(([t,n])=>`${n}: ${e[t].map(r).join(`, `)}`);return i.length>0?i:[`NOTHING TO CHANGE`]}var Ns=[`sqs`,`kafka`];function Ps(e,t){let n=e?.apps?.[t];return[...new Set([...Object.keys(n?.publishes??{}),...Object.keys(n?.reads??{})])]}function Fs(e){let t=e?.envs??[],n=e?.protected;return Array.isArray(n)?t.filter(e=>n.includes(e)):t.slice(1)}var Is=(e,t)=>Fs(e).includes(t),Ls=[[`valkey`,`Cache (Valkey)`],[`redis`,`Cache (Redis)`],[`aurora`,`Database (Aurora)`],[`postgres`,`Database (Postgres)`],[`mysql`,`Database (MySQL)`],[`mongo`,`Database (MongoDB)`],[`db`,`Database`],[`rds`,`Database`]];function Rs(e){if(e.what)return e.what;let t=(e.tunnel??``).toLowerCase(),n=t.split(/[.-]/);return Ls.find(([e])=>n.includes(e)||e.length>3&&t.includes(e))?.[1]??`Tunnel`}function zs(e){let t=new Map;for(let n of e){let e=`${n.tunnel}:${String(n.port)}`,r=t.get(e)??{host:n.tunnel,port:n.port,original:n.port,bind:`localhost`,apps:[],envs:{},what:Rs(n),connectsAs:n.connectsAs};r.apps.includes(n.app)||r.apps.push(n.app),n.env&&(r.envs[n.app]=n.env),t.set(e,r)}return[...t.values()]}function Bs(e,t=[]){let n=zs(e),r=new Set([...t,...n.map(e=>e.port)]),i=e=>e.apps.every(t=>e.envs[t]),a=2;for(let e of new Set(n.map(e=>e.original))){let t=n.filter(t=>t.original===e);t.sort((e,t)=>Number(i(e))-Number(i(t)));for(let n of t.slice(1))if(i(n)){let t=e+2;for(;r.has(t);)t++;r.add(t),n.port=t,n.settings=n.apps.map(e=>({app:e,env:n.envs[e]??``,value:`localhost:${String(t)}`}))}else n.bind=`127.0.0.${String(a++)}`,n.needsAlias=!0}return n}function Vs(e,t=e=>e){let n=e=>e.what===`Tunnel`?`tunnel`:`${e.what.replace(/ \(.*\)$/,``).toLowerCase()} tunnel`,r=e=>`${e.apps.map(t).join(` and `)}'s ${n(e)}`;return e.flatMap(i=>{let a=e.filter(e=>e!==i&&e.original===i.original).map(r).join(` and `),o=String(i.port);return i.settings?[`${r(i)} moves from port ${String(i.original)} to ${o}, to make room for ${a}.`]:i.needsAlias?[`${r(i)} keeps port ${o} on its own address, ${i.bind}, next to ${a}. Needs a one-time sudo step.`]:i.apps.length>1?[`${i.apps.map(t).join(` and `)} share one ${n(i)} on port ${o}.`]:[]})}var Hs=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Us={0:e=>({...e,nodes:Object.fromEntries(Object.entries(e.nodes).map(([e,t])=>[e,{run:`cli`,...t}]))})};function Ws(e){if(!Hs(e))return{error:`It is not a preset.`};let{name:t,nodes:n,edges:r,version:i}=e;if(typeof t!=`string`||!t.trim())return{error:`It has no name.`};if(!Hs(n)||Object.keys(n).length===0)return{error:`It has no apps.`};let a=typeof i==`number`&&Number.isInteger(i)&&i>=0?i:0;if(a>1)return{error:`It was saved by a newer Koppler (${`preset format ${String(a)}, this one reads up to 1`}). Update Koppler.`};let o={...e,name:t,nodes:Object.fromEntries(Object.entries(n).map(([e,t])=>[e,Hs(t)?t:{}])),edges:Array.isArray(r)?r:[]};for(let e=a;e<1;e++)o={...Us[e]?.(o)??o,version:e+1};return{preset:o,migratedFrom:a<1?a:null}}function Gs(e,t,n,r,i){let a=n.runIn(e),o=n.platforms(e),s=typeof t.run==`string`?t.run:``,c=a.includes(s)?s:a.includes(`cli`)?`cli`:a[0]??`cli`;s&&c!==s&&i.push(`${r} cannot run in "${s}", using ${c}`);let l={run:c},u=typeof t.platform==`string`?t.platform:``,d=o[0];d!==void 0&&c===`cli`&&(l.platform=o.includes(u)?u:d,u&&l.platform!==u&&i.push(`${r} has no "${u}" platform, using ${l.platform}`));let f=typeof t.branch==`string`?t.branch.trim():``;if(f){l.branch=f;let t=n.branches(e);t&&!t.includes(f)&&i.push(`${r} has no branch ${f} in your clone (fetch it first)`)}return typeof t.note==`string`&&t.note.trim()&&(l.note=t.note),t.tunnels===!1&&(l.tunnels=!1),t.queues===!0&&(l.queues=!0),t.watch===!0&&(l.watch=!0),l}var Ks=e=>Hs(e)&&typeof e.from==`string`&&typeof e.to==`string`;function qs(e,t){let n=Ws(e);if(n.error!==void 0)return{error:n.error};let r=n.preset,i=[],a=e=>t.name?.(e)??e;(!Hs(e)||!Number.isInteger(e.version))&&i.push(`it had no version, read as the oldest format`);let o=Object.keys(r.nodes),s=o.filter(e=>!t.known(e)),c=o.filter(e=>t.known(e)&&!t.cloned(e)),l=o.filter(e=>t.known(e)&&t.cloned(e));if(l.length===0)return{error:s.length===o.length?`None of its apps are in this stack (${s.join(`, `)}).`:`None of its apps are cloned here (${c.join(`, `)}).`};s.length>0&&i.push(`not in this stack: ${s.join(`, `)}`),c.length>0&&i.push(`not cloned: ${c.map(a).join(`, `)}`);let u=Object.fromEntries(l.map(e=>[e,Gs(e,r.nodes[e]??{},t,a(e),i)])),d=[],f=0;for(let e of r.edges.filter(Ks)){let{from:n,to:r}=e;!Object.hasOwn(u,n)||!Object.hasOwn(u,r)?t.known(n)&&t.known(r)&&f++:d.some(e=>e.from===n&&e.to===r)||(t.canCall(n,r)?d.push({from:n,to:r}):i.push(`${a(n)} does not call ${a(r)}, cable left out`))}f>0&&i.push(`${String(f)} ${f===1?`cable`:`cables`} left out with their apps`),n.migratedFrom!==null&&n.migratedFrom>0&&i.push(`updated from preset format ${String(n.migratedFrom)}`);let p={name:r.name.trim().slice(0,80),version:1,nodes:u,edges:d};return r.source&&(p.source=r.source),{preset:p,notes:i}}var Js=e=>Hs(e)&&typeof e.x==`number`&&typeof e.y==`number`,Ys=e=>t=>e.from===t.from&&e.to===t.to;function Xs(e,t){let n=new Set(t.remove??[]),r=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e))),i=r(e.nodes),a=Hs(e.layout)?e.layout:void 0,o=r(Hs(a?.nodes)?a.nodes:{}),s=Object.values(o).filter(Js),c=Math.min(...s.map(e=>e.y));for(let e of t.add??[])i[e]||(i[e]={run:`cli`},s.length&&(o[e]={x:Math.max(...s.map(e=>e.x))+340,y:c},c+=240));for(let[e,n]of Object.entries(t.branch??{}))i[e]&&(i[e]={...i[e],branch:n});for(let[e,n]of Object.entries(t.note??{})){let{note:t,...r}=i[e]??{};i[e]&&(i[e]=n.trim()?{...r,note:n}:r)}let l=e.edges.filter(Ks).filter(e=>!n.has(e.from)&&!n.has(e.to)&&!(t.uncable??[]).some(Ys(e)));for(let e of t.cable??[])l.some(Ys(e))||l.push({from:e.from,to:e.to});if(!a||t.arrange){let{layout:t,...n}=e;return{...n,nodes:i,edges:l}}let u=new Set(l.map(e=>`${e.from}>${e.to}`)),d=Object.fromEntries(Object.entries(Hs(a.sides)?a.sides:{}).filter(([e])=>u.has(e)));return{...e,nodes:i,edges:l,layout:{...a,nodes:o,sides:d}}}function Zs(e,t=e=>e,n=!1){let r=(e=[])=>e.map(t).join(`, `),i=(e=[])=>e.map(e=>`${t(e.from)} to ${t(e.to)}`).join(`, `);return[e.add?.length&&`${n?`add`:`added`} ${r(e.add)}`,e.remove?.length&&`${n?`remove`:`removed`} ${r(e.remove)}`,e.cable?.length&&`${n?`cable`:`cabled`} ${i(e.cable)}`,e.uncable?.length&&`${n?`take the cable off`:`took the cable off`} ${i(e.uncable)}`,...Object.entries(e.branch??{}).map(([e,r])=>`${n?`put `:``}${t(e)} on ${r}`),...Object.entries(e.note??{}).map(([e,r])=>r.trim()?`${n?`add `:``}a note on ${t(e)}`:`${n?`take the `:`no `}note${n?` off `:` on `}${t(e)}`),e.arrange&&(n?`lay it out afresh`:`arranged`)].filter(Boolean).join(`; `)}var Qs={cli:`Koppler`,ide:`Me`,mock:`Mock`},$s=.6,ec=[[`down`,!1],[`right`,!1],[`down`,!0],[`right`,!0]],tc=e=>`tunnel:${e.host}:${String(e.original)}`,nc={w:230,h:58,gap:40},rc=[`bottom`,`right`,`left`,`top`],ic=8,ac=24,oc=44,sc={w:300,h:240,gap:32},cc=(e,t,n)=>({id:`${e}>${t}`,source:e,target:t,type:`cable`,data:n}),lc=e=>e.selected?{...e,selected:!1}:e,Z=new class{#e=j(``);get stack(){return R(this.#e)}set stack(e){M(this.#e,e,!0)}#t=j(``);get dir(){return R(this.#t)}set dir(e){M(this.#t,e,!0)}#n=j(!1);get setup(){return R(this.#n)}set setup(e){M(this.#n,e,!0)}#r=j([]);get known(){return R(this.#r)}set known(e){M(this.#r,e)}#i=j(``);get env(){return R(this.#i)}set env(e){M(this.#i,e,!0)}#a=j([]);get nodes(){return R(this.#a)}set nodes(e){M(this.#a,e)}#o=[];#s=A(()=>{let e=this.nodes;return e.length===this.#o.length&&e.every((e,t)=>e.id===this.#o[t]?.id&&e.data===this.#o[t].data)||(this.#o=e),this.#o});get cards(){return R(this.#s)}set cards(e){M(this.#s,e)}#c=j([]);get edges(){return R(this.#c)}set edges(e){M(this.#c,e)}#l=j(null);get hovered(){return R(this.#l)}set hovered(e){M(this.#l,e)}#u=j([]);#d=A(()=>R(this.#u).includes(this.env));get protected(){return R(this.#d)}set protected(e){M(this.#d,e)}toFlow=e=>e;zoom=()=>1;#f=A(()=>this.edges.map(e=>({from:e.source,to:e.target,...e.data})));get cables(){return R(this.#f)}set cables(e){M(this.#f,e)}#p=j([]);get infra(){return R(this.#p)}set infra(e){M(this.#p,e)}#m=j({});get queues(){return R(this.#m)}set queues(e){M(this.#m,e)}#h=j({});get hiddenQueues(){return R(this.#h)}set hiddenQueues(e){M(this.#h,e)}#g=j({});get hiddenOutside(){return R(this.#g)}set hiddenOutside(e){M(this.#g,e)}#_=j({});get hiddenLogs(){return R(this.#_)}set hiddenLogs(e){M(this.#_,e)}#v=j({});get logAliases(){return R(this.#v)}set logAliases(e){M(this.#v,e)}#y=j([]);get pinned(){return R(this.#y)}set pinned(e){M(this.#y,e)}pin(e){this.pinned.includes(e)||(this.pinned=[...this.pinned,e])}unpin(e){this.pinned=this.pinned.filter(t=>t!==e)}#b=A(()=>new Map(this.infra.map(({id:e,position:t,measured:n})=>[e,{...this.shown(t,e),w:n?.width??nc.w,h:n?.height??nc.h}])));get infraBoxes(){return R(this.#b)}set infraBoxes(e){M(this.#b,e)}#x=j(!1);get present(){return R(this.#x)}set present(e){M(this.#x,e,!0)}entering=!1;#S=j(!1);get brief(){return R(this.#S)}set brief(e){M(this.#S,e,!0)}#C=A(()=>{if(!this.brief||this.live||this.present)return;let e=this.nodes.filter(e=>e.selected);return e.length===1?e[0]:void 0});get panelCard(){return R(this.#C)}set panelCard(e){M(this.#C,e)}#w=j({});get fullHeights(){return R(this.#w)}set fullHeights(e){M(this.#w,e)}#T=A(()=>new Map([...this.nodes,...this.infra].map(({id:e,measured:t})=>{let n=t?.height??0,r=this.fullHeights[e]??0;return[e,this.brief&&n&&r>n?(r-n)/2:0]})));#E(e=(e,t)=>t.y){let t=[],n=[];for(let{id:r,position:i,measured:a}of[...this.nodes,...this.infra]){let o=a?.height;if(!o)continue;let s=e(r,i),c=R(this.#T).get(r)??0;t.push([s+c,s+c+o]);let l=this.fullHeights[r]??0;c&&n.push([s,s+c]),l>o&&n.push([s+c+o,s+l])}return Ho(this.brief?t:[],this.brief?n:[])}#D=Ho([],[]);#O=null;#k=()=>[...this.nodes,...this.infra].map(({id:e,position:t,measured:n})=>`${e} ${String(t.x)} ${String(t.y)} ${String(n?.height??0)}`).join(`|`);#A=A(()=>{let e=this.#k();return[...this.nodes,...this.infra].some(e=>e.dragging)||this.brief&&this.#O===e||(this.#O=null,this.#D=this.#E()),this.#D});get squeezed(){return R(this.#A)}set squeezed(e){M(this.#A,e)}shown=(e,t=``)=>({x:e.x,y:this.squeezed.show(e.y+(R(this.#T).get(t)??0))});stored=(e,t=``)=>({x:e.x,y:this.squeezed.back(e.y)-(R(this.#T).get(t)??0)});dropped(e,t){let n=R(this.#T).get(e)??0,r=this.squeezed.back(t.y)-n;if(this.brief)return{x:t.x,y:r};for(let i=0;i<4;i++)r=this.#E((t,n)=>t===e?r:n.y).back(t.y)-n;return{x:t.x,y:r}}#j=A(()=>new Map(this.nodes.flatMap(({id:e,position:t,measured:n})=>n?.width&&n.height?[[e,{...this.shown(t,e),w:n.width,h:n.height}]]:[])));get boxes(){return R(this.#j)}set boxes(e){M(this.#j,e)}#M=j();#N=j([]);get unplaced(){return R(this.#N)}set unplaced(e){M(this.#N,e)}#P=[];#F(e){return this.nodes.some(t=>t.id===e&&t.data.run===`mock`)}tunnelsOf(e){if(this.#F(e))return[];let t=R(this.#M)?.apps[e];return((this.env===this.envs[0]?void 0:t?.envs?.[this.env]?.prereqs)??t?.prereqs??[]).flatMap(e=>{let{tunnel:t,port:n}=e;return t&&n&&Number.isInteger(n)&&n<65536?[{...e,tunnel:t,port:n}]:[]})}tunnelPath(e,t){let n=R(this.#M)?.apps[e],r=this.env===this.envs[0]?void 0:n?.envs?.[this.env]?.prereqs,i=(r??n?.prereqs??[]).findIndex(e=>e.tunnel===t);return`apps.${e}.${r?`envs.${this.env}.`:``}prereqs[${String(i)}]`}#I=A(()=>Bs(this.cards.filter(e=>!e.data.hideTunnels).flatMap(({id:e})=>this.tunnelsOf(e).map(t=>({app:e,tunnel:t.tunnel,port:t.port,env:t.env,what:Rs(t),connectsAs:t.connectsAs}))),this.cards.flatMap(({id:e})=>{let t=Number(new URL(R(this.#M)?.apps[e]?.url??`http://none`).port);return t?[t]:[]})));get plan(){return R(this.#I)}set plan(e){M(this.#I,e)}ledBy(e){return[...this.plan.filter(t=>t.apps[0]===e).map(tc),...this.boardQueues.filter(t=>this.#H(t)===e).map(e=>`queue:${e.id}`)]}#L=A(()=>new Set(this.cards.map(e=>e.id)));#R=A(()=>new Set(this.cards.filter(e=>e.data.showQueues).map(e=>e.id)));commandsOf(e){return Object.entries(R(this.#M)?.apps[e]?.commands??{}).filter(([,e])=>(e.show??`both`)!==`cli`)}#z(e){return!!R(this.#M)?.apps[e]?.outside}#B=A(()=>{let e=R(this.#M)?.apps??{};return Object.entries(R(this.#M)?.queues??{}).flatMap(([t,n])=>{let r=n=>Object.keys(e).filter(r=>Object.hasOwn(e[r]?.[n]??{},t)&&(R(this.#R).has(r)||this.#z(r))),[i,a]=[r(`publishes`),r(`reads`)];return!this.hiddenQueues[t]&&[...i,...a].some(e=>R(this.#R).has(e))?[{id:t,queue:n,pubs:i,reads:a,upstream:!1}]:[]})});get boardQueues(){return R(this.#B)}set boardQueues(e){M(this.#B,e)}#V=A(()=>{let e=[...this.boardQueues],t=t=>e.some(e=>e.id===t),n=Object.entries(R(this.#M)?.queues??{});for(let r=!0;r;){r=!1;for(let[i,a]of n)!t(i)&&!this.hiddenQueues[i]&&Object.keys(a.feeds??{}).some(t)&&(e.push({id:i,queue:a,pubs:[],reads:[],upstream:!0}),r=!0)}return e});get shownQueues(){return R(this.#V)}set shownQueues(e){M(this.#V,e)}ownedBy(e){let t=t=>[...t.pubs,...t.reads].filter(e=>R(this.#L).has(e)||this.#z(e)&&!this.hiddenOutside[e]).every(t=>t===e);return this.ledBy(e).filter(e=>e.startsWith(`tunnel:`)||this.boardQueues.some(n=>`queue:${n.id}`===e&&t(n)))}#H(e){return[...e.pubs,...e.reads].find(e=>R(this.#L).has(e))}queueName(e){return R(this.#M)?.queues?.[e]?.name??e}switchesOver(e){if(this.#F(e))return!1;let t=this.cards.find(t=>t.id===e)?.data.branch,n=this.app(e);return!!(t&&n?.current&&t!==n.current&&n.dirty)}localLibraries(e){let t=this.cards.find(t=>t.id===e)?.data.libraries??[],n=this.app(e)?.libraries??[];return t.filter(e=>n.some(t=>t.name===e))}borrowsTunnels(e){if(this.env===this.envs[0])return!1;let t=R(this.#M)?.apps[e],n=t?.envs?.[this.env]?.prereqs??[],r=this.cards.find(t=>t.id===e)?.data.hideTunnels;return[`sso`,`signIn`,`tunnel`,`hosts`].some(e=>(t?.prereqs??[]).some(t=>t[e])&&!n.some(t=>t[e])&&!(e!==`sso`&&e!==`signIn`&&r))}queuesOf(e){return this.#F(e)?[]:Ps(R(this.#M),e).filter(e=>R(this.#M)?.queues?.[e])}#U=A(()=>{let e=e=>this.#z(e)?`outside:${e}`:e;return[...this.shownQueues.flatMap(({id:t,queue:n,pubs:r,reads:i})=>[...r.map(n=>({from:e(n),to:`queue:${t}`,queue:t})),...i.map(n=>{let r=this.#X(n,t);return{from:`queue:${t}`,to:e(n),queue:t,...r&&{via:r}}}),...Object.entries(n.feeds??{}).filter(([e])=>this.shownQueues.some(t=>t.id===e)).map(([e,n])=>({from:`queue:${t}`,to:`queue:${e}`,queue:t,via:n.via}))]),...this.cards.flatMap(({id:e})=>Object.keys(R(this.#M)?.apps[e]?.consumes??{}).filter(e=>this.#z(e)).map(t=>({from:e,to:`outside:${t}`}))),...Object.entries(R(this.#M)?.apps??{}).flatMap(([e,t])=>this.#z(e)?Object.keys(t.consumes??{}).filter(e=>this.cards.some(t=>t.id===e)).map(t=>({from:`outside:${e}`,to:t})):[])]});get flows(){return R(this.#U)}set flows(e){M(this.#U,e)}infraSide(e){let t=new Set(this.cables.flatMap(t=>[t.from===e&&t.fromSide,t.to===e&&t.toSide]));return rc.find(e=>!t.has(e))??`bottom`}deployedCalls(e){return this.#F(e)?[]:(this.app(e)?.calls??[]).flatMap(t=>{let n=this.app(t);return n&&!n.outside&&!this.edges.some(n=>n.id===`${e}>${t}`)?[n]:[]})}callLocally(e,t){this.add(t),this.nodes.some(e=>e.id===t)&&this.connect(e,t)}setQueue(e,t){let{[e]:n,...r}=this.queues;this.queues=t?{...r,[e]:`local`}:r,this.syncInfra()}showQueues(e,t){let n=Object.entries(this.hiddenQueues).filter(([t])=>!e.includes(t));this.hiddenQueues=Object.fromEntries(t?n:[...n,...e.map(e=>[e,!0])])}#W=A(()=>this.plan.flatMap(e=>e.apps.map(t=>({from:t,to:tc(e),tunnel:e}))));get links(){return R(this.#W)}set links(e){M(this.#W,e)}#G=A(()=>{let e=[...this.nodes,...this.infra].filter(e=>e.selected),t=this.edges.filter(e=>e.selected),[n]=e,[r]=t;if(e.length===1&&!t.length&&n){let e=[n.id];for(let{from:t,to:r}of[...this.cables,...this.links,...this.flows])(t===n.id||r===n.id)&&e.push(t,r);return{id:n.id,near:e}}return!e.length&&t.length===1&&r?{id:null,cable:[r.source,r.target],near:[r.source,r.target]}:null});get focus(){return R(this.#G)}set focus(e){M(this.#G,e)}dimmed=e=>!!this.focus&&!this.focus.near.includes(e);lit=(e,t)=>{let n=this.focus;return n?n.cable?n.cable[0]===e&&n.cable[1]===t:e===n.id||t===n.id:!1};dimmedLink=(e,t)=>!!this.focus&&!this.lit(e,t);#K(e){let t=this.boxes.get(e),n=this.ledBy(e).flatMap(e=>this.infraBoxes.get(e)??[]).filter(e=>t&&e.y>t.y&&e.x<t.x+t.w&&e.x+e.w>t.x);return{covered:n.length?Math.max(...n.map(e=>e.w+12)):0,atRight:!!t&&!!n.length&&n.every(e=>Math.abs(e.x+e.w-t.x-t.w)<2)}}#q=A(()=>is(this.cables,{cardOf:e=>this.boxes.get(e),coveredBelow:e=>this.#K(e)}));get ends(){return R(this.#q)}set ends(e){M(this.#q,e)}#J(e,t,n=this.boxes.get(e)??{w:260,h:200},r=!1,i){let a=this.nodes.find(t=>t.id===e),o=new Set(r?this.ownedBy(e):this.ledBy(e));if(!a||!o.size)return t;let s={...a.position,...n},c=i??this.infraSide(e),l=c===`bottom`?s.y+s.h+nc.gap/2:c===`top`?s.y-nc.gap/2:s.y,u=s.y-nc.gap;return t.map(e=>{if(!o.has(e.id))return e;let t=this.infraBoxes.get(e.id)??nc;if(this.#Z(e.id)){u-=t.h;let n={...e,position:{x:s.x+s.w/2-t.w/2,y:u}};return u-=nc.gap,n}c===`top`&&(l-=t.h);let n=c===`right`?s.x+s.w+nc.gap:c===`left`?s.x-nc.gap-t.w:s.x,r={...e,position:{x:n,y:l}};return l+=c===`top`?-nc.gap/2:t.h+nc.gap/2,r})}#Y(e,t){let n=t;for(let{id:t,position:r,measured:i}of e){let e=Math.max(i?.height??0,this.brief?this.fullHeights[t]??0:0),a=i?.width;if(!e||!a)continue;let o=new Set(this.ownedBy(t)),s=new Set(this.ledBy(t)),c=n.filter(e=>{let t=this.infraBoxes.get(e.id)?.w??nc.w;return s.has(e.id)&&e.position.y>=r.y&&e.position.x<r.x+a&&r.x<e.position.x+t}).sort((e,t)=>e.position.y-t.position.y),l=r.y+e,u=-1/0,d={};for(let e of c){let t=o.has(e.id)?l+nc.gap/2:-1/0,n=e.position.y>=Math.max(u,t)?e.position.y:Math.max(u+nc.gap/2,t);n!==e.position.y&&(d[e.id]=n),u=n+(this.infraBoxes.get(e.id)?.h??nc.h)}Object.keys(d).length&&(n=n.map(e=>{let t=d[e.id];return t===void 0?e:{...e,position:{x:e.position.x,y:t}}}))}return n}syncInfra(e={}){let t=new Map(this.infra.map(e=>[e.id,e])),n=[],r=this.plan.map(r=>{let i=tc(r),a=t.get(i);!a&&!e[i]&&n.push(r.apps[0]??``);let o=r.apps.flatMap(e=>this.tunnelsOf(e)).find(e=>e.tunnel===r.host)?.note;return{...a,id:i,type:`tunnel`,deletable:!1,position:a?.position??e[i]??{x:0,y:0},data:{what:r.what,local:`${r.bind}:${String(r.port)}`,moved:!!r.settings||!!r.needsAlias,host:r.host,about:[r.settings?`Moved from port ${String(r.original)} so it does not clash with another tunnel on the board.`:``,r.needsAlias?`Keeps port ${String(r.port)} on its own loopback address, ${r.bind}, so it does not clash (needs sudo once).`:``,typeof o==`string`?o:``].filter(Boolean),apps:r.apps,settings:this.tunnelPath(r.apps[0]??``,r.host)}}}),i=this.env.toUpperCase(),a=e=>R(this.#M)?.apps[e]?.name??e,o=[],s=this.shownQueues.map(r=>{let s=`queue:${r.id}`,c=t.get(s),l=this.#H(r);!c&&!e[s]&&l&&n.push(l),!c&&!e[s]&&r.upstream&&o.push(s);let u=!r.upstream&&Ns.includes(r.queue.type),d=u&&this.queues[r.id]===`local`,f=r.reads.filter(e=>R(this.#L).has(e)&&!this.#X(e,r.id)).map(a),p=!d&&f.length?f.join(` and `):``;return{...c,id:s,type:`queue`,deletable:!1,position:c?.position??e[s]??{x:0,y:0},data:{queue:r.id,name:r.queue.name,kind:r.queue.type.toUpperCase(),can:u,local:d,upstream:r.upstream,shares:p?`Your local ${p} reads the ${i} queue`:``,about:[r.queue.envs?.[this.env]?.queue??r.queue.queue??r.id,r.upstream?`Stays deployed on ${i}: it feeds ${this.#Q(r.queue.feeds)}.`:``,p?`It takes messages the deployed ${i} reader would get. Switch to Local to give your run its own copy.`:``].filter(Boolean)}}}),c=[...new Set([...this.flows.flatMap(e=>[e.from,e.to]),...this.pinned.filter(e=>this.#z(e)).map(e=>`outside:${e}`)])].filter(e=>e.startsWith(`outside:`)&&!this.hiddenOutside[e.slice(8)]).map(n=>{let r=R(this.#M)?.apps[n.slice(8)],o=t.get(n),s=this.env===this.envs[0]?void 0:r?.envs?.[this.env]?.deployedUrl,c=typeof s==`string`?s:r?.deployedUrl??``,l=URL.canParse(c)?new URL(c).hostname:``,u=typeof r?.outside==`string`?`: ${r.outside.replace(/\.+$/,``)}`:``;return{...o,id:n,type:`outside`,deletable:!1,position:o?.position??e[n]??{x:0,y:0},data:{name:r?.name??n.slice(8),where:l?`${i}: ${l}`:`Outside, never runs`,about:[`${r?.name??n.slice(8)} does not run on this Mac${u}. Koppler cannot check calls to it.`,l?`The ${i} board uses ${c}.`:``,...this.flows.filter(e=>e.from===n).map(e=>`It sends to the deployed ${a(e.to)}, not to your local one.`)].filter(Boolean)}}}),l=[...r,...s,...c];for(let e of n)l=this.#J(e,l);l=this.#$(o,l),this.#P=[...new Set([...this.#P,...o])];for(let n of c.filter(n=>!t.has(n.id)&&!e[n.id])){let e=this.#te(n.id,l);l=l.map(t=>t.id===n.id?{...t,position:e}:t)}this.infra=l,this.unplaced=[...new Set([...this.unplaced,...n])]}#X(e,t){let n=R(this.#M)?.apps[e]?.reads?.[t]?.via;return typeof n==`string`?n:void 0}#Z(e){return e.startsWith(`queue:`)&&this.shownQueues.some(t=>t.upstream&&Object.hasOwn(t.queue.feeds??{},e.slice(6)))}#Q(e){return Object.keys(e??{}).map(e=>this.queueName(e)).join(` and `)}#$(e,t){let n=t,r=e;for(let t of e){let e=this.#ee(t,n,r);e&&(n=n.map(n=>n.id===t?{...n,position:e}:n)),r=r.filter(e=>e!==t)}return n}#ee(e,t,n){let r=this.infraBoxes.get(e)??nc,i=this.flows.filter(t=>t.from===e).map(e=>t.find(t=>t.id===e.to&&(t.position.x||t.position.y))).find(Boolean);if(!i)return;let a=e=>({...e.position,...this.infraBoxes.get(e.id)??nc}),o=[...this.nodes.map(e=>({...e.position,...this.boxes.get(e.id)??{w:260,h:200}})),...t.filter(e=>!n.includes(e.id)&&(e.position.x||e.position.y)).map(a)],s=e=>o.every(t=>e.x+r.w+16<=t.x||t.x+t.w+16<=e.x||e.y+r.h+16<=t.y||t.y+t.h+16<=e.y),c=i.position.y-r.h-60,l=i.position.x+a(i).w/2-r.w/2,u=[0,-1,1,-2,2].map(e=>({x:l+e*(r.w+24),y:c}));return u.find(s)??u[0]}#te(e,t,n=e=>this.boxes.get(e)??{w:260,h:200}){let r=nc,i=i=>{let a=t.find(t=>t.id===i&&(t.id===e||t.position.x||t.position.y)),o=this.nodes.find(e=>e.id===i);return a?{...a.position,...this.infraBoxes.get(i)??r}:o&&{...o.position,...n(i)}},a=this.flows.flatMap(t=>{let n=t.from===e?t.to:t.to===e?t.from:void 0,r=n===void 0?void 0:i(n);return r?[{at:r,before:t.to===e}]:[]}),o=[...this.nodes.map(e=>i(e.id)),...t.filter(t=>t.id!==e).map(e=>i(e.id))],s=e=>o.every(t=>!t||e.x+r.w+16<=t.x||t.x+t.w+16<=e.x||e.y+r.h+16<=t.y||t.y+t.h+16<=e.y),[c]=a;if(!c)return{x:40,y:40};let{at:l,before:u}=c,d=u?[l.x+l.w+80,l.x-r.w-80]:[l.x-r.w-80,l.x+l.w+80],f=[{x:d[0]??0,y:l.y},{x:d[1]??0,y:l.y},{x:l.x,y:l.y+l.h+40},{x:l.x,y:l.y-r.h-40},...Array.from({length:9},(e,t)=>({x:d[0]??0,y:l.y+(t+1)*(r.h+24)}))];return f.find(s)??f[0]??{x:40,y:40}}settle(){let e=e=>e.every(e=>e.measured?.width);if(!this.unplaced.length&&!this.#P.length||!e(this.nodes)||!e(this.infra))return;let t=this.infra;for(let e of this.unplaced)t=this.#J(e,t);t=this.#$(this.#P,t),this.#P=[],this.unplaced=[],this.infra=t}pushed(e,t,n,r){let i=new Set(this.ledBy(e));return r.map(e=>i.has(e.id)&&e.position.y>=t?{...e,position:{x:e.position.x,y:e.position.y+n}}:e)}followed(e,t,n){let r=new Set(this.ownedBy(e));return n.map(e=>r.has(e.id)&&!e.selected&&!e.dragging?{...e,position:{x:e.position.x+t.x,y:e.position.y+t.y}}:e)}hideTunnel(e){let t=this.infra.find(t=>t.id===e),n=new Set(t?.type===`tunnel`?t.data.apps:[]);this.nodes=this.nodes.map(e=>n.has(e.id)?{...e,data:{...e.data,hideTunnels:!0}}:e)}flowNodes(){return[...this.nodes,...this.infra].map(e=>{let t=this.shown(e.position,e.id);return this.#ne.set(e.id,t),{...e,position:t}})}#ne=new Map;#re={};fromFlow(e,t,n){let r=new Map([...this.nodes,...this.infra].map(e=>[e.id,e])),i=[],a=e.map(e=>{let t=r.get(e.id),n=e.dragging||t?.dragging?{...e,position:e.type===`app`?this.#ie(e.id,e.position,i):this.#ae(e.id,e.position,i)}:e;if(t?.dragging&&!n.dragging)return{...n,position:this.dropped(n.id,n.position)};let a=t&&(this.#ne.get(t.id)??this.shown(t.position,t.id));return t&&a?.x===n.position.x&&a.y===n.position.y?{...n,position:t.position}:{...n,position:this.stored(n.position,n.id)}}),o=e.every(e=>!e.dragging)?[]:i;o.join()!==this.snapped.join()&&(this.snapped=o);let s=new Map(this.nodes.map(e=>[e.id,e.position])),c={},l=[],u=a.filter(e=>e.type!==`app`),d=a.filter(e=>e.type===`app`);for(let{id:e,measured:r}of d){let i=this.#re[e],a=r?.height;a&&(this.#re[e]={brief:t,height:a}),a&&a!==i?.height&&l.push(e);let o=n&&i?.brief===t&&a?a-i.height:0;o&&(c[e]={bottom:i?.height??0,by:o});let s=this.boxes.get(e);if(o&&s){let t=e=>!!e&&e.y>=s.y+(i?.height??0)&&e.x<s.x+s.w&&s.x<e.x+e.w;for(let n of d.filter(n=>n.id!==e&&t(this.boxes.get(n.id))))u=this.followed(n.id,{x:0,y:o},u);d=d.map(n=>n.id!==e&&t(this.boxes.get(n.id))?{...n,position:{x:n.position.x,y:n.position.y+o}}:n)}}for(let{id:e,position:t}of d){let n=c[e];n&&(u=this.pushed(e,t.y+n.bottom,n.by,u));let r=s.get(e);r&&(r.x!==t.x||r.y!==t.y)&&(u=this.followed(e,{x:t.x-r.x,y:t.y-r.y},u))}return u=this.#Y(d.filter(e=>l.includes(e.id)),u),this.nodes=d,this.infra=u,this.brief&&e.some(e=>e.dragging||r.get(e.id)?.dragging)&&(this.#O=this.#k()),Object.keys(c).length>0}#ie(e,t,n){let r=this.boxes.get(e);if(!r)return t;let i=ic/(this.view?.zoom??1),a={...r,x:t.x,y:t.y},o=(e,t,n)=>{let r=this.cables[e];if(!r)return;let i=r[`${t}Side`],a=Jo(n,i),o=this.ends.offset[`${String(e)}|${t}`]??0;return{side:i,at:Uo[i][0]===0?{...a,x:a.x+o}:{...a,y:a.y+o}}},s,c;this.cables.forEach((t,n)=>{let r=t.from===e?`from`:t.to===e?`to`:null;if(!r||t.from===t.to)return;let l=r===`from`?`to`:`from`,u=this.boxes.get(t[l]);if(!u||this.nodes.some(e=>e.id===t[l]&&e.dragging))return;let d=o(n,r,a),f=o(n,l,u);if(!d||!f)return;let p=Uo[d.side][0]!==0,m=p?f.at.y-d.at.y:f.at.x-d.at.x,h={by:m,cable:`${t.from}>${t.to}`};Math.abs(m)>i||(p&&(!c||Math.abs(m)<Math.abs(c.by))&&(c=h),!p&&(!s||Math.abs(m)<Math.abs(s.by))&&(s=h))});let l=new Set(this.ownedBy(e)),u=[...this.links.filter(t=>t.from===e).map(e=>e.to),...this.flows.flatMap(t=>t.from===e?[t.to]:t.to===e?[t.from]:[])].filter(e=>!l.has(e));for(let t of new Set(u)){let n=this.infraBoxes.get(t);if(!n||this.infra.some(e=>e.id===t&&e.dragging))continue;let r=Math.max(n.x-(a.x+a.w),a.x-(n.x+n.w)),o=Math.max(n.y-(a.y+a.h),a.y-(n.y+n.h))>=r,l=o?n.x+n.w/2-(a.x+a.w/2):n.y+n.h/2-(a.y+a.h/2);if(Math.abs(l)>i)continue;let u={by:l,cable:`${e}>${t}`};o&&(!s||Math.abs(l)<Math.abs(s.by))&&(s=u),!o&&(!c||Math.abs(l)<Math.abs(c.by))&&(c=u)}let d=s?.by??0,f=c?.by??0;for(let e of[s,c])e&&n.push(e.cable,e.cable.split(`>`).reverse().join(`>`));return{x:t.x+d,y:t.y+f}}#ae(e,t,n){let r=this.infraBoxes.get(e);if(!r)return t;let i=ic/(this.view?.zoom??1),a={...r,x:t.x,y:t.y},o=[...this.links.filter(t=>t.to===e).map(e=>e.from),...this.flows.flatMap(t=>t.from===e?[t.to]:t.to===e?[t.from]:[])],s,c;for(let e of new Set(o)){let t=this.boxes.get(e)??this.infraBoxes.get(e);if(!t||[...this.nodes,...this.infra].some(t=>t.id===e&&t.dragging))continue;let n=Math.max(t.x-(a.x+a.w),a.x-(t.x+t.w)),r=Math.max(t.y-(a.y+a.h),a.y-(t.y+t.h))>=n,o=r?t.x+t.w/2-(a.x+a.w/2):t.y+t.h/2-(a.y+a.h/2);if(Math.abs(o)>i)continue;let l=r?s:c;l&&Math.abs(l.by)<=Math.abs(o)||(r?s={by:o,partner:e}:c={by:o,partner:e})}for(let t of[s,c])t&&n.push(`${t.partner}>${e}`,`${e}>${t.partner}`);return{x:a.x+(s?.by??0),y:a.y+(c?.by??0)}}#oe=j([]);get snapped(){return R(this.#oe)}set snapped(e){M(this.#oe,e)}#se=j();get view(){return R(this.#se)}set view(e){M(this.#se,e)}#ce=j(!1);get unsaved(){return R(this.#ce)}set unsaved(e){M(this.#ce,e,!0)}#le={};#ue=j(!1);get live(){return R(this.#ue)}set live(e){M(this.#ue,e,!0)}#de=``;#fe={};goLive(){this.live||=(this.commit(),this.#fe=this.saved(),this.#de=this.content(),!0)}goEdit(){this.live&&=(this.setContent(this.#de),!1)}content(){return JSON.stringify({name:this.name,nodes:this.nodes.map(({id:e,type:t,position:n,data:r})=>({id:e,type:t,position:n,data:r})),infra:this.infra.map(({id:e,position:t})=>({id:e,position:t})),queues:this.queues,hiddenQueues:this.hiddenQueues,hiddenOutside:this.hiddenOutside,pinned:this.pinned,edges:this.edges.map(({id:e,source:t,target:n,type:r,data:i})=>({id:e,source:t,target:n,type:r,data:i}))})}setContent(e){let{name:t,nodes:n,edges:r,infra:i,queues:a,hiddenQueues:o,hiddenOutside:s,pinned:c}=JSON.parse(e);this.name=t,this.pinned=c,this.nodes=n,this.edges=r,this.queues=a,this.hiddenQueues=o,this.hiddenOutside=s,this.syncInfra(Object.fromEntries(i.map(({id:e,position:t})=>[e,t]))),this.infra=this.infra.map(e=>({...e,position:i.find(t=>t.id===e.id)?.position??e.position}))}#pe=j(null);get name(){return R(this.#pe)}set name(e){M(this.#pe,e,!0)}#me=j([]);get own(){return R(this.#me)}set own(e){M(this.#me,e)}get team(){return R(this.#M)?.presets??[]}#he=j(null);get opened(){return R(this.#he)}set opened(e){M(this.#he,e,!0)}#ge(){let e=e=>this.app(e);return{known:t=>!!e(t),cloned:t=>!!e(t)?.cloned,name:t=>e(t)?.name??t,canCall:(t,n)=>!e(t)?.outside&&!!e(n)&&!e(n)?.outside&&!!e(n)?.answers,runIn:t=>(e(t)?.runIn??[]).map(([e])=>e),platforms:t=>(e(t)?.platforms??[]).map(([e])=>e),branches:t=>{let n=e(t)?.branches??[];return n.length&&n.length<300?n:null}}}#_e(e){return{name:e,version:1,nodes:Object.fromEntries(this.nodes.map(({id:e,data:t})=>[e,{run:t.run,...t.platform&&{platform:t.platform},...t.branch&&{branch:t.branch},...t.note&&{note:t.note},...t.hideTunnels&&{tunnels:!1},...t.showQueues&&this.queuesOf(e).length>0&&{queues:!0},...t.watch&&t.run===`cli`&&{watch:!0}}])),edges:this.edges.map(({source:e,target:t})=>({from:e,to:t})),...this.pinned.length&&{outside:this.pinned}}}#ve(){let e=e=>Object.fromEntries(e.map(({id:e,position:t})=>[e,{x:Math.round(t.x),y:Math.round(t.y)}]));return{nodes:e(this.nodes),infra:e(this.infra),sides:Object.fromEntries(this.edges.map(({id:e,data:t})=>[e,[t.fromSide,t.toSide,null,null,t.fromSlot??null,t.toSlot??null,t.points??null,t.fromShift??null,t.toShift??null]]))}}#ye(){let e=e=>{let t={...this.own.find(t=>t.name===e),...this.#_e(e),layout:this.#ve()},n=this.own.some(t=>t.name===e)?this.own.map(n=>n.name===e?t:n):[...this.own,t];JSON.stringify(n)!==JSON.stringify(this.own)&&(this.own=n),this.name!==e&&(this.name=e)};if(this.own.some(e=>e.name===this.name)){e(this.name??``);return}if(!this.nodes.length||this.scratch&&this.nodes.length<2)return;this.scratch=!1;let t=this.team.find(e=>e.name===this.name),n=e=>JSON.stringify([e.nodes,e.edges.map(e=>`${e.from}>${e.to}`).sort()]),r=t&&qs(t,this.#ge()).preset;if(t&&r&&n(this.#_e(t.name))===n(r))return;let i=t&&this.own.find(e=>e.name===`${t.name} (local)`||e.name===`${t.name} (mine)`),a=this.nodes[0]?.data.name??`Untitled`,o=this.nodes.length>1?`${a} + ${String(this.nodes.length-1)}`:a;e(i?.name??this.uniqueName(t?`${t.name} (local)`:this.name||o))}uniqueName(e){let t=new Set([...this.team,...this.own].map(e=>e.name)),n=e;for(let r=2;t.has(n);r++)n=`${e} (${String(r)})`;return n}#be=j([]);get trash(){return R(this.#be)}set trash(e){M(this.#be,e)}#xe=j([]);get recent(){return R(this.#xe)}set recent(e){M(this.#xe,e)}rename(e){let t=e.trim().slice(0,80),n=this.name;return this.own.some(e=>e.name===n)?t?t===n?null:[...this.team,...this.own].some(e=>e.name===t)?`A board is already called ${t}. Pick another name.`:(this.own=this.own.map(e=>e.name===n?{...e,name:t}:e),this.name=t,null):`Give the board a name first.`:`Only a board of your own can be renamed.`}duplicate(){if(!this.nodes.length)return;this.#ye();let e=this.nodes[0]?.data.name??`Untitled`,t=this.uniqueName(`${this.name??e} copy`);this.own=[...this.own,{...this.#_e(t),layout:this.#ve()}],this.name=t}deleteBoard(e){let t=this.own.find(t=>t.name===e);t&&(this.own=this.own.filter(e=>e!==t),this.trash=[{...t,deleted:new Date().toISOString()},...this.trash].slice(0,20),this.name===e&&this.newBoard())}restore(e){let{deleted:t,...n}=e,r={...n,name:this.uniqueName(e.name)};this.trash=this.trash.filter(t=>t!==e),this.own=[...this.own,r],this.nodes.length||this.openBoard(r)}importBoards(e,t){let n=e?.presets,r=(Array.isArray(e)?e:Array.isArray(n)?n:[e]).map(e=>Ws(e)),i=r.flatMap(e=>e.preset?[{...e.preset,name:e.preset.name.trim().slice(0,80),source:t}]:[]),[a]=i;if(!a)return{error:r[0]?.error??`No board found in it.`};let o=qs(a,this.#ge());if(o.error!==void 0)return{error:o.error};let s=[...new Map(i.map(e=>[e.name,e])).values()];this.own=[...this.own.filter(e=>!s.some(t=>t.name===e.name)),...s];let c=this.openBoard(a);return c.error===void 0?{notes:c.notes,name:a.name}:c}forTeam(e){let{layout:t,outside:n}=e;return{...JSON.parse(this.asShared(e)),...t?{layout:t}:{},...n?{outside:n}:{}}}keptForTeam(e,t){let n=[...R(this.#M)?.presets??[]];n[e]=t,R(this.#M)&&M(this.#M,{...R(this.#M),presets:n})}asShared(e){let{name:t,nodes:n,edges:r}=e;return JSON.stringify({name:t,version:Ws(e).preset?.version??1,nodes:n,edges:r},null,2)}#Se=j([]);get dismissed(){return R(this.#Se)}set dismissed(e){M(this.#Se,e)}#Ce=j(!1);get scratch(){return R(this.#Ce)}set scratch(e){M(this.#Ce,e,!0)}alone(e){let t=[...this.own,...this.team].find(e=>e.name===this.name);return this.newBoard(),this.scratch=!0,this.add(e),this.opened=`fit`,t}newBoard(){this.scratch=!1,this.dismissed=[],this.name=null,this.nodes=[],this.edges=[],this.queues={},this.hiddenQueues={},this.hiddenOutside={},this.hiddenLogs={},this.logAliases={},this.pinned=[]}openBoard(e){if(!Object.keys(e.nodes).length)return this.newBoard(),this.name=e.name,{notes:[]};let t=qs(e,this.#ge());if(t.error!==void 0)return{error:t.error};let{preset:n,notes:r}=t,i=e.layout??{},a=e=>{let{x:t,y:n}=i.nodes?.[e]??{};return typeof t==`number`&&typeof n==`number`&&Number.isFinite(t)&&Number.isFinite(n)?{x:t,y:n}:null},o=Object.keys(n.nodes),s=o.every(a);this.scratch=!1,this.dismissed=[],this.recent=[{name:n.name,at:new Date().toISOString()},...this.recent.filter(e=>e.name!==n.name)].slice(0,20),this.name=n.name,this.queues={},this.hiddenQueues={},this.hiddenOutside={},this.hiddenLogs={},this.logAliases={},this.pinned=Array.isArray(e.outside)?e.outside.filter(e=>typeof e==`string`):[],this.infra=this.infra.map(lc),this.nodes=o.flatMap(e=>{let t=this.app(e),r=n.nodes[e];if(!t||!r)return[];let i={...r,hideTunnels:r.tunnels===!1,showQueues:r.queues===!0};return[this.#Oe(t,s&&a(e)||{x:0,y:0},i)]});let c=Object.fromEntries(this.nodes.map(({id:e,position:t})=>[e,t])),l=e=>typeof e==`string`&&e in Uo,u=(e,t)=>Number.isInteger(t)?{[e]:t}:{},d=(e,t)=>typeof t==`number`&&Number.isFinite(t)?{[e]:t}:{};return this.edges=n.edges.map(({from:e,to:t})=>{let[n,r,,,a,o,f,p,m]=i.sides?.[`${e}>${t}`]??[];return!s||!l(n)||!l(r)?cc(e,t,Vo(c,{from:e,to:t},`down`,()=>({w:260,h:160}))):cc(e,t,{fromSide:n,toSide:r,...u(`fromSlot`,a),...u(`toSlot`,o),...d(`fromShift`,p),...d(`toShift`,m),...Array.isArray(f)&&{points:f}})}),this.infra=[],this.syncInfra(s?i.infra??{}:{}),this.opened=s?`fit`:`arrange`,{notes:r}}clear(){this.nodes=[],this.edges=[]}#we=j([]);get apps(){return R(this.#we)}set apps(e){M(this.#we,e)}#Te=A(()=>new Map(this.apps.map(e=>[e.id,e])));app=e=>R(this.#Te).get(e);nameOf=e=>R(this.#Te).get(e)?.name??e;#Ee=j([]);get envs(){return R(this.#Ee)}set envs(e){M(this.#Ee,e)}#De=j([]);get roots(){return R(this.#De)}set roots(e){M(this.#De,e)}area=()=>new DOMRect;show=()=>void 0;#Oe(e,t,n={}){let{id:r,name:i,kind:a,kindLabel:o,runIn:s,platforms:c}=e,l=s.some(([e])=>e===n.run)?n.run:s[0]?.[0],u=c.some(([e])=>e===n.platform)?n.platform:c[0]?.[0];return{id:r,type:`app`,position:t,data:{name:i,kind:a,kindLabel:o,...n.hideTunnels===!0&&{hideTunnels:!0},...n.showQueues===!0&&{showQueues:!0},...n.watch===!0&&{watch:!0},...(n.changes===`take-along`||n.changes===`set-aside`)&&{changes:n.changes},...Array.isArray(n.libraries)&&{libraries:n.libraries.filter(e=>typeof e==`string`)},branch:n.branch??``,run:l??`cli`,...u&&{platform:u},note:n.note??``}}}async reload(){this.commit(),await So(this.saved());let e=await bo();e&&this.open(e)}open({stack:e,clones:t,roots:n,saved:r}){let i=Ao(e);M(this.#M,i),M(this.#u,i.envs.filter(e=>Is(i,e))),this.stack=i.name??``,this.dir=(i.source??``).replace(/\/stack\.json$/,``),this.setup=!!i.setup,this.known=i.stacks??[],this.envs=i.envs,this.env=r?.env??i.envs[0]??``,this.roots=n,this.apps=Object.entries(i.apps).map(([e,n])=>({id:e,name:n.name,kind:n.kind,kindLabel:xs(n,i).label,slug:n.slug??``,cloned:!!t[e],calls:[...new Set([...Object.keys(n.consumes??{}),...Object.keys(i.found?.[e]??{})])],known:Object.keys(n.consumes??{}),answers:xs(n,i).serves||Object.entries(i.apps).some(([t,n])=>t!==e&&(n.consumes?.[e]??i.found?.[t]?.[e])),serves:!!n.url,runIn:[...xs(n,i).runIn,...n.mock?.length?[[`mock`,`Mock`]]:[]],platforms:xs(n,i).platforms??[],current:t[e]?.branch??``,branches:t[e]?.branches??[],dirty:t[e]?.dirty??0,libraries:(t[e]?.libraries??[]).map(({name:e,path:t})=>({name:e,path:t})),...n.outside&&{outside:typeof n.outside==`string`?n.outside:`an outside system`}})),this.nodes=this.apps.flatMap(e=>{let t=r?.nodes?.[e.id];return t?[this.#Oe(e,{x:t.x,y:t.y},t)]:[]}),this.fullHeights=Object.fromEntries(Object.entries(r?.nodes??{}).flatMap(([e,t])=>typeof t?.full==`number`&&t.full>0?[[e,t.full]]:[]));let a=new Set(this.nodes.map(({id:e})=>e));this.edges=(r?.edges??[]).filter(({from:e,to:t})=>a.has(e)&&a.has(t)).map(({from:e,to:t,fromSide:n,toSide:r,...i})=>cc(e,t,{fromSide:n??`right`,toSide:r??`left`,...i})),this.#le=r??{},this.name=typeof r?.preset==`string`?r.preset:null,this.own=Array.isArray(r?.presets)?r.presets:[],this.#ke=this.own.map(e=>e.name),this.scratch=r?.scratch===!0,this.dismissed=Array.isArray(r?.dismissed)?r.dismissed:[],this.trash=Array.isArray(r?.trash)?r.trash:[],this.recent=Array.isArray(r?.recent)?r.recent:[],this.infra=[],this.queues=r?.queues??{},this.hiddenQueues=r?.hiddenQueues??{},this.hiddenOutside=r?.hiddenOutside??{},this.hiddenLogs=r?.hiddenLogs??{},this.logAliases=r?.logAliases??{},this.pinned=Array.isArray(r?.outside)?r.outside:[],this.syncInfra(r?.infra??{});let{zoom:o,pan:s}=r??{};this.view=o&&s?{x:s.x,y:s.y,zoom:o}:void 0}commit(){!this.live&&!this.nodes.some(e=>e.dragging)&&this.#ye()}get changes(){return[R(this.#M),this.live,this.env,this.name,this.scratch,this.view,this.nodes,this.edges,this.infra,this.own,this.trash,this.recent,this.dismissed,this.fullHeights,this.queues,this.hiddenQueues,this.hiddenOutside,this.hiddenLogs,this.logAliases,this.pinned]}#ke=[];saved(){if(this.#ke=[...new Set([...this.#ke,...this.own.map(e=>e.name)])],this.live)return{...this.#fe,env:this.env};let e=this.#le.nodes??{};return{mode:`auto`,...this.#le,preset:this.name,presets:this.own,seen:this.#ke,trash:this.trash,recent:this.recent,scratch:this.scratch||void 0,dismissed:this.dismissed.length?this.dismissed:void 0,env:this.env,...this.view&&{zoom:this.view.zoom,pan:{x:this.view.x,y:this.view.y}},nodes:Object.fromEntries(this.nodes.map(({id:t,position:n,data:{branch:r,run:i,platform:a,note:o,hideTunnels:s,showQueues:c,watch:l,changes:u,libraries:d}})=>[t,{...e[t],x:Math.round(n.x),y:Math.round(n.y),branch:r,run:i,...a&&{platform:a},note:o,hideTunnels:s?!0:void 0,showQueues:c?!0:void 0,watch:l?!0:void 0,changes:u,libraries:d?.length?d:void 0,full:this.fullHeights[t]}])),edges:this.edges.map(({source:e,target:t,data:n})=>({from:e,to:t,...n})),queues:this.queues,hiddenQueues:this.hiddenQueues,hiddenOutside:Object.keys(this.hiddenOutside).length?this.hiddenOutside:void 0,hiddenLogs:Object.keys(this.hiddenLogs).length?this.hiddenLogs:void 0,logAliases:Object.keys(this.logAliases).length?this.logAliases:void 0,outside:this.pinned.length?this.pinned:void 0,infra:Object.fromEntries(this.infra.map(({id:e,position:t})=>[e,{x:Math.round(t.x),y:Math.round(t.y)}]))}}add(e,t){let n=this.app(e);if(!n||n.outside||!n.cloned||this.nodes.some(t=>t.id===e))return;if(t){let e=this.toFlow(t);this.#Ae(this.#Oe(n,this.stored({x:e.x-sc.w/2,y:e.y-22})));return}let r=this.area(),i=this.toFlow({x:r.left,y:r.top}),a=this.toFlow({x:r.right,y:r.bottom}),o=this.nodes.map(({id:e,position:t})=>this.boxes.get(e)??{...this.shown(t,e),w:sc.w,h:sc.h}),s=(e,t)=>o.every(n=>e+sc.w+sc.gap<=n.x||n.x+n.w+sc.gap<=e||t+sc.h+sc.gap<=n.y||n.y+n.h+sc.gap<=t),c=(e,t,n)=>Array.from({length:Math.max(0,Math.floor((t-n-e-40)/40)+1)},(t,n)=>e+40+n*40),l=(e,t)=>e-t,u=(e,t)=>[...new Set([...e,...t])],d=u(o.map(e=>e.y).sort(l),c(i.y,a.y,sc.h)).filter(e=>e>=i.y&&e+sc.h<=a.y),f=u(o.map(e=>e.x+e.w+sc.gap).sort(l),c(i.x,a.x,sc.w)).filter(e=>e>=i.x&&e+sc.w<=a.x),p;for(let e of d)if(p=f.filter(t=>s(t,e)).map(t=>({x:t,y:e}))[0],p)break;let m=this.nodes.length*32;this.#Ae(this.#Oe(n,this.stored(p??{x:i.x+48+m,y:i.y+48+m})))}selectAll(){let e=e=>e.selected?e:{...e,selected:!0};this.nodes=this.nodes.map(e),this.infra=this.infra.map(e),this.edges=this.edges.map(lc)}pick(e){let t=t=>!!t.selected==(t.id===e)?t:{...t,selected:t.id===e};this.infra=this.infra.map(t),this.edges=this.edges.map(lc),this.nodes=this.nodes.map(t)}#Ae(e){this.infra=this.infra.map(lc),this.edges=this.edges.map(lc),this.nodes=[...this.nodes.map(lc),{...e,selected:!0}]}logName(e){return this.logAliases[e]??this.nameOf(e)}aliasLog(e,t){let{[e]:n,...r}=this.logAliases,i=t.trim().slice(0,24);this.logAliases=i&&i!==this.nameOf(e)?{...r,[e]:i}:r}showLog(e,t){let{[e]:n,...r}=this.hiddenLogs;this.hiddenLogs=t?r:{...r,[e]:!0}}showOutside(e,t){let{[e]:n,...r}=this.hiddenOutside;this.hiddenOutside=t?r:{...r,[e]:!0},t?this.pin(e):this.unpin(e),this.syncInfra()}set(e,t){this.nodes=this.nodes.map(n=>n.id===e?{...n,data:{...n.data,...t}}:n)}cablesOf(e){let t=e=>this.app(e),n=this.cards.flatMap(n=>n.id===e?[]:t(n.id)??[]),r=n.filter(t=>this.edges.some(n=>n.id===`${e}>${t.id}`)),i=n.filter(e=>!r.includes(e)),a=i.filter(n=>t(e)?.calls.includes(n.id)),o=i.filter(t=>!t.outside&&t.answers&&!t.calls.includes(e));return{can:a.length?a:o,wired:r}}uncabled(e){return this.cards.length>1&&!this.edges.some(t=>t.source===e||t.target===e)}connect(e,t){let n=cc(e,t,Vo(Object.fromEntries(this.nodes.map(({id:e,position:t})=>[e,t])),{from:e,to:t},`down`,e=>this.boxes.get(e)??{w:260,h:160}));this.edges=[...this.edges.filter(e=>e.id!==n.id),n]}cut(e,t){this.edges=this.edges.filter(n=>n.id!==`${e}>${t}`)}remove(e){this.nodes=this.nodes.filter(t=>t.id!==e),this.edges=this.edges.filter(t=>t.source!==e&&t.target!==e)}edit(e,t,n=!1){if(this.name!==e){let r=this.own.find(t=>t.name===e)??this.team.find(t=>t.name===e)??(n?{name:e,version:1,nodes:{},edges:[]}:void 0);if(!r)return!1;let i={...Xs(r,t),name:e};if(JSON.stringify(i)===JSON.stringify(r))return!1;let a=this.own.some(t=>t.name===e);return this.own=a?this.own.map(t=>t.name===e?i:t):[...this.own,i],!0}let r=this.content(),i=e=>this.cards.some(t=>t.id===e);for(let e of t.remove??[])this.remove(e);for(let e of t.add??[])this.add(e);for(let[e,n]of Object.entries(t.branch??{}))this.set(e,{branch:n});for(let[e,n]of Object.entries(t.note??{}))this.set(e,{note:n});for(let{from:e,to:n}of t.uncable??[])this.cut(e,n);for(let{from:e,to:n}of t.cable??[])i(e)&&i(n)&&!this.edges.some(t=>t.id===`${e}>${n}`)&&this.connect(e,n);return t.arrange&&(this.opened=`arrange`),this.content()!==r||!!t.arrange}#je={key:``,version:0};arrange(e=e=>this.boxes.get(e)??{w:260,h:160}){let t=()=>JSON.stringify(this.nodes.map(({id:e,position:t})=>[e,t.x,t.y])),n=t(),r=n===this.#je.key?this.#je.version+1:0;for(let i=0;i<ec.length;i++,r++){let[i,a]=ec[r%ec.length]??ec[0];if(this.#Me(e,i,a),t()!==n)break}this.#je={key:t(),version:r}}#Me(e,t,n){let r=this.cables.map(({from:e,to:t})=>({from:e,to:t})),i=e=>t===`down`&&r.some(t=>t.from===e)?`right`:`bottom`,a=n=>{let i=this.ledBy(n).filter(e=>this.ownedBy(n).includes(e)).map(e=>this.infraBoxes.get(e)??nc),{w:a,h:o}=e(n);if(!i.length)return{w:a,h:o};let s=i.reduce((e,t)=>e+t.h+nc.gap/2,0),c=Math.max(...i.map(e=>e.w));return t===`down`&&r.some(e=>e.from===n)?{w:a+nc.gap+c,h:Math.max(o,s)}:{w:Math.max(a,c),h:o+s}},o=new Map(this.nodes.flatMap(e=>this.ownedBy(e.id).map(t=>[t,e.id]))),s=this.infra.filter(e=>e.type!==`tunnel`&&!o.has(e.id)).map(e=>e.id),c=e=>s.includes(e)||this.cards.some(t=>t.id===e),l=e=>o.get(e)??e,u=this.flows.map(({from:e,to:t})=>({from:l(e),to:l(t)})).filter(({from:e,to:t})=>e!==t&&c(e)&&c(t)),d=Bo([...this.nodes.map(e=>e.id),...s],[...r,...u],e=>s.includes(e)?this.infraBoxes.get(e)??{w:220,h:70}:a(e),t,n,{pad:ac,anchor:n=>s.includes(n)?void 0:t===`down`?e(n).w/2:oc/2}),f=Object.fromEntries(this.nodes.filter(e=>this.ownedBy(e.id).length).map(e=>[e.id,i(e.id)])),p=r.map(n=>({...n,...Vo(d,n,t,e,f)}));rs(p,t=>({...d[t]??{x:0,y:0},...e(t)})),this.nodes=this.nodes.map(e=>({...e,position:d[e.id]??e.position})),this.edges=p.map(({from:e,to:t,...n})=>cc(e,t,n));let m=this.infra.map(e=>{let t=d[e.id];return t?{...e,position:t}:e});for(let t of this.nodes)m=this.#J(t.id,m,e(t.id),!0,f[t.id]);this.infra=m}},uc={waiting:`Waiting`,building:`Building`,running:`Running`,unhealthy:`Unhealthy`,exited:`Exited`,"failed-to-start":`Failed to start`,"secret-missing":`Secret missing`},dc={waiting:e=>e||`Waiting.`,building:e=>`Building. ${e}`,running:()=>``,unhealthy:e=>`Unhealthy: ${e}`,exited:e=>`Exited. ${e}`,"failed-to-start":e=>`Failed to start: ${e}`,"secret-missing":e=>`Secret missing: ${e}. Set it under Credentials.`},Q=new class{#e=j(null);get status(){return R(this.#e)}set status(e){M(this.#e,e)}#t=j(!1);get asked(){return R(this.#t)}set asked(e){M(this.#t,e,!0)}#n;#r=``;watch(){let e=!1,t=async()=>{if(!(document.hidden||e)){e=!0;try{let e=await fetch(`data/status.json`),t=e.ok?await e.text():this.#r;t!==this.#r&&(this.#r=t,this.status=JSON.parse(t))}catch{}e=!1,this.asked||requestAnimationFrame(()=>requestAnimationFrame(()=>this.asked=!0))}};t(),clearInterval(this.#n),this.#n=setInterval(()=>void t(),1500)}sent(e){let{live:t,progress:n}=this.status??{},r=!t?.env||t.env===Z.env;return!!t?.nodes?.[e]&&r||!!n?.apps?.includes(e)&&n.env===Z.env}#i(e){return this.sent(e)?this.status?.apps?.[e]:void 0}up(e){let t=this.#i(e);return t?t.running?t.running.length>0:t.listening??null:null}state(e){let t=this.#i(e);if(t?.state)return t.state;if(!this.sent(e)||this.up(e))return null;let n=(this.status?.secrets?.[e]?.[Z.env]??[]).filter(e=>!e.stored).map(e=>e.name);return n.length?{state:`secret-missing`,detail:n.join(`, `)}:null}stateSaid(e){let t=this.state(e);return t?dc[t.state](t.detail).trim():``}about(e){let t=this.#i(e);if(t?.running)return this.where(e);if(t?.listening===void 0)return``;let n=String(t.port??``);return t.listening?`Running on port ${n}`:`Nothing is listening on port ${n}`}where(e){let t=this.#i(e);if(!t?.running){let n=this.status?.apps?.[e],r=n?.running?n.running.length>0:n?.listening===!0,i=(this.status?.live?.env??``).toUpperCase();return!t&&r&&this.status?.live?.nodes?.[e]?`Running for your ${i} board, not this one. Run switches it.`:``}let[n]=t.running;if(!n)return`Not running on a simulator or device`;let r={ios:`iOS simulator`,android:`Android`}[n.platform]??n.platform,i=n.source?`, started from ${n.source===`ide`?`your IDE`:`Koppler`}`:``,a=t.running.length>1?`, and ${String(t.running.length-1)} more`:``;return`Running on ${n.device} (${r})${n.flavor?`, ${n.flavor}`:``}${i}${a}`}steps(e){let t=this.#i(e)?.steps??[],n=this.up(e);return n===!0?t.map(e=>(e.label===`Start`||e.label===`Check`)&&(e.state===`user`||e.state===`todo`)?{label:e.label,state:`done`,detail:`Running.`}:e):n===!1?t.map(e=>e.label===`Check`&&e.state===`done`?{...e,state:`todo`,detail:`Not running right now.`}:e):t}hasLog(e){return!!this.status?.apps?.[e]?.logTail}tail(e){return this.status?.apps?.[e]?.logTail??``}tunnel(e,t){return t.some(e=>this.sent(e))?this.status?.ports?.[e]:void 0}};function fc(e){let t=t=>e.find(e=>e.state===t),[n,r,i]=[t(`failed`),t(`user`),t(`todo`)];return n?[`failed`,`Failed: ${n.label}`]:r?[`user`,`Waiting on you: ${r.label}`]:i?[`todo`,`Next: ${i.label}`]:[`done`,`All steps done`]}var pc=(e,t)=>xo(e,t,!0),mc=e=>{if(e.matches(`.svelte-flow__pane`))return`the empty board`;let t=e.matches(`input[type="radio"], input[type="checkbox"]`)&&e.closest(`label`)||e.closest(`button, a, [role="button"], [role="option"], [role="radio"], [role="menuitem"], label, input, select, summary, .svelte-flow__node, .svelte-flow__edge`)||e,n=t instanceof HTMLInputElement||t instanceof HTMLSelectElement?t.labels?.[0]:null,r=(t.getAttribute(`aria-label`)??t.getAttribute(`title`)??(n??t).textContent).replace(/\s+/g,` `).trim().slice(0,80),i=t.closest(`.svelte-flow__node, .svelte-flow__edge`)?.getAttribute(`data-id`)??``;return`${t.tagName.toLowerCase()}${r?` "${r}"`:``}${i?` in ${i}`:``}`},hc=e=>!!e.closest(`[type="password"], [data-secret]`),gc=new class{#e=j(!1);#t=[];#n;get forced(){return!!Q.status?.dev}get on(){return R(this.#e)||this.forced}set on(e){M(this.#e,e,!0);try{localStorage.setItem(`koppler-debug`,e?`on`:`off`)}catch{}e&&this.note(`debug`,`Debug log on`)}note(e,t,n){if(!this.on)return;let r={apps:Z.nodes.length,cables:Z.edges.length,view:Z.live?`live`:`edit`,env:Z.env,zoom:Math.round((Z.view?.zoom??1)*100)/100};this.#t.push({at:new Date().toISOString(),kind:e,what:t,...n&&{detail:n.slice(0,300)},board:r}),clearTimeout(this.#n),this.#n=setTimeout(()=>{this.flush()},1500)}flush(){let e=this.#t.splice(0);e.length&&pc(`debug-log`,{entries:e})}async read(){return this.flush(),await new Promise(e=>setTimeout(e,300)),(await fetch(`temp/debug.jsonl?${String(Date.now())}`).then(e=>e.ok?e.text():``).catch(()=>``)).trim().split(`
3
+ `).toLowerCase(),ds=(e,t)=>t?` ${e}${String(t)}`:``,fs=e=>us(e,[`pyproject.toml`,`requirements.txt`,`Pipfile`]);function ps(e){return e.has(`uv.lock`)?`uv run `:e.has(`poetry.lock`)?`poetry run `:e.has(`Pipfile`)?`pipenv run `:e.has(`.venv/bin/python`)?`.venv/bin/`:``}var ms=e=>/spring-boot|springframework\.boot/.test(us(e,[`pom.xml`,`build.gradle`,`build.gradle.kts`])),hs=e=>[`compose.yaml`,`compose.yml`,`docker-compose.yml`,`docker-compose.yaml`].find(t=>e.has(t)),gs={reactnative:{label:`React Native`,color:[`#087EA4`,`#58C4DC`],serves:!1,platforms:[[`ios`,`iOS simulator`],[`android`,`Android emulator`]],detect:e=>/"(expo|react-native)"\s*:/.test(ls(e,`package.json`)),start:(e,{platform:t=`ios`})=>/"expo"\s*:/.test(ls(e,`package.json`))?`npx expo start --${t}`:`npx react-native run-${t}`},go:{label:`Go`,color:[`#00758D`,`#5AD1E6`],detect:e=>e.has(`go.mod`),start:e=>{if(e.has(`main.go`))return`go run .`;let t=e.list(`cmd`);return t.length===1?`go run ./cmd/${t[0]??``}`:null}},rust:{label:`Rust`,color:[`#A0522D`,`#E8A27C`],detect:e=>e.has(`Cargo.toml`),start:()=>`cargo run`},java:{label:`Java / Kotlin`,color:[`#B0562B`,`#F0975F`],detect:e=>e.has(`pom.xml`)||e.has(`build.gradle`)||e.has(`build.gradle.kts`),port:e=>ms(e)?8080:null,start:e=>e.has(`pom.xml`)?ms(e)?`${e.has(`mvnw`)?`./mvnw`:`mvn`} spring-boot:run`:null:`${e.has(`gradlew`)?`./gradlew`:`gradle`} ${ms(e)?`bootRun`:`run`}`},python:{label:`Python`,color:[`#2F6F9F`,`#7FB8E6`],detect:e=>[`manage.py`,`pyproject.toml`,`requirements.txt`,`Pipfile`].some(t=>e.has(t)),port:e=>{let t=fs(e);return e.has(`manage.py`)||/fastapi|uvicorn/.test(t)?8e3:t.includes(`flask`)?5e3:null},start:(e,{port:t})=>{let n=ps(e),r=fs(e);if(e.has(`manage.py`))return`${n}python manage.py runserver${ds(``,t)}`;if(/fastapi|uvicorn/.test(r)){let r=[`main.py`,`app/main.py`,`src/main.py`].find(t=>e.has(t))?.replace(/\.py$/,``).replace(/\//g,`.`);return r?`${n}uvicorn ${r}:app --reload${ds(`--port `,t)}`:null}return r.includes(`flask`)?`${n}flask run${ds(`--port `,t)}`:null}},ruby:{label:`Ruby`,color:[`#B3261E`,`#F28B82`],detect:e=>e.has(`Gemfile`),port:e=>e.has(`config/application.rb`)?3e3:null,start:(e,{port:t})=>e.has(`config/application.rb`)?`bin/rails server${ds(`-p `,t)}`:null},php:{label:`PHP`,color:[`#6C5FC7`,`#A99FF5`],detect:e=>e.has(`artisan`)||e.has(`composer.json`),port:e=>e.has(`artisan`)?8e3:null,start:(e,{port:t})=>e.has(`artisan`)?`php artisan serve${ds(`--port=`,t)}`:null},compose:{label:`Docker Compose`,color:[`#1D63ED`,`#7AA7FF`],detect:e=>!!hs(e),port:e=>Number(/["'\s-](\d{2,5}):\d{2,5}["'\s]/.exec(ls(e,hs(e)??``))?.[1])||null,start:()=>`docker compose up`,stop:`docker compose down`}};for(let[e,t]of Object.entries(gs))cs[e]={label:t.label,runIn:as,serves:t.serves!==!1,...t.platforms&&{platforms:t.platforms},...t.color&&{color:t.color}};Object.keys(cs);var _s={kinds:cs,recipes:gs,custom:[]},vs=new WeakMap;function ys(e){let t=e?.kinds;if(typeof t!=`object`||!t)return _s;let n=vs.get(t);if(n)return n;let r={kinds:{...cs},recipes:{...gs},custom:[]};for(let[e,n]of Object.entries(t)){if(!/^[a-z0-9-]{1,32}$/.test(e)||Object.hasOwn(cs,e)||typeof n!=`object`||!n)continue;let t=n,i=[t.detect??[]].flat().filter(e=>typeof e==`string`),a=typeof t.label==`string`&&t.label?t.label:e;r.recipes[e]={label:a,detect:e=>i.length>0&&i.every(t=>e.has(t)),port:()=>Number(t.port)||null,start:()=>typeof t.start==`string`&&t.start?t.start:null},r.kinds[e]={label:a,runIn:as,serves:t.serves!==!1,custom:!0},r.custom.push(e)}return vs.set(t,r),r}var bs=e=>ys(e).kinds;function xs(e,t){let n=e?.kind,r=bs(t);return n!==void 0&&Object.hasOwn(r,n)&&r[n]||{label:n??`App`,runIn:as,serves:!0}}var Ss=e=>typeof e==`string`?e:``,Cs=e=>({branch:e?.branch||``,run:e?.run||`cli`,...e?.platform&&{platform:e.platform},...Ss(e?.note)&&{note:Ss(e?.note)},...e?.tunnels===!1&&{tunnels:!1},...e?.queues===!0&&{queues:!0},...Ss(e?.changes)&&{changes:Ss(e?.changes)},...Array.isArray(e?.libraries)&&e.libraries.length>0&&{libraries:e.libraries.map(String).sort()},...e?.restart===!0&&{restart:!0},...e?.watch===!0&&{watch:!0}}),ws=e=>e?.run===`mock`?{branch:``,run:`mock`,...e.restart===!0&&{restart:!0}}:Cs(e);function Ts(e){let t=e?.nodes??{},n=Array.isArray(t)?t.map(e=>[e.id,e]):Object.entries(t),r=Object.fromEntries(n.filter(([e])=>typeof e==`string`).map(([e,t])=>[e,ws(t)])),i=(Array.isArray(e?.edges)?e.edges:[]).filter(e=>!!e&&Object.hasOwn(r,e.from)&&Object.hasOwn(r,e.to)).map(e=>({from:e.from,to:e.to})),a=Object.fromEntries(Object.entries(e?.queues??{}).flatMap(([e,t])=>t===`local`?[[e,`local`]]:[]));return{env:e?.env??null,nodes:r,edges:i,queues:a}}var Es=(e,t)=>e.edges.filter(e=>e.from===t).map(e=>e.to).sort(),Ds=e=>e.toUpperCase(),Os=e=>({ide:`your IDE`,cli:`the command line`,mock:`a mock`})[e];function ks(e,t,n,r,i){let a=t.nodes[e],o=n.nodes[e];if(!a||!o)return[];let s=e=>i.name?.(e)??e,c=[];o.restart&&c.push(`you asked to restart it`),r&&c.push(`the environment changes from ${Ds(r.from)} to ${Ds(r.to)}`),a.branch!==o.branch&&a.run!==`mock`&&o.run!==`mock`&&c.push(`its branch changes from ${a.branch||i.current?.(e)||`the current one`} to ${o.branch||`the current one`}`),a.run!==o.run&&c.push(`it moves from ${Os(a.run)} to ${Os(o.run)}`),(a.platform??``)!==(o.platform??``)&&o.run===`cli`&&c.push(`its device changes to ${String(o.platform)}`);let l=Es(t,e),u=Es(n,e);for(let e of u.filter(e=>!l.includes(e)))c.push(`it starts calling your local ${s(e)}`);for(let e of l.filter(e=>!u.includes(e)))c.push(`it goes back to the deployed ${s(e)}`);(a.note??``)!==(o.note??``)&&c.push(`its note changed`);let d=a.libraries??[],f=o.libraries??[];for(let e of f.filter(e=>!d.includes(e)))c.push(`it uses your local ${e}`);for(let e of d.filter(e=>!f.includes(e)))c.push(`it goes back to the published ${e}`);let p=(e,t,n)=>t.queues===!0&&Object.hasOwn(e.queues,n);for(let r of i.queuesOf?.(e)??[])p(t,a,r)!==p(n,o,r)&&c.push(`it moves to the ${p(n,o,r)?`local`:`deployed`} ${r} queue`);return c}function As(e,t,n={}){let r=Ts(e),i=Ts(t),a=n.strays??[],o=r.env&&i.env&&r.env!==i.env&&Object.keys(r.nodes).length>0?{from:r.env,to:i.env}:null,s=[],c=[],l=[],u=[];for(let[e,t]of Object.entries(i.nodes))if(!Object.hasOwn(r.nodes,e)){let r=n.startedOn?.(e)===i.env&&Es(i,e).length===0&&!t.note&&!t.branch;a.includes(e)?r?u.push({id:e,why:[`you started it with koppler run`]}):c.push({id:e,why:[`it is running, but not from a run Koppler recorded`]}):s.push({id:e,why:[]})}else if(n.running?.(e)===!1&&t.run!==`ide`)s.push({id:e,why:[`it was started before but is not running now`]});else{let t=ks(e,r,i,o,n);(t.length>0?c:u).push({id:e,why:t})}for(let e of[...Object.keys(r.nodes),...a])!Object.hasOwn(i.nodes,e)&&!l.some(t=>t.id===e)&&l.push({id:e,why:[]});let d=s.length+c.length+l.length===0;return{env:i.env,envChange:o,starts:s,restarts:c,stops:l,keeps:u,nothing:d}}var js=[[`starts`,`START`],[`restarts`,`RESTART`],[`stops`,`STOP AND REVERT`],[`keeps`,`KEEP RUNNING`]];function Ms(e,t={}){let n=e=>t.name?.(e)??e,r=e=>n(e.id)+(e.why.length>0?` (${e.why.join(`; `)})`:``),i=js.filter(([t])=>e[t].length>0).map(([t,n])=>`${n}: ${e[t].map(r).join(`, `)}`);return i.length>0?i:[`NOTHING TO CHANGE`]}var Ns=[`sqs`,`kafka`];function Ps(e,t){let n=e?.apps?.[t];return[...new Set([...Object.keys(n?.publishes??{}),...Object.keys(n?.reads??{})])]}function Fs(e){let t=e?.envs??[],n=e?.protected;return Array.isArray(n)?t.filter(e=>n.includes(e)):t.slice(1)}var Is=(e,t)=>Fs(e).includes(t),Ls=[[`valkey`,`Cache (Valkey)`],[`redis`,`Cache (Redis)`],[`aurora`,`Database (Aurora)`],[`postgres`,`Database (Postgres)`],[`mysql`,`Database (MySQL)`],[`mongo`,`Database (MongoDB)`],[`db`,`Database`],[`rds`,`Database`]];function Rs(e){if(e.what)return e.what;let t=(e.tunnel??``).toLowerCase(),n=t.split(/[.-]/);return Ls.find(([e])=>n.includes(e)||e.length>3&&t.includes(e))?.[1]??`Tunnel`}function zs(e){let t=new Map;for(let n of e){let e=`${n.tunnel}:${String(n.port)}`,r=t.get(e)??{host:n.tunnel,port:n.port,original:n.port,bind:`localhost`,apps:[],envs:{},what:Rs(n),connectsAs:n.connectsAs};r.apps.includes(n.app)||r.apps.push(n.app),n.env&&(r.envs[n.app]=n.env),t.set(e,r)}return[...t.values()]}function Bs(e,t=[]){let n=zs(e),r=new Set([...t,...n.map(e=>e.port)]),i=e=>e.apps.every(t=>e.envs[t]),a=2;for(let e of new Set(n.map(e=>e.original))){let t=n.filter(t=>t.original===e);t.sort((e,t)=>Number(i(e))-Number(i(t)));for(let n of t.slice(1))if(i(n)){let t=e+2;for(;r.has(t);)t++;r.add(t),n.port=t,n.settings=n.apps.map(e=>({app:e,env:n.envs[e]??``,value:`localhost:${String(t)}`}))}else n.bind=`127.0.0.${String(a++)}`,n.needsAlias=!0}return n}function Vs(e,t=e=>e){let n=e=>e.what===`Tunnel`?`tunnel`:`${e.what.replace(/ \(.*\)$/,``).toLowerCase()} tunnel`,r=e=>`${e.apps.map(t).join(` and `)}'s ${n(e)}`;return e.flatMap(i=>{let a=e.filter(e=>e!==i&&e.original===i.original).map(r).join(` and `),o=String(i.port);return i.settings?[`${r(i)} moves from port ${String(i.original)} to ${o}, to make room for ${a}.`]:i.needsAlias?[`${r(i)} keeps port ${o} on its own address, ${i.bind}, next to ${a}. Needs a one-time sudo step.`]:i.apps.length>1?[`${i.apps.map(t).join(` and `)} share one ${n(i)} on port ${o}.`]:[]})}var Hs=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Us={0:e=>({...e,nodes:Object.fromEntries(Object.entries(e.nodes).map(([e,t])=>[e,{run:`cli`,...t}]))})};function Ws(e){if(!Hs(e))return{error:`It is not a preset.`};let{name:t,nodes:n,edges:r,version:i}=e;if(typeof t!=`string`||!t.trim())return{error:`It has no name.`};if(!Hs(n)||Object.keys(n).length===0)return{error:`It has no apps.`};let a=typeof i==`number`&&Number.isInteger(i)&&i>=0?i:0;if(a>1)return{error:`It was saved by a newer Koppler (${`preset format ${String(a)}, this one reads up to 1`}). Update Koppler.`};let o={...e,name:t,nodes:Object.fromEntries(Object.entries(n).map(([e,t])=>[e,Hs(t)?t:{}])),edges:Array.isArray(r)?r:[]};for(let e=a;e<1;e++)o={...Us[e]?.(o)??o,version:e+1};return{preset:o,migratedFrom:a<1?a:null}}function Gs(e,t,n,r,i){let a=n.runIn(e),o=n.platforms(e),s=typeof t.run==`string`?t.run:``,c=a.includes(s)?s:a.includes(`cli`)?`cli`:a[0]??`cli`;s&&c!==s&&i.push(`${r} cannot run in "${s}", using ${c}`);let l={run:c},u=typeof t.platform==`string`?t.platform:``,d=o[0];d!==void 0&&c===`cli`&&(l.platform=o.includes(u)?u:d,u&&l.platform!==u&&i.push(`${r} has no "${u}" platform, using ${l.platform}`));let f=typeof t.branch==`string`?t.branch.trim():``;if(f){l.branch=f;let t=n.branches(e);t&&!t.includes(f)&&i.push(`${r} has no branch ${f} in your clone (fetch it first)`)}return typeof t.note==`string`&&t.note.trim()&&(l.note=t.note),t.tunnels===!1&&(l.tunnels=!1),t.queues===!0&&(l.queues=!0),t.watch===!0&&(l.watch=!0),l}var Ks=e=>Hs(e)&&typeof e.from==`string`&&typeof e.to==`string`;function qs(e,t){let n=Ws(e);if(n.error!==void 0)return{error:n.error};let r=n.preset,i=[],a=e=>t.name?.(e)??e;(!Hs(e)||!Number.isInteger(e.version))&&i.push(`it had no version, read as the oldest format`);let o=Object.keys(r.nodes),s=o.filter(e=>!t.known(e)),c=o.filter(e=>t.known(e)&&!t.cloned(e)),l=o.filter(e=>t.known(e)&&t.cloned(e));if(l.length===0)return{error:s.length===o.length?`None of its apps are in this stack (${s.join(`, `)}).`:`None of its apps are cloned here (${c.join(`, `)}).`};s.length>0&&i.push(`not in this stack: ${s.join(`, `)}`),c.length>0&&i.push(`not cloned: ${c.map(a).join(`, `)}`);let u=Object.fromEntries(l.map(e=>[e,Gs(e,r.nodes[e]??{},t,a(e),i)])),d=[],f=0;for(let e of r.edges.filter(Ks)){let{from:n,to:r}=e;!Object.hasOwn(u,n)||!Object.hasOwn(u,r)?t.known(n)&&t.known(r)&&f++:d.some(e=>e.from===n&&e.to===r)||(t.canCall(n,r)?d.push({from:n,to:r}):i.push(`${a(n)} does not call ${a(r)}, cable left out`))}f>0&&i.push(`${String(f)} ${f===1?`cable`:`cables`} left out with their apps`),n.migratedFrom!==null&&n.migratedFrom>0&&i.push(`updated from preset format ${String(n.migratedFrom)}`);let p={name:r.name.trim().slice(0,80),version:1,nodes:u,edges:d};return r.source&&(p.source=r.source),{preset:p,notes:i}}var Js=e=>Hs(e)&&typeof e.x==`number`&&typeof e.y==`number`,Ys=e=>t=>e.from===t.from&&e.to===t.to;function Xs(e,t){let n=new Set(t.remove??[]),r=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e))),i=r(e.nodes),a=Hs(e.layout)?e.layout:void 0,o=r(Hs(a?.nodes)?a.nodes:{}),s=Object.values(o).filter(Js),c=Math.min(...s.map(e=>e.y));for(let e of t.add??[])i[e]||(i[e]={run:`cli`},s.length&&(o[e]={x:Math.max(...s.map(e=>e.x))+340,y:c},c+=240));for(let[e,n]of Object.entries(t.branch??{}))i[e]&&(i[e]={...i[e],branch:n});for(let[e,n]of Object.entries(t.note??{})){let{note:t,...r}=i[e]??{};i[e]&&(i[e]=n.trim()?{...r,note:n}:r)}let l=e.edges.filter(Ks).filter(e=>!n.has(e.from)&&!n.has(e.to)&&!(t.uncable??[]).some(Ys(e)));for(let e of t.cable??[])l.some(Ys(e))||l.push({from:e.from,to:e.to});if(!a||t.arrange){let{layout:t,...n}=e;return{...n,nodes:i,edges:l}}let u=new Set(l.map(e=>`${e.from}>${e.to}`)),d=Object.fromEntries(Object.entries(Hs(a.sides)?a.sides:{}).filter(([e])=>u.has(e)));return{...e,nodes:i,edges:l,layout:{...a,nodes:o,sides:d}}}function Zs(e,t=e=>e,n=!1){let r=(e=[])=>e.map(t).join(`, `),i=(e=[])=>e.map(e=>`${t(e.from)} to ${t(e.to)}`).join(`, `);return[e.add?.length&&`${n?`add`:`added`} ${r(e.add)}`,e.remove?.length&&`${n?`remove`:`removed`} ${r(e.remove)}`,e.cable?.length&&`${n?`cable`:`cabled`} ${i(e.cable)}`,e.uncable?.length&&`${n?`take the cable off`:`took the cable off`} ${i(e.uncable)}`,...Object.entries(e.branch??{}).map(([e,r])=>`${n?`put `:``}${t(e)} on ${r}`),...Object.entries(e.note??{}).map(([e,r])=>r.trim()?`${n?`add `:``}a note on ${t(e)}`:`${n?`take the `:`no `}note${n?` off `:` on `}${t(e)}`),e.arrange&&(n?`lay it out afresh`:`arranged`)].filter(Boolean).join(`; `)}var Qs={cli:`Koppler`,ide:`Me`,mock:`Mock`},$s=.6,ec=[[`down`,!1],[`right`,!1],[`down`,!0],[`right`,!0]],tc=e=>`tunnel:${e.host}:${String(e.original)}`,nc={w:230,h:58,gap:40},rc=[`bottom`,`right`,`left`,`top`],ic=8,ac=24,oc=44,sc={w:300,h:240,gap:32},cc=(e,t,n)=>({id:`${e}>${t}`,source:e,target:t,type:`cable`,data:n}),lc=e=>e.selected?{...e,selected:!1}:e,Z=new class{#e=j(``);get stack(){return R(this.#e)}set stack(e){M(this.#e,e,!0)}#t=j(``);get dir(){return R(this.#t)}set dir(e){M(this.#t,e,!0)}#n=j(!1);get setup(){return R(this.#n)}set setup(e){M(this.#n,e,!0)}#r=j([]);get known(){return R(this.#r)}set known(e){M(this.#r,e)}#i=j(``);get env(){return R(this.#i)}set env(e){M(this.#i,e,!0)}#a=j([]);get nodes(){return R(this.#a)}set nodes(e){M(this.#a,e)}#o=[];#s=A(()=>{let e=this.nodes;return e.length===this.#o.length&&e.every((e,t)=>e.id===this.#o[t]?.id&&e.data===this.#o[t].data)||(this.#o=e),this.#o});get cards(){return R(this.#s)}set cards(e){M(this.#s,e)}#c=j([]);get edges(){return R(this.#c)}set edges(e){M(this.#c,e)}#l=j(null);get hovered(){return R(this.#l)}set hovered(e){M(this.#l,e)}#u=j([]);#d=A(()=>R(this.#u).includes(this.env));get protected(){return R(this.#d)}set protected(e){M(this.#d,e)}toFlow=e=>e;zoom=()=>1;#f=A(()=>this.edges.map(e=>({from:e.source,to:e.target,...e.data})));get cables(){return R(this.#f)}set cables(e){M(this.#f,e)}#p=j([]);get infra(){return R(this.#p)}set infra(e){M(this.#p,e)}#m=j({});get queues(){return R(this.#m)}set queues(e){M(this.#m,e)}#h=j({});get hiddenQueues(){return R(this.#h)}set hiddenQueues(e){M(this.#h,e)}#g=j({});get hiddenOutside(){return R(this.#g)}set hiddenOutside(e){M(this.#g,e)}#_=j({});get hiddenLogs(){return R(this.#_)}set hiddenLogs(e){M(this.#_,e)}#v=j({});get logAliases(){return R(this.#v)}set logAliases(e){M(this.#v,e)}#y=j([]);get pinned(){return R(this.#y)}set pinned(e){M(this.#y,e)}pin(e){this.pinned.includes(e)||(this.pinned=[...this.pinned,e])}unpin(e){this.pinned=this.pinned.filter(t=>t!==e)}#b=A(()=>new Map(this.infra.map(({id:e,position:t,measured:n})=>[e,{...this.shown(t,e),w:n?.width??nc.w,h:n?.height??nc.h}])));get infraBoxes(){return R(this.#b)}set infraBoxes(e){M(this.#b,e)}#x=j(!1);get present(){return R(this.#x)}set present(e){M(this.#x,e,!0)}entering=!1;#S=j(!1);get brief(){return R(this.#S)}set brief(e){M(this.#S,e,!0)}#C=A(()=>{if(!this.brief||this.live||this.present)return;let e=this.nodes.filter(e=>e.selected);return e.length===1?e[0]:void 0});get panelCard(){return R(this.#C)}set panelCard(e){M(this.#C,e)}#w=j({});get fullHeights(){return R(this.#w)}set fullHeights(e){M(this.#w,e)}#T=A(()=>new Map([...this.nodes,...this.infra].map(({id:e,measured:t})=>{let n=t?.height??0,r=this.fullHeights[e]??0;return[e,this.brief&&n&&r>n?(r-n)/2:0]})));#E(e=(e,t)=>t.y){let t=[],n=[];for(let{id:r,position:i,measured:a}of[...this.nodes,...this.infra]){let o=a?.height;if(!o)continue;let s=e(r,i),c=R(this.#T).get(r)??0;t.push([s+c,s+c+o]);let l=this.fullHeights[r]??0;c&&n.push([s,s+c]),l>o&&n.push([s+c+o,s+l])}return Ho(this.brief?t:[],this.brief?n:[])}#D=Ho([],[]);#O=null;#k=()=>[...this.nodes,...this.infra].map(({id:e,position:t,measured:n})=>`${e} ${String(t.x)} ${String(t.y)} ${String(n?.height??0)}`).join(`|`);#A=A(()=>{let e=this.#k();return[...this.nodes,...this.infra].some(e=>e.dragging)||this.brief&&this.#O===e||(this.#O=null,this.#D=this.#E()),this.#D});get squeezed(){return R(this.#A)}set squeezed(e){M(this.#A,e)}shown=(e,t=``)=>({x:e.x,y:this.squeezed.show(e.y+(R(this.#T).get(t)??0))});stored=(e,t=``)=>({x:e.x,y:this.squeezed.back(e.y)-(R(this.#T).get(t)??0)});dropped(e,t){let n=R(this.#T).get(e)??0,r=this.squeezed.back(t.y)-n;if(this.brief)return{x:t.x,y:r};for(let i=0;i<4;i++)r=this.#E((t,n)=>t===e?r:n.y).back(t.y)-n;return{x:t.x,y:r}}#j=A(()=>new Map(this.nodes.flatMap(({id:e,position:t,measured:n})=>n?.width&&n.height?[[e,{...this.shown(t,e),w:n.width,h:n.height}]]:[])));get boxes(){return R(this.#j)}set boxes(e){M(this.#j,e)}#M=j();#N=j([]);get unplaced(){return R(this.#N)}set unplaced(e){M(this.#N,e)}#P=[];#F(e){return this.nodes.some(t=>t.id===e&&t.data.run===`mock`)}tunnelsOf(e){if(this.#F(e))return[];let t=R(this.#M)?.apps[e];return((this.env===this.envs[0]?void 0:t?.envs?.[this.env]?.prereqs)??t?.prereqs??[]).flatMap(e=>{let{tunnel:t,port:n}=e;return t&&n&&Number.isInteger(n)&&n<65536?[{...e,tunnel:t,port:n}]:[]})}tunnelPath(e,t){let n=R(this.#M)?.apps[e],r=this.env===this.envs[0]?void 0:n?.envs?.[this.env]?.prereqs,i=(r??n?.prereqs??[]).findIndex(e=>e.tunnel===t);return`apps.${e}.${r?`envs.${this.env}.`:``}prereqs[${String(i)}]`}#I=A(()=>Bs(this.cards.filter(e=>!e.data.hideTunnels).flatMap(({id:e})=>this.tunnelsOf(e).map(t=>({app:e,tunnel:t.tunnel,port:t.port,env:t.env,what:Rs(t),connectsAs:t.connectsAs}))),this.cards.flatMap(({id:e})=>{let t=Number(new URL(R(this.#M)?.apps[e]?.url??`http://none`).port);return t?[t]:[]})));get plan(){return R(this.#I)}set plan(e){M(this.#I,e)}ledBy(e){return[...this.plan.filter(t=>t.apps[0]===e).map(tc),...this.boardQueues.filter(t=>this.#H(t)===e).map(e=>`queue:${e.id}`)]}#L=A(()=>new Set(this.cards.map(e=>e.id)));#R=A(()=>new Set(this.cards.filter(e=>e.data.showQueues).map(e=>e.id)));commandsOf(e){return Object.entries(R(this.#M)?.apps[e]?.commands??{}).filter(([,e])=>(e.show??`both`)!==`cli`)}#z(e){return!!R(this.#M)?.apps[e]?.outside}#B=A(()=>{let e=R(this.#M)?.apps??{};return Object.entries(R(this.#M)?.queues??{}).flatMap(([t,n])=>{let r=n=>Object.keys(e).filter(r=>Object.hasOwn(e[r]?.[n]??{},t)&&(R(this.#R).has(r)||this.#z(r))),[i,a]=[r(`publishes`),r(`reads`)];return!this.hiddenQueues[t]&&[...i,...a].some(e=>R(this.#R).has(e))?[{id:t,queue:n,pubs:i,reads:a,upstream:!1}]:[]})});get boardQueues(){return R(this.#B)}set boardQueues(e){M(this.#B,e)}#V=A(()=>{let e=[...this.boardQueues],t=t=>e.some(e=>e.id===t),n=Object.entries(R(this.#M)?.queues??{});for(let r=!0;r;){r=!1;for(let[i,a]of n)!t(i)&&!this.hiddenQueues[i]&&Object.keys(a.feeds??{}).some(t)&&(e.push({id:i,queue:a,pubs:[],reads:[],upstream:!0}),r=!0)}return e});get shownQueues(){return R(this.#V)}set shownQueues(e){M(this.#V,e)}ownedBy(e){let t=t=>[...t.pubs,...t.reads].filter(e=>R(this.#L).has(e)||this.#z(e)&&!this.hiddenOutside[e]).every(t=>t===e);return this.ledBy(e).filter(e=>e.startsWith(`tunnel:`)||this.boardQueues.some(n=>`queue:${n.id}`===e&&t(n)))}#H(e){return[...e.pubs,...e.reads].find(e=>R(this.#L).has(e))}queueName(e){return R(this.#M)?.queues?.[e]?.name??e}switchesOver(e){if(this.#F(e))return!1;let t=this.cards.find(t=>t.id===e)?.data.branch,n=this.app(e);return!!(t&&n?.current&&t!==n.current&&n.dirty)}localLibraries(e){let t=this.cards.find(t=>t.id===e)?.data.libraries??[],n=this.app(e)?.libraries??[];return t.filter(e=>n.some(t=>t.name===e))}borrowsTunnels(e){if(this.env===this.envs[0])return!1;let t=R(this.#M)?.apps[e],n=t?.envs?.[this.env]?.prereqs??[],r=this.cards.find(t=>t.id===e)?.data.hideTunnels;return[`sso`,`signIn`,`tunnel`,`hosts`].some(e=>(t?.prereqs??[]).some(t=>t[e])&&!n.some(t=>t[e])&&!(e!==`sso`&&e!==`signIn`&&r))}queuesOf(e){return this.#F(e)?[]:Ps(R(this.#M),e).filter(e=>R(this.#M)?.queues?.[e])}#U=A(()=>{let e=e=>this.#z(e)?`outside:${e}`:e;return[...this.shownQueues.flatMap(({id:t,queue:n,pubs:r,reads:i})=>[...r.map(n=>({from:e(n),to:`queue:${t}`,queue:t})),...i.map(n=>{let r=this.#X(n,t);return{from:`queue:${t}`,to:e(n),queue:t,...r&&{via:r}}}),...Object.entries(n.feeds??{}).filter(([e])=>this.shownQueues.some(t=>t.id===e)).map(([e,n])=>({from:`queue:${t}`,to:`queue:${e}`,queue:t,via:n.via}))]),...this.cards.flatMap(({id:e})=>Object.keys(R(this.#M)?.apps[e]?.consumes??{}).filter(e=>this.#z(e)).map(t=>({from:e,to:`outside:${t}`}))),...Object.entries(R(this.#M)?.apps??{}).flatMap(([e,t])=>this.#z(e)?Object.keys(t.consumes??{}).filter(e=>this.cards.some(t=>t.id===e)).map(t=>({from:`outside:${e}`,to:t})):[])]});get flows(){return R(this.#U)}set flows(e){M(this.#U,e)}infraSide(e){let t=new Set(this.cables.flatMap(t=>[t.from===e&&t.fromSide,t.to===e&&t.toSide]));return rc.find(e=>!t.has(e))??`bottom`}deployedCalls(e){return this.#F(e)?[]:(this.app(e)?.calls??[]).flatMap(t=>{let n=this.app(t);return n&&!n.outside&&!this.edges.some(n=>n.id===`${e}>${t}`)?[n]:[]})}callLocally(e,t){this.add(t),this.nodes.some(e=>e.id===t)&&this.connect(e,t)}setQueue(e,t){let{[e]:n,...r}=this.queues;this.queues=t?{...r,[e]:`local`}:r,this.syncInfra()}showQueues(e,t){let n=Object.entries(this.hiddenQueues).filter(([t])=>!e.includes(t));this.hiddenQueues=Object.fromEntries(t?n:[...n,...e.map(e=>[e,!0])])}#W=A(()=>this.plan.flatMap(e=>e.apps.map(t=>({from:t,to:tc(e),tunnel:e}))));get links(){return R(this.#W)}set links(e){M(this.#W,e)}#G=A(()=>{let e=[...this.nodes,...this.infra].filter(e=>e.selected),t=this.edges.filter(e=>e.selected),[n]=e,[r]=t;if(e.length===1&&!t.length&&n){let e=[n.id];for(let{from:t,to:r}of[...this.cables,...this.links,...this.flows])(t===n.id||r===n.id)&&e.push(t,r);return{id:n.id,near:e}}return!e.length&&t.length===1&&r?{id:null,cable:[r.source,r.target],near:[r.source,r.target]}:null});get focus(){return R(this.#G)}set focus(e){M(this.#G,e)}dimmed=e=>!!this.focus&&!this.focus.near.includes(e);lit=(e,t)=>{let n=this.focus;return n?n.cable?n.cable[0]===e&&n.cable[1]===t:e===n.id||t===n.id:!1};dimmedLink=(e,t)=>!!this.focus&&!this.lit(e,t);#K(e){let t=this.boxes.get(e),n=this.ledBy(e).flatMap(e=>this.infraBoxes.get(e)??[]).filter(e=>t&&e.y>t.y&&e.x<t.x+t.w&&e.x+e.w>t.x);return{covered:n.length?Math.max(...n.map(e=>e.w+12)):0,atRight:!!t&&!!n.length&&n.every(e=>Math.abs(e.x+e.w-t.x-t.w)<2)}}#q=A(()=>is(this.cables,{cardOf:e=>this.boxes.get(e),coveredBelow:e=>this.#K(e)}));get ends(){return R(this.#q)}set ends(e){M(this.#q,e)}#J(e,t,n=this.boxes.get(e)??{w:260,h:200},r=!1,i){let a=this.nodes.find(t=>t.id===e),o=new Set(r?this.ownedBy(e):this.ledBy(e));if(!a||!o.size)return t;let s={...a.position,...n},c=i??this.infraSide(e),l=c===`bottom`?s.y+s.h+nc.gap/2:c===`top`?s.y-nc.gap/2:s.y,u=s.y-nc.gap;return t.map(e=>{if(!o.has(e.id))return e;let t=this.infraBoxes.get(e.id)??nc;if(this.#Z(e.id)){u-=t.h;let n={...e,position:{x:s.x+s.w/2-t.w/2,y:u}};return u-=nc.gap,n}c===`top`&&(l-=t.h);let n=c===`right`?s.x+s.w+nc.gap:c===`left`?s.x-nc.gap-t.w:s.x,r={...e,position:{x:n,y:l}};return l+=c===`top`?-nc.gap/2:t.h+nc.gap/2,r})}#Y(e,t){let n=t;for(let{id:t,position:r,measured:i}of e){let e=Math.max(i?.height??0,this.brief?this.fullHeights[t]??0:0),a=i?.width;if(!e||!a)continue;let o=new Set(this.ownedBy(t)),s=new Set(this.ledBy(t)),c=n.filter(e=>{let t=this.infraBoxes.get(e.id)?.w??nc.w;return s.has(e.id)&&e.position.y>=r.y&&e.position.x<r.x+a&&r.x<e.position.x+t}).sort((e,t)=>e.position.y-t.position.y),l=r.y+e,u=-1/0,d={};for(let e of c){let t=o.has(e.id)?l+nc.gap/2:-1/0,n=e.position.y>=Math.max(u,t)?e.position.y:Math.max(u+nc.gap/2,t);n!==e.position.y&&(d[e.id]=n),u=n+(this.infraBoxes.get(e.id)?.h??nc.h)}Object.keys(d).length&&(n=n.map(e=>{let t=d[e.id];return t===void 0?e:{...e,position:{x:e.position.x,y:t}}}))}return n}syncInfra(e={}){let t=new Map(this.infra.map(e=>[e.id,e])),n=[],r=this.plan.map(r=>{let i=tc(r),a=t.get(i);!a&&!e[i]&&n.push(r.apps[0]??``);let o=r.apps.flatMap(e=>this.tunnelsOf(e)).find(e=>e.tunnel===r.host)?.note;return{...a,id:i,type:`tunnel`,deletable:!1,position:a?.position??e[i]??{x:0,y:0},data:{what:r.what,local:`${r.bind}:${String(r.port)}`,moved:!!r.settings||!!r.needsAlias,host:r.host,about:[r.settings?`Moved from port ${String(r.original)} so it does not clash with another tunnel on the board.`:``,r.needsAlias?`Keeps port ${String(r.port)} on its own loopback address, ${r.bind}, so it does not clash (needs sudo once).`:``,typeof o==`string`?o:``].filter(Boolean),apps:r.apps,settings:this.tunnelPath(r.apps[0]??``,r.host)}}}),i=this.env.toUpperCase(),a=e=>R(this.#M)?.apps[e]?.name??e,o=[],s=this.shownQueues.map(r=>{let s=`queue:${r.id}`,c=t.get(s),l=this.#H(r);!c&&!e[s]&&l&&n.push(l),!c&&!e[s]&&r.upstream&&o.push(s);let u=!r.upstream&&Ns.includes(r.queue.type),d=u&&this.queues[r.id]===`local`,f=r.reads.filter(e=>R(this.#L).has(e)&&!this.#X(e,r.id)).map(a),p=!d&&f.length?f.join(` and `):``;return{...c,id:s,type:`queue`,deletable:!1,position:c?.position??e[s]??{x:0,y:0},data:{queue:r.id,name:r.queue.name,kind:r.queue.type.toUpperCase(),can:u,local:d,upstream:r.upstream,shares:p?`Your local ${p} reads the ${i} queue`:``,about:[r.queue.envs?.[this.env]?.queue??r.queue.queue??r.id,r.upstream?`Stays deployed on ${i}: it feeds ${this.#Q(r.queue.feeds)}.`:``,p?`It takes messages the deployed ${i} reader would get. Switch to Local to give your run its own copy.`:``].filter(Boolean)}}}),c=[...new Set([...this.flows.flatMap(e=>[e.from,e.to]),...this.pinned.filter(e=>this.#z(e)).map(e=>`outside:${e}`)])].filter(e=>e.startsWith(`outside:`)&&!this.hiddenOutside[e.slice(8)]).map(n=>{let r=R(this.#M)?.apps[n.slice(8)],o=t.get(n),s=this.env===this.envs[0]?void 0:r?.envs?.[this.env]?.deployedUrl,c=typeof s==`string`?s:r?.deployedUrl??``,l=URL.canParse(c)?new URL(c).hostname:``,u=typeof r?.outside==`string`?`: ${r.outside.replace(/\.+$/,``)}`:``;return{...o,id:n,type:`outside`,deletable:!1,position:o?.position??e[n]??{x:0,y:0},data:{name:r?.name??n.slice(8),where:l?`${i}: ${l}`:`Outside, never runs`,about:[`${r?.name??n.slice(8)} does not run on this Mac${u}. Koppler cannot check calls to it.`,l?`The ${i} board uses ${c}.`:``,...this.flows.filter(e=>e.from===n).map(e=>`It sends to the deployed ${a(e.to)}, not to your local one.`)].filter(Boolean)}}}),l=[...r,...s,...c];for(let e of n)l=this.#J(e,l);l=this.#$(o,l),this.#P=[...new Set([...this.#P,...o])];for(let n of c.filter(n=>!t.has(n.id)&&!e[n.id])){let e=this.#te(n.id,l);l=l.map(t=>t.id===n.id?{...t,position:e}:t)}this.infra=l,this.unplaced=[...new Set([...this.unplaced,...n])]}#X(e,t){let n=R(this.#M)?.apps[e]?.reads?.[t]?.via;return typeof n==`string`?n:void 0}#Z(e){return e.startsWith(`queue:`)&&this.shownQueues.some(t=>t.upstream&&Object.hasOwn(t.queue.feeds??{},e.slice(6)))}#Q(e){return Object.keys(e??{}).filter(e=>this.shownQueues.some(t=>t.id===e)).map(e=>this.queueName(e)).join(` and `)}#$(e,t){let n=t,r=e;for(let t of e){let e=this.#ee(t,n,r);e&&(n=n.map(n=>n.id===t?{...n,position:e}:n)),r=r.filter(e=>e!==t)}return n}#ee(e,t,n){let r=this.infraBoxes.get(e)??nc,i=this.flows.filter(t=>t.from===e).map(e=>t.find(t=>t.id===e.to&&(t.position.x||t.position.y))).find(Boolean);if(!i)return;let a=e=>({...e.position,...this.infraBoxes.get(e.id)??nc}),o=[...this.nodes.map(e=>({...e.position,...this.boxes.get(e.id)??{w:260,h:200}})),...t.filter(e=>!n.includes(e.id)&&(e.position.x||e.position.y)).map(a)],s=e=>o.every(t=>e.x+r.w+16<=t.x||t.x+t.w+16<=e.x||e.y+r.h+16<=t.y||t.y+t.h+16<=e.y),c=i.position.y-r.h-60,l=i.position.x+a(i).w/2-r.w/2,u=[0,-1,1,-2,2].map(e=>({x:l+e*(r.w+24),y:c}));return u.find(s)??u[0]}#te(e,t,n=e=>this.boxes.get(e)??{w:260,h:200}){let r=nc,i=i=>{let a=t.find(t=>t.id===i&&(t.id===e||t.position.x||t.position.y)),o=this.nodes.find(e=>e.id===i);return a?{...a.position,...this.infraBoxes.get(i)??r}:o&&{...o.position,...n(i)}},a=this.flows.flatMap(t=>{let n=t.from===e?t.to:t.to===e?t.from:void 0,r=n===void 0?void 0:i(n);return r?[{at:r,before:t.to===e}]:[]}),o=[...this.nodes.map(e=>i(e.id)),...t.filter(t=>t.id!==e).map(e=>i(e.id))],s=e=>o.every(t=>!t||e.x+r.w+16<=t.x||t.x+t.w+16<=e.x||e.y+r.h+16<=t.y||t.y+t.h+16<=e.y),[c]=a;if(!c)return{x:40,y:40};let{at:l,before:u}=c,d=u?[l.x+l.w+80,l.x-r.w-80]:[l.x-r.w-80,l.x+l.w+80],f=[{x:d[0]??0,y:l.y},{x:d[1]??0,y:l.y},{x:l.x,y:l.y+l.h+40},{x:l.x,y:l.y-r.h-40},...Array.from({length:9},(e,t)=>({x:d[0]??0,y:l.y+(t+1)*(r.h+24)}))];return f.find(s)??f[0]??{x:40,y:40}}settle(){let e=e=>e.every(e=>e.measured?.width);if(!this.unplaced.length&&!this.#P.length||!e(this.nodes)||!e(this.infra))return;let t=this.infra;for(let e of this.unplaced)t=this.#J(e,t);t=this.#$(this.#P,t),this.#P=[],this.unplaced=[],this.infra=t}pushed(e,t,n,r){let i=new Set(this.ledBy(e));return r.map(e=>i.has(e.id)&&e.position.y>=t?{...e,position:{x:e.position.x,y:e.position.y+n}}:e)}followed(e,t,n){let r=new Set(this.ownedBy(e));return n.map(e=>r.has(e.id)&&!e.selected&&!e.dragging?{...e,position:{x:e.position.x+t.x,y:e.position.y+t.y}}:e)}hideTunnel(e){let t=this.infra.find(t=>t.id===e),n=new Set(t?.type===`tunnel`?t.data.apps:[]);this.nodes=this.nodes.map(e=>n.has(e.id)?{...e,data:{...e.data,hideTunnels:!0}}:e)}flowNodes(){return[...this.nodes,...this.infra].map(e=>{let t=this.shown(e.position,e.id);return this.#ne.set(e.id,t),{...e,position:t}})}#ne=new Map;#re={};fromFlow(e,t,n){let r=new Map([...this.nodes,...this.infra].map(e=>[e.id,e])),i=[],a=e.map(e=>{let t=r.get(e.id),n=e.dragging||t?.dragging?{...e,position:e.type===`app`?this.#ie(e.id,e.position,i):this.#ae(e.id,e.position,i)}:e;if(t?.dragging&&!n.dragging)return{...n,position:this.dropped(n.id,n.position)};let a=t&&(this.#ne.get(t.id)??this.shown(t.position,t.id));return t&&a?.x===n.position.x&&a.y===n.position.y?{...n,position:t.position}:{...n,position:this.stored(n.position,n.id)}}),o=e.every(e=>!e.dragging)?[]:i;o.join()!==this.snapped.join()&&(this.snapped=o);let s=new Map(this.nodes.map(e=>[e.id,e.position])),c={},l=[],u=a.filter(e=>e.type!==`app`),d=a.filter(e=>e.type===`app`);for(let{id:e,measured:r}of d){let i=this.#re[e],a=r?.height;a&&(this.#re[e]={brief:t,height:a}),a&&a!==i?.height&&l.push(e);let o=n&&i?.brief===t&&a?a-i.height:0;o&&(c[e]={bottom:i?.height??0,by:o});let s=this.boxes.get(e);if(o&&s){let t=e=>!!e&&e.y>=s.y+(i?.height??0)&&e.x<s.x+s.w&&s.x<e.x+e.w;for(let n of d.filter(n=>n.id!==e&&t(this.boxes.get(n.id))))u=this.followed(n.id,{x:0,y:o},u);d=d.map(n=>n.id!==e&&t(this.boxes.get(n.id))?{...n,position:{x:n.position.x,y:n.position.y+o}}:n)}}for(let{id:e,position:t}of d){let n=c[e];n&&(u=this.pushed(e,t.y+n.bottom,n.by,u));let r=s.get(e);r&&(r.x!==t.x||r.y!==t.y)&&(u=this.followed(e,{x:t.x-r.x,y:t.y-r.y},u))}return u=this.#Y(d.filter(e=>l.includes(e.id)),u),this.nodes=d,this.infra=u,this.brief&&e.some(e=>e.dragging||r.get(e.id)?.dragging)&&(this.#O=this.#k()),Object.keys(c).length>0}#ie(e,t,n){let r=this.boxes.get(e);if(!r)return t;let i=ic/(this.view?.zoom??1),a={...r,x:t.x,y:t.y},o=(e,t,n)=>{let r=this.cables[e];if(!r)return;let i=r[`${t}Side`],a=Jo(n,i),o=this.ends.offset[`${String(e)}|${t}`]??0;return{side:i,at:Uo[i][0]===0?{...a,x:a.x+o}:{...a,y:a.y+o}}},s,c;this.cables.forEach((t,n)=>{let r=t.from===e?`from`:t.to===e?`to`:null;if(!r||t.from===t.to)return;let l=r===`from`?`to`:`from`,u=this.boxes.get(t[l]);if(!u||this.nodes.some(e=>e.id===t[l]&&e.dragging))return;let d=o(n,r,a),f=o(n,l,u);if(!d||!f)return;let p=Uo[d.side][0]!==0,m=p?f.at.y-d.at.y:f.at.x-d.at.x,h={by:m,cable:`${t.from}>${t.to}`};Math.abs(m)>i||(p&&(!c||Math.abs(m)<Math.abs(c.by))&&(c=h),!p&&(!s||Math.abs(m)<Math.abs(s.by))&&(s=h))});let l=new Set(this.ownedBy(e)),u=[...this.links.filter(t=>t.from===e).map(e=>e.to),...this.flows.flatMap(t=>t.from===e?[t.to]:t.to===e?[t.from]:[])].filter(e=>!l.has(e));for(let t of new Set(u)){let n=this.infraBoxes.get(t);if(!n||this.infra.some(e=>e.id===t&&e.dragging))continue;let r=Math.max(n.x-(a.x+a.w),a.x-(n.x+n.w)),o=Math.max(n.y-(a.y+a.h),a.y-(n.y+n.h))>=r,l=o?n.x+n.w/2-(a.x+a.w/2):n.y+n.h/2-(a.y+a.h/2);if(Math.abs(l)>i)continue;let u={by:l,cable:`${e}>${t}`};o&&(!s||Math.abs(l)<Math.abs(s.by))&&(s=u),!o&&(!c||Math.abs(l)<Math.abs(c.by))&&(c=u)}let d=s?.by??0,f=c?.by??0;for(let e of[s,c])e&&n.push(e.cable,e.cable.split(`>`).reverse().join(`>`));return{x:t.x+d,y:t.y+f}}#ae(e,t,n){let r=this.infraBoxes.get(e);if(!r)return t;let i=ic/(this.view?.zoom??1),a={...r,x:t.x,y:t.y},o=[...this.links.filter(t=>t.to===e).map(e=>e.from),...this.flows.flatMap(t=>t.from===e?[t.to]:t.to===e?[t.from]:[])],s,c;for(let e of new Set(o)){let t=this.boxes.get(e)??this.infraBoxes.get(e);if(!t||[...this.nodes,...this.infra].some(t=>t.id===e&&t.dragging))continue;let n=Math.max(t.x-(a.x+a.w),a.x-(t.x+t.w)),r=Math.max(t.y-(a.y+a.h),a.y-(t.y+t.h))>=n,o=r?t.x+t.w/2-(a.x+a.w/2):t.y+t.h/2-(a.y+a.h/2);if(Math.abs(o)>i)continue;let l=r?s:c;l&&Math.abs(l.by)<=Math.abs(o)||(r?s={by:o,partner:e}:c={by:o,partner:e})}for(let t of[s,c])t&&n.push(`${t.partner}>${e}`,`${e}>${t.partner}`);return{x:a.x+(s?.by??0),y:a.y+(c?.by??0)}}#oe=j([]);get snapped(){return R(this.#oe)}set snapped(e){M(this.#oe,e)}#se=j();get view(){return R(this.#se)}set view(e){M(this.#se,e)}#ce=j(!1);get unsaved(){return R(this.#ce)}set unsaved(e){M(this.#ce,e,!0)}#le={};#ue=j(!1);get live(){return R(this.#ue)}set live(e){M(this.#ue,e,!0)}#de=``;#fe={};goLive(){this.live||=(this.commit(),this.#fe=this.saved(),this.#de=this.content(),!0)}goEdit(){this.live&&=(this.setContent(this.#de),!1)}content(){return JSON.stringify({name:this.name,nodes:this.nodes.map(({id:e,type:t,position:n,data:r})=>({id:e,type:t,position:n,data:r})),infra:this.infra.map(({id:e,position:t})=>({id:e,position:t})),queues:this.queues,hiddenQueues:this.hiddenQueues,hiddenOutside:this.hiddenOutside,pinned:this.pinned,edges:this.edges.map(({id:e,source:t,target:n,type:r,data:i})=>({id:e,source:t,target:n,type:r,data:i}))})}setContent(e){let{name:t,nodes:n,edges:r,infra:i,queues:a,hiddenQueues:o,hiddenOutside:s,pinned:c}=JSON.parse(e);this.name=t,this.pinned=c,this.nodes=n,this.edges=r,this.queues=a,this.hiddenQueues=o,this.hiddenOutside=s,this.syncInfra(Object.fromEntries(i.map(({id:e,position:t})=>[e,t]))),this.infra=this.infra.map(e=>({...e,position:i.find(t=>t.id===e.id)?.position??e.position}))}#pe=j(null);get name(){return R(this.#pe)}set name(e){M(this.#pe,e,!0)}#me=j([]);get own(){return R(this.#me)}set own(e){M(this.#me,e)}get team(){return R(this.#M)?.presets??[]}#he=j(null);get opened(){return R(this.#he)}set opened(e){M(this.#he,e,!0)}#ge(){let e=e=>this.app(e);return{known:t=>!!e(t),cloned:t=>!!e(t)?.cloned,name:t=>e(t)?.name??t,canCall:(t,n)=>!e(t)?.outside&&!!e(n)&&!e(n)?.outside&&!!e(n)?.answers,runIn:t=>(e(t)?.runIn??[]).map(([e])=>e),platforms:t=>(e(t)?.platforms??[]).map(([e])=>e),branches:t=>{let n=e(t)?.branches??[];return n.length&&n.length<300?n:null}}}#_e(e){return{name:e,version:1,nodes:Object.fromEntries(this.nodes.map(({id:e,data:t})=>[e,{run:t.run,...t.platform&&{platform:t.platform},...t.branch&&{branch:t.branch},...t.note&&{note:t.note},...t.hideTunnels&&{tunnels:!1},...t.showQueues&&this.queuesOf(e).length>0&&{queues:!0},...t.watch&&t.run===`cli`&&{watch:!0}}])),edges:this.edges.map(({source:e,target:t})=>({from:e,to:t})),...this.pinned.length&&{outside:this.pinned}}}#ve(){let e=e=>Object.fromEntries(e.map(({id:e,position:t})=>[e,{x:Math.round(t.x),y:Math.round(t.y)}]));return{nodes:e(this.nodes),infra:e(this.infra),sides:Object.fromEntries(this.edges.map(({id:e,data:t})=>[e,[t.fromSide,t.toSide,null,null,t.fromSlot??null,t.toSlot??null,t.points??null,t.fromShift??null,t.toShift??null]]))}}#ye(){let e=e=>{let t={...this.own.find(t=>t.name===e),...this.#_e(e),layout:this.#ve()},n=this.own.some(t=>t.name===e)?this.own.map(n=>n.name===e?t:n):[...this.own,t];JSON.stringify(n)!==JSON.stringify(this.own)&&(this.own=n),this.name!==e&&(this.name=e)};if(this.own.some(e=>e.name===this.name)){e(this.name??``);return}if(!this.nodes.length||this.scratch&&this.nodes.length<2)return;this.scratch=!1;let t=this.team.find(e=>e.name===this.name),n=e=>JSON.stringify([e.nodes,e.edges.map(e=>`${e.from}>${e.to}`).sort()]),r=t&&qs(t,this.#ge()).preset;if(t&&r&&n(this.#_e(t.name))===n(r))return;let i=t&&this.own.find(e=>e.name===`${t.name} (local)`||e.name===`${t.name} (mine)`),a=this.nodes[0]?.data.name??`Untitled`,o=this.nodes.length>1?`${a} + ${String(this.nodes.length-1)}`:a;e(i?.name??this.uniqueName(t?`${t.name} (local)`:this.name||o))}uniqueName(e){let t=new Set([...this.team,...this.own].map(e=>e.name)),n=e;for(let r=2;t.has(n);r++)n=`${e} (${String(r)})`;return n}#be=j([]);get trash(){return R(this.#be)}set trash(e){M(this.#be,e)}#xe=j([]);get recent(){return R(this.#xe)}set recent(e){M(this.#xe,e)}rename(e){let t=e.trim().slice(0,80),n=this.name;return this.own.some(e=>e.name===n)?t?t===n?null:[...this.team,...this.own].some(e=>e.name===t)?`A board is already called ${t}. Pick another name.`:(this.own=this.own.map(e=>e.name===n?{...e,name:t}:e),this.name=t,null):`Give the board a name first.`:`Only a board of your own can be renamed.`}duplicate(){if(!this.nodes.length)return;this.#ye();let e=this.nodes[0]?.data.name??`Untitled`,t=this.uniqueName(`${this.name??e} copy`);this.own=[...this.own,{...this.#_e(t),layout:this.#ve()}],this.name=t}deleteBoard(e){let t=this.own.find(t=>t.name===e);t&&(this.own=this.own.filter(e=>e!==t),this.trash=[{...t,deleted:new Date().toISOString()},...this.trash].slice(0,20),this.name===e&&this.newBoard())}restore(e){let{deleted:t,...n}=e,r={...n,name:this.uniqueName(e.name)};this.trash=this.trash.filter(t=>t!==e),this.own=[...this.own,r],this.nodes.length||this.openBoard(r)}importBoards(e,t){let n=e?.presets,r=(Array.isArray(e)?e:Array.isArray(n)?n:[e]).map(e=>Ws(e)),i=r.flatMap(e=>e.preset?[{...e.preset,name:e.preset.name.trim().slice(0,80),source:t}]:[]),[a]=i;if(!a)return{error:r[0]?.error??`No board found in it.`};let o=qs(a,this.#ge());if(o.error!==void 0)return{error:o.error};let s=[...new Map(i.map(e=>[e.name,e])).values()];this.own=[...this.own.filter(e=>!s.some(t=>t.name===e.name)),...s];let c=this.openBoard(a);return c.error===void 0?{notes:c.notes,name:a.name}:c}forTeam(e){let{layout:t,outside:n}=e;return{...JSON.parse(this.asShared(e)),...t?{layout:t}:{},...n?{outside:n}:{}}}keptForTeam(e,t){let n=[...R(this.#M)?.presets??[]];n[e]=t,R(this.#M)&&M(this.#M,{...R(this.#M),presets:n})}asShared(e){let{name:t,nodes:n,edges:r}=e;return JSON.stringify({name:t,version:Ws(e).preset?.version??1,nodes:n,edges:r},null,2)}#Se=j([]);get dismissed(){return R(this.#Se)}set dismissed(e){M(this.#Se,e)}#Ce=j(!1);get scratch(){return R(this.#Ce)}set scratch(e){M(this.#Ce,e,!0)}alone(e){let t=[...this.own,...this.team].find(e=>e.name===this.name);return this.newBoard(),this.scratch=!0,this.add(e),this.opened=`fit`,t}newBoard(){this.scratch=!1,this.dismissed=[],this.name=null,this.nodes=[],this.edges=[],this.queues={},this.hiddenQueues={},this.hiddenOutside={},this.hiddenLogs={},this.logAliases={},this.pinned=[]}openBoard(e){if(!Object.keys(e.nodes).length)return this.newBoard(),this.name=e.name,{notes:[]};let t=qs(e,this.#ge());if(t.error!==void 0)return{error:t.error};let{preset:n,notes:r}=t,i=e.layout??{},a=e=>{let{x:t,y:n}=i.nodes?.[e]??{};return typeof t==`number`&&typeof n==`number`&&Number.isFinite(t)&&Number.isFinite(n)?{x:t,y:n}:null},o=Object.keys(n.nodes),s=o.every(a);this.scratch=!1,this.dismissed=[],this.recent=[{name:n.name,at:new Date().toISOString()},...this.recent.filter(e=>e.name!==n.name)].slice(0,20),this.name=n.name,this.queues={},this.hiddenQueues={},this.hiddenOutside={},this.hiddenLogs={},this.logAliases={},this.pinned=Array.isArray(e.outside)?e.outside.filter(e=>typeof e==`string`):[],this.infra=this.infra.map(lc),this.nodes=o.flatMap(e=>{let t=this.app(e),r=n.nodes[e];if(!t||!r)return[];let i={...r,hideTunnels:r.tunnels===!1,showQueues:r.queues===!0};return[this.#Oe(t,s&&a(e)||{x:0,y:0},i)]});let c=Object.fromEntries(this.nodes.map(({id:e,position:t})=>[e,t])),l=e=>typeof e==`string`&&e in Uo,u=(e,t)=>Number.isInteger(t)?{[e]:t}:{},d=(e,t)=>typeof t==`number`&&Number.isFinite(t)?{[e]:t}:{};return this.edges=n.edges.map(({from:e,to:t})=>{let[n,r,,,a,o,f,p,m]=i.sides?.[`${e}>${t}`]??[];return!s||!l(n)||!l(r)?cc(e,t,Vo(c,{from:e,to:t},`down`,()=>({w:260,h:160}))):cc(e,t,{fromSide:n,toSide:r,...u(`fromSlot`,a),...u(`toSlot`,o),...d(`fromShift`,p),...d(`toShift`,m),...Array.isArray(f)&&{points:f}})}),this.infra=[],this.syncInfra(s?i.infra??{}:{}),this.opened=s?`fit`:`arrange`,{notes:r}}clear(){this.nodes=[],this.edges=[]}#we=j([]);get apps(){return R(this.#we)}set apps(e){M(this.#we,e)}#Te=A(()=>new Map(this.apps.map(e=>[e.id,e])));app=e=>R(this.#Te).get(e);nameOf=e=>R(this.#Te).get(e)?.name??e;#Ee=j([]);get envs(){return R(this.#Ee)}set envs(e){M(this.#Ee,e)}#De=j([]);get roots(){return R(this.#De)}set roots(e){M(this.#De,e)}area=()=>new DOMRect;show=()=>void 0;#Oe(e,t,n={}){let{id:r,name:i,kind:a,kindLabel:o,runIn:s,platforms:c}=e,l=s.some(([e])=>e===n.run)?n.run:s[0]?.[0],u=c.some(([e])=>e===n.platform)?n.platform:c[0]?.[0];return{id:r,type:`app`,position:t,data:{name:i,kind:a,kindLabel:o,...n.hideTunnels===!0&&{hideTunnels:!0},...n.showQueues===!0&&{showQueues:!0},...n.watch===!0&&{watch:!0},...(n.changes===`take-along`||n.changes===`set-aside`)&&{changes:n.changes},...Array.isArray(n.libraries)&&{libraries:n.libraries.filter(e=>typeof e==`string`)},branch:n.branch??``,run:l??`cli`,...u&&{platform:u},note:n.note??``}}}async reload(){this.commit(),await So(this.saved());let e=await bo();e&&this.open(e)}open({stack:e,clones:t,roots:n,saved:r}){let i=Ao(e);M(this.#M,i),M(this.#u,i.envs.filter(e=>Is(i,e))),this.stack=i.name??``,this.dir=(i.source??``).replace(/\/stack\.json$/,``),this.setup=!!i.setup,this.known=i.stacks??[],this.envs=i.envs,this.env=r?.env??i.envs[0]??``,this.roots=n,this.apps=Object.entries(i.apps).map(([e,n])=>({id:e,name:n.name,kind:n.kind,kindLabel:xs(n,i).label,slug:n.slug??``,cloned:!!t[e],calls:[...new Set([...Object.keys(n.consumes??{}),...Object.keys(i.found?.[e]??{})])],known:Object.keys(n.consumes??{}),answers:xs(n,i).serves||Object.entries(i.apps).some(([t,n])=>t!==e&&(n.consumes?.[e]??i.found?.[t]?.[e])),serves:!!n.url,runIn:[...xs(n,i).runIn,...n.mock?.length?[[`mock`,`Mock`]]:[]],platforms:xs(n,i).platforms??[],current:t[e]?.branch??``,branches:t[e]?.branches??[],dirty:t[e]?.dirty??0,libraries:(t[e]?.libraries??[]).map(({name:e,path:t})=>({name:e,path:t})),...n.outside&&{outside:typeof n.outside==`string`?n.outside:`an outside system`}})),this.nodes=this.apps.flatMap(e=>{let t=r?.nodes?.[e.id];return t?[this.#Oe(e,{x:t.x,y:t.y},t)]:[]}),this.fullHeights=Object.fromEntries(Object.entries(r?.nodes??{}).flatMap(([e,t])=>typeof t?.full==`number`&&t.full>0?[[e,t.full]]:[]));let a=new Set(this.nodes.map(({id:e})=>e));this.edges=(r?.edges??[]).filter(({from:e,to:t})=>a.has(e)&&a.has(t)).map(({from:e,to:t,fromSide:n,toSide:r,...i})=>cc(e,t,{fromSide:n??`right`,toSide:r??`left`,...i})),this.#le=r??{},this.name=typeof r?.preset==`string`?r.preset:null,this.own=Array.isArray(r?.presets)?r.presets:[],this.#ke=this.own.map(e=>e.name),this.scratch=r?.scratch===!0,this.dismissed=Array.isArray(r?.dismissed)?r.dismissed:[],this.trash=Array.isArray(r?.trash)?r.trash:[],this.recent=Array.isArray(r?.recent)?r.recent:[],this.infra=[],this.queues=r?.queues??{},this.hiddenQueues=r?.hiddenQueues??{},this.hiddenOutside=r?.hiddenOutside??{},this.hiddenLogs=r?.hiddenLogs??{},this.logAliases=r?.logAliases??{},this.pinned=Array.isArray(r?.outside)?r.outside:[],this.syncInfra(r?.infra??{});let{zoom:o,pan:s}=r??{};this.view=o&&s?{x:s.x,y:s.y,zoom:o}:void 0}commit(){!this.live&&!this.nodes.some(e=>e.dragging)&&this.#ye()}get changes(){return[R(this.#M),this.live,this.env,this.name,this.scratch,this.view,this.nodes,this.edges,this.infra,this.own,this.trash,this.recent,this.dismissed,this.fullHeights,this.queues,this.hiddenQueues,this.hiddenOutside,this.hiddenLogs,this.logAliases,this.pinned]}#ke=[];saved(){if(this.#ke=[...new Set([...this.#ke,...this.own.map(e=>e.name)])],this.live)return{...this.#fe,env:this.env};let e=this.#le.nodes??{};return{mode:`auto`,...this.#le,preset:this.name,presets:this.own,seen:this.#ke,trash:this.trash,recent:this.recent,scratch:this.scratch||void 0,dismissed:this.dismissed.length?this.dismissed:void 0,env:this.env,...this.view&&{zoom:this.view.zoom,pan:{x:this.view.x,y:this.view.y}},nodes:Object.fromEntries(this.nodes.map(({id:t,position:n,data:{branch:r,run:i,platform:a,note:o,hideTunnels:s,showQueues:c,watch:l,changes:u,libraries:d}})=>[t,{...e[t],x:Math.round(n.x),y:Math.round(n.y),branch:r,run:i,...a&&{platform:a},note:o,hideTunnels:s?!0:void 0,showQueues:c?!0:void 0,watch:l?!0:void 0,changes:u,libraries:d?.length?d:void 0,full:this.fullHeights[t]}])),edges:this.edges.map(({source:e,target:t,data:n})=>({from:e,to:t,...n})),queues:this.queues,hiddenQueues:this.hiddenQueues,hiddenOutside:Object.keys(this.hiddenOutside).length?this.hiddenOutside:void 0,hiddenLogs:Object.keys(this.hiddenLogs).length?this.hiddenLogs:void 0,logAliases:Object.keys(this.logAliases).length?this.logAliases:void 0,outside:this.pinned.length?this.pinned:void 0,infra:Object.fromEntries(this.infra.map(({id:e,position:t})=>[e,{x:Math.round(t.x),y:Math.round(t.y)}]))}}add(e,t){let n=this.app(e);if(!n||n.outside||!n.cloned||this.nodes.some(t=>t.id===e))return;if(t){let e=this.toFlow(t);this.#Ae(this.#Oe(n,this.stored({x:e.x-sc.w/2,y:e.y-22})));return}let r=this.area(),i=this.toFlow({x:r.left,y:r.top}),a=this.toFlow({x:r.right,y:r.bottom}),o=this.nodes.map(({id:e,position:t})=>this.boxes.get(e)??{...this.shown(t,e),w:sc.w,h:sc.h}),s=(e,t)=>o.every(n=>e+sc.w+sc.gap<=n.x||n.x+n.w+sc.gap<=e||t+sc.h+sc.gap<=n.y||n.y+n.h+sc.gap<=t),c=(e,t,n)=>Array.from({length:Math.max(0,Math.floor((t-n-e-40)/40)+1)},(t,n)=>e+40+n*40),l=(e,t)=>e-t,u=(e,t)=>[...new Set([...e,...t])],d=u(o.map(e=>e.y).sort(l),c(i.y,a.y,sc.h)).filter(e=>e>=i.y&&e+sc.h<=a.y),f=u(o.map(e=>e.x+e.w+sc.gap).sort(l),c(i.x,a.x,sc.w)).filter(e=>e>=i.x&&e+sc.w<=a.x),p;for(let e of d)if(p=f.filter(t=>s(t,e)).map(t=>({x:t,y:e}))[0],p)break;let m=this.nodes.length*32;this.#Ae(this.#Oe(n,this.stored(p??{x:i.x+48+m,y:i.y+48+m})))}selectAll(){let e=e=>e.selected?e:{...e,selected:!0};this.nodes=this.nodes.map(e),this.infra=this.infra.map(e),this.edges=this.edges.map(lc)}pick(e){let t=t=>!!t.selected==(t.id===e)?t:{...t,selected:t.id===e};this.infra=this.infra.map(t),this.edges=this.edges.map(lc),this.nodes=this.nodes.map(t)}#Ae(e){this.infra=this.infra.map(lc),this.edges=this.edges.map(lc),this.nodes=[...this.nodes.map(lc),{...e,selected:!0}]}logName(e){return this.logAliases[e]??this.nameOf(e)}aliasLog(e,t){let{[e]:n,...r}=this.logAliases,i=t.trim().slice(0,24);this.logAliases=i&&i!==this.nameOf(e)?{...r,[e]:i}:r}showLog(e,t){let{[e]:n,...r}=this.hiddenLogs;this.hiddenLogs=t?r:{...r,[e]:!0}}showOutside(e,t){let{[e]:n,...r}=this.hiddenOutside;this.hiddenOutside=t?r:{...r,[e]:!0},t?this.pin(e):this.unpin(e),this.syncInfra()}set(e,t){this.nodes=this.nodes.map(n=>n.id===e?{...n,data:{...n.data,...t}}:n)}cablesOf(e){let t=e=>this.app(e),n=this.cards.flatMap(n=>n.id===e?[]:t(n.id)??[]),r=n.filter(t=>this.edges.some(n=>n.id===`${e}>${t.id}`)),i=n.filter(e=>!r.includes(e)),a=i.filter(n=>t(e)?.calls.includes(n.id)),o=i.filter(t=>!t.outside&&t.answers&&!t.calls.includes(e));return{can:a.length?a:o,wired:r}}uncabled(e){return this.cards.length>1&&!this.edges.some(t=>t.source===e||t.target===e)}connect(e,t){let n=cc(e,t,Vo(Object.fromEntries(this.nodes.map(({id:e,position:t})=>[e,t])),{from:e,to:t},`down`,e=>this.boxes.get(e)??{w:260,h:160}));this.edges=[...this.edges.filter(e=>e.id!==n.id),n]}cut(e,t){this.edges=this.edges.filter(n=>n.id!==`${e}>${t}`)}remove(e){this.nodes=this.nodes.filter(t=>t.id!==e),this.edges=this.edges.filter(t=>t.source!==e&&t.target!==e)}edit(e,t,n=!1){if(this.name!==e){let r=this.own.find(t=>t.name===e)??this.team.find(t=>t.name===e)??(n?{name:e,version:1,nodes:{},edges:[]}:void 0);if(!r)return!1;let i={...Xs(r,t),name:e};if(JSON.stringify(i)===JSON.stringify(r))return!1;let a=this.own.some(t=>t.name===e);return this.own=a?this.own.map(t=>t.name===e?i:t):[...this.own,i],!0}let r=this.content(),i=e=>this.cards.some(t=>t.id===e);for(let e of t.remove??[])this.remove(e);for(let e of t.add??[])this.add(e);for(let[e,n]of Object.entries(t.branch??{}))this.set(e,{branch:n});for(let[e,n]of Object.entries(t.note??{}))this.set(e,{note:n});for(let{from:e,to:n}of t.uncable??[])this.cut(e,n);for(let{from:e,to:n}of t.cable??[])i(e)&&i(n)&&!this.edges.some(t=>t.id===`${e}>${n}`)&&this.connect(e,n);return t.arrange&&(this.opened=`arrange`),this.content()!==r||!!t.arrange}#je={key:``,version:0};arrange(e=e=>this.boxes.get(e)??{w:260,h:160}){let t=()=>JSON.stringify(this.nodes.map(({id:e,position:t})=>[e,t.x,t.y])),n=t(),r=n===this.#je.key?this.#je.version+1:0;for(let i=0;i<ec.length;i++,r++){let[i,a]=ec[r%ec.length]??ec[0];if(this.#Me(e,i,a),t()!==n)break}this.#je={key:t(),version:r}}#Me(e,t,n){let r=this.cables.map(({from:e,to:t})=>({from:e,to:t})),i=e=>t===`down`&&r.some(t=>t.from===e)?`right`:`bottom`,a=n=>{let i=this.ledBy(n).filter(e=>this.ownedBy(n).includes(e)).map(e=>this.infraBoxes.get(e)??nc),{w:a,h:o}=e(n);if(!i.length)return{w:a,h:o};let s=i.reduce((e,t)=>e+t.h+nc.gap/2,0),c=Math.max(...i.map(e=>e.w));return t===`down`&&r.some(e=>e.from===n)?{w:a+nc.gap+c,h:Math.max(o,s)}:{w:Math.max(a,c),h:o+s}},o=new Map(this.nodes.flatMap(e=>this.ownedBy(e.id).map(t=>[t,e.id]))),s=this.infra.filter(e=>e.type!==`tunnel`&&!o.has(e.id)).map(e=>e.id),c=e=>s.includes(e)||this.cards.some(t=>t.id===e),l=e=>o.get(e)??e,u=this.flows.map(({from:e,to:t})=>({from:l(e),to:l(t)})).filter(({from:e,to:t})=>e!==t&&c(e)&&c(t)),d=Bo([...this.nodes.map(e=>e.id),...s],[...r,...u],e=>s.includes(e)?this.infraBoxes.get(e)??{w:220,h:70}:a(e),t,n,{pad:ac,anchor:n=>s.includes(n)?void 0:t===`down`?e(n).w/2:oc/2}),f=Object.fromEntries(this.nodes.filter(e=>this.ownedBy(e.id).length).map(e=>[e.id,i(e.id)])),p=r.map(n=>({...n,...Vo(d,n,t,e,f)}));rs(p,t=>({...d[t]??{x:0,y:0},...e(t)})),this.nodes=this.nodes.map(e=>({...e,position:d[e.id]??e.position})),this.edges=p.map(({from:e,to:t,...n})=>cc(e,t,n));let m=this.infra.map(e=>{let t=d[e.id];return t?{...e,position:t}:e});for(let t of this.nodes)m=this.#J(t.id,m,e(t.id),!0,f[t.id]);this.infra=m}},uc={waiting:`Waiting`,building:`Building`,running:`Running`,unhealthy:`Unhealthy`,exited:`Exited`,"failed-to-start":`Failed to start`,"secret-missing":`Secret missing`},dc={waiting:e=>e||`Waiting.`,building:e=>`Building. ${e}`,running:()=>``,unhealthy:e=>`Unhealthy: ${e}`,exited:e=>`Exited. ${e}`,"failed-to-start":e=>`Failed to start: ${e}`,"secret-missing":e=>`Secret missing: ${e}. Set it under Credentials.`},Q=new class{#e=j(null);get status(){return R(this.#e)}set status(e){M(this.#e,e)}#t=j(!1);get asked(){return R(this.#t)}set asked(e){M(this.#t,e,!0)}#n;#r=``;watch(){let e=!1,t=async()=>{if(!(document.hidden||e)){e=!0;try{let e=await fetch(`data/status.json`),t=e.ok?await e.text():this.#r;t!==this.#r&&(this.#r=t,this.status=JSON.parse(t))}catch{}e=!1,this.asked||requestAnimationFrame(()=>requestAnimationFrame(()=>this.asked=!0))}};t(),clearInterval(this.#n),this.#n=setInterval(()=>void t(),1500)}sent(e){let{live:t,progress:n}=this.status??{},r=!t?.env||t.env===Z.env;return!!t?.nodes?.[e]&&r||!!n?.apps?.includes(e)&&n.env===Z.env}#i(e){return this.sent(e)?this.status?.apps?.[e]:void 0}up(e){let t=this.#i(e);return t?t.running?t.running.length>0:t.listening??null:null}state(e){let t=this.#i(e);if(t?.state)return t.state;if(!this.sent(e)||this.up(e))return null;let n=(this.status?.secrets?.[e]?.[Z.env]??[]).filter(e=>!e.stored).map(e=>e.name);return n.length?{state:`secret-missing`,detail:n.join(`, `)}:null}stateSaid(e){let t=this.state(e);return t?dc[t.state](t.detail).trim():``}about(e){let t=this.#i(e);if(t?.running)return this.where(e);if(t?.listening===void 0)return``;let n=String(t.port??``);return t.listening?`Running on port ${n}`:`Nothing is listening on port ${n}`}where(e){let t=this.#i(e);if(!t?.running){let n=this.status?.apps?.[e],r=n?.running?n.running.length>0:n?.listening===!0,i=(this.status?.live?.env??``).toUpperCase();return!t&&r&&this.status?.live?.nodes?.[e]?`Running for your ${i} board, not this one. Run switches it.`:``}let[n]=t.running;if(!n)return`Not running on a simulator or device`;let r={ios:`iOS simulator`,android:`Android`}[n.platform]??n.platform,i=n.source?`, started from ${n.source===`ide`?`your IDE`:`Koppler`}`:``,a=t.running.length>1?`, and ${String(t.running.length-1)} more`:``;return`Running on ${n.device} (${r})${n.flavor?`, ${n.flavor}`:``}${i}${a}`}steps(e){let t=this.#i(e)?.steps??[],n=this.up(e);return n===!0?t.map(e=>(e.label===`Start`||e.label===`Check`)&&(e.state===`user`||e.state===`todo`)?{label:e.label,state:`done`,detail:`Running.`}:e):n===!1?t.map(e=>e.label===`Check`&&e.state===`done`?{...e,state:`todo`,detail:`Not running right now.`}:e):t}hasLog(e){return!!this.status?.apps?.[e]?.logTail}tail(e){return this.status?.apps?.[e]?.logTail??``}tunnel(e,t){return t.some(e=>this.sent(e))?this.status?.ports?.[e]:void 0}};function fc(e){let t=t=>e.find(e=>e.state===t),[n,r,i]=[t(`failed`),t(`user`),t(`todo`)];return n?[`failed`,`Failed: ${n.label}`]:r?[`user`,`Waiting on you: ${r.label}`]:i?[`todo`,`Next: ${i.label}`]:[`done`,`All steps done`]}var pc=(e,t)=>xo(e,t,!0),mc=e=>{if(e.matches(`.svelte-flow__pane`))return`the empty board`;let t=e.matches(`input[type="radio"], input[type="checkbox"]`)&&e.closest(`label`)||e.closest(`button, a, [role="button"], [role="option"], [role="radio"], [role="menuitem"], label, input, select, summary, .svelte-flow__node, .svelte-flow__edge`)||e,n=t instanceof HTMLInputElement||t instanceof HTMLSelectElement?t.labels?.[0]:null,r=(t.getAttribute(`aria-label`)??t.getAttribute(`title`)??(n??t).textContent).replace(/\s+/g,` `).trim().slice(0,80),i=t.closest(`.svelte-flow__node, .svelte-flow__edge`)?.getAttribute(`data-id`)??``;return`${t.tagName.toLowerCase()}${r?` "${r}"`:``}${i?` in ${i}`:``}`},hc=e=>!!e.closest(`[type="password"], [data-secret]`),gc=new class{#e=j(!1);#t=[];#n;get forced(){return!!Q.status?.dev}get on(){return R(this.#e)||this.forced}set on(e){M(this.#e,e,!0);try{localStorage.setItem(`koppler-debug`,e?`on`:`off`)}catch{}e&&this.note(`debug`,`Debug log on`)}note(e,t,n){if(!this.on)return;let r={apps:Z.nodes.length,cables:Z.edges.length,view:Z.live?`live`:`edit`,env:Z.env,zoom:Math.round((Z.view?.zoom??1)*100)/100};this.#t.push({at:new Date().toISOString(),kind:e,what:t,...n&&{detail:n.slice(0,300)},board:r}),clearTimeout(this.#n),this.#n=setTimeout(()=>{this.flush()},1500)}flush(){let e=this.#t.splice(0);e.length&&pc(`debug-log`,{entries:e})}async read(){return this.flush(),await new Promise(e=>setTimeout(e,300)),(await fetch(`temp/debug.jsonl?${String(Date.now())}`).then(e=>e.ok?e.text():``).catch(()=>``)).trim().split(`
4
4
  `).slice(-300).join(`
5
5
  `)}clear(){this.#t=[],pc(`debug-clear`,{})}watch(){try{M(this.#e,localStorage.getItem(`koppler-debug`)===`on`)}catch{}let e={capture:!0};addEventListener(`click`,e=>{e.target instanceof Element&&!hc(e.target)&&this.note(`click`,mc(e.target))},e),addEventListener(`change`,e=>{let t=e.target;if(!(t instanceof Element)||hc(t))return;let n=t instanceof HTMLInputElement&&t.type===`checkbox`?String(t.checked):t instanceof HTMLSelectElement||t instanceof HTMLInputElement&&t.type===`radio`?t.value:`(typed)`;this.note(`change`,mc(t),n)},e),addEventListener(`keydown`,e=>{let t=e.target instanceof Element&&!!e.target.closest(`input:not([type="radio"]):not([type="checkbox"]), textarea, select, [contenteditable]`);if(!e.metaKey&&!e.ctrlKey&&t||e.key.length>12)return;let n=[e.metaKey&&`Cmd`,e.ctrlKey&&`Ctrl`,e.shiftKey&&`Shift`,e.altKey&&`Alt`,e.key];this.note(`key`,n.filter(Boolean).join(`+`))},e),addEventListener(`error`,e=>{this.note(`error`,e.message||`page error`,e.filename?`${e.filename.split(`/`).pop()??``}:${String(e.lineno)}`:``)}),addEventListener(`unhandledrejection`,e=>{let t=e.reason,n=t instanceof Error?t.message:typeof t==`string`?t:``;this.note(`error`,n||`unhandled rejection`)}),addEventListener(`pagehide`,()=>{this.flush()})}},$=new class{#e=j(null);get now(){return R(this.#e)}set now(e){M(this.#e,e)}#t;show(e,t=`message`,n){clearTimeout(this.#t),gc.note(t,e),this.now={text:e,warning:t===`warning`,...n&&{action:n}},t!==`warning`&&(this.#t=setTimeout(()=>this.now=null,n?7e3:2600))}hide(){clearTimeout(this.#t),this.now=null}},_c={play:so,database:ro,sprout:fo,refresh:lo,trash:go,terminal:mo,upload:vo,download:ao};async function vc(e,t={}){let n=await Co(`app-command`,{app:e.app,command:e.key,args:t});return`error`in n?n.error:($.show(`${e.command.label} started on ${e.appName}. The inbox says when it ends.`),null)}var yc=V(`<p class="ask svelte-gr1w3a"> </p>`),bc=V(`<span class="opt svelte-gr1w3a">optional</span>`),xc=V(`<option> </option>`),Sc=V(`<select class="svelte-gr1w3a"></select>`),Cc=V(`<input class="svelte-gr1w3a"/>`),wc=V(`<label class="svelte-gr1w3a"><span> <!></span> <!></label>`),Tc=V(`<button class="x svelte-gr1w3a" type="button" aria-label="Close"><!></button> <h2 id="command-title" class="svelte-gr1w3a"> </h2> <!> <form class="svelte-gr1w3a"><!> <p class="error svelte-gr1w3a" role="alert"> </p> <div class="acts svelte-gr1w3a"><button type="button" class="svelte-gr1w3a">Cancel</button> <button type="submit"> </button></div></form>`,1),Ec=V(`<dialog aria-labelledby="command-title" class="svelte-gr1w3a"><!></dialog>`);function Dc(e,t){O(t,!0);let n=j(void 0),r=j(null),i=j(mn({})),a=j(``),o=j(!1);function s(e){M(r,e),M(i,Object.fromEntries((e.command.args??[]).map(e=>[e.name,e.choices?.[0]??``])),!0),M(a,``),R(n)?.showModal()}let c=async e=>{e.preventDefault(),R(r)&&(M(o,!0),M(a,await vc(R(r),R(i))??``,!0),M(o,!1),R(a)||R(n)?.close())};var l={open:s},u=Ec(),d=N(u),f=e=>{let t=A(()=>R(r));var s=Tc(),l=P(s);X(N(l),{get of(){return to},size:14}),D(l);var u=I(l,2),d=F(u),f=I(u,2),p=e=>{var n=yc(),r=F(n,!0);L(()=>U(r,R(t).command.confirm)),H(e,n)};W(f,e=>{R(t).command.confirm&&e(p)});var m=I(f,2),h=N(m);G(h,17,()=>R(t).command.args??[],e=>e.name,(e,t)=>{var n=wc(),r=N(n),a=N(r,!0),o=I(a),s=e=>{H(e,bc())};W(o,e=>{R(t).required||e(s)}),D(r);var c=I(r,2),l=e=>{var n=Sc();G(n,20,()=>R(t).choices??[],e=>e,(e,t)=>{var n=xc(),r=F(n,!0),i={};L(()=>{U(r,t),i!==(i=t)&&(n.value=(n.__value=i)??``)}),H(e,n)}),D(n),ta(n),na(n,()=>R(i)[R(t).name],e=>R(i)[R(t).name]=e),H(e,n)},u=e=>{var n=Cc();ma(n),L(()=>{n.required=!!R(t).required,q(n,`inputmode`,R(t).type===`number`?`decimal`:void 0),q(n,`pattern`,R(t).type===`number`?`-?\\d+(\\.\\d+)?`:void 0)}),Sa(n,()=>R(i)[R(t).name],e=>R(i)[R(t).name]=e),H(e,n)};W(c,e=>{R(t).type===`choice`?e(l):e(u,-1)}),D(n),L(()=>U(a,R(t).label??R(t).name)),H(e,n)});var g=I(h,2),_=F(g,!0),v=I(g,2),y=N(v),b=I(y,2);let x;var S=F(b,!0);D(v),D(m),L(()=>{U(d,`${R(t).command.label??``} on ${R(t).appName??``}`),U(_,R(a)),x=K(b,1,`go svelte-gr1w3a`,null,x,{danger:!!R(t).command.confirm}),b.disabled=R(o),U(S,R(t).command.label)}),B(`click`,l,()=>R(n)?.close()),z(`submit`,m,c),B(`click`,y,()=>R(n)?.close()),H(e,s)};return W(d,e=>{R(r)&&e(f)}),D(u),Ma(u,e=>M(n,e),()=>R(n)),H(e,u),k(l)}Qr([`click`]);var Oc=new Set([`$$slots`,`$$events`,`$$legacy`]);function kc(e,t){let n=J(t,Oc),r={name:`panel-left`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M9 3v18`}]],aliases:[`sidebar`]};$a(e,Ba(()=>n,{get icon(){return r}}))}var Ac=new Set([`$$slots`,`$$events`,`$$legacy`]);function jc(e,t){let n=J(t,Ac),r={name:`square`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var Mc=new Set([`$$slots`,`$$events`,`$$legacy`]);function Nc(e,t){let n=J(t,Mc),r={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}function Pc(e,t){let n=Y(t,`size`,3,14);X(e,{get of(){return Nc},get size(){return n()}})}var Fc=V(`<span class="cmd nodrag nopan svelte-1mrkr86"><code class="svelte-1mrkr86"> </code> <button type="button" title="Copy this command" class="svelte-1mrkr86"> </button></span>`);function Ic(e,t){O(t,!0);let n=j(!1),r=async()=>{await navigator.clipboard.writeText(t.command).then(()=>!0,()=>!1)?(M(n,!0),setTimeout(()=>M(n,!1),1500)):$.show(`Copy is blocked here. Select the command and copy it.`,`warning`)};var i=Fc(),a=N(i),o=F(a,!0),s=I(a,2),c=F(s,!0);D(i),L(()=>{U(o,t.command),q(s,`aria-label`,t.label),U(c,R(n)?`Copied`:`Copy`)}),B(`click`,s,r),H(e,i),k()}Qr([`click`]);var Lc={value:()=>{}};function Rc(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+``)||r in n||/[\s.]/.test(r))throw Error(`illegal type: `+r);n[r]=[]}return new zc(n)}function zc(e){this._=e}function Bc(e,t){return e.trim().split(/^|\s+/).map(function(e){var n=``,r=e.indexOf(`.`);if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}zc.prototype=Rc.prototype={constructor:zc,on:function(e,t){var n=this._,r=Bc(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a<o;)if((i=(e=r[a]).type)&&(i=Vc(n[i],e.name)))return i}else{if(t!=null&&typeof t!=`function`)throw Error(`invalid callback: `+t);for(;++a<o;)if(i=(e=r[a]).type)n[i]=Hc(n[i],e.name,t);else if(t==null)for(i in n)n[i]=Hc(n[i],e.name,null);return this}},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new zc(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var n=Array(i),r=0,i,a;r<i;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(a=this._[e],r=0,i=a.length;r<i;++r)a[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw Error(`unknown type: `+e);for(var r=this._[e],i=0,a=r.length;i<a;++i)r[i].value.apply(t,n)}};function Vc(e,t){for(var n=0,r=e.length,i;n<r;++n)if((i=e[n]).name===t)return i.value}function Hc(e,t,n){for(var r=0,i=e.length;r<i;++r)if(e[r].name===t){e[r]=Lc,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Uc={svg:`http://www.w3.org/2000/svg`,xhtml:`http://www.w3.org/1999/xhtml`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function Wc(e){var t=e+=``,n=t.indexOf(`:`);return n>=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),Uc.hasOwnProperty(t)?{space:Uc[t],local:e}:e}function Gc(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function Kc(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function qc(e){var t=Wc(e);return(t.local?Kc:Gc)(t)}function Jc(){}function Yc(e){return e==null?Jc:function(){return this.querySelector(e)}}function Xc(e){typeof e!=`function`&&(e=Yc(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=Array(o),c,l,u=0;u<o;++u)(c=a[u])&&(l=e.call(c,c.__data__,u,a))&&(`__data__`in c&&(l.__data__=c.__data__),s[u]=l);return new Ru(r,this._parents)}function Zc(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Qc(){return[]}function $c(e){return e==null?Qc:function(){return this.querySelectorAll(e)}}function el(e){return function(){return Zc(e.apply(this,arguments))}}function tl(e){e=typeof e==`function`?el(e):$c(e);for(var t=this._groups,n=t.length,r=[],i=[],a=0;a<n;++a)for(var o=t[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&(r.push(e.call(c,c.__data__,l,o)),i.push(c));return new Ru(r,i)}function nl(e){return function(){return this.matches(e)}}function rl(e){return function(t){return t.matches(e)}}var il=Array.prototype.find;function al(e){return function(){return il.call(this.children,e)}}function ol(){return this.firstElementChild}function sl(e){return this.select(e==null?ol:al(typeof e==`function`?e:rl(e)))}var cl=Array.prototype.filter;function ll(){return Array.from(this.children)}function ul(e){return function(){return cl.call(this.children,e)}}function dl(e){return this.selectAll(e==null?ll:ul(typeof e==`function`?e:rl(e)))}function fl(e){typeof e!=`function`&&(e=nl(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new Ru(r,this._parents)}function pl(e){return Array(e.length)}function ml(){return new Ru(this._enter||this._groups.map(pl),this._parents)}function hl(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}hl.prototype={constructor:hl,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function gl(e){return function(){return e}}function _l(e,t,n,r,i,a){for(var o=0,s,c=t.length,l=a.length;o<l;++o)(s=t[o])?(s.__data__=a[o],r[o]=s):n[o]=new hl(e,a[o]);for(;o<c;++o)(s=t[o])&&(i[o]=s)}function vl(e,t,n,r,i,a,o){var s,c,l=new Map,u=t.length,d=a.length,f=Array(u),p;for(s=0;s<u;++s)(c=t[s])&&(f[s]=p=o.call(c,c.__data__,s,t)+``,l.has(p)?i[s]=c:l.set(p,c));for(s=0;s<d;++s)p=o.call(e,a[s],s,a)+``,(c=l.get(p))?(r[s]=c,c.__data__=a[s],l.delete(p)):n[s]=new hl(e,a[s]);for(s=0;s<u;++s)(c=t[s])&&l.get(f[s])===c&&(i[s]=c)}function yl(e){return e.__data__}function bl(e,t){if(!arguments.length)return Array.from(this,yl);var n=t?vl:_l,r=this._parents,i=this._groups;typeof e!=`function`&&(e=gl(e));for(var a=i.length,o=Array(a),s=Array(a),c=Array(a),l=0;l<a;++l){var u=r[l],d=i[l],f=d.length,p=xl(e.call(u,u&&u.__data__,l,r)),m=p.length,h=s[l]=Array(m),g=o[l]=Array(m);n(u,d,h,g,c[l]=Array(f),p,t);for(var _=0,v=0,y,b;_<m;++_)if(y=h[_]){for(_>=v&&(v=_+1);!(b=g[v])&&++v<m;);y._next=b||null}}return o=new Ru(o,r),o._enter=s,o._exit=c,o}function xl(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function Sl(){return new Ru(this._exit||this._groups.map(pl),this._parents)}function Cl(e,t,n){var r=this.enter(),i=this,a=this.exit();return typeof e==`function`?(r=e(r),r&&=r.selection()):r=r.append(e+``),t!=null&&(i=t(i),i&&=i.selection()),n==null?a.remove():n(a),r&&i?r.merge(i).order():i}function wl(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,i=n.length,a=r.length,o=Math.min(i,a),s=Array(i),c=0;c<o;++c)for(var l=n[c],u=r[c],d=l.length,f=s[c]=Array(d),p,m=0;m<d;++m)(p=l[m]||u[m])&&(f[m]=p);for(;c<i;++c)s[c]=n[c];return new Ru(s,this._parents)}function Tl(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],i=r.length-1,a=r[i],o;--i>=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function El(e){e||=Dl;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;a<r;++a){for(var o=n[a],s=o.length,c=i[a]=Array(s),l,u=0;u<s;++u)(l=o[u])&&(c[u]=l);c.sort(t)}return new Ru(i,this._parents).order()}function Dl(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function Ol(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function kl(){return Array.from(this)}function Al(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null}function jl(){let e=0;for(let t of this)++e;return e}function Ml(){return!this.node()}function Nl(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var i=t[n],a=0,o=i.length,s;a<o;++a)(s=i[a])&&e.call(s,s.__data__,a,i);return this}function Pl(e){return function(){this.removeAttribute(e)}}function Fl(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Il(e,t){return function(){this.setAttribute(e,t)}}function Ll(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Rl(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function zl(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function Bl(e,t){var n=Wc(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?Fl:Pl:typeof t==`function`?n.local?zl:Rl:n.local?Ll:Il)(n,t))}function Vl(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Hl(e){return function(){this.style.removeProperty(e)}}function Ul(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Wl(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function Gl(e,t,n){return arguments.length>1?this.each((t==null?Hl:typeof t==`function`?Wl:Ul)(e,t,n??``)):Kl(this.node(),e)}function Kl(e,t){return e.style.getPropertyValue(t)||Vl(e).getComputedStyle(e,null).getPropertyValue(t)}function ql(e){return function(){delete this[e]}}function Jl(e,t){return function(){this[e]=t}}function Yl(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Xl(e,t){return arguments.length>1?this.each((t==null?ql:typeof t==`function`?Yl:Jl)(e,t)):this.node()[e]}function Zl(e){return e.trim().split(/^|\s+/)}function Ql(e){return e.classList||new $l(e)}function $l(e){this._node=e,this._names=Zl(e.getAttribute(`class`)||``)}$l.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function eu(e,t){for(var n=Ql(e),r=-1,i=t.length;++r<i;)n.add(t[r])}function tu(e,t){for(var n=Ql(e),r=-1,i=t.length;++r<i;)n.remove(t[r])}function nu(e){return function(){eu(this,e)}}function ru(e){return function(){tu(this,e)}}function iu(e,t){return function(){(t.apply(this,arguments)?eu:tu)(this,e)}}function au(e,t){var n=Zl(e+``);if(arguments.length<2){for(var r=Ql(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each((typeof t==`function`?iu:t?nu:ru)(n,t))}function ou(){this.textContent=``}function su(e){return function(){this.textContent=e}}function cu(e){return function(){var t=e.apply(this,arguments);this.textContent=t??``}}function lu(e){return arguments.length?this.each(e==null?ou:(typeof e==`function`?cu:su)(e)):this.node().textContent}function uu(){this.innerHTML=``}function du(e){return function(){this.innerHTML=e}}function fu(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??``}}function pu(e){return arguments.length?this.each(e==null?uu:(typeof e==`function`?fu:du)(e)):this.node().innerHTML}function mu(){this.nextSibling&&this.parentNode.appendChild(this)}function hu(){return this.each(mu)}function gu(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function _u(){return this.each(gu)}function vu(e){var t=typeof e==`function`?e:qc(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function yu(){return null}function bu(e,t){var n=typeof e==`function`?e:qc(e),r=t==null?yu:typeof t==`function`?t:Yc(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function xu(){var e=this.parentNode;e&&e.removeChild(this)}function Su(){return this.each(xu)}function Cu(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function wu(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function Tu(e){return this.select(e?wu:Cu)}function Eu(e){return arguments.length?this.property(`__data__`,e):this.node().__data__}function Du(e){return function(t){e.call(this,t,this.__data__)}}function Ou(e){return e.trim().split(/^|\s+/).map(function(e){var t=``,n=e.indexOf(`.`);return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function ku(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n<i;++n)a=t[n],(!e.type||a.type===e.type)&&a.name===e.name?this.removeEventListener(a.type,a.listener,a.options):t[++r]=a;++r?t.length=r:delete this.__on}}}function Au(e,t,n){return function(){var r=this.__on,i,a=Du(t);if(r){for(var o=0,s=r.length;o<s;++o)if((i=r[o]).type===e.type&&i.name===e.name){this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),i.value=t;return}}this.addEventListener(e.type,a,n),i={type:e.type,name:e.name,value:t,listener:a,options:n},r?r.push(i):this.__on=[i]}}function ju(e,t,n){var r=Ou(e+``),i,a=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var c=0,l=s.length,u;c<l;++c)for(i=0,u=s[c];i<a;++i)if((o=r[i]).type===u.type&&o.name===u.name)return u.value}}else{for(s=t?Au:ku,i=0;i<a;++i)this.each(s(r[i],t,n));return this}}function Mu(e,t,n){var r=Vl(e),i=r.CustomEvent;typeof i==`function`?i=new i(t,n):(i=r.document.createEvent(`Event`),n?(i.initEvent(t,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Nu(e,t){return function(){return Mu(this,e,t)}}function Pu(e,t){return function(){return Mu(this,e,t.apply(this,arguments))}}function Fu(e,t){return this.each((typeof t==`function`?Pu:Nu)(e,t))}function*Iu(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],i=0,a=r.length,o;i<a;++i)(o=r[i])&&(yield o)}var Lu=[null];function Ru(e,t){this._groups=e,this._parents=t}function zu(){return new Ru([[document.documentElement]],Lu)}function Bu(){return this}Ru.prototype=zu.prototype={constructor:Ru,select:Xc,selectAll:tl,selectChild:sl,selectChildren:dl,filter:fl,data:bl,enter:ml,exit:Sl,join:Cl,merge:wl,selection:Bu,order:Tl,sort:El,call:Ol,nodes:kl,node:Al,size:jl,empty:Ml,each:Nl,attr:Bl,style:Gl,property:Xl,classed:au,text:lu,html:pu,raise:hu,lower:_u,append:vu,insert:bu,remove:Su,clone:Tu,datum:Eu,on:ju,dispatch:Fu,[Symbol.iterator]:Iu};function Vu(e){return typeof e==`string`?new Ru([[document.querySelector(e)]],[document.documentElement]):new Ru([[e]],Lu)}function Hu(e){let t;for(;t=e.sourceEvent;)e=t;return e}function Uu(e,t){if(e=Hu(e),t===void 0&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}if(t.getBoundingClientRect){var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]}}return[e.pageX,e.pageY]}var Wu={passive:!1},Gu={capture:!0,passive:!1};function Ku(e){e.stopImmediatePropagation()}function qu(e){e.preventDefault(),e.stopImmediatePropagation()}function Ju(e){var t=e.document.documentElement,n=Vu(e).on(`dragstart.drag`,qu,Gu);`onselectstart`in t?n.on(`selectstart.drag`,qu,Gu):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=`none`)}function Yu(e,t){var n=e.document.documentElement,r=Vu(e).on(`dragstart.drag`,null);t&&(r.on(`click.drag`,qu,Gu),setTimeout(function(){r.on(`click.drag`,null)},0)),`onselectstart`in n?r.on(`selectstart.drag`,null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var Xu=e=>()=>e;function Zu(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}Zu.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Qu(e){return!e.ctrlKey&&!e.button}function $u(){return this.parentNode}function ed(e,t){return t??{x:e.x,y:e.y}}function td(){return navigator.maxTouchPoints||`ontouchstart`in this}function nd(){var e=Qu,t=$u,n=ed,r=td,i={},a=Rc(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,Wu).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!u&&e.call(this,n,r)){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(Vu(n.view).on(`mousemove.drag`,m,Gu).on(`mouseup.drag`,h,Gu),Ju(n.view),Ku(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(qu(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){Vu(e.view).on(`mousemove.drag mouseup.drag`,null),Yu(e.view,l),qu(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r))for(var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s=0,c;s<o;++s)(c=y(this,a,n,r,i[s].identifier,i[s]))&&(Ku(n),c(`start`,n,i[s]))}function _(e){for(var t=e.changedTouches,n=t.length,r=0,a;r<n;++r)(a=i[t[r].identifier])&&(qu(e),a(`drag`,e,t[r]))}function v(e){var t=e.changedTouches,n=t.length,r,a;for(u&&clearTimeout(u),u=setTimeout(function(){u=null},500),r=0;r<n;++r)(a=i[t[r].identifier])&&(Ku(e),a(`end`,e,t[r]))}function y(e,t,r,s,c,l){var u=a.copy(),d=Uu(l||r,t),p,m,h;if((h=n.call(e,new Zu(`beforestart`,{sourceEvent:r,target:f,identifier:c,active:o,x:d[0],y:d[1],dx:0,dy:0,dispatch:u}),s))!=null)return p=h.x-d[0]||0,m=h.y-d[1]||0,function n(r,a,l){var g=d,_;switch(r){case`start`:i[c]=n,_=o++;break;case`end`:delete i[c],--o;case`drag`:d=Uu(l||a,t),_=o}u.call(r,e,new Zu(r,{sourceEvent:a,subject:h,target:f,identifier:c,active:_,x:d[0]+p,y:d[1]+m,dx:d[0]-g[0],dy:d[1]-g[1],dispatch:u}),s)}}return f.filter=function(t){return arguments.length?(e=typeof t==`function`?t:Xu(!!t),f):e},f.container=function(e){return arguments.length?(t=typeof e==`function`?e:Xu(e),f):t},f.subject=function(e){return arguments.length?(n=typeof e==`function`?e:Xu(e),f):n},f.touchable=function(e){return arguments.length?(r=typeof e==`function`?e:Xu(!!e),f):r},f.on=function(){var e=a.on.apply(a,arguments);return e===a?f:e},f.clickDistance=function(e){return arguments.length?(d=(e=+e)*e,f):Math.sqrt(d)},f}function rd(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function id(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function ad(){}var od=.7,sd=1/od,cd=`\\s*([+-]?\\d+)\\s*`,ld=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*`,ud=`\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*`,dd=/^#([0-9a-f]{3,8})$/,fd=RegExp(`^rgb\\(${cd},${cd},${cd}\\)$`),pd=RegExp(`^rgb\\(${ud},${ud},${ud}\\)$`),md=RegExp(`^rgba\\(${cd},${cd},${cd},${ld}\\)$`),hd=RegExp(`^rgba\\(${ud},${ud},${ud},${ld}\\)$`),gd=RegExp(`^hsl\\(${ld},${ud},${ud}\\)$`),_d=RegExp(`^hsla\\(${ld},${ud},${ud},${ld}\\)$`),vd={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};rd(ad,Cd,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:yd,formatHex:yd,formatHex8:bd,formatHsl:xd,formatRgb:Sd,toString:Sd});function yd(){return this.rgb().formatHex()}function bd(){return this.rgb().formatHex8()}function xd(){return Id(this).formatHsl()}function Sd(){return this.rgb().formatRgb()}function Cd(e){var t,n;return e=(e+``).trim().toLowerCase(),(t=dd.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?wd(t):n===3?new Od(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Td(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Td(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=fd.exec(e))?new Od(t[1],t[2],t[3],1):(t=pd.exec(e))?new Od(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=md.exec(e))?Td(t[1],t[2],t[3],t[4]):(t=hd.exec(e))?Td(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=gd.exec(e))?Fd(t[1],t[2]/100,t[3]/100,1):(t=_d.exec(e))?Fd(t[1],t[2]/100,t[3]/100,t[4]):vd.hasOwnProperty(e)?wd(vd[e]):e===`transparent`?new Od(NaN,NaN,NaN,0):null}function wd(e){return new Od(e>>16&255,e>>8&255,e&255,1)}function Td(e,t,n,r){return r<=0&&(e=t=n=NaN),new Od(e,t,n,r)}function Ed(e){return e instanceof ad||(e=Cd(e)),e?(e=e.rgb(),new Od(e.r,e.g,e.b,e.opacity)):new Od}function Dd(e,t,n,r){return arguments.length===1?Ed(e):new Od(e,t,n,r??1)}function Od(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}rd(Od,Dd,id(ad,{brighter(e){return e=e==null?sd:sd**+e,new Od(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?od:od**+e,new Od(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Od(Nd(this.r),Nd(this.g),Nd(this.b),Md(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:kd,formatHex:kd,formatHex8:Ad,formatRgb:jd,toString:jd}));function kd(){return`#${Pd(this.r)}${Pd(this.g)}${Pd(this.b)}`}function Ad(){return`#${Pd(this.r)}${Pd(this.g)}${Pd(this.b)}${Pd((isNaN(this.opacity)?1:this.opacity)*255)}`}function jd(){let e=Md(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Nd(this.r)}, ${Nd(this.g)}, ${Nd(this.b)}${e===1?`)`:`, ${e})`}`}function Md(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Nd(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Pd(e){return e=Nd(e),(e<16?`0`:``)+e.toString(16)}function Fd(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Rd(e,t,n,r)}function Id(e){if(e instanceof Rd)return new Rd(e.h,e.s,e.l,e.opacity);if(e instanceof ad||(e=Cd(e)),!e)return new Rd;if(e instanceof Rd)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n<r)*6:n===a?(r-t)/s+2:(t-n)/s+4,s/=c<.5?a+i:2-a-i,o*=60):s=c>0&&c<1?0:o,new Rd(o,s,c,e.opacity)}function Ld(e,t,n,r){return arguments.length===1?Id(e):new Rd(e,t,n,r??1)}function Rd(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}rd(Rd,Ld,id(ad,{brighter(e){return e=e==null?sd:sd**+e,new Rd(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?od:od**+e,new Rd(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Od(Vd(e>=240?e-240:e+120,i,r),Vd(e,i,r),Vd(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Rd(zd(this.h),Bd(this.s),Bd(this.l),Md(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Md(this.opacity);return`${e===1?`hsl(`:`hsla(`}${zd(this.h)}, ${Bd(this.s)*100}%, ${Bd(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function zd(e){return e=(e||0)%360,e<0?e+360:e}function Bd(e){return Math.max(0,Math.min(1,e||0))}function Vd(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Hd=e=>()=>e;function Ud(e,t){return function(n){return e+n*t}}function Wd(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Gd(e){return(e=+e)==1?Kd:function(t,n){return n-t?Wd(t,n,e):Hd(isNaN(t)?n:t)}}function Kd(e,t){var n=t-e;return n?Ud(e,n):Hd(isNaN(e)?t:e)}var qd=(function e(t){var n=Gd(t);function r(e,t){var r=n((e=Dd(e)).r,(t=Dd(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Kd(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function Jd(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;i<n;++i)r[i]=e[i]*(1-a)+t[i]*a;return r}}function Yd(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Xd(e,t){for(var n=t?t.length:0,r=e?Math.min(n,e.length):0,i=Array(r),a=Array(n),o=0;o<r;++o)i[o]=of(e[o],t[o]);for(;o<n;++o)a[o]=t[o];return function(e){for(o=0;o<r;++o)a[o]=i[o](e);return a}}function Zd(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function Qd(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function $d(e,t){var n={},r={},i;for(i in(typeof e!=`object`||!e)&&(e={}),(typeof t!=`object`||!t)&&(t={}),t)i in e?n[i]=of(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var ef=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,tf=new RegExp(ef.source,`g`);function nf(e){return function(){return e}}function rf(e){return function(t){return e(t)+``}}function af(e,t){var n=ef.lastIndex=tf.lastIndex=0,r,i,a,o=-1,s=[],c=[];for(e+=``,t+=``;(r=ef.exec(e))&&(i=tf.exec(t));)(a=i.index)>n&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Qd(r,i)})),n=tf.lastIndex;return n<t.length&&(a=t.slice(n),s[o]?s[o]+=a:s[++o]=a),s.length<2?c[0]?rf(c[0].x):nf(t):(t=c.length,function(e){for(var n=0,r;n<t;++n)s[(r=c[n]).i]=r.x(e);return s.join(``)})}function of(e,t){var n=typeof t,r;return t==null||n===`boolean`?Hd(t):(n===`number`?Qd:n===`string`?(r=Cd(t))?(t=r,qd):af:t instanceof Cd?qd:t instanceof Date?Zd:Yd(t)?Jd:Array.isArray(t)?Xd:typeof t.valueOf!=`function`&&typeof t.toString!=`function`||isNaN(t)?$d:Qd)(e,t)}var sf=180/Math.PI,cf={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function lf(e,t,n,r,i,a){var o,s,c;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(c=e*n+t*r)&&(n-=e*c,r-=t*c),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,c/=s),e*r<t*n&&(e=-e,t=-t,c=-c,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(t,e)*sf,skewX:Math.atan(c)*sf,scaleX:o,scaleY:s}}var uf;function df(e){let t=new(typeof DOMMatrix==`function`?DOMMatrix:WebKitCSSMatrix)(e+``);return t.isIdentity?cf:lf(t.a,t.b,t.c,t.d,t.e,t.f)}function ff(e){return e==null||(uf||=document.createElementNS(`http://www.w3.org/2000/svg`,`g`),uf.setAttribute(`transform`,e),!(e=uf.transform.baseVal.consolidate()))?cf:(e=e.matrix,lf(e.a,e.b,e.c,e.d,e.e,e.f))}function pf(e,t,n,r){function i(e){return e.length?e.pop()+` `:``}function a(e,r,i,a,o,s){if(e!==i||r!==a){var c=o.push(`translate(`,null,t,null,n);s.push({i:c-4,x:Qd(e,i)},{i:c-2,x:Qd(r,a)})}else(i||a)&&o.push(`translate(`+i+t+a+n)}function o(e,t,n,a){e===t?t&&n.push(i(n)+`rotate(`+t+r):(e-t>180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Qd(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Qd(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Qd(e,n)},{i:s-2,x:Qd(t,r)})}else(n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t<n;)r[(a=i[t]).i]=a.x(e);return r.join(``)}}}var mf=pf(df,`px, `,`px)`,`deg)`),hf=pf(ff,`, `,`)`,`)`),gf=1e-12;function _f(e){return((e=Math.exp(e))+1/e)/2}function vf(e){return((e=Math.exp(e))-1/e)/2}function yf(e){return((e=Math.exp(2*e))-1)/(e+1)}var bf=(function e(t,n,r){function i(e,i){var a=e[0],o=e[1],s=e[2],c=i[0],l=i[1],u=i[2],d=c-a,f=l-o,p=d*d+f*f,m,h;if(p<gf)h=Math.log(u/s)/t,m=function(e){return[a+e*d,o+e*f,s*Math.exp(t*e*h)]};else{var g=Math.sqrt(p),_=(u*u-s*s+r*p)/(2*s*n*g),v=(u*u-s*s-r*p)/(2*u*n*g),y=Math.log(Math.sqrt(_*_+1)-_);h=(Math.log(Math.sqrt(v*v+1)-v)-y)/t,m=function(e){var r=e*h,i=_f(y),c=s/(n*g)*(i*yf(t*r+y)-vf(y));return[a+c*d,o+c*f,s*i/_f(t*r+y)]}}return m.duration=h*1e3*t/Math.SQRT2,m}return i.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},i})(Math.SQRT2,2,4),xf=0,Sf=0,Cf=0,wf=1e3,Tf,Ef,Df=0,Of=0,kf=0,Af=typeof performance==`object`&&performance.now?performance:Date,jf=typeof window==`object`&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Mf(){return Of||=(jf(Nf),Af.now()+kf)}function Nf(){Of=0}function Pf(){this._call=this._time=this._next=null}Pf.prototype=Ff.prototype={constructor:Pf,restart:function(e,t,n){if(typeof e!=`function`)throw TypeError(`callback is not a function`);n=(n==null?Mf():+n)+(t==null?0:+t),!this._next&&Ef!==this&&(Ef?Ef._next=this:Tf=this,Ef=this),this._call=e,this._time=n,Bf()},stop:function(){this._call&&(this._call=null,this._time=1/0,Bf())}};function Ff(e,t,n){var r=new Pf;return r.restart(e,t,n),r}function If(){Mf(),++xf;for(var e=Tf,t;e;)(t=Of-e._time)>=0&&e._call.call(void 0,t),e=e._next;--xf}function Lf(){Of=(Df=Af.now())+kf,xf=Sf=0;try{If()}finally{xf=0,zf(),Of=0}}function Rf(){var e=Af.now(),t=e-Df;t>wf&&(kf-=t,Df=e)}function zf(){for(var e,t=Tf,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Tf=n);Ef=e,Bf(r)}function Bf(e){xf||(Sf&&=clearTimeout(Sf),e-Of>24?(e<1/0&&(Sf=setTimeout(Lf,e-Af.now()-kf)),Cf&&=clearInterval(Cf)):(Cf||=(Df=Af.now(),setInterval(Rf,wf)),xf=1,jf(Lf)))}function Vf(e,t,n){var r=new Pf;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Hf=Rc(`start`,`end`,`cancel`,`interrupt`),Uf=[];function Wf(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Jf(e,n,{name:t,index:r,group:i,on:Hf,tween:Uf,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Gf(e,t){var n=qf(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function Kf(e,t){var n=qf(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function qf(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Jf(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Ff(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return Vf(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l<t&&(f.state=6,f.timer.stop(),f.on.call(`cancel`,e,e.__data__,f.index,f.group),delete r[l])}if(Vf(function(){n.state===3&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(a))}),n.state=2,n.on.call(`start`,e,e.__data__,n.index,n.group),n.state===2){for(n.state=3,i=Array(d=n.tween.length),l=0,u=-1;l<d;++l)(f=n.tween[l].value.call(e,e.__data__,n.index,n.group))&&(i[++u]=f);i.length=u+1}}function s(t){for(var r=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(c),n.state=5,1),a=-1,o=i.length;++a<o;)i[a].call(e,r);n.state===5&&(n.on.call(`end`,e,e.__data__,n.index,n.group),c())}function c(){for(var i in n.state=6,n.timer.stop(),delete r[t],r)return;delete e.__transition}}function Yf(e,t){var n=e.__transition,r,i,a=!0,o;if(n){for(o in t=t==null?null:t+``,n)(r=n[o]).name===t?(i=r.state>2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]):a=!1;a&&delete e.__transition}}function Xf(e){return this.each(function(){Yf(this,e)})}function Zf(e,t){var n,r;return function(){var i=Kf(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}i.tween=r}}function Qf(e,t,n){var r,i;if(typeof n!=`function`)throw Error();return function(){var a=Kf(this,e),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:t,value:n},c=0,l=i.length;c<l;++c)if(i[c].name===t){i[c]=s;break}c===l&&i.push(s)}a.tween=i}}function $f(e,t){var n=this._id;if(e+=``,arguments.length<2){for(var r=qf(this.node(),n).tween,i=0,a=r.length,o;i<a;++i)if((o=r[i]).name===e)return o.value;return null}return this.each((t==null?Zf:Qf)(n,e,t))}function ep(e,t,n){var r=e._id;return e.each(function(){var e=Kf(this,r);(e.value||={})[t]=n.apply(this,arguments)}),function(e){return qf(e,r).value[t]}}function tp(e,t){var n;return(typeof t==`number`?Qd:t instanceof Cd?qd:(n=Cd(t))?(t=n,qd):af)(e,t)}function np(e){return function(){this.removeAttribute(e)}}function rp(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ip(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttribute(e);return o===i?null:o===r?a:a=t(r=o,n)}}function ap(e,t,n){var r,i=n+``,a;return function(){var o=this.getAttributeNS(e.space,e.local);return o===i?null:o===r?a:a=t(r=o,n)}}function op(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function sp(e,t,n){var r,i,a;return function(){var o,s=n(this),c;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),c=s+``,o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s)))}}function cp(e,t){var n=Wc(e),r=n===`transform`?hf:tp;return this.attrTween(e,typeof t==`function`?(n.local?sp:op)(n,r,ep(this,`attr.`+e,t)):t==null?(n.local?rp:np)(n):(n.local?ap:ip)(n,r,t))}function lp(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function up(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function dp(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&up(e,i)),n}return i._value=t,i}function fp(e,t){var n,r;function i(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&lp(e,i)),n}return i._value=t,i}function pp(e,t){var n=`attr.`+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!=`function`)throw Error();var r=Wc(e);return this.tween(n,(r.local?dp:fp)(r,t))}function mp(e,t){return function(){Gf(this,e).delay=+t.apply(this,arguments)}}function hp(e,t){return t=+t,function(){Gf(this,e).delay=t}}function gp(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?mp:hp)(t,e)):qf(this.node(),t).delay}function _p(e,t){return function(){Kf(this,e).duration=+t.apply(this,arguments)}}function vp(e,t){return t=+t,function(){Kf(this,e).duration=t}}function yp(e){var t=this._id;return arguments.length?this.each((typeof e==`function`?_p:vp)(t,e)):qf(this.node(),t).duration}function bp(e,t){if(typeof t!=`function`)throw Error();return function(){Kf(this,e).ease=t}}function xp(e){var t=this._id;return arguments.length?this.each(bp(t,e)):qf(this.node(),t).ease}function Sp(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!=`function`)throw Error();Kf(this,e).ease=n}}function Cp(e){if(typeof e!=`function`)throw Error();return this.each(Sp(this._id,e))}function wp(e){typeof e!=`function`&&(e=nl(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i<n;++i)for(var a=t[i],o=a.length,s=r[i]=[],c,l=0;l<o;++l)(c=a[l])&&e.call(c,c.__data__,l,a)&&s.push(c);return new $p(r,this._parents,this._name,this._id)}function Tp(e){if(e._id!==this._id)throw Error();for(var t=this._groups,n=e._groups,r=t.length,i=n.length,a=Math.min(r,i),o=Array(r),s=0;s<a;++s)for(var c=t[s],l=n[s],u=c.length,d=o[s]=Array(u),f,p=0;p<u;++p)(f=c[p]||l[p])&&(d[p]=f);for(;s<r;++s)o[s]=t[s];return new $p(o,this._parents,this._name,this._id)}function Ep(e){return(e+``).trim().split(/^|\s+/).every(function(e){var t=e.indexOf(`.`);return t>=0&&(e=e.slice(0,t)),!e||e===`start`})}function Dp(e,t,n){var r,i,a=Ep(t)?Gf:Kf;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Op(e,t){var n=this._id;return arguments.length<2?qf(this.node(),n).on.on(e):this.each(Dp(n,e,t))}function kp(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Ap(){return this.on(`end.remove`,kp(this._id))}function jp(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=Yc(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o<i;++o)for(var s=r[o],c=s.length,l=a[o]=Array(c),u,d,f=0;f<c;++f)(u=s[f])&&(d=e.call(u,u.__data__,f,s))&&(`__data__`in u&&(d.__data__=u.__data__),l[f]=d,Wf(l[f],t,n,f,l,qf(u,n)));return new $p(a,this._parents,t,n)}function Mp(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=$c(e));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var c=r[s],l=c.length,u,d=0;d<l;++d)if(u=c[d]){for(var f=e.call(u,u.__data__,d,c),p,m=qf(u,n),h=0,g=f.length;h<g;++h)(p=f[h])&&Wf(p,t,n,h,f,m);a.push(f),o.push(u)}return new $p(a,o,t,n)}var Np=zu.prototype.constructor;function Pp(){return new Np(this._groups,this._parents)}function Fp(e,t){var n,r,i;return function(){var a=Kl(this,e),o=(this.style.removeProperty(e),Kl(this,e));return a===o?null:a===n&&o===r?i:i=t(n=a,r=o)}}function Ip(e){return function(){this.style.removeProperty(e)}}function Lp(e,t,n){var r,i=n+``,a;return function(){var o=Kl(this,e);return o===i?null:o===r?a:a=t(r=o,n)}}function Rp(e,t,n){var r,i,a;return function(){var o=Kl(this,e),s=n(this),c=s+``;return s??(c=s=(this.style.removeProperty(e),Kl(this,e))),o===c?null:o===r&&c===i?a:(i=c,a=t(r=o,s))}}function zp(e,t){var n,r,i,a=`style.`+t,o=`end.`+a,s;return function(){var c=Kf(this,e),l=c.on,u=c.value[a]==null?s||=Ip(t):void 0;(l!==n||i!==u)&&(r=(n=l).copy()).on(o,i=u),c.on=r}}function Bp(e,t,n){var r=(e+=``)==`transform`?mf:tp;return t==null?this.styleTween(e,Fp(e,r)).on(`end.style.`+e,Ip(e)):typeof t==`function`?this.styleTween(e,Rp(e,r,ep(this,`style.`+e,t))).each(zp(this._id,e)):this.styleTween(e,Lp(e,r,t),n).on(`end.style.`+e,null)}function Vp(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Hp(e,t,n){var r,i;function a(){var a=t.apply(this,arguments);return a!==i&&(r=(i=a)&&Vp(e,a,n)),r}return a._value=t,a}function Up(e,t,n){var r=`style.`+(e+=``);if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!=`function`)throw Error();return this.tween(r,Hp(e,t,n??``))}function Wp(e){return function(){this.textContent=e}}function Gp(e){return function(){var t=e(this);this.textContent=t??``}}function Kp(e){return this.tween(`text`,typeof e==`function`?Gp(ep(this,`text`,e)):Wp(e==null?``:e+``))}function qp(e){return function(t){this.textContent=e.call(this,t)}}function Jp(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&qp(r)),t}return r._value=e,r}function Yp(e){var t=`text`;if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!=`function`)throw Error();return this.tween(t,Jp(e))}function Xp(){for(var e=this._name,t=this._id,n=em(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)if(c=o[l]){var u=qf(c,t);Wf(c,e,n,l,o,{time:u.time+u.delay+u.duration,delay:0,duration:u.duration,ease:u.ease})}return new $p(r,this._parents,e,n)}function Zp(){var e,t,n=this,r=n._id,i=n.size();return new Promise(function(a,o){var s={value:o},c={value:function(){--i===0&&a()}};n.each(function(){var n=Kf(this,r),i=n.on;i!==e&&(t=(e=i).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(c)),n.on=t}),i===0&&a()})}var Qp=0;function $p(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function em(){return++Qp}var tm=zu.prototype;$p.prototype={constructor:$p,select:jp,selectAll:Mp,selectChild:tm.selectChild,selectChildren:tm.selectChildren,filter:wp,merge:Tp,selection:Pp,transition:Xp,call:tm.call,nodes:tm.nodes,node:tm.node,size:tm.size,empty:tm.empty,each:tm.each,on:Op,attr:cp,attrTween:pp,style:Bp,styleTween:Up,text:Kp,textTween:Yp,remove:Ap,tween:$f,delay:gp,duration:yp,ease:xp,easeVarying:Cp,end:Zp,[Symbol.iterator]:tm[Symbol.iterator]};function nm(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var rm={time:null,delay:0,duration:250,ease:nm};function im(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw Error(`transition ${t} not found`);return n}function am(e){var t,n;e instanceof $p?(t=e._id,e=e._name):(t=em(),(n=rm).time=Mf(),e=e==null?null:e+``);for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o=r[a],s=o.length,c,l=0;l<s;++l)(c=o[l])&&Wf(c,e,t,l,o,n||im(c,t));return new $p(r,this._parents,e,t)}zu.prototype.interrupt=Xf,zu.prototype.transition=am;var om=e=>()=>e;function sm(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function cm(e,t,n){this.k=e,this.x=t,this.y=n}cm.prototype={constructor:cm,scale:function(e){return e===1?this:new cm(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new cm(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return`translate(`+this.x+`,`+this.y+`) scale(`+this.k+`)`}};var lm=new cm(1,0,0);um.prototype=cm.prototype;function um(e){for(;!e.__zoom;)if(!(e=e.parentNode))return lm;return e.__zoom}function dm(e){e.stopImmediatePropagation()}function fm(e){e.preventDefault(),e.stopImmediatePropagation()}function pm(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function mm(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function hm(){return this.__zoom||lm}function gm(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function _m(){return navigator.maxTouchPoints||`ontouchstart`in this}function vm(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function ym(){var e=pm,t=mm,n=vm,r=gm,i=_m,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=bf,l=Rc(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,hm).on(`wheel.zoom`,w,{passive:!1}).on(`mousedown.zoom`,T).on(`dblclick.zoom`,ee).filter(i).on(`touchstart.zoom`,te).on(`touchmove.zoom`,E).on(`touchend.zoom touchcancel.zoom`,ne).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,hm),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(lm.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new cm(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new cm(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new cm(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=Vu(this.that).datum();l.call(e,this.that,new sm(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function w(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=Uu(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],Yf(this),s.start();fm(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function T(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=Vu(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=Uu(t,i),l=t.clientX,u=t.clientY;Ju(t.view),dm(t),a.mouse=[c,this.__zoom.invert(c)],Yf(this),a.start();function d(e){if(fm(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=Uu(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),Yu(e.view,a.moved),fm(e),a.event(e).end()}}function ee(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=Uu(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);fm(r),s>0?Vu(this).transition().duration(s).call(x,d,c,r):Vu(this).call(_.transform,d,c,r)}}function te(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(dm(t),s=0;s<i;++s)c=r[s],l=Uu(c,this),l=[l,this.__zoom.invert(l),c.identifier],a.touch0?!a.touch1&&a.touch0[2]!==l[2]&&(a.touch1=l,a.taps=0):(a.touch0=l,o=!0,a.taps=1+!!u);u&&=clearTimeout(u),o&&(a.taps<2&&(d=l[0],u=setTimeout(function(){u=null},p)),Yf(this),a.start())}}function E(e,...t){if(this.__zooming){var r=S(this,t).event(e),i=e.changedTouches,a=i.length,s,c,l,u;for(fm(e),s=0;s<a;++s)c=i[s],l=Uu(c,this),r.touch0&&r.touch0[2]===c.identifier?r.touch0[0]=l:r.touch1&&r.touch1[2]===c.identifier&&(r.touch1[0]=l);if(c=r.that.__zoom,r.touch1){var d=r.touch0[0],f=r.touch0[1],p=r.touch1[0],m=r.touch1[1],h=(h=p[0]-d[0])*h+(h=p[1]-d[1])*h,g=(g=m[0]-f[0])*g+(g=m[1]-f[1])*g;c=v(c,Math.sqrt(h/g)),l=[(d[0]+p[0])/2,(d[1]+p[1])/2],u=[(f[0]+m[0])/2,(f[1]+m[1])/2]}else if(r.touch0)l=r.touch0[0],u=r.touch0[1];else return;r.zoom(`touch`,n(y(c,l,u),r.extent,o))}}function ne(e,...t){if(this.__zooming){var n=S(this,t).event(e),r=e.changedTouches,i=r.length,a,o;for(dm(e),f&&clearTimeout(f),f=setTimeout(function(){f=null},p),a=0;a<i;++a)o=r[a],n.touch0&&n.touch0[2]===o.identifier?delete n.touch0:n.touch1&&n.touch1[2]===o.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),n.taps===2&&(o=Uu(o,this),Math.hypot(d[0]-o[0],d[1]-o[1])<g)){var s=Vu(this).on(`dblclick.zoom`);s&&s.apply(this,arguments)}}}return _.wheelDelta=function(e){return arguments.length?(r=typeof e==`function`?e:om(+e),_):r},_.filter=function(t){return arguments.length?(e=typeof t==`function`?t:om(!!t),_):e},_.touchable=function(e){return arguments.length?(i=typeof e==`function`?e:om(!!e),_):i},_.extent=function(e){return arguments.length?(t=typeof e==`function`?e:om([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),_):t},_.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],_):[a[0],a[1]]},_.translateExtent=function(e){return arguments.length?(o[0][0]=+e[0][0],o[1][0]=+e[1][0],o[0][1]=+e[0][1],o[1][1]=+e[1][1],_):[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},_.constrain=function(e){return arguments.length?(n=e,_):n},_.duration=function(e){return arguments.length?(s=+e,_):s},_.interpolate=function(e){return arguments.length?(c=e,_):c},_.on=function(){var e=l.on.apply(l,arguments);return e===l?_:e},_.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,_):Math.sqrt(h)},_.tapDistance=function(e){return arguments.length?(g=+e,_):g},_}var bm={error001:(e=`react`)=>`Seems like you have not used ${e===`svelte`?`SvelteFlowProvider`:`ReactFlowProvider`} as an ancestor. Help: https://${e}flow.dev/error#001`,error002:()=>`It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.`,error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>`The parent container needs a width and a height to render the graph.`,error005:()=>`Only child nodes can use a parent extent.`,error006:()=>`Can't create edge. An edge needs a source and a target.`,error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>`useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.`,error015:()=>`It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.`,error016:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},xm=[[-1/0,-1/0],[1/0,1/0]],Sm=[`Enter`,` `,`Escape`],Cm={"node.a11yDescription.default":`Press enter or space to select a node. Press delete to remove it and escape to cancel.`,"node.a11yDescription.keyboardDisabled":`Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.`,"node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":`Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.`,"controls.ariaLabel":`Control Panel`,"controls.zoomIn.ariaLabel":`Zoom In`,"controls.zoomOut.ariaLabel":`Zoom Out`,"controls.fitView.ariaLabel":`Fit View`,"controls.interactive.ariaLabel":`Toggle Interactivity`,"minimap.ariaLabel":`Mini Map`,"handle.ariaLabel":`Handle`},wm;(function(e){e.Strict=`strict`,e.Loose=`loose`})(wm||={});var Tm;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(Tm||={});var Em;(function(e){e.Partial=`partial`,e.Full=`full`})(Em||={});var Dm={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},Om;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(Om||={});var km;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(km||={});var Am;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})(Am||={});var jm={[Am.Left]:Am.Right,[Am.Right]:Am.Left,[Am.Top]:Am.Bottom,[Am.Bottom]:Am.Top},Mm=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,Nm=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),Pm=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),Fm=(e,t=[0,0])=>{let{width:n,height:r}=hh(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},Im=(e,t={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};let n=!1,r=e.reduce((e,r)=>{let i=typeof r==`string`,a=!t.nodeLookup&&!i?r:void 0;return t.nodeLookup&&(a=i?t.nodeLookup.get(r):Pm(r)?r:t.nodeLookup.get(r.id)),a?(n=!0,Ym(e,$m(a,t.nodeOrigin))):e},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return n?Zm(r):{x:0,y:0,width:0,height:0}},Lm=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=Ym(n,$m(e)),r=!0)}),r?Zm(n):{x:0,y:0,width:0,height:0}},Rm=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s=(t.x-n)/i,c=(t.y-r)/i,l=t.width/i,u=t.height/i,d=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??0,f=e.height??t.height??t.initialHeight??0,{x:p,y:m}=t.internals.positionAbsolute,h=th(s,c,l,u,p,m,i,f),g=i*f,_=a&&h>0;(!t.internals.handleBounds||_||h>=g||t.dragging)&&d.push(t)}return d},zm=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function Bm(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{let i;if(t?.includeHiddenNodes){let{width:t,height:n}=hh(e);i=t>0&&n>0}else i=!!(e.measured.width&&e.measured.height&&!e.hidden);i&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function Vm({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=fh(Lm(Bm(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),!0}function Hm({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent){if(!s)a?.(`005`,bm.error005());else{let{width:e,height:t}=hh(s);e&&t&&(d=[[c,l],[c+e,l+t]])}}else s&&mh(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=mh(d)?Gm(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,bm.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function Um({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=zm(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var Wm=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Gm=(e={x:0,y:0},t,n)=>({x:Wm(e.x,t[0][0],t[1][0]-(n?.width??0)),y:Wm(e.y,t[0][1],t[1][1]-(n?.height??0))});function Km(e,t,n){let{width:r,height:i}=hh(n),{x:a,y:o}=n.internals.positionAbsolute;return Gm(e,[[a,o],[a+r,o+i]],t)}var qm=(e,t,n)=>e<t?Wm(Math.abs(e-t),1,t)/t:e>n?-Wm(Math.abs(e-n),1,t)/t:0,Jm=(e,t,n=15,r=40)=>[qm(e.x,r,t.width-r)*n,qm(e.y,r,t.height-r)*n],Ym=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Xm=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),Zm=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Qm=(e,t=[0,0])=>{let{x:n,y:r}=Pm(e)?e.internals.positionAbsolute:Fm(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},$m=(e,t=[0,0])=>{let{x:n,y:r}=Pm(e)?e.internals.positionAbsolute:Fm(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},eh=(e,t)=>Zm(Ym(Xm(e),Xm(t))),th=(e,t,n,r,i,a,o,s)=>{let c=Math.max(0,Math.min(e+n,i+o)-Math.max(e,i)),l=Math.max(0,Math.min(t+r,a+s)-Math.max(t,a));return Math.ceil(c*l)},nh=(e,t)=>th(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),rh=e=>ih(e.width)&&ih(e.height)&&ih(e.x)&&ih(e.y),ih=e=>!isNaN(e)&&isFinite(e),ah=(e,t)=>(e,t)=>{},oh=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),sh=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?oh(s,o):s},ch=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function lh(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function uh(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=lh(e,n),i=lh(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=lh(e.top??e.y??0,n),i=lh(e.bottom??e.y??0,n),a=lh(e.left??e.x??0,t),o=lh(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function dh(e,t,n,r,i,a){let{x:o,y:s}=ch(e,[t,n,r]),{x:c,y:l}=ch({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var fh=(e,t,n,r,i,a)=>{let o=uh(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=Wm(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=dh(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},ph=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function mh(e){return e!=null&&e!==`parent`}function hh(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function gh(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function _h(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function vh(e){return{...Cm,...e||{}}}function yh(e,t){if(!e&&!t)return!0;if(!e||!t||e.size!==t.size)return!1;if(!e.size&&!t.size)return!0;for(let n of e.keys())if(!t.has(n))return!1;return!0}function bh(e,t,n){if(!n)return;let r=[];e.forEach((e,n)=>{t?.has(n)||r.push(e)}),r.length&&n(r)}function xh(e){return e===null?null:e?`valid`:`invalid`}function Sh(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=Oh(e),s=sh({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?oh(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var Ch=e=>({width:e.offsetWidth,height:e.offsetHeight}),wh=e=>e?.getRootNode?.()||window?.document,Th=[`INPUT`,`SELECT`,`TEXTAREA`];function Eh(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?Th.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var Dh=e=>`clientX`in e,Oh=(e,t)=>{let n=Dh(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},kh=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...Ch(t)}})};function Ah({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function jh(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Mh({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case Am.Left:return[t-jh(t-r,a),n];case Am.Right:return[t+jh(r-t,a),n];case Am.Top:return[t,n-jh(n-i,a)];case Am.Bottom:return[t,n+jh(i-n,a)]}}function Nh({sourceX:e,sourceY:t,sourcePosition:n=Am.Bottom,targetX:r,targetY:i,targetPosition:a=Am.Top,curvature:o=.25}){let[s,c]=Mh({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=Mh({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=Ah({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function Ph({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n<e?n+i:n-i,o=Math.abs(r-t)/2;return[a,r<t?r+o:r-o,i,o]}function Fh({sourceNode:e,targetNode:t,selected:n=!1,zIndex:r=0,elevateOnSelect:i=!1,zIndexMode:a=`basic`}){return a===`manual`?r:(i&&n?r+1e3:r)+Math.max(e.parentId||i&&e.selected?e.internals.z:0,t.parentId||i&&t.selected?t.internals.z:0)}function Ih({sourceNode:e,targetNode:t,width:n,height:r,transform:i}){let a=Ym($m(e),$m(t));return a.x===a.x2&&(a.x2+=1),a.y===a.y2&&(a.y2+=1),nh({x:-i[0]/i[2],y:-i[1]/i[2],width:n/i[2],height:r/i[2]},Zm(a))>0}var Lh=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,Rh=(e,t)=>t.some(t=>t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)),zh=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,bm.error006()),t;let r=n.getEdgeId||Lh,i;return i=Mm(e)?{...e}:{...e,id:r(e)},Rh(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function Bh({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=Ph({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var Vh={[Am.Left]:{x:-1,y:0},[Am.Right]:{x:1,y:0},[Am.Top]:{x:0,y:-1},[Am.Bottom]:{x:0,y:1}},Hh=({source:e,sourcePosition:t=Am.Bottom,target:n})=>t===Am.Left||t===Am.Right?e.x<n.x?{x:1,y:0}:{x:-1,y:0}:e.y<n.y?{x:0,y:1}:{x:0,y:-1},Uh=(e,t)=>Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function Wh({source:e,sourcePosition:t=Am.Bottom,target:n,targetPosition:r=Am.Top,center:i,offset:a,stepPosition:o}){let s=Vh[t],c=Vh[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=Hh({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=Ph({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]<u[e];(s[f]===1&&(!t&&n||t&&r)||s[f]!==1&&(!t&&r||t&&n))&&(m=f===`x`?i:o)}let d={x:l.x+_.x,y:l.y+_.y},y={x:u.x+v.x,y:u.y+v.y};Math.max(Math.abs(d.x-m[0].x),Math.abs(y.x-m[0].x))>=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function Gh(e,t,n,r){let i=Math.min(Uh(e,t)/2,Uh(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.x<n.x?-1:1,r=e.y<n.y?1:-1;return`L ${a+i*t},${o}Q ${a},${o} ${a},${o+i*r}`}let s=e.x<n.x?1:-1;return`L ${a},${o+i*(e.y<n.y?-1:1)}Q ${a},${o} ${a+i*s},${o}`}function Kh({sourceX:e,sourceY:t,sourcePosition:n=Am.Bottom,targetX:r,targetY:i,targetPosition:a=Am.Top,borderRadius:o=5,centerX:s,centerY:c,offset:l=20,stepPosition:u=.5}){let[d,f,p,m,h]=Wh({source:{x:e,y:t},sourcePosition:n,target:{x:r,y:i},targetPosition:a,center:{x:s,y:c},offset:l,stepPosition:u}),g=`M${d[0].x} ${d[0].y}`;for(let e=1;e<d.length-1;e++)g+=Gh(d[e-1],d[e],d[e+1],o);return g+=`L${d[d.length-1].x} ${d[d.length-1].y}`,[g,f,p,m,h]}function qh(e){return e&&!!(e.internals.handleBounds||e.handles?.length)&&!!(e.measured.width||e.width||e.initialWidth)}function Jh(e){let{sourceNode:t,targetNode:n}=e;if(!qh(t)||!qh(n))return null;let r=t.internals.handleBounds||Yh(t.handles),i=n.internals.handleBounds||Yh(n.handles),a=Zh(r?.source??[],e.sourceHandle),o=Zh(e.connectionMode===wm.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),e.targetHandle);if(!a||!o)return e.onError?.(`008`,bm.error008(a?`target`:`source`,{id:e.id,sourceHandle:e.sourceHandle,targetHandle:e.targetHandle})),null;let s=a?.position||Am.Bottom,c=o?.position||Am.Top,l=Xh(t,a,s),u=Xh(n,o,c);return{sourceX:l.x,sourceY:l.y,targetX:u.x,targetY:u.y,sourcePosition:s,targetPosition:c}}function Yh(e){if(!e)return null;let t=[],n=[];for(let r of e)r.width=r.width??1,r.height=r.height??1,r.type===`source`?t.push(r):r.type===`target`&&n.push(r);return{source:t,target:n}}function Xh(e,t,n=Am.Left,r=!1){let i=(t?.x??0)+e.internals.positionAbsolute.x,a=(t?.y??0)+e.internals.positionAbsolute.y,{width:o,height:s}=t??hh(e);if(r)return{x:i+o/2,y:a+s/2};switch(t?.position??n){case Am.Top:return{x:i+o/2,y:a};case Am.Right:return{x:i+o,y:a+s/2};case Am.Bottom:return{x:i+o/2,y:a+s};case Am.Left:return{x:i,y:a+s/2}}}function Zh(e,t){return e&&(t?e.find(e=>e.id===t):e[0])||null}function Qh(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function $h(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=Qh(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}function eg(e,t,n,r,i){let a=.5;i===`start`?a=0:i===`end`&&(a=1);let o=[(e.x+e.width*a)*t.zoom+t.x,e.y*t.zoom+t.y-r],s=[-100*a,-100];switch(n){case Am.Right:o=[(e.x+e.width)*t.zoom+t.x+r,(e.y+e.height*a)*t.zoom+t.y],s=[0,-100*a];break;case Am.Bottom:o[1]=(e.y+e.height)*t.zoom+t.y+r,s[1]=0;break;case Am.Left:o=[e.x*t.zoom+t.x-r,(e.y+e.height*a)*t.zoom+t.y],s=[-100,-100*a]}return`translate(${o[0]}px, ${o[1]}px) translate(${s[0]}%, ${s[1]}%)`}var tg=1e3,ng=10,rg={nodeOrigin:[0,0],nodeExtent:xm,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},ig={...rg,checkEquality:!0};function ag(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function og(e,t,n){let r=ag(rg,n);for(let n of e.values())if(n.parentId)dg(n,e,t,r);else{let e=Gm(Fm(n,r.nodeOrigin),mh(n.extent)?n.extent:r.nodeExtent,hh(n));n.internals.positionAbsolute=e}}function sg(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={id:t.id,width:t.width??1,height:t.height??1,nodeId:e.id,x:t.x,y:t.y,position:t.position,type:t.type};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function cg(e){return e===`manual`}function lg(e,t,n,r={}){let i=ag(ig,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!cg(i.zIndexMode)?tg:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=Gm(Fm(u,i.nodeOrigin),mh(u.extent)?u.extent:i.nodeExtent,hh(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:sg(u,e),z:fg(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&dg(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function ug(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function dg(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=ag(rg,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}ug(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*ng),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=pg(e,u,o,s,a&&!cg(c)?tg:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function fg(e,t,n){let r=ih(e.zIndex)?e.zIndex:0;return cg(n)?r:r+(e.selected?t:0)}function pg(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=hh(e),l=Fm(e,n),u=mh(e.extent)?Gm(l,e.extent,c):l,d=Gm({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=Km(d,c,t));let f=fg(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function mg(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=eh(a.get(n.parentId)?.expandedRect??Qm(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=hh(a),l=a.origin??r,u=t.x<s.x?Math.round(Math.abs(s.x-t.x)):0,d=t.y<s.y?Math.round(Math.abs(s.y-t.y)):0,f=Math.max(c.width,Math.round(t.width)),p=Math.max(c.height,Math.round(t.height)),m=(f-c.width)*l[0],h=(p-c.height)*l[1];(u>0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width<t.width||c.height<t.height||u||d)&&i.push({id:o,type:`dimensions`,setAttributes:!0,dimensions:{width:f+(u?l[0]*u-m:0),height:p+(d?l[1]*d-h:0)}})}),i}function hg(e,t,n,r,i,a,o){let s=r?.querySelector(`.xyflow__viewport`),c=!1;if(!s)return{changes:[],updatedInternals:c};let l=[],u=window.getComputedStyle(s),{m22:d}=new window.DOMMatrixReadOnly(u.transform),f=[];for(let r of e.values()){let e=t.get(r.id);if(!e)continue;if(e.hidden){t.set(e.id,{...e,internals:{...e.internals,handleBounds:void 0}}),c=!0;continue}let s=Ch(r.nodeElement),u=e.measured.width!==s.width||e.measured.height!==s.height;if(s.width&&s.height&&(u||!e.internals.handleBounds||r.force)){let p=r.nodeElement.getBoundingClientRect(),m=mh(e.extent)?e.extent:a,{positionAbsolute:h}=e.internals;if(e.parentId&&e.extent===`parent`){let n=t.get(e.parentId);n&&(h=Km(h,s,n))}else m&&(h=Gm(h,m,s));let g={...e,measured:s,internals:{...e.internals,positionAbsolute:h,handleBounds:{source:kh(`source`,r.nodeElement,p,d,e.id),target:kh(`target`,r.nodeElement,p,d,e.id)}}};t.set(e.id,g),e.parentId&&dg(g,t,n,{nodeOrigin:i,zIndexMode:o}),c=!0,u&&(l.push({id:e.id,type:`dimensions`,dimensions:s}),e.expandParent&&e.parentId&&f.push({id:e.id,parentId:e.parentId,rect:Qm(g,i)}))}}if(f.length>0){let e=mg(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function gg({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return!1;let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r);return!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2])}function _g(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function vg(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;_g(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),_g(`target`,s,c,e,i,o),t.set(r.id,r)}}function yg(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:yg(n,t):!1}function bg(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function xg(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!yg(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,position:t.position||{x:0,y:0},distance:{x:n.x-t.internals.positionAbsolute.x,y:n.y-t.internals.positionAbsolute.y},extent:t.extent,parentId:t.parentId,origin:t.origin,expandParent:t.expandParent,internals:{positionAbsolute:t.internals.positionAbsolute||{x:0,y:0}},measured:{width:t.measured.width??0,height:t.measured.height??0}})}return i}function Sg({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function Cg({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=oh(a,t);return{x:o.x-a.x,y:o.y-a.y}}function wg({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=Vu(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?Xm(Lm(s)):null,x=v&&l?Cg({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:oh(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=Hm({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=Sg({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=Jm(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=Sh(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=xg(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=Sg({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=nd().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=Sh(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=Oh(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=Sh(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=Oh(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=Oh(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!d||p)p&&s.size>0&&t().updateNodePositions(s,!1);else if(c=!1,d=!1,cancelAnimationFrame(o),s.size>0){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=Sg({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!bg(t,`.${g}`,v))&&(!_||bg(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function Tg(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())nh(i,Qm(e))>0&&r.push(e);return r}var Eg=250;function Dg(e,t,n,r){let i=[],a=1/0,o=Tg(e,n,t+Eg);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=Xh(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l<a?(i=[{...s,x:o,y:c}],a=l):l===a&&i.push({...s,x:o,y:c}))}}if(!i.length)return null;if(i.length>1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function Og(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,...Xh(o,c,c.position,!0)}:c}function kg(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function Ag(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var jg=()=>!0;function Mg(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=jg,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=wh(e.target),ee=0,te,{x:E,y:ne}=Oh(e),re=kg(a,w),ie=s?.getBoundingClientRect(),ae=!1;if(!ie||!re)return;let oe=Og(i,re,r,c,t);if(!oe)return;let se=Oh(e,ie),ce=!1,le=null,ue=!1,de=null;function fe(){if(!u||!ie)return;let[e,t]=Jm(se,ie,S);f({x:e,y:t}),ee=requestAnimationFrame(fe)}let pe={...oe,nodeId:i,type:re,position:oe.position},me=c.get(i),he={inProgress:!0,isValid:null,from:Xh(me,pe,Am.Left,!0),fromHandle:pe,fromPosition:pe.position,fromNode:me,to:se,toHandle:null,toPosition:jm[pe.position],toNode:null,pointer:se};function ge(){ae=!0,y(he),m?.(e,{nodeId:i,handleId:r,handleType:re})}C===0&&ge();function _e(e){if(!ae){let{x:t,y:n}=Oh(e),r=t-E,i=n-ne;if(!(r*r+i*i>C*C))return;ge()}if(!x()||!pe){ve(e);return}let a=b();se=Oh(e,ie),te=Dg(sh(se,a,!1,[1,1]),n,c,pe),ce||=(fe(),!0);let s=Ng(e,{handle:te,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});de=s.handleDomNode,le=s.connection,ue=Ag(!!te,s.isValid);let u=c.get(i),f=u?Xh(u,pe,Am.Left,!0):he.from,p={...he,from:f,isValid:ue,to:s.toHandle&&ue?ch({x:s.toHandle.x,y:s.toHandle.y},a):se,toHandle:s.toHandle,toPosition:ue&&s.toHandle?s.toHandle.position:jm[pe.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:se};y(p),he=p}function ve(e){if(!(`touches`in e&&e.touches.length>0)){if(ae){(te||de)&&le&&ue&&h?.(le);let{inProgress:t,...n}=he,r={...n,toPosition:he.toHandle?he.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(ee),ce=!1,ue=!1,le=null,de=null,T.removeEventListener(`mousemove`,_e),T.removeEventListener(`mouseup`,ve),T.removeEventListener(`touchmove`,_e),T.removeEventListener(`touchend`,ve)}}T.addEventListener(`mousemove`,_e),T.addEventListener(`mouseup`,ve),T.addEventListener(`touchmove`,_e),T.addEventListener(`touchend`,ve)}function Ng(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=jg,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=Oh(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=kg(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===wm.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=Og(t,e,a,u,n,!0)}return _}var Pg={onPointerDown:Mg,isValid:Ng};function Fg({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=Vu(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&ph()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=ym().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:Uu}}var Ig=e=>({x:e.x,y:e.y,zoom:e.k}),Lg=({x:e,y:t,zoom:n})=>lm.translate(e,t).scale(n),Rg=(e,t)=>e.target.closest(`.${t}`),zg=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Bg=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,Vg=(e,t=0,n=Bg,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},Hg=e=>{let t=e.ctrlKey&&ph()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Ug({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(Rg(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=Uu(u),t=d*2**Hg(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===Tm.Vertical?0:u.deltaX*f,m=i===Tm.Horizontal?0:u.deltaY*f;!ph()&&u.shiftKey&&i!==Tm.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=Ig(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?c?.(u,h):(e.isPanScrolling=!0,s?.(u,h)),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)}}function Wg({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=Rg(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function Gg({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=Ig(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function Kg({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&zg(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,Ig(a.transform))}}function qg({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&zg(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=Ig(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function Jg({panActivationKeyPressed:e,zoomActivationKeyPressed:t,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:i,panOnScroll:a,zoomOnDoubleClick:o,userSelectionActive:s,noWheelClassName:c,noPanClassName:l,lib:u,connectionInProgress:d}){return f=>{let p=t||n,m=r&&f.ctrlKey,h=f.type===`wheel`;if(f.button===1&&f.type===`mousedown`&&(Rg(f,`${u}-flow__node`)||Rg(f,`${u}-flow__edge`)||Rg(f,`${u}-flow__selection`)||Rg(f,`${u}-flow__nodesselection`)))return!0;if(!i&&!p&&!a&&!o&&!r||s||d&&!h||Rg(f,c)&&h||Rg(f,l)&&(!h||a&&h&&!t)||!r&&f.ctrlKey&&h)return!1;if(!r&&f.type===`touchstart`&&f.touches?.length>1)return f.preventDefault(),!1;if(!p&&!a&&!m&&h||!i&&(f.type===`mousedown`||f.type===`touchstart`)||Array.isArray(i)&&!i.includes(f.button)&&f.type===`mousedown`)return!1;let g=Array.isArray(i)&&i.includes(f.button)||!f.button||f.button<=1;return(!f.ctrlKey||h||e)&&g}}function Yg({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=[[0,0],[u.width,u.height]];(typeof ResizeObserver<`u`?new ResizeObserver(e=>{let t=e[0];t&&(d=[[0,0],[t.contentRect.width,t.contentRect.height]])}):null)?.observe(e);let f=ym().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=Vu(e).call(f);y({x:i.x,y:i.y,zoom:Wm(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(Hg);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?of:bf).transform(Vg(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function _({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:d,panOnScrollSpeed:g,preventScrolling:_,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,panActivationKeyPressed:S=!1,zoomActivationKeyPressed:C,lib:w,onTransformChange:T,connectionInProgress:ee,paneClickDistance:te,selectionOnDrag:E}){r&&!l.isZoomingOrPanning&&v();let ne=i&&!C&&!r;f.clickDistance(E?1/0:!ih(te)||te<0?0:te);let re=ne?Ug({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):Wg({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,re,{passive:!1});let ie=Gg({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,ie);let ae=Kg({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:T});f.on(`zoom`,ae);let oe=qg({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,oe);let se=Jg({panActivationKeyPressed:S,zoomActivationKeyPressed:C,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:w,connectionInProgress:ee});f.filter(se),x?p.on(`dblclick.zoom`,h):p.on(`dblclick.zoom`,null)}function v(){f.on(`zoom`,null)}async function y(e,t,n){let r=Lg(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=Lg(e);return await g(n,t),n}function x(e){if(p){let t=Lg(e),n=p.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&f?.transform(p,t,null,{sync:!0})}}function S(){let e=p?um(p.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}async function C(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?of:bf).scaleTo(Vg(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?of:bf).scaleBy(Vg(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function T(e){f?.scaleExtent(e)}function ee(e){f?.translateExtent(e)}function te(e){let t=!ih(e)||e<0?0:e;f?.clickDistance(t)}return{update:_,destroy:v,setViewport:b,setViewportConstrained:y,getViewport:S,scaleTo:C,scaleBy:w,setScaleExtent:T,setTranslateExtent:ee,syncViewport:x,setClickDistance:te}}var Xg;(function(e){e.Line=`line`,e.Handle=`handle`})(Xg||={});var Zg=ah(`Svelte Flow`,`https://svelteflow.dev/`);function Qg(e,t,n={}){return zh(e,t,{...n,onError:n.onError??Zg})}function $g(){let e={};return[t=>{if(t&&!st(e))throw Error(t);return at(e)},t=>ot(e,t)]}var[e_,t_]=$g(),[n_,r_]=$g(),[i_,a_]=$g(),o_=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`type`,`position`,`style`,`class`,`isConnectable`,`isConnectableStart`,`isConnectableEnd`,`isValidConnection`,`onconnect`,`ondisconnect`,`children`]),s_=V(`<div><!></div>`);function c_(e,t){O(t,!0);let n=Y(t,`id`,3,null),r=Y(t,`type`,3,`source`),i=Y(t,`position`,19,()=>Am.Top),a=Y(t,`isConnectableStart`,3,!0),o=Y(t,`isConnectableEnd`,3,!0),s=J(t,o_),c=e_(`Handle must be used within a Custom Node component`),l=n_(`Handle must be used within a Custom Node component`),u=A(()=>r()===`target`),d=A(()=>t.isConnectable===void 0?l.value:t.isConnectable),p=Z_(),m=A(()=>p.ariaLabelConfig),h=null;zn(()=>{if(t.onconnect||t.ondisconnect){p.edges;let e=p.connectionLookup.get(`${c}-${r()}${n()?`-${n()}`:``}`);if(h&&!yh(e,h)){let n=e??new Map;bh(h,n,t.ondisconnect),bh(n,h,t.onconnect)}h=new Map(e)}});let g=A(()=>{if(!p.connection.inProgress)return[!1,!1,!1,!1,null];let{fromHandle:e,toHandle:t,isValid:i}=p.connection,a=e&&e.nodeId===c&&e.type===r()&&e.id===n(),o=t&&t.nodeId===c&&t.type===r()&&t.id===n();return[!0,a,o,p.connectionMode===wm.Strict?e?.type!==r():c!==e?.nodeId||n()!==e?.id,o&&i]}),_=A(()=>v(R(g),5)),y=A(()=>R(_)[0]),b=A(()=>R(_)[1]),x=A(()=>R(_)[2]),S=A(()=>R(_)[3]),C=A(()=>R(_)[4]);function w(e){let t=p.onbeforeconnect?p.onbeforeconnect(e):e;t&&(p.addEdge(t),p.onconnect?.(e))}function T(e){let r=Dh(e);e.currentTarget&&(r&&e.button===0||!r)&&Pg.onPointerDown(e,{handleId:n(),nodeId:c,isTarget:R(u),connectionRadius:p.connectionRadius,domNode:p.domNode,nodeLookup:p.nodeLookup,connectionMode:p.connectionMode,lib:`svelte`,autoPanOnConnect:p.autoPanOnConnect,autoPanSpeed:p.autoPanSpeed,flowId:p.flowId,isValidConnection:t.isValidConnection||((...e)=>p.isValidConnection?.(...e)??!0),updateConnection:p.updateConnection,cancelConnection:p.cancelConnection,panBy:p.panBy,onConnect:w,onConnectStart:p.onconnectstart,onConnectEnd:(...e)=>p.onconnectend?.(...e),getTransform:()=>[p.viewport.x,p.viewport.y,p.viewport.zoom],getFromHandle:()=>p.connection.fromHandle,dragThreshold:p.connectionDragThreshold,handleDomNode:e.currentTarget})}function ee(e){if(!c||!p.clickConnectStartHandle&&!a())return;if(!p.clickConnectStartHandle){p.onclickconnectstart?.(e,{nodeId:c,handleId:n(),handleType:r()}),p.clickConnectStartHandle={nodeId:c,type:r(),id:n()};return}let i=wh(e.target),o=t.isValidConnection??p.isValidConnection,{connectionMode:s,clickConnectStartHandle:l,flowId:u,nodeLookup:d}=p,{connection:f,isValid:m}=Pg.isValid(e,{handle:{nodeId:c,id:n(),type:r()},connectionMode:s,fromNodeId:l.nodeId,fromHandleId:l.id??null,fromType:l.type,isValidConnection:o,flowId:u,doc:i,lib:`svelte`,nodeLookup:d});m&&f&&w(f);let h=structuredClone($e(p.connection));delete h.inProgress,h.toPosition=h.toHandle?h.toHandle.position:null,p.onclickconnectend?.(e,h),p.clickConnectStartHandle=null}var te=s_(),E=()=>{};va(te,()=>({"data-handleid":n(),"data-nodeid":c,"data-handlepos":i(),"data-id":`${p.flowId??``}-${c??``}-${n()??`null`??``}-${r()??``}`,class:[`svelte-flow__handle`,`svelte-flow__handle-${i()}`,p.noDragClass,p.noPanClass,i(),t.class],onmousedown:T,ontouchstart:T,onclick:p.clickConnect?ee:void 0,onkeypress:E,style:t.style,role:`button`,"aria-label":R(m)[`handle.ariaLabel`],tabindex:`-1`,...s,[aa]:{valid:R(C),connectingto:R(x),connectingfrom:R(b),source:!R(u),target:R(u),connectablestart:a(),connectableend:o(),connectable:R(d),connectionindicator:R(d)&&(!R(y)||R(S))&&(R(y)||p.clickConnectStartHandle?o():a())}})),Ii(N(te),()=>t.children??f),D(te),H(e,te),k()}var l_=V(`<!> <!>`,1);function u_(e,t){O(t,!0);let n=Y(t,`targetPosition`,19,()=>Am.Top),r=Y(t,`sourcePosition`,19,()=>Am.Bottom);var i=l_(),a=P(i);c_(a,{type:`target`,get position(){return n()}});var o=I(a);c_(I(o),{type:`source`,get position(){return r()}}),L(()=>U(o,` ${t.data?.label??``} `)),H(e,i),k()}var d_=V(` <!>`,1);function f_(e,t){O(t,!0);let n=Y(t,`data`,19,()=>({label:`Node`})),r=Y(t,`sourcePosition`,19,()=>Am.Bottom);Me();var i=d_(),a=P(i);c_(I(a),{type:`source`,get position(){return r()}}),L(()=>U(a,`${n()?.label??``} `)),H(e,i),k()}var p_=V(` <!>`,1);function m_(e,t){O(t,!0);let n=Y(t,`data`,19,()=>({label:`Node`})),r=Y(t,`targetPosition`,19,()=>Am.Top);Me();var i=p_(),a=P(i);c_(I(a),{type:`target`,get position(){return r()}}),L(()=>U(a,`${n()?.label??``} `)),H(e,i),k()}function h_(e,t){}function g_(e,t,n){if(!n||!t)return;let r=n===`root`?t:t.querySelector(`.svelte-flow__${n}`);r&&r.appendChild(e)}function __(e,t){let n=A(Z_),r=A(()=>R(n).domNode),i;return R(r)?g_(e,R(r),t):i=Bn(()=>{Ln(()=>{g_(e,R(r),t),i?.()})}),{async update(t){g_(e,R(r),t)},destroy(){e.parentNode&&e.parentNode.removeChild(e),i?.()}}}function v_(){let e=j(typeof window>`u`);if(R(e)){let t=Bn(()=>{Ln(()=>{M(e,!1),t?.()})})}return{get value(){return R(e)}}}var y_=e=>Nm(e),b_=e=>Mm(e);function x_(e){return e===void 0?void 0:`${e}px`}var S_={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},C_=new Set([`$$slots`,`$$events`,`$$legacy`,`x`,`y`,`width`,`height`,`selectEdgeOnClick`,`transparent`,`class`,`children`]),w_=V(`<div><!></div>`);function T_(e,t){O(t,!0);let n=Y(t,`x`,3,0),r=Y(t,`y`,3,0),i=Y(t,`selectEdgeOnClick`,3,!1),a=Y(t,`transparent`,3,!1),o=J(t,C_),s=Z_(),c=i_(`EdgeLabel must be used within a Custom Edge component`),l=A(()=>s.visible.edges.get(c)?.zIndex);var u=w_(),d=()=>{i()&&c&&s.handleEdgeSelection(c)};va(u,(e,s,c)=>({class:[`svelte-flow__edge-label`,{transparent:a()},t.class],tabindex:`-1`,onclick:d,...o,[oa]:{display:e,cursor:i()?`pointer`:void 0,transform:`translate(-50%, -50%) translate(${n()??``}px,${r()??``}px)`,"pointer-events":`all`,width:s,height:c,"z-index":R(l)}}),[()=>v_().value?`none`:void 0,()=>x_(t.width),()=>x_(t.height)],void 0,void 0,`svelte-1wg91mu`),Ii(N(u),()=>t.children??f),D(u),zi(u,(e,t)=>__?.(e,t),()=>`edge-labels`),H(e,u),k()}var E_=new Set([`$$slots`,`$$events`,`$$legacy`,`id`,`path`,`label`,`labelX`,`labelY`,`labelStyle`,`markerStart`,`markerEnd`,`style`,`interactionWidth`,`class`]),D_=si(`<path></path>`),O_=si(`<path fill="none"></path><!><!>`,1);function k_(e,t){let n=Y(t,`interactionWidth`,3,20),r=J(t,E_);var i=O_(),a=P(i),o=I(a),s=e=>{var i=D_();va(i,()=>({d:t.path,"stroke-opacity":0,"stroke-width":n(),fill:`none`,class:`svelte-flow__edge-interaction`,...r})),H(e,i)};W(o,e=>{n()>0&&e(s)});var c=I(o),l=e=>{T_(e,{get x(){return t.labelX},get y(){return t.labelY},get style(){return t.labelStyle},selectEdgeOnClick:!0,children:(e,n)=>{Me();var r=ci();L(()=>U(r,t.label)),H(e,r)},$$slots:{default:!0}})};W(c,e=>{t.label&&e(l)}),L(()=>{q(a,`id`,t.id),q(a,`d`,t.path),K(a,0,Ui([`svelte-flow__edge-path`,t.class])),q(a,`marker-start`,t.markerStart),q(a,`marker-end`,t.markerEnd),Xi(a,t.style)}),H(e,i)}function A_(e,t){O(t,!0);let n=A(()=>Nh({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY,sourcePosition:t.sourcePosition,targetPosition:t.targetPosition,curvature:t.pathOptions?.curvature})),r=A(()=>v(R(n),3)),i=A(()=>R(r)[0]),a=A(()=>R(r)[1]),o=A(()=>R(r)[2]);k_(e,{get id(){return t.id},get path(){return R(i)},get labelX(){return R(a)},get labelY(){return R(o)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),k()}function j_(e,t){O(t,!0);let n=A(()=>Kh({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY,sourcePosition:t.sourcePosition,targetPosition:t.targetPosition})),r=A(()=>v(R(n),3)),i=A(()=>R(r)[0]),a=A(()=>R(r)[1]),o=A(()=>R(r)[2]);k_(e,{get path(){return R(i)},get labelX(){return R(a)},get labelY(){return R(o)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),k()}function M_(e,t){O(t,!0);let n=A(()=>Bh({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY})),r=A(()=>v(R(n),3)),i=A(()=>R(r)[0]),a=A(()=>R(r)[1]),o=A(()=>R(r)[2]);k_(e,{get path(){return R(i)},get labelX(){return R(a)},get labelY(){return R(o)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),k()}function N_(e,t){O(t,!0);let n=A(()=>Kh({sourceX:t.sourceX,sourceY:t.sourceY,targetX:t.targetX,targetY:t.targetY,sourcePosition:t.sourcePosition,targetPosition:t.targetPosition,borderRadius:0})),r=A(()=>v(R(n),3)),i=A(()=>R(r)[0]),a=A(()=>R(r)[1]),o=A(()=>R(r)[2]);k_(e,{get path(){return R(i)},get labelX(){return R(a)},get labelY(){return R(o)},get label(){return t.label},get labelStyle(){return t.labelStyle},get markerStart(){return t.markerStart},get markerEnd(){return t.markerEnd},get interactionWidth(){return t.interactionWidth},get style(){return t.style}}),k()}var P_=[`forEach`,`isDisjointFrom`,`isSubsetOf`,`isSupersetOf`],F_=[`difference`,`intersection`,`symmetricDifference`,`union`],I_=!1,L_=class e extends Set{#e=new Map;#t=j(0);#n=j(0);#r=xr||-1;constructor(e){if(super(),e){for(var t of e)super.add(t);this.#n.v=super.size}I_||this.#a()}#i(e){return xr===this.#r?j(e):on(e)}#a(){I_=!0;var t=e.prototype,n=Set.prototype;for(let e of P_)t[e]=function(...t){return R(this.#t),n[e].apply(this,t)};for(let r of F_)t[r]=function(...t){R(this.#t);var i=n[r].apply(this,t);return new e(i)}}has(e){var t=super.has(e),n=this.#e,r=n.get(e);if(r===void 0){if(!t)return R(this.#t),!1;r=this.#i(!0),n.set(e,r)}return R(r),t}add(e){return super.has(e)||(super.add(e),M(this.#n,super.size),fn(this.#t)),this}delete(e){var t=super.delete(e),n=this.#e,r=n.get(e);return r!==void 0&&(n.delete(e),M(r,!1)),t&&(M(this.#n,super.size),fn(this.#t)),t}clear(){if(super.size!==0){super.clear();var e=this.#e;for(var t of e.values())M(t,!1);e.clear(),M(this.#n,0),fn(this.#t)}}keys(){return this.values()}values(){return R(this.#t),super.values()}entries(){return R(this.#t),super.entries()}[Symbol.iterator](){return this.keys()}get size(){return R(this.#n)}},R_=class extends Map{#e=new Map;#t=j(0);#n=j(0);#r=xr||-1;constructor(e){if(super(),e){for(var[t,n]of e)super.set(t,n);this.#n.v=super.size}}#i(e){return xr===this.#r?j(e):on(e)}has(e){var t=this.#e,n=t.get(e);if(n===void 0){if(super.has(e))n=this.#i(0),t.set(e,n);else return R(this.#t),!1}return R(n),!0}forEach(e,t){this.#a(),super.forEach(e,t)}get(e){var t=this.#e,n=t.get(e);if(n===void 0){if(super.has(e))n=this.#i(0),t.set(e,n);else{R(this.#t);return}}return R(n),super.get(e)}getOrInsert(e,t){return super.has(e)||this.set(e,t),this.get(e)}getOrInsertComputed(e,t){return super.has(e)||this.set(e,t(e)),this.get(e)}set(e,t){var n=this.#e,r=n.get(e),i=super.get(e),a=super.set(e,t),o=this.#t;if(r===void 0)r=this.#i(0),n.set(e,r),M(this.#n,super.size),fn(o);else if(i!==t){fn(r);var s=o.reactions===null?null:new Set(o.reactions);(s===null||!r.reactions?.every(e=>s.has(e)))&&fn(o)}return a}delete(e){var t=this.#e,n=t.get(e),r=super.delete(e);return n!==void 0&&(t.delete(e),M(n,-1)),r&&(M(this.#n,super.size),fn(this.#t)),r}clear(){if(super.size!==0){super.clear();var e=this.#e;M(this.#n,0);for(var t of e.values())M(t,-1);fn(this.#t),e.clear()}}#a(){R(this.#t);var e=this.#e;if(this.#n.v!==e.size){for(var t of super.keys())if(!e.has(t)){var n=this.#i(0);e.set(t,n)}}for([,n]of this.#e)R(n)}keys(){return R(this.#t),super.keys()}values(){return this.#a(),super.values()}entries(){return this.#a(),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return R(this.#n),super.size}},z_=class{#e;#t;constructor(e,t){this.#e=e,this.#t=di(t)}get current(){return this.#t(),this.#e()}},B_=/\(.+\)/,V_=new Set([`all`,`print`,`screen`,`and`,`or`,`not`,`only`]),H_=class extends z_{constructor(e,t){let n=B_.test(e)||e.split(/[\s,]+/).some(e=>V_.has(e.trim()))?e:`(${e})`,r=window.matchMedia(n);super(()=>r.matches,e=>Zr(r,`change`,e))}};function U_(e,t,n,r){let i=new Map;return Rm(e,{x:0,y:0,width:n,height:r},t,!0).forEach(e=>{i.set(e.id,e)}),i}function W_(e){let{edges:t,defaultEdgeOptions:n,nodeLookup:r,previousEdges:i,connectionMode:a,onerror:o,onlyRenderVisible:s,elevateEdgesOnSelect:c,zIndexMode:l}=e,u=new Map;for(let d of t){let t=r.get(d.source),f=r.get(d.target);if(!t||!f||t.hidden||f.hidden)continue;if(s){let{visibleNodes:n,transform:r,width:i,height:a}=e;if(Ih({sourceNode:t,targetNode:f,width:i,height:a,transform:r}))n.set(t.id,t),n.set(f.id,f);else continue}let p=i.get(d.id);if(p&&d===p.edge&&t==p.sourceNode&&f==p.targetNode){u.set(d.id,p);continue}let m=Jh({id:d.id,sourceNode:t,targetNode:f,sourceHandle:d.sourceHandle||null,targetHandle:d.targetHandle||null,connectionMode:a,onError:o});m&&u.set(d.id,{...n,...d,...m,zIndex:Fh({selected:d.selected,zIndex:d.zIndex??n.zIndex,sourceNode:t,targetNode:f,elevateOnSelect:c,zIndexMode:l}),sourceNode:t,targetNode:f,edge:d})}return u}var G_=ah(`Svelte Flow`,`https://svelteflow.dev/`),K_={input:f_,output:m_,default:u_,group:h_},q_={straight:M_,smoothstep:j_,default:A_,step:N_};function J_(e,t,n,r,i,a){return t&&!n&&r&&i?fh(Lm(a,{filter:e=>!(!e.width&&!e.initialWidth||!e.height&&!e.initialHeight)}),r,i,.5,2,.1):n??{x:0,y:0,zoom:1}}function Y_(e){class t{#e=A(()=>e.props.id??`1`);get flowId(){return R(this.#e)}set flowId(e){M(this.#e,e)}#t=j(null);get domNode(){return R(this.#t)}set domNode(e){M(this.#t,e)}#n=j(null);get panZoom(){return R(this.#n)}set panZoom(e){M(this.#n,e)}#r=j(e.width??0);get width(){return R(this.#r)}set width(e){M(this.#r,e)}#i=j(e.height??0);get height(){return R(this.#i)}set height(e){M(this.#i,e)}#a=j(e.props.zIndexMode??`basic`);get zIndexMode(){return R(this.#a)}set zIndexMode(e){M(this.#a,e)}#o=A(()=>{let{nodesInitialized:t}=lg(e.nodes,this.nodeLookup,this.parentLookup,{nodeExtent:this.nodeExtent,nodeOrigin:this.nodeOrigin,elevateNodesOnSelect:e.props.elevateNodesOnSelect??!0,checkEquality:!0,zIndexMode:this.zIndexMode});return this.fitViewQueued&&t&&(this.fitViewOptions?.duration?this.resolveFitView():queueMicrotask(()=>{this.resolveFitView()})),t});get nodesInitialized(){return R(this.#o)}set nodesInitialized(e){M(this.#o,e)}#s=A(()=>this.panZoom!==null);get viewportInitialized(){return R(this.#s)}set viewportInitialized(e){M(this.#s,e)}#c=A(()=>(vg(this.connectionLookup,this.edgeLookup,e.edges),e.edges));get _edges(){return R(this.#c)}set _edges(e){M(this.#c,e)}get nodes(){return this.nodesInitialized,e.nodes}set nodes(t){e.nodes=t}get edges(){return this._edges}set edges(t){e.edges=t}_prevSelectedNodes=[];_prevSelectedNodeIds=new Set;#l=A(()=>{let e=this._prevSelectedNodeIds.size,t=new Set,n=this.nodes.filter(e=>(e.selected&&(t.add(e.id),this._prevSelectedNodeIds.delete(e.id)),e.selected));return(e!==t.size||this._prevSelectedNodeIds.size>0)&&(this._prevSelectedNodes=n),this._prevSelectedNodeIds=t,this._prevSelectedNodes});get selectedNodes(){return R(this.#l)}set selectedNodes(e){M(this.#l,e)}_prevSelectedEdges=[];_prevSelectedEdgeIds=new Set;#u=A(()=>{let e=this._prevSelectedEdgeIds.size,t=new Set,n=this.edges.filter(e=>(e.selected&&(t.add(e.id),this._prevSelectedEdgeIds.delete(e.id)),e.selected));return(e!==t.size||this._prevSelectedEdgeIds.size>0)&&(this._prevSelectedEdges=n),this._prevSelectedEdgeIds=t,this._prevSelectedEdges});get selectedEdges(){return R(this.#u)}set selectedEdges(e){M(this.#u,e)}selectionChangeHandlers=new Map;nodeLookup=new Map;parentLookup=new Map;connectionLookup=new Map;edgeLookup=new Map;_prevVisibleEdges=new Map;#d=A(()=>{let{nodes:t,_edges:n,_prevVisibleEdges:r,nodeLookup:i,connectionMode:a,onerror:o,onlyRenderVisibleElements:s,defaultEdgeOptions:c,zIndexMode:l}=this,u,d,f={edges:n,defaultEdgeOptions:c,previousEdges:r,nodeLookup:i,connectionMode:a,elevateEdgesOnSelect:e.props.elevateEdgesOnSelect??!0,zIndexMode:l,onerror:o};if(s){let{viewport:e,width:t,height:n}=this,r=[e.x,e.y,e.zoom];u=U_(i,r,t,n),d=W_({...f,onlyRenderVisible:!0,visibleNodes:u,transform:r,width:t,height:n})}else u=this.nodeLookup,d=W_(f);return this._prevVisibleEdges=d,{nodes:u,edges:d}});get visible(){return R(this.#d)}set visible(e){M(this.#d,e)}#f=A(()=>e.props.nodesDraggable??!0);get nodesDraggable(){return R(this.#f)}set nodesDraggable(e){M(this.#f,e)}#p=A(()=>e.props.nodesConnectable??!0);get nodesConnectable(){return R(this.#p)}set nodesConnectable(e){M(this.#p,e)}#m=A(()=>e.props.elementsSelectable??!0);get elementsSelectable(){return R(this.#m)}set elementsSelectable(e){M(this.#m,e)}#h=A(()=>e.props.nodesFocusable??!0);get nodesFocusable(){return R(this.#h)}set nodesFocusable(e){M(this.#h,e)}#g=A(()=>e.props.edgesFocusable??!0);get edgesFocusable(){return R(this.#g)}set edgesFocusable(e){M(this.#g,e)}#_=A(()=>e.props.disableKeyboardA11y??!1);get disableKeyboardA11y(){return R(this.#_)}set disableKeyboardA11y(e){M(this.#_,e)}#v=A(()=>e.props.minZoom??.5);get minZoom(){return R(this.#v)}set minZoom(e){M(this.#v,e)}#y=A(()=>e.props.maxZoom??2);get maxZoom(){return R(this.#y)}set maxZoom(e){M(this.#y,e)}#b=A(()=>e.props.nodeOrigin??[0,0]);get nodeOrigin(){return R(this.#b)}set nodeOrigin(e){M(this.#b,e)}#x=A(()=>e.props.nodeExtent??xm);get nodeExtent(){return R(this.#x)}set nodeExtent(e){M(this.#x,e)}#S=A(()=>e.props.translateExtent??xm);get translateExtent(){return R(this.#S)}set translateExtent(e){M(this.#S,e)}#C=A(()=>e.props.defaultEdgeOptions??{});get defaultEdgeOptions(){return R(this.#C)}set defaultEdgeOptions(e){M(this.#C,e)}#w=A(()=>e.props.nodeDragThreshold??1);get nodeDragThreshold(){return R(this.#w)}set nodeDragThreshold(e){M(this.#w,e)}#T=A(()=>e.props.autoPanOnNodeDrag??!0);get autoPanOnNodeDrag(){return R(this.#T)}set autoPanOnNodeDrag(e){M(this.#T,e)}#E=A(()=>e.props.autoPanOnConnect??!0);get autoPanOnConnect(){return R(this.#E)}set autoPanOnConnect(e){M(this.#E,e)}#D=A(()=>e.props.autoPanOnNodeFocus??!0);get autoPanOnNodeFocus(){return R(this.#D)}set autoPanOnNodeFocus(e){M(this.#D,e)}#O=A(()=>e.props.autoPanSpeed??15);get autoPanSpeed(){return R(this.#O)}set autoPanSpeed(e){M(this.#O,e)}#k=A(()=>e.props.connectionDragThreshold??1);get connectionDragThreshold(){return R(this.#k)}set connectionDragThreshold(e){M(this.#k,e)}fitViewQueued=e.props.fitView??!1;fitViewOptions=e.props.fitViewOptions;fitViewResolver=null;#A=A(()=>e.props.snapGrid??null);get snapGrid(){return R(this.#A)}set snapGrid(e){M(this.#A,e)}#j=j(!1);get dragging(){return R(this.#j)}set dragging(e){M(this.#j,e)}#M=j(null);get selectionRect(){return R(this.#M)}set selectionRect(e){M(this.#M,e)}#N=j(!1);get selectionKeyPressed(){return R(this.#N)}set selectionKeyPressed(e){M(this.#N,e)}#P=j(!1);get multiselectionKeyPressed(){return R(this.#P)}set multiselectionKeyPressed(e){M(this.#P,e)}#F=j(!1);get deleteKeyPressed(){return R(this.#F)}set deleteKeyPressed(e){M(this.#F,e)}#I=j(!1);get panActivationKeyPressed(){return R(this.#I)}set panActivationKeyPressed(e){M(this.#I,e)}#L=j(!1);get zoomActivationKeyPressed(){return R(this.#L)}set zoomActivationKeyPressed(e){M(this.#L,e)}#R=j(null);get selectionRectMode(){return R(this.#R)}set selectionRectMode(e){M(this.#R,e)}#z=j(``);get ariaLiveMessage(){return R(this.#z)}set ariaLiveMessage(e){M(this.#z,e)}#B=A(()=>e.props.selectionMode??Em.Partial);get selectionMode(){return R(this.#B)}set selectionMode(e){M(this.#B,e)}#V=A(()=>({...K_,...e.props.nodeTypes}));get nodeTypes(){return R(this.#V)}set nodeTypes(e){M(this.#V,e)}#H=A(()=>({...q_,...e.props.edgeTypes}));get edgeTypes(){return R(this.#H)}set edgeTypes(e){M(this.#H,e)}#U=A(()=>e.props.noPanClass??`nopan`);get noPanClass(){return R(this.#U)}set noPanClass(e){M(this.#U,e)}#W=A(()=>e.props.noDragClass??`nodrag`);get noDragClass(){return R(this.#W)}set noDragClass(e){M(this.#W,e)}#G=A(()=>e.props.noWheelClass??`nowheel`);get noWheelClass(){return R(this.#G)}set noWheelClass(e){M(this.#G,e)}#K=A(()=>vh(e.props.ariaLabelConfig));get ariaLabelConfig(){return R(this.#K)}set ariaLabelConfig(e){M(this.#K,e)}#q=j(J_(this.nodesInitialized,e.props.fitView,e.props.initialViewport,this.width,this.height,this.nodeLookup));get _viewport(){return R(this.#q)}set _viewport(e){M(this.#q,e)}get viewport(){return e.viewport??this._viewport}set viewport(t){e.viewport&&=t,this._viewport=t}#J=j(Dm);get _connection(){return R(this.#J)}set _connection(e){M(this.#J,e)}#Y=A(()=>this._connection.inProgress?{...this._connection,to:sh(this._connection.to,[this.viewport.x,this.viewport.y,this.viewport.zoom])}:this._connection);get connection(){return R(this.#Y)}set connection(e){M(this.#Y,e)}#X=A(()=>e.props.connectionMode??wm.Strict);get connectionMode(){return R(this.#X)}set connectionMode(e){M(this.#X,e)}#Z=A(()=>e.props.connectionRadius??20);get connectionRadius(){return R(this.#Z)}set connectionRadius(e){M(this.#Z,e)}#Q=A(()=>e.props.isValidConnection??(()=>!0));get isValidConnection(){return R(this.#Q)}set isValidConnection(e){M(this.#Q,e)}#$=A(()=>e.props.selectNodesOnDrag??!0);get selectNodesOnDrag(){return R(this.#$)}set selectNodesOnDrag(e){M(this.#$,e)}#ee=A(()=>e.props.defaultMarkerColor===void 0?`#b1b1b7`:e.props.defaultMarkerColor);get defaultMarkerColor(){return R(this.#ee)}set defaultMarkerColor(e){M(this.#ee,e)}#te=A(()=>$h(e.edges,{defaultColor:this.defaultMarkerColor,id:this.flowId,defaultMarkerStart:this.defaultEdgeOptions.markerStart,defaultMarkerEnd:this.defaultEdgeOptions.markerEnd}));get markers(){return R(this.#te)}set markers(e){M(this.#te,e)}#ne=A(()=>e.props.onlyRenderVisibleElements??!1);get onlyRenderVisibleElements(){return R(this.#ne)}set onlyRenderVisibleElements(e){M(this.#ne,e)}#re=A(()=>e.props.onflowerror??G_);get onerror(){return R(this.#re)}set onerror(e){M(this.#re,e)}#ie=A(()=>e.props.ondelete);get ondelete(){return R(this.#ie)}set ondelete(e){M(this.#ie,e)}#ae=A(()=>e.props.onbeforedelete);get onbeforedelete(){return R(this.#ae)}set onbeforedelete(e){M(this.#ae,e)}#oe=A(()=>e.props.onbeforeconnect);get onbeforeconnect(){return R(this.#oe)}set onbeforeconnect(e){M(this.#oe,e)}#se=A(()=>e.props.onconnect);get onconnect(){return R(this.#se)}set onconnect(e){M(this.#se,e)}#ce=A(()=>e.props.onconnectstart);get onconnectstart(){return R(this.#ce)}set onconnectstart(e){M(this.#ce,e)}#le=A(()=>e.props.onconnectend);get onconnectend(){return R(this.#le)}set onconnectend(e){M(this.#le,e)}#ue=A(()=>e.props.onbeforereconnect);get onbeforereconnect(){return R(this.#ue)}set onbeforereconnect(e){M(this.#ue,e)}#de=A(()=>e.props.onreconnect);get onreconnect(){return R(this.#de)}set onreconnect(e){M(this.#de,e)}#fe=A(()=>e.props.onreconnectstart);get onreconnectstart(){return R(this.#fe)}set onreconnectstart(e){M(this.#fe,e)}#pe=A(()=>e.props.onreconnectend);get onreconnectend(){return R(this.#pe)}set onreconnectend(e){M(this.#pe,e)}#me=A(()=>e.props.clickConnect??!0);get clickConnect(){return R(this.#me)}set clickConnect(e){M(this.#me,e)}#he=A(()=>e.props.onclickconnectstart);get onclickconnectstart(){return R(this.#he)}set onclickconnectstart(e){M(this.#he,e)}#ge=A(()=>e.props.onclickconnectend);get onclickconnectend(){return R(this.#ge)}set onclickconnectend(e){M(this.#ge,e)}#_e=j(null);get clickConnectStartHandle(){return R(this.#_e)}set clickConnectStartHandle(e){M(this.#_e,e)}#ve=A(()=>e.props.onselectiondrag);get onselectiondrag(){return R(this.#ve)}set onselectiondrag(e){M(this.#ve,e)}#ye=A(()=>e.props.onselectiondragstart);get onselectiondragstart(){return R(this.#ye)}set onselectiondragstart(e){M(this.#ye,e)}#be=A(()=>e.props.onselectiondragstop);get onselectiondragstop(){return R(this.#be)}set onselectiondragstop(e){M(this.#be,e)}resolveFitView=async()=>{this.panZoom&&(await Vm({nodes:this.nodeLookup,width:this.width,height:this.height,panZoom:this.panZoom,minZoom:this.minZoom,maxZoom:this.maxZoom},this.fitViewOptions),this.fitViewResolver?.resolve(!0),this.fitViewQueued=!1,this.fitViewOptions=void 0,this.fitViewResolver=null)};_prefersDark=new H_(`(prefers-color-scheme: dark)`,e.props.colorModeSSR===`dark`);#xe=A(()=>e.props.colorMode===`system`?this._prefersDark.current?`dark`:`light`:e.props.colorMode??`light`);get colorMode(){return R(this.#xe)}set colorMode(e){M(this.#xe,e)}constructor(){}resetStoreValues(){this.dragging=!1,this.selectionRect=null,this.selectionRectMode=null,this.selectionKeyPressed=!1,this.multiselectionKeyPressed=!1,this.deleteKeyPressed=!1,this.panActivationKeyPressed=!1,this.zoomActivationKeyPressed=!1,this._connection=Dm,this.clickConnectStartHandle=null,this.viewport=e.props.initialViewport??{x:0,y:0,zoom:1},this.ariaLiveMessage=``}}return new t}var X_=bm.error001(`svelte`);function Z_(){let e=at(Q_);if(!e)throw Error(X_);return e.getStore()}var Q_=Symbol();function $_(e){let t=Y_(e);function n(e){t.nodeTypes={...K_,...e}}function r(e){t.edgeTypes={...q_,...e}}function i(e){t.edges=Qg(e,t.edges,{onError:t.onerror})}let a=(e,n=!1)=>{t.nodes=t.nodes.map(r=>{if(t.connection.inProgress&&t.connection.fromNode.id===r.id){let e=t.nodeLookup.get(r.id);e&&(t.connection={...t.connection,from:Xh(e,t.connection.fromHandle,Am.Left,!0)})}let i=e.get(r.id);return i?{...r,position:i.position,dragging:n}:r})};function o(e){let{changes:n,updatedInternals:r}=hg(e,t.nodeLookup,t.parentLookup,t.domNode,t.nodeOrigin,t.nodeExtent,t.zIndexMode);if(!r)return;og(t.nodeLookup,t.parentLookup,{nodeOrigin:t.nodeOrigin,nodeExtent:t.nodeExtent,zIndexMode:t.zIndexMode}),t.fitViewQueued&&t.resolveFitView();let i=new Map;for(let e of n){let n=t.nodeLookup.get(e.id)?.internals.userNode;if(!n)continue;let r={...n};switch(e.type){case`dimensions`:{let t={...r.measured,...e.dimensions};e.setAttributes&&(r.width=e.dimensions?.width??r.width,r.height=e.dimensions?.height??r.height),r.measured=t;break}case`position`:r.position=e.position??r.position}i.set(e.id,r)}t.nodes=t.nodes.map(e=>i.get(e.id)??e)}function s(e){let n=t.fitViewResolver??Promise.withResolvers();return t.fitViewQueued=!0,t.fitViewOptions=e,t.fitViewResolver=n,t.nodes=[...t.nodes],n.promise}async function c(e,n,r){let i=r?.zoom===void 0?t.maxZoom:r.zoom,a=t.panZoom;return a?(await a.setViewport({x:t.width/2-e*i,y:t.height/2-n*i,zoom:i},{duration:r?.duration,ease:r?.ease,interpolate:r?.interpolate}),!0):!1}async function l(e,n){let r=t.panZoom;return r?r.scaleBy(e,n):!1}async function u(e){return l(1.2,e)}function d(e){return l(1/1.2,e)}function f(e){let n=t.panZoom;n&&(n.setScaleExtent([e,t.maxZoom]),t.minZoom=e)}function p(e){let n=t.panZoom;n&&(n.setScaleExtent([t.minZoom,e]),t.maxZoom=e)}function m(e){let n=t.panZoom;n&&(n.setTranslateExtent(e),t.translateExtent=e)}function h(e,t=null){let n=!1,r=e.map(e=>(!t||t.has(e.id))&&e.selected?(n=!0,{...e,selected:!1}):e);return[n,r]}function g(e){let n=e?.nodes?new Set(e.nodes.map(e=>e.id)):null,[r,i]=h(t.nodes,n);r&&(t.nodes=i);let a=e?.edges?new Set(e.edges.map(e=>e.id)):null,[o,s]=h(t.edges,a);o&&(t.edges=s)}function _(e){let n=t.multiselectionKeyPressed;t.nodes=t.nodes.map(t=>{let r=e.includes(t.id),i=n&&t.selected||r;return!!t.selected===i?t:{...t,selected:i}}),n||g({nodes:[]})}function v(e){let n=t.multiselectionKeyPressed;t.edges=t.edges.map(t=>{let r=e.includes(t.id),i=n&&t.selected||r;return!!t.selected===i?t:{...t,selected:i}}),n||g({edges:[]})}function y(e,n,r){let i=t.nodeLookup.get(e);i?(t.selectionRect=null,t.selectionRectMode=null,i.selected?(n||i.selected&&t.multiselectionKeyPressed)&&(g({nodes:[i.internals.userNode],edges:[]}),requestAnimationFrame(()=>r?.blur())):_([e])):t.onerror(`012`,bm.error012(e))}function b(e){let n=t.edgeLookup.get(e);n?(n.selectable||t.elementsSelectable&&n.selectable===void 0)&&(t.selectionRect=null,t.selectionRectMode=null,n.selected?n.selected&&t.multiselectionKeyPressed&&g({nodes:[],edges:[n]}):v([e])):t.onerror(`016`,bm.error016(e))}function x(e,n){let{nodeExtent:r,snapGrid:i,nodeOrigin:o,nodeLookup:s,nodesDraggable:c,onerror:l}=t,u=new Map,d=i?.[0]??5,f=i?.[1]??5,p=e.x*d*n,m=e.y*f*n;for(let e of s.values()){if(!(e.selected&&(e.draggable||c&&e.draggable===void 0)))continue;let t={x:e.internals.positionAbsolute.x+p,y:e.internals.positionAbsolute.y+m};i&&(t=oh(t,i));let{position:n,positionAbsolute:a}=Hm({nodeId:e.id,nextPosition:t,nodeLookup:s,nodeExtent:r,nodeOrigin:o,onError:l});e.position=n,e.internals.positionAbsolute=a,u.set(e.id,e)}a(u)}function S(e){return gg({delta:e,panZoom:t.panZoom,transform:[t.viewport.x,t.viewport.y,t.viewport.zoom],translateExtent:t.translateExtent,width:t.width,height:t.height})}let C=e=>{t._connection={...e}};function w(){t._connection=Dm}function T(){t.resetStoreValues(),g()}return Object.assign(t,{setNodeTypes:n,setEdgeTypes:r,addEdge:i,updateNodePositions:a,updateNodeInternals:o,zoomIn:u,zoomOut:d,fitView:s,setCenter:c,setMinZoom:f,setMaxZoom:p,setTranslateExtent:m,unselectNodesAndEdges:g,addSelectedNodes:_,addSelectedEdges:v,handleNodeSelection:y,handleEdgeSelection:b,moveSelectedNodes:x,panBy:S,updateConnection:C,cancelConnection:w,reset:T})}function ev(e,t){let{minZoom:n,maxZoom:r,initialViewport:i,onPanZoomStart:a,onPanZoom:o,onPanZoomEnd:s,translateExtent:c,setPanZoomInstance:l,onDraggingChange:u,onTransformChange:d}=t,f=Yg({domNode:e,minZoom:n,maxZoom:r,translateExtent:c,viewport:i,onPanZoom:o,onPanZoomStart:a,onPanZoomEnd:s,onDraggingChange:u}),p=f.getViewport();return(i.x!==p.x||i.y!==p.y||i.zoom!==p.zoom)&&d([p.x,p.y,p.zoom]),l(f),f.update(t),{update(e){f.update(e)}}}var tv=V(`<div class="svelte-flow__zoom svelte-flow__container"><!></div>`);function nv(e,t){O(t,!0);let n=Y(t,`store`,15),r=A(()=>n().panActivationKeyPressed||t.panOnDrag),i=A(()=>n().panActivationKeyPressed||t.panOnScroll),{viewport:a}=n(),o=!1;Ln(()=>{!o&&n().viewportInitialized&&(t.oninit?.(),o=!0)});var s=tv();Ii(N(s),()=>t.children),D(s),zi(s,(e,t)=>ev?.(e,t),()=>({viewport:n().viewport,minZoom:n().minZoom,maxZoom:n().maxZoom,initialViewport:a,onDraggingChange:e=>{n(n().dragging=e,!0)},setPanZoomInstance:e=>{n(n().panZoom=e,!0)},onPanZoomStart:t.onmovestart,onPanZoom:t.onmove,onPanZoomEnd:t.onmoveend,zoomOnScroll:t.zoomOnScroll,zoomOnDoubleClick:t.zoomOnDoubleClick,zoomOnPinch:t.zoomOnPinch,panOnScroll:R(i),panOnDrag:R(r),panOnScrollSpeed:t.panOnScrollSpeed,panOnScrollMode:t.panOnScrollMode,panActivationKeyPressed:n().panActivationKeyPressed,zoomActivationKeyPressed:n().zoomActivationKeyPressed,preventScrolling:typeof t.preventScrolling!=`boolean`||t.preventScrolling,noPanClassName:n().noPanClass,noWheelClassName:n().noWheelClass,userSelectionActive:!!n().selectionRect,translateExtent:n().translateExtent,lib:`svelte`,paneClickDistance:t.paneClickDistance,selectionOnDrag:t.selectionOnDrag,onTransformChange:e=>{n(n().viewport={x:e[0],y:e[1],zoom:e[2]},!0)},connectionInProgress:n().connection.inProgress})),H(e,s),k()}function rv(e,t){return n=>{n.target===t&&e?.(n)}}function iv(e){return t=>{let n=e.has(t.id);return!!t.selected===n?t:{...t,selected:n}}}function av(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}var ov=V(`<div><!></div>`);function sv(e,t){O(t,!0);let n=Y(t,`store`,15),r=Y(t,`panOnDrag`,3,!0),i=Y(t,`paneClickDistance`,3,1),a=Y(t,`autoPanOnSelection`,3,!0),o,s=null,c=!1,l=new Set,u=new Set,d=A(()=>n().panActivationKeyPressed||r()),f=A(()=>n().selectionKeyPressed||!!n().selectionRect||t.selectionOnDrag&&R(d)!==!0),p=A(()=>n().elementsSelectable&&(R(f)||n().selectionRectMode===`user`)),m=!1,h=0,g={x:0,y:0},_=!1;function v(e){if(e.pointerType===`touch`&&R(d)!==!1&&!n().selectionKeyPressed||(s=o?.getBoundingClientRect(),!s))return;let r=e.target===o,i=!r&&!!e.target.closest(`.nokey`),a=t.selectionOnDrag&&r||n().selectionKeyPressed;if(i||!R(f)||!a||e.button!==0||!e.isPrimary)return;e.target?.setPointerCapture?.(e.pointerId),m=!1,_=!1;let{x:c,y:l}=Oh(e,s),u=sh({x:c,y:l},[n().viewport.x,n().viewport.y,n().viewport.zoom]);n(n().selectionRect={width:0,height:0,startX:u.x,startY:u.y,x:c,y:l},!0),r||(e.stopPropagation(),e.preventDefault())}function y(e,t){if(n().selectionRect?.startX===void 0||n().selectionRect.startY===void 0)return;let r={x:n().selectionRect?.startX,y:n().selectionRect?.startY},i=ch(r,[n().viewport.x,n().viewport.y,n().viewport.zoom]),a={startX:r.x,startY:r.y,x:e<i.x?e:i.x,y:t<i.y?t:i.y,width:Math.abs(e-i.x),height:Math.abs(t-i.y)},o=l,s=u;l=new Set(Rm(n().nodeLookup,a,[n().viewport.x,n().viewport.y,n().viewport.zoom],n().selectionMode===Em.Partial,!0).map(e=>e.id));let c=n().defaultEdgeOptions.selectable??!0;u=new Set;for(let e of l){let t=n().connectionLookup.get(e);if(t)for(let{edgeId:e}of t.values()){let t=n().edgeLookup.get(e);t&&(t.selectable??c)&&u.add(e)}}av(o,l)||n(n().nodes=n().nodes.map(iv(l)),!0),av(s,u)||n(n().edges=n().edges.map(iv(u)),!0),n(n().selectionRectMode=`user`,!0),n(n().selectionRect=a,!0)}function b(){if(!a()||!s)return;let[e,t]=Jm(g,s,n().autoPanSpeed);n().panBy({x:e,y:t}).then(e=>{!m||!e||y(g.x,g.y),h=requestAnimationFrame(b)})}function x(){cancelAnimationFrame(h),h=0,_=!1}Ha(()=>{typeof window<`u`&&x()});function S(e){if(!R(f)||!s||!n().selectionRect)return;let r=Oh(e,s);g={x:r.x,y:r.y};let a=ch({x:n().selectionRect.startX,y:n().selectionRect.startY},[n().viewport.x,n().viewport.y,n().viewport.zoom]);if(!m){let o=n().selectionKeyPressed?0:i();if(Math.hypot(r.x-a.x,r.y-a.y)<=o)return;n().unselectNodesAndEdges(),t.onselectionstart?.(e)}m=!0,_||=(b(),!0),y(r.x,r.y)}function C(e){R(p)?e.button===0&&(e.target?.releasePointerCapture?.(e.pointerId),!m&&e.target===o&&te?.(e),n(n().selectionRect=null,!0),m&&n(n().selectionRectMode=l.size>0?`nodes`:null,!0),m&&t.onselectionend?.(e),x()):e.target===o&&n().connection.inProgress&&(c=!0)}function w(e){e.target?.releasePointerCapture?.(e.pointerId),x()}let T=e=>{Array.isArray(R(d))&&R(d).includes(2)?e.preventDefault():t.onpanecontextmenu?.({event:e})},ee=e=>{m&&=(e.stopPropagation(),!1)};function te(e){m||n().connection.inProgress||c?(m=!1,c=!1):(t.onpaneclick?.({event:e}),n().unselectNodesAndEdges(),n(n().selectionRectMode=null,!0),n(n().selectionRect=null,!0))}var E=ov();let ne;var re=A(()=>R(p)?void 0:rv(te,o)),ie=A(()=>rv(T,o));Ii(N(E),()=>t.children),D(E),Ma(E,e=>o=e,()=>o),L(e=>ne=K(E,1,`svelte-flow__pane svelte-flow__container`,null,ne,{draggable:e,dragging:n().dragging,selection:R(f)}),[()=>r()===!0||Array.isArray(r())&&r().includes(0)]),B(`click`,E,function(...e){R(re)?.apply(this,e)}),z(`pointerdown`,E,function(...e){(R(p)?v:void 0)?.apply(this,e)},!0),B(`pointermove`,E,function(...e){(R(p)?S:void 0)?.apply(this,e)}),B(`pointerup`,E,C),z(`pointercancel`,E,function(...e){(R(p)?w:void 0)?.apply(this,e)}),B(`contextmenu`,E,function(...e){R(ie)?.apply(this,e)}),z(`click`,E,function(...e){(R(p)?ee:void 0)?.apply(this,e)},!0),H(e,E),k()}Qr([`click`,`pointermove`,`pointerup`,`contextmenu`]);var cv=V(`<div class="svelte-flow__viewport xyflow__viewport svelte-flow__container"><!></div>`);function lv(e,t){O(t,!0);var n=cv();let r;Ii(N(n),()=>t.children),D(n),L(()=>r=Xi(n,``,r,{transform:`translate(${t.store.viewport.x??``}px, ${t.store.viewport.y??``}px) scale(${t.store.viewport.zoom??``})`})),H(e,n),k()}function uv(e,t){let{store:n,onDrag:r,onDragStart:i,onDragStop:a,onNodeMouseDown:o}=t,s=wg({onDrag:r,onDragStart:i,onDragStop:a,onNodeMouseDown:o,getStoreItems:()=>{let{snapGrid:e,viewport:t}=n;return{nodes:n.nodes,nodeLookup:n.nodeLookup,edges:n.edges,nodeExtent:n.nodeExtent,snapGrid:e||[0,0],snapToGrid:!!e,nodeOrigin:n.nodeOrigin,multiSelectionActive:n.multiselectionKeyPressed,domNode:n.domNode,transform:[t.x,t.y,t.zoom],autoPanOnNodeDrag:n.autoPanOnNodeDrag,nodesDraggable:n.nodesDraggable,selectNodesOnDrag:n.selectNodesOnDrag,nodeDragThreshold:n.nodeDragThreshold,unselectNodesAndEdges:n.unselectNodesAndEdges,updateNodePositions:n.updateNodePositions,onSelectionDrag:n.onselectiondrag,onSelectionDragStart:n.onselectiondragstart,onSelectionDragStop:n.onselectiondragstop,panBy:n.panBy}}});function c(e,t){t.disabled?s.destroy():s.update({domNode:e,noDragClassName:t.noDragClass,handleSelector:t.handleSelector,nodeId:t.nodeId,isSelectable:t.isSelectable,nodeClickDistance:t.nodeClickDistance})}return c(e,t),{update(t){c(e,t)},destroy(){s.destroy()}}}var dv=V(`<div aria-live="assertive" aria-atomic="true" class="a11y-live-msg svelte-13pq11u"> </div>`),fv=V(`<div class="a11y-hidden svelte-13pq11u"> </div> <div class="a11y-hidden svelte-13pq11u"> </div> <!>`,1);function pv(e,t){O(t,!0);var n=fv(),r=P(n),i=F(r,!0),a=I(r,2),o=F(a,!0),s=I(a,2),c=e=>{var n=dv(),r=F(n,!0);L(()=>{q(n,`id`,`${gv}-${t.store.flowId}`),U(r,t.store.ariaLiveMessage)}),H(e,n)};W(s,e=>{t.store.disableKeyboardA11y||e(c)}),L(()=>{q(r,`id`,`${mv}-${t.store.flowId}`),U(i,t.store.disableKeyboardA11y?t.store.ariaLabelConfig[`node.a11yDescription.default`]:t.store.ariaLabelConfig[`node.a11yDescription.keyboardDisabled`]),q(a,`id`,`${hv}-${t.store.flowId}`),U(o,t.store.ariaLabelConfig[`edge.a11yDescription.default`])}),H(e,n),k()}var mv=`svelte-flow__node-desc`,hv=`svelte-flow__edge-desc`,gv=`svelte-flow__aria-live`,_v=V(`<div><!></div>`);function vv(e,t){O(t,!0);let n=Y(t,`store`,15),r=A(()=>_(t.node.data,()=>({}),!0)),i=A(()=>_(t.node.selected,!1)),a=A(()=>t.node.draggable),o=A(()=>t.node.selectable),s=A(()=>_(t.node.deletable,!0)),c=A(()=>t.node.connectable),l=A(()=>t.node.focusable),u=A(()=>_(t.node.hidden,!1)),d=A(()=>_(t.node.dragging,!1)),f=A(()=>_(t.node.style,``)),p=A(()=>t.node.class),m=A(()=>_(t.node.type,`default`)),h=A(()=>t.node.parentId),g=A(()=>t.node.sourcePosition),v=A(()=>t.node.targetPosition),y=A(()=>_(t.node.measured,()=>({width:0,height:0}),!0).width),b=A(()=>_(t.node.measured,()=>({width:0,height:0}),!0).height),x=A(()=>t.node.initialWidth),S=A(()=>t.node.initialHeight),C=A(()=>t.node.width),w=A(()=>t.node.height),T=A(()=>t.node.dragHandle),ee=A(()=>_(t.node.internals.z,0)),te=A(()=>t.node.internals.positionAbsolute.x),E=A(()=>t.node.internals.positionAbsolute.y),ne=A(()=>t.node.internals.userNode),{id:re}=t.node,ie=A(()=>R(a)??n().nodesDraggable),ae=A(()=>R(o)??n().elementsSelectable),oe=A(()=>R(c)??n().nodesConnectable),se=A(()=>gh(t.node)),ce=A(()=>!!t.node.internals.handleBounds),le=A(()=>R(se)&&R(ce)),ue=A(()=>R(l)??n().nodesFocusable);function de(e){return n().parentLookup.has(e)}let fe=A(()=>de(re)),pe=j(null),me=null,he=R(m),ge=R(g),_e=R(v),ve=A(()=>n().nodeTypes[R(m)]??u_),ye=A(()=>n().ariaLabelConfig);t_(re),r_({get value(){return R(oe)}});let be=A(()=>{let e=R(y)===void 0?R(C)??R(x):R(C),t=R(b)===void 0?R(w)??R(S):R(w);if(e!==void 0||t!==void 0||R(f)!==void 0)return`${R(f)};${e?`width:${x_(e)};`:``}${t?`height:${x_(t)};`:``}`});Ln(()=>{(R(m)!==he||R(g)!==ge||R(v)!==_e)&&R(pe)!==null&&requestAnimationFrame(()=>{R(pe)!==null&&n().updateNodeInternals(new Map([[re,{id:re,nodeElement:R(pe),force:!0}]]))}),he=R(m),ge=R(g),_e=R(v)}),Ln(()=>{t.resizeObserver&&(!R(le)||R(pe)!==me)&&(me&&t.resizeObserver.unobserve(me),R(pe)&&t.resizeObserver.observe(R(pe)),me=R(pe))}),Ha(()=>{me&&t.resizeObserver?.unobserve(me)});function xe(e){R(ae)&&(!n().selectNodesOnDrag||!R(ie)||n().nodeDragThreshold>0)&&n().handleNodeSelection(re),t.onnodeclick?.({node:R(ne),event:e})}function Se(e){if(!(Eh(e)||n().disableKeyboardA11y)){if(Sm.includes(e.key)&&R(ae)){let t=e.key===`Escape`;n().handleNodeSelection(re,t,R(pe))}else R(ie)&&t.node.selected&&Object.prototype.hasOwnProperty.call(S_,e.key)&&(e.preventDefault(),n(n().ariaLiveMessage=R(ye)[`node.a11yDescription.ariaLiveMessage`]({direction:e.key.replace(`Arrow`,``).toLowerCase(),x:~~t.node.internals.positionAbsolute.x,y:~~t.node.internals.positionAbsolute.y}),!0),n().moveSelectedNodes(S_[e.key],e.shiftKey?4:1))}}let Ce=()=>{if(n().disableKeyboardA11y||!n().autoPanOnNodeFocus||!R(pe)?.matches(`:focus-visible`))return;let{width:e,height:r,viewport:i}=n();Rm(new Map([[re,t.node]]),{x:0,y:0,width:e,height:r},[i.x,i.y,i.zoom],!0).length>0||n().setCenter(t.node.position.x+(t.node.measured.width??0)/2,t.node.position.y+(t.node.measured.height??0)/2,{zoom:i.zoom})};var we=li(),Te=P(we),Ee=e=>{var a=_v();va(a,()=>({"data-id":re,class:[`svelte-flow__node`,`svelte-flow__node-${R(m)}`,R(p)],style:R(be),onclick:xe,onpointerenter:t.onnodepointerenter?e=>t.onnodepointerenter({node:R(ne),event:e}):void 0,onpointerleave:t.onnodepointerleave?e=>t.onnodepointerleave({node:R(ne),event:e}):void 0,onpointermove:t.onnodepointermove?e=>t.onnodepointermove({node:R(ne),event:e}):void 0,oncontextmenu:t.onnodecontextmenu?e=>t.onnodecontextmenu({node:R(ne),event:e}):void 0,onkeydown:R(ue)?Se:void 0,onfocus:R(ue)?Ce:void 0,tabIndex:R(ue)?0:void 0,role:t.node.ariaRole??(R(ue)?`group`:void 0),"aria-label":t.node.ariaLabel,"aria-roledescription":`node`,"aria-describedby":n().disableKeyboardA11y?void 0:`${mv}-${n().flowId}`,...t.node.domAttributes,[aa]:{dragging:R(d),selected:R(i),draggable:R(ie),connectable:R(oe),selectable:R(ae),nopan:R(ie),parent:R(fe)},[oa]:{"z-index":R(ee),transform:`translate(${R(te)??``}px, ${R(E)??``}px)`,visibility:R(se)?`visible`:`hidden`}})),Li(N(a),()=>R(ve),(e,t)=>{t(e,{get data(){return R(r)},get id(){return re},get selected(){return R(i)},get selectable(){return R(ae)},get deletable(){return R(s)},get sourcePosition(){return R(g)},get targetPosition(){return R(v)},get zIndex(){return R(ee)},get dragging(){return R(d)},get draggable(){return R(ie)},get dragHandle(){return R(T)},get parentId(){return R(h)},get type(){return R(m)},get isConnectable(){return R(oe)},get positionAbsoluteX(){return R(te)},get positionAbsoluteY(){return R(E)},get width(){return R(C)},get height(){return R(w)}})}),D(a),zi(a,(e,t)=>uv?.(e,t),()=>({nodeId:re,isSelectable:R(ae),disabled:!R(ie),handleSelector:R(T),noDragClass:n().noDragClass,nodeClickDistance:t.nodeClickDistance,onNodeMouseDown:n().handleNodeSelection,onDrag:(e,n,r,i)=>{t.onnodedrag?.({event:e,targetNode:r,nodes:i})},onDragStart:(e,n,r,i)=>{t.onnodedragstart?.({event:e,targetNode:r,nodes:i})},onDragStop:(e,n,r,i)=>{t.onnodedragstop?.({event:e,targetNode:r,nodes:i})},store:n()})),Ma(a,e=>M(pe,e),()=>R(pe)),H(e,a)};W(Te,e=>{R(u)||e(Ee)}),H(e,we),k()}var yv=V(`<div class="svelte-flow__nodes"></div>`);function bv(e,t){O(t,!0);let n=Y(t,`store`,15),r=typeof ResizeObserver>`u`?null:new ResizeObserver(e=>{let t=new Map;e.forEach(e=>{let n=e.target.getAttribute(`data-id`);t.set(n,{id:n,nodeElement:e.target,force:!0})}),n().updateNodeInternals(t)});Ha(()=>{r?.disconnect()});var i=yv();G(i,21,()=>n().visible.nodes.values(),e=>e.id,(e,i)=>{vv(e,{get node(){return R(i)},get resizeObserver(){return r},get nodeClickDistance(){return t.nodeClickDistance},get onnodeclick(){return t.onnodeclick},get onnodepointerenter(){return t.onnodepointerenter},get onnodepointermove(){return t.onnodepointermove},get onnodepointerleave(){return t.onnodepointerleave},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get onnodecontextmenu(){return t.onnodecontextmenu},get store(){return n()},set store(e){n(e)}})}),D(i),H(e,i),k()}var xv=si(`<svg class="svelte-flow__edge-wrapper"><g><!></g></svg>`);function Sv(e,t){O(t,!0);let n=A(()=>t.edge.id),r=A(()=>t.edge.source),i=A(()=>t.edge.target),a=A(()=>t.edge.sourceX),o=A(()=>t.edge.sourceY),s=A(()=>t.edge.targetX),c=A(()=>t.edge.targetY),l=A(()=>t.edge.sourcePosition),u=A(()=>t.edge.targetPosition),d=A(()=>_(t.edge.animated,!1)),f=A(()=>_(t.edge.selected,!1)),p=A(()=>t.edge.label),m=A(()=>t.edge.labelStyle),h=A(()=>_(t.edge.data,()=>({}),!0)),g=A(()=>t.edge.style),v=A(()=>t.edge.interactionWidth),y=A(()=>_(t.edge.type,`default`)),b=A(()=>t.edge.sourceHandle),x=A(()=>t.edge.targetHandle),S=A(()=>t.edge.markerStart),C=A(()=>t.edge.markerEnd),w=A(()=>t.edge.selectable),T=A(()=>t.edge.focusable),ee=A(()=>_(t.edge.deletable,!0)),te=A(()=>t.edge.hidden),E=A(()=>t.edge.zIndex),ne=A(()=>t.edge.class),re=A(()=>t.edge.ariaLabel);a_(R(n));let ie=null,ae=A(()=>R(w)??t.store.elementsSelectable),oe=A(()=>R(T)??t.store.edgesFocusable),se=A(()=>t.store.edgeTypes[R(y)]??A_),ce=A(()=>R(S)?`url('#${Qh(R(S),t.store.flowId)}')`:void 0),le=A(()=>R(C)?`url('#${Qh(R(C),t.store.flowId)}')`:void 0);function ue(e){let r=t.store.edgeLookup.get(R(n));r&&(R(ae)&&t.store.handleEdgeSelection(R(n)),t.onedgeclick?.({event:e,edge:r}))}function de(e,r){let i=t.store.edgeLookup.get(R(n));i&&r({event:e,edge:i})}function fe(e){if(!t.store.disableKeyboardA11y&&Sm.includes(e.key)&&R(ae)){let{unselectNodesAndEdges:r,addSelectedEdges:i}=t.store;e.key===`Escape`?(ie?.blur(),r({edges:[t.edge]})):i([R(n)])}}var pe=li(),me=P(pe),he=e=>{var _=xv();let S;var C=N(_);va(C,()=>({class:[`svelte-flow__edge`,R(ne)],"data-id":R(n),onclick:ue,oncontextmenu:t.onedgecontextmenu?e=>{de(e,t.onedgecontextmenu)}:void 0,onpointerenter:t.onedgepointerenter?e=>{de(e,t.onedgepointerenter)}:void 0,onpointerleave:t.onedgepointerleave?e=>{de(e,t.onedgepointerleave)}:void 0,"aria-label":R(re)===null?void 0:R(re)?R(re):`Edge from ${R(r)} to ${R(i)}`,"aria-describedby":R(oe)?`${hv}-${t.store.flowId}`:void 0,role:t.edge.ariaRole??(R(oe)?`group`:`img`),"aria-roledescription":`edge`,onkeydown:R(oe)?fe:void 0,tabindex:R(oe)?0:void 0,...t.edge.domAttributes,[aa]:{animated:R(d),selected:R(f),selectable:R(ae)}})),Li(N(C),()=>R(se),(e,t)=>{t(e,{get id(){return R(n)},get source(){return R(r)},get target(){return R(i)},get sourceX(){return R(a)},get sourceY(){return R(o)},get targetX(){return R(s)},get targetY(){return R(c)},get sourcePosition(){return R(l)},get targetPosition(){return R(u)},get animated(){return R(d)},get selected(){return R(f)},get label(){return R(p)},get labelStyle(){return R(m)},get data(){return R(h)},get style(){return R(g)},get interactionWidth(){return R(v)},get selectable(){return R(ae)},get deletable(){return R(ee)},get type(){return R(y)},get sourceHandleId(){return R(b)},get targetHandleId(){return R(x)},get markerStart(){return R(ce)},get markerEnd(){return R(le)}})}),D(C),Ma(C,e=>ie=e,()=>ie),D(_),L(()=>S=Xi(_,``,S,{"z-index":R(E)})),H(e,_)};W(me,e=>{R(te)||e(he)}),H(e,pe),k()}Ze();var Cv=si(`<defs></defs>`);function wv(e,t){O(t,!1);let n=Z_();Pa();var r=Cv();G(r,5,()=>n.markers,e=>e.id,(e,t)=>{Ov(e,Ba(()=>R(t)))}),D(r),H(e,r),k()}var Tv=si(`<polyline class="arrow" fill="none" stroke-linecap="round" stroke-linejoin="round" points="-5,-4 0,0 -5,4"></polyline>`),Ev=si(`<polyline class="arrowclosed" stroke-linecap="round" stroke-linejoin="round" points="-5,-4 0,0 -5,4 -5,-4"></polyline>`),Dv=si(`<marker class="svelte-flow__arrowhead" viewBox="-10 -10 20 20" refX="0" refY="0"><!></marker>`);function Ov(e,t){O(t,!0);let n=Y(t,`width`,3,12.5),r=Y(t,`height`,3,12.5),i=Y(t,`markerUnits`,3,`strokeWidth`),a=Y(t,`orient`,3,`auto-start-reverse`),o=Y(t,`color`,3,`none`);var s=Dv(),c=N(s),l=e=>{var n=Tv();let r;L(()=>{q(n,`stroke-width`,t.strokeWidth),r=Xi(n,``,r,{stroke:o()})}),H(e,n)},u=e=>{var n=Ev();let r;L(()=>{q(n,`stroke-width`,t.strokeWidth),r=Xi(n,``,r,{stroke:o(),fill:o()})}),H(e,n)};W(c,e=>{t.type===km.Arrow?e(l):t.type===km.ArrowClosed&&e(u,1)}),D(s),L(()=>{q(s,`id`,t.id),q(s,`markerWidth`,`${n()}`),q(s,`markerHeight`,`${r()}`),q(s,`markerUnits`,i()),q(s,`orient`,a())}),H(e,s),k()}var kv=V(`<div class="svelte-flow__edges"><svg class="svelte-flow__marker"><!></svg> <!></div>`);function Av(e,t){O(t,!0);let n=Y(t,`store`,15);var r=kv(),i=N(r);wv(N(i),{}),D(i),G(I(i,2),17,()=>n().visible.edges.values(),e=>e.id,(e,r)=>{Sv(e,{get edge(){return R(r)},get onedgeclick(){return t.onedgeclick},get onedgecontextmenu(){return t.onedgecontextmenu},get onedgepointerenter(){return t.onedgepointerenter},get onedgepointerleave(){return t.onedgepointerleave},get store(){return n()},set store(e){n(e)}})}),D(r),H(e,r),k()}var jv=V(`<div class="svelte-flow__selection svelte-1vr3gfi"></div>`);function Mv(e,t){O(t,!0);let n=Y(t,`x`,3,0),r=Y(t,`y`,3,0),i=Y(t,`width`,3,0),a=Y(t,`height`,3,0),o=Y(t,`isVisible`,3,!0);var s=li(),c=P(s),l=e=>{var t=jv();let o;L((e,i)=>o=Xi(t,``,o,{width:e,height:i,transform:`translate(${n()}px, ${r()}px)`}),[()=>typeof i()==`string`?i():x_(i()),()=>typeof a()==`string`?a():x_(a())]),H(e,t)};W(c,e=>{o()&&e(l)}),H(e,s),k()}var Nv=V(`<div><!></div>`);function Pv(e,t){O(t,!0);let n=j(void 0);Ln(()=>{t.store.disableKeyboardA11y||R(n)?.focus({preventScroll:!0})});let r=A(()=>{if(t.store.selectionRectMode===`nodes`){t.store.nodes;let e=Lm(t.store.nodeLookup,{filter:e=>!!e.selected});if(e.width>0&&e.height>0)return e}return null});function i(e){let n=t.store.nodes.filter(e=>e.selected);t.onselectioncontextmenu?.({nodes:n,event:e})}function a(e){let n=t.store.nodes.filter(e=>e.selected);t.onselectionclick?.({nodes:n,event:e})}function o(e){Object.prototype.hasOwnProperty.call(S_,e.key)&&(e.preventDefault(),t.store.moveSelectedNodes(S_[e.key],e.shiftKey?4:1))}var s=li(),c=P(s),l=e=>{var s=Nv();let c;Mv(N(s),{width:`100%`,height:`100%`,x:0,y:0}),D(s),zi(s,(e,t)=>uv?.(e,t),()=>({disabled:!1,store:t.store,onDrag:(e,n,r,i)=>{t.onnodedrag?.({event:e,targetNode:null,nodes:i})},onDragStart:(e,n,r,i)=>{t.onnodedragstart?.({event:e,targetNode:null,nodes:i})},onDragStop:(e,n,r,i)=>{t.onnodedragstop?.({event:e,targetNode:null,nodes:i})}})),Ma(s,e=>M(n,e),()=>R(n)),L((e,n)=>{K(s,1,Ui([`svelte-flow__selection-wrapper`,t.store.noPanClass]),`svelte-sf2y5e`),q(s,`role`,t.store.disableKeyboardA11y?void 0:`button`),q(s,`tabindex`,t.store.disableKeyboardA11y?void 0:-1),c=Xi(s,``,c,{width:e,height:n,transform:`translate(${R(r).x??``}px, ${R(r).y??``}px)`})},[()=>x_(R(r).width),()=>x_(R(r).height)]),B(`contextmenu`,s,i),B(`click`,s,a),B(`keydown`,s,function(...e){(t.store.disableKeyboardA11y?void 0:o)?.apply(this,e)}),H(e,s)},u=A(()=>t.store.selectionRectMode===`nodes`&&R(r)&&ih(R(r).x)&&ih(R(r).y));W(c,e=>{R(u)&&e(l)}),H(e,s),k()}Qr([`contextmenu`,`click`,`keydown`]);function Fv(e){switch(e){case`none`:return 0;case`ctrl`:return 8;case`shift`:return 4;case`alt`:return 2;case`meta`:return 1}}function Iv(e,t){let{enabled:n=!0,trigger:r,type:i=`keydown`}=t;function a(t){let n=Array.isArray(r)?r:[r],i=[t.metaKey,t.altKey,t.shiftKey,t.ctrlKey].reduce((e,t,n)=>t?e|1<<n:e,0);for(let r of n){let n={preventDefault:!1,enabled:!0,...r},{modifier:a,key:o,code:s,callback:c,preventDefault:l,enabled:u}=n;if(!o&&!s&&console.warn("[svelte-put/shortcut] Trigger should have either `key` or `code`, a trigger missing both was detected! Check your configuration"),u&&(o||s)){if(s&&t.code!==s||o&&t.key!==o)continue;if(a===null||a===!1){if(i!==0)continue}else if(a!==void 0&&a?.[0]?.length>0){let e=Array.isArray(a)?a:[a],t=!1;for(let n of e)if((Array.isArray(n)?n:[n]).reduce((e,t)=>e|Fv(t),0)===i){t=!0;break}if(!t)continue}l&&t.preventDefault();let r={node:e,trigger:n,originalEvent:t};e.dispatchEvent(new CustomEvent(`shortcut`,{detail:r})),c?.(r)}}}let o;return n&&(o=Zr(e,i,a)),{update:t=>{let{enabled:s=!0,type:c=`keydown`}=t;n&&(!s||i!==c)?o?.():!n&&s&&(o=Zr(e,c,a)),n=s,i=c,r=t.trigger},destroy:()=>{o?.()}}}function Lv(){let e=A(Z_),t=t=>{let n=y_(t)?t:R(e).nodeLookup.get(t.id),r=n.parentId?_h(n.position,n.measured,n.parentId,R(e).nodeLookup,R(e).nodeOrigin):n.position;return Qm({...n,position:r,width:n.measured?.width??n.width,height:n.measured?.height??n.height})};function n(t,n,r={replace:!1}){R(e).nodes=Pr(()=>R(e).nodes).map(e=>{if(e.id===t){let t=typeof n==`function`?n(e):n;return r?.replace&&y_(t)?t:{...e,...t}}return e})}function r(t,n,r={replace:!1}){R(e).edges=Pr(()=>R(e).edges).map(e=>{if(e.id===t){let t=typeof n==`function`?n(e):n;return r.replace&&b_(t)?t:{...e,...t}}return e})}let i=t=>R(e).nodeLookup.get(t);return{zoomIn:R(e).zoomIn,zoomOut:R(e).zoomOut,getInternalNode:i,getNode:e=>i(e)?.internals.userNode,getNodes:t=>t===void 0?R(e).nodes:Rv(R(e).nodeLookup,t),getEdge:t=>R(e).edgeLookup.get(t),getEdges:t=>t===void 0?R(e).edges:Rv(R(e).edgeLookup,t),setZoom:async(t,n)=>{let r=R(e).panZoom;return r?r.scaleTo(t,n):!1},getZoom:()=>R(e).viewport.zoom,setViewport:async(t,n)=>{let r=R(e).viewport;return R(e).panZoom?(await R(e).panZoom.setViewport({x:t.x??r.x,y:t.y??r.y,zoom:t.zoom??r.zoom},n),!0):!1},getViewport:()=>$e(R(e).viewport),setCenter:async(t,n,r)=>R(e).setCenter(t,n,r),fitView:t=>R(e).fitView(t),fitBounds:async(t,n)=>{if(!R(e).panZoom)return!1;let r=fh(t,R(e).width,R(e).height,R(e).minZoom,R(e).maxZoom,n?.padding??.1);return await R(e).panZoom.setViewport(r,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},getIntersectingNodes:(n,r=!0,i)=>{let a=rh(n),o=a?n:t(n);return o?(i||R(e).nodes).filter(t=>{let i=R(e).nodeLookup.get(t.id);if(!i||!a&&t.id===n.id)return!1;let s=Qm(i),c=nh(s,o);return r&&c>0||c>=s.width*s.height||c>=o.width*o.height}):[]},isNodeIntersecting:(e,n,r=!0)=>{let i=rh(e)?e:t(e);if(!i)return!1;let a=nh(i,n);return r&&a>0||a>=n.width*n.height||a>=i.width*i.height},deleteElements:async({nodes:t=[],edges:n=[]})=>{let{nodes:r,edges:i}=await Um({nodesToRemove:t,edgesToRemove:n,nodes:R(e).nodes,edges:R(e).edges,onBeforeDelete:R(e).onbeforedelete});return r&&(R(e).nodes=Pr(()=>R(e).nodes).filter(e=>!r.some(({id:t})=>t===e.id))),i&&(R(e).edges=Pr(()=>R(e).edges).filter(e=>!i.some(({id:t})=>t===e.id))),(r.length>0||i.length>0)&&R(e).ondelete?.({nodes:r,edges:i}),{deletedNodes:r,deletedEdges:i}},screenToFlowPosition:(t,n={snapToGrid:!0})=>{if(!R(e).domNode)return t;let r=n.snapToGrid?R(e).snapGrid:!1,{x:i,y:a,zoom:o}=R(e).viewport,{x:s,y:c}=R(e).domNode.getBoundingClientRect();return sh({x:t.x-s,y:t.y-c},[i,a,o],r!==null,r||[1,1])},flowToScreenPosition:t=>{if(!R(e).domNode)return t;let{x:n,y:r,zoom:i}=R(e).viewport,{x:a,y:o}=R(e).domNode.getBoundingClientRect(),s=ch(t,[n,r,i]);return{x:s.x+a,y:s.y+o}},toObject:()=>structuredClone({nodes:[...R(e).nodes],edges:[...R(e).edges],viewport:{...R(e).viewport}}),updateNode:n,updateNodeData:(t,r,i)=>{let a=R(e).nodeLookup.get(t)?.internals.userNode;if(!a)return;let o=typeof r==`function`?r(a):r;n(t,e=>({...e,data:i?.replace?o:{...e.data,...o}}))},updateEdge:r,getNodesBounds:t=>Im(t,{nodeLookup:R(e).nodeLookup,nodeOrigin:R(e).nodeOrigin}),getHandleConnections:({type:t,id:n,nodeId:r})=>Array.from(R(e).connectionLookup.get(`${r}-${t}-${n??null}`)?.values()??[])}}function Rv(e,t){let n=[];for(let r of t){let t=e.get(r);if(t){let e=`internals`in t?t.internals?.userNode:t;n.push(e)}}return n}function zv(e,t){O(t,!0);let n=Y(t,`store`,15),r=Y(t,`selectionKey`,3,`Shift`),i=Y(t,`multiSelectionKey`,19,()=>ph()?`Meta`:`Control`),a=Y(t,`deleteKey`,3,`Backspace`),o=Y(t,`panActivationKey`,3,` `),s=Y(t,`zoomActivationKey`,19,()=>ph()?`Meta`:`Control`),{deleteElements:c}=Lv();function l(e){return typeof e==`object`&&!!e}function u(e){return l(e)&&e.modifier||[]}function d(e){return e==null?``:l(e)?e.key:e}function f(e,t){return(Array.isArray(e)?e:[e]).map(e=>{let n=d(e);return{key:n,modifier:u(e),enabled:n!==null,callback:t}})}function p(){n(n().selectionRect=null,!0),n(n().selectionKeyPressed=!1,!0),n(n().multiselectionKeyPressed=!1,!0),n(n().deleteKeyPressed=!1,!0),n(n().panActivationKeyPressed=!1,!0),n(n().zoomActivationKeyPressed=!1,!0)}function m(){let e=n().nodes.filter(e=>e.selected),t=n().edges.filter(e=>e.selected);c({nodes:e,edges:t})}z(`blur`,_n,p),z(`contextmenu`,_n,p),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!0,!0)),type:`keydown`})),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(r(),()=>n(n().selectionKeyPressed=!1,!0)),type:`keyup`})),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(i(),()=>{n(n().multiselectionKeyPressed=!0,!0)}),type:`keydown`})),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(i(),()=>n(n().multiselectionKeyPressed=!1,!0)),type:`keyup`})),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(a(),e=>{!(e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)&&!Eh(e.originalEvent)&&(n(n().deleteKeyPressed=!0,!0),m())}),type:`keydown`})),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(a(),()=>n(n().deleteKeyPressed=!1,!0)),type:`keyup`})),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(o(),()=>n(n().panActivationKeyPressed=!0,!0)),type:`keydown`})),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(o(),()=>n(n().panActivationKeyPressed=!1,!0)),type:`keyup`})),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(s(),()=>n(n().zoomActivationKeyPressed=!0,!0)),type:`keydown`})),zi(_n,(e,t)=>Iv?.(e,t),()=>({trigger:f(s(),()=>n(n().zoomActivationKeyPressed=!1,!0)),type:`keyup`})),k()}var Bv=si(`<path fill="none" class="svelte-flow__connection-path"></path>`),Vv=si(`<svg class="svelte-flow__connectionline"><g><!></g></svg>`);function Hv(e,t){O(t,!0);let n=A(()=>{if(!t.store.connection.inProgress)return``;let e={sourceX:t.store.connection.from.x,sourceY:t.store.connection.from.y,sourcePosition:t.store.connection.fromPosition,targetX:t.store.connection.to.x,targetY:t.store.connection.to.y,targetPosition:t.store.connection.toPosition};switch(t.type){case Om.Bezier:{let[t]=Nh(e);return t}case Om.Straight:{let[t]=Bh(e);return t}case Om.Step:case Om.SmoothStep:{let[n]=Kh({...e,borderRadius:t.type===Om.Step?0:void 0});return n}}});var r=li(),i=P(r),a=e=>{var r=Vv(),i=N(r),a=N(i),o=e=>{var n=li();Li(P(n),()=>t.LineComponent,(e,t)=>{t(e,{})}),H(e,n)},s=e=>{var r=Bv();L(()=>{q(r,`d`,R(n)),Xi(r,t.style)}),H(e,r)};W(a,e=>{t.LineComponent?e(o):e(s,-1)}),D(i),D(r),L(e=>{q(r,`width`,t.store.width),q(r,`height`,t.store.height),Xi(r,t.containerStyle),K(i,0,e)},[()=>Ui([`svelte-flow__connection`,xh(t.store.connection.isValid)])]),H(e,r)};W(i,e=>{t.store.connection.inProgress&&e(a)}),H(e,r),k()}var Uv=new Set([`$$slots`,`$$events`,`$$legacy`,`position`,`style`,`class`,`children`]),Wv=V(`<div><!></div>`);function Gv(e,t){O(t,!0);let n=Y(t,`position`,3,`top-right`),r=J(t,Uv),i=A(()=>`${n()}`.split(`-`));var a=Wv();va(a,e=>({class:e,style:t.style,...r}),[()=>[`svelte-flow__panel`,t.class,...R(i)]]),Ii(N(a),()=>t.children??f),D(a),H(e,a),k()}var Kv=V(`<a target="_blank" rel="noopener noreferrer" aria-label="Svelte Flow attribution">Svelte Flow</a>`);function qv(e,t){O(t,!0);let n=Y(t,`position`,3,`bottom-right`),r=`https://svelteflow.dev?utm_source=attribution`;var i=li(),a=P(i),o=e=>{{let t=A(()=>`Please only hide this attribution when you are subscribed to Svelte Flow Pro: ${r}`);Gv(e,{get position(){return n()},class:`svelte-flow__attribution`,get"data-message"(){return R(t)},children:(e,t)=>{var n=Kv();L(()=>q(n,`href`,r)),H(e,n)},$$slots:{default:!0}})}};W(a,e=>{t.proOptions?.hideAttribution||e(o)}),H(e,i),k()}var Jv=V(`<div><!></div>`);function Yv(e,t){O(t,!0);let n=Y(t,`domNode`,15),r=Y(t,`clientWidth`,15),i=Y(t,`clientHeight`,15),a=A(()=>t.rest.class),o=A(()=>y(t.rest,`id.class.nodeTypes.edgeTypes.colorMode.isValidConnection.onmove.onmovestart.onmoveend.onflowerror.ondelete.onbeforedelete.onbeforeconnect.onconnect.onconnectstart.onconnectend.onbeforereconnect.onreconnect.onreconnectstart.onreconnectend.onclickconnectstart.onclickconnectend.oninit.onselectionchange.onselectiondragstart.onselectiondrag.onselectiondragstop.onselectionstart.onselectionend.clickConnect.fitView.fitViewOptions.nodeOrigin.nodeDragThreshold.connectionDragThreshold.minZoom.maxZoom.initialViewport.connectionRadius.connectionMode.selectionMode.selectNodesOnDrag.snapGrid.defaultMarkerColor.translateExtent.nodeExtent.onlyRenderVisibleElements.autoPanOnConnect.autoPanOnNodeDrag.colorModeSSR.defaultEdgeOptions.elevateNodesOnSelect.elevateEdgesOnSelect.nodesDraggable.autoPanOnNodeFocus.nodesConnectable.elementsSelectable.nodesFocusable.edgesFocusable.disableKeyboardA11y.noDragClass.noPanClass.noWheelClass.ariaLabelConfig.autoPanSpeed.panOnScrollSpeed.zIndexMode.autoPanOnSelection`.split(`.`)));function s(e){e.currentTarget.scrollTo({top:0,left:0,behavior:`auto`}),t.rest.onscroll&&t.rest.onscroll(e)}var c=Jv();va(c,(e,n)=>({class:[`svelte-flow`,`svelte-flow__container`,t.colorMode,R(a)],"data-testid":`svelte-flow__wrapper`,role:`application`,onscroll:s,...R(o),[oa]:{width:e,height:n}}),[()=>x_(t.width),()=>x_(t.height)],void 0,void 0,`svelte-mkap6j`),Ii(N(c),()=>t.children??f),D(c),Ma(c,e=>n(e),()=>n()),Aa(c,`clientHeight`,i),Aa(c,`clientWidth`,r),H(e,c),k()}var Xv=new Set(`$$slots.$$events.$$legacy.width.height.proOptions.selectionKey.deleteKey.panActivationKey.multiSelectionKey.zoomActivationKey.paneClickDistance.nodeClickDistance.onmovestart.onmoveend.onmove.oninit.onnodeclick.onnodecontextmenu.onnodedrag.onnodedragstart.onnodedragstop.onnodepointerenter.onnodepointermove.onnodepointerleave.onselectionclick.onselectioncontextmenu.onselectionstart.onselectionend.onedgeclick.onedgecontextmenu.onedgepointerenter.onedgepointerleave.onpaneclick.onpanecontextmenu.panOnScrollMode.preventScrolling.zoomOnScroll.zoomOnDoubleClick.zoomOnPinch.panOnScroll.panOnScrollSpeed.panOnDrag.selectionOnDrag.autoPanOnSelection.connectionLineComponent.connectionLineStyle.connectionLineContainerStyle.connectionLineType.attributionPosition.children.nodes.edges.viewport`.split(`.`)),Zv=V(`<div class="svelte-flow__viewport-back svelte-flow__container"></div> <!> <div class="svelte-flow__edge-labels svelte-flow__container"></div> <!> <!> <!> <div class="svelte-flow__viewport-front svelte-flow__container"></div>`,1),Qv=V(`<!> <!>`,1),$v=V(`<!> <!> <!> <!> <!>`,1);function ey(e,t){O(t,!0);let n=Y(t,`paneClickDistance`,3,1),r=Y(t,`nodeClickDistance`,3,1),i=Y(t,`panOnScrollMode`,19,()=>Tm.Free),a=Y(t,`preventScrolling`,3,!0),o=Y(t,`zoomOnScroll`,3,!0),s=Y(t,`zoomOnDoubleClick`,3,!0),c=Y(t,`zoomOnPinch`,3,!0),l=Y(t,`panOnScroll`,3,!1),u=Y(t,`panOnScrollSpeed`,3,.5),d=Y(t,`panOnDrag`,3,!0),p=Y(t,`selectionOnDrag`,3,!1),m=Y(t,`autoPanOnSelection`,3,!0),h=Y(t,`connectionLineType`,19,()=>Om.Bezier),g=Y(t,`nodes`,31,()=>mn([])),_=Y(t,`edges`,31,()=>mn([])),v=Y(t,`viewport`,15,void 0),y=J(t,Xv),b=$_({props:y,width:t.width,height:t.height,get nodes(){return g()},set nodes(e){g(e)},get edges(){return _()},set edges(e){_(e)},get viewport(){return v()},set viewport(e){v(e)}}),x=at(Q_);x&&x.setStore&&x.setStore(b),ot(Q_,{provider:!1,getStore(){return b}}),Ln(()=>{let e={nodes:b.selectedNodes,edges:b.selectedEdges};Pr(()=>t.onselectionchange)?.(e);for(let t of b.selectionChangeHandlers.values())t(e)}),Ha(()=>{x?.setStore($_({width:0,height:0,nodes:[],edges:[],props:{}}))}),Yv(e,{get colorMode(){return b.colorMode},get width(){return t.width},get height(){return t.height},get rest(){return y},get domNode(){return b.domNode},set domNode(e){b.domNode=e},get clientWidth(){return b.width},set clientWidth(e){b.width=e},get clientHeight(){return b.height},set clientHeight(e){b.height=e},children:(e,g)=>{var _=$v(),v=P(_);zv(v,{get selectionKey(){return t.selectionKey},get deleteKey(){return t.deleteKey},get panActivationKey(){return t.panActivationKey},get multiSelectionKey(){return t.multiSelectionKey},get zoomActivationKey(){return t.zoomActivationKey},get store(){return b},set store(e){b=e}});var y=I(v,2);nv(y,{get panOnScrollMode(){return i()},get preventScrolling(){return a()},get zoomOnScroll(){return o()},get zoomOnDoubleClick(){return s()},get zoomOnPinch(){return c()},get panOnScroll(){return l()},get panOnScrollSpeed(){return u()},get panOnDrag(){return d()},get paneClickDistance(){return n()},get selectionOnDrag(){return p()},get onmovestart(){return t.onmovestart},get onmove(){return t.onmove},get onmoveend(){return t.onmoveend},get oninit(){return t.oninit},get store(){return b},set store(e){b=e},children:(e,i)=>{sv(e,{get onpaneclick(){return t.onpaneclick},get onpanecontextmenu(){return t.onpanecontextmenu},get onselectionstart(){return t.onselectionstart},get onselectionend(){return t.onselectionend},get panOnDrag(){return d()},get paneClickDistance(){return n()},get selectionOnDrag(){return p()},get autoPanOnSelection(){return m()},get store(){return b},set store(e){b=e},children:(e,n)=>{var i=Qv(),a=P(i);lv(a,{get store(){return b},set store(e){b=e},children:(e,n)=>{var i=Zv(),a=I(P(i),2);Av(a,{get onedgeclick(){return t.onedgeclick},get onedgecontextmenu(){return t.onedgecontextmenu},get onedgepointerenter(){return t.onedgepointerenter},get onedgepointerleave(){return t.onedgepointerleave},get store(){return b},set store(e){b=e}});var o=I(a,4);Hv(o,{get type(){return h()},get LineComponent(){return t.connectionLineComponent},get containerStyle(){return t.connectionLineContainerStyle},get style(){return t.connectionLineStyle},get store(){return b},set store(e){b=e}});var s=I(o,2);bv(s,{get nodeClickDistance(){return r()},get onnodeclick(){return t.onnodeclick},get onnodecontextmenu(){return t.onnodecontextmenu},get onnodepointerenter(){return t.onnodepointerenter},get onnodepointermove(){return t.onnodepointermove},get onnodepointerleave(){return t.onnodepointerleave},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get store(){return b},set store(e){b=e}}),Pv(I(s,2),{get onselectionclick(){return t.onselectionclick},get onselectioncontextmenu(){return t.onselectioncontextmenu},get onnodedrag(){return t.onnodedrag},get onnodedragstart(){return t.onnodedragstart},get onnodedragstop(){return t.onnodedragstop},get store(){return b},set store(e){b=e}}),Me(2),H(e,i)},$$slots:{default:!0}});var o=I(a,2);{let e=A(()=>!!(b.selectionRect&&b.selectionRectMode===`user`)),t=A(()=>b.selectionRect?.width),n=A(()=>b.selectionRect?.height),r=A(()=>b.selectionRect?.x),i=A(()=>b.selectionRect?.y);Mv(o,{get isVisible(){return R(e)},get width(){return R(t)},get height(){return R(n)},get x(){return R(r)},get y(){return R(i)}})}H(e,i)},$$slots:{default:!0}})},$$slots:{default:!0}});var x=I(y,2);qv(x,{get proOptions(){return t.proOptions},get position(){return t.attributionPosition}});var S=I(x,2);pv(S,{get store(){return b}}),Ii(I(S,2),()=>t.children??f),H(e,_)},$$slots:{default:!0}}),k()}function ty(e,t){O(t,!0);let n=j($_({props:{},nodes:[],edges:[]}));ot(Q_,{provider:!0,getStore(){return R(n)},setStore:e=>{M(n,e)}}),Ha(()=>{R(n).reset()});var r=li();Ii(P(r),()=>t.children??f),H(e,r),k()}var ny=new Set([`$$slots`,`$$events`,`$$legacy`,`target`,`children`]),ry=V(`<div><!></div>`);function iy(e,t){O(t,!0);let n=Y(t,`target`,3,`front`),r=J(t,ny);var i=ry();va(i,e=>({...r,[oa]:{display:e}}),[()=>v_().value?`none`:void 0]),Ii(N(i),()=>t.children??f),D(i),zi(i,(e,t)=>__?.(e,t),()=>`viewport-${n()}`),H(e,i),k()}var ay;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(ay||={});var oy=si(`<circle></circle>`);function sy(e,t){var n=oy();L(()=>{q(n,`cx`,t.radius),q(n,`cy`,t.radius),q(n,`r`,t.radius),K(n,0,Ui([`svelte-flow__background-pattern`,`dots`,t.class]))}),H(e,n)}var cy=si(`<path></path>`);function ly(e,t){O(t,!0);var n=cy();L(()=>{q(n,`stroke-width`,t.lineWidth),q(n,`d`,`M${t.dimensions[0]/2} 0 V${t.dimensions[1]} M0 ${t.dimensions[1]/2} H${t.dimensions[0]}`),K(n,0,Ui([`svelte-flow__background-pattern`,t.variant,t.class]))}),H(e,n),k()}var uy={[ay.Dots]:1,[ay.Lines]:1,[ay.Cross]:6},dy=si(`<svg data-testid="svelte-flow__background"><pattern patternUnits="userSpaceOnUse"><!></pattern><rect x="0" y="0" width="100%" height="100%"></rect></svg>`);function fy(e,t){O(t,!0);let n=Y(t,`variant`,19,()=>ay.Dots),r=Y(t,`gap`,3,20),i=Y(t,`lineWidth`,3,1),a=A(Z_),o=A(()=>n()===ay.Dots),s=A(()=>n()===ay.Cross),c=A(()=>Array.isArray(r())?r():[r(),r()]),l=A(()=>`background-pattern-${R(a).flowId}-${t.id??``}`),u=A(()=>[R(c)[0]*R(a).viewport.zoom||1,R(c)[1]*R(a).viewport.zoom||1]),d=A(()=>(t.size??uy[n()])*R(a).viewport.zoom),f=A(()=>R(s)?[R(d),R(d)]:R(u)),p=A(()=>R(o)?[R(d)/2,R(d)/2]:[R(f)[0]/2,R(f)[1]/2]);var m=dy();let h;var g=N(m),_=N(g),v=e=>{{let n=A(()=>R(d)/2);sy(e,{get radius(){return R(n)},get class(){return t.patternClass}})}},y=e=>{ly(e,{get dimensions(){return R(f)},get variant(){return n()},get lineWidth(){return i()},get class(){return t.patternClass}})};W(_,e=>{R(o)?e(v):e(y,-1)}),D(g);var b=I(g);D(m),L(()=>{K(m,0,Ui([`svelte-flow__background`,`svelte-flow__container`,t.class])),h=Xi(m,``,h,{"--xy-background-color-props":t.bgColor,"--xy-background-pattern-color-props":t.patternColor}),q(g,`id`,R(l)),q(g,`x`,R(a).viewport.x%R(u)[0]),q(g,`y`,R(a).viewport.y%R(u)[1]),q(g,`width`,R(u)[0]),q(g,`height`,R(u)[1]),q(g,`patternTransform`,`translate(-${R(p)[0]},-${R(p)[1]})`),q(b,`fill`,`url(#${R(l)})`)}),H(e,m),k()}function py(e){let t=A(Z_),n=A(()=>R(t).nodeLookup),r=A(()=>R(t).nodes),i=A(()=>(R(r),R(n).get(e)));return{get current(){return R(i)}}}var my=si(`<rect></rect>`);function hy(e,t){O(t,!0);let n=Y(t,`borderRadius`,3,5),r=Y(t,`strokeWidth`,3,2),i=A(()=>py(t.id)),a=A(()=>{if(!R(i).current)return{width:0,height:0,x:0,y:0};let{width:e,height:n}=hh(R(i).current);return{width:t.width??e,height:t.height??n,x:t.x??R(i).current.internals.positionAbsolute.x,y:t.y??R(i).current.internals.positionAbsolute.y}}),o=A(()=>R(a).width),s=A(()=>R(a).height),c=A(()=>R(a).x),l=A(()=>R(a).y);var u=li(),d=P(u),f=e=>{let i=A(()=>t.nodeComponent);var a=li();Li(P(a),()=>R(i),(e,i)=>{i(e,{get id(){return t.id},get x(){return R(c)},get y(){return R(l)},get width(){return R(o)},get height(){return R(s)},get borderRadius(){return n()},get class(){return t.class},get color(){return t.color},get shapeRendering(){return t.shapeRendering},get strokeColor(){return t.strokeColor},get strokeWidth(){return r()},get selected(){return t.selected}})}),H(e,a)},p=e=>{var i=my();let a,u;L(()=>{a=K(i,0,Ui([`svelte-flow__minimap-node`,t.class]),null,a,{selected:t.selected}),q(i,`x`,R(c)),q(i,`y`,R(l)),q(i,`rx`,n()),q(i,`ry`,n()),q(i,`width`,R(o)),q(i,`height`,R(s)),q(i,`shape-rendering`,t.shapeRendering),u=Xi(i,``,u,{fill:t.color,stroke:t.strokeColor,"stroke-width":r()})}),H(e,i)};W(d,e=>{t.nodeComponent?e(f):e(p,-1)}),H(e,u),k()}function gy(e,t){let n=Fg({domNode:e,panZoom:t.panZoom,getTransform:()=>{let{viewport:e}=t.store;return[e.x,e.y,e.zoom]},getViewScale:t.getViewScale});n.update({translateExtent:t.translateExtent,width:t.width,height:t.height,inversePan:t.inversePan,zoomStep:t.zoomStep,pannable:t.pannable,zoomable:t.zoomable});function r(e){n.update({translateExtent:e.translateExtent,width:e.width,height:e.height,inversePan:e.inversePan,zoomStep:e.zoomStep,pannable:e.pannable,zoomable:e.zoomable})}return{update:r,destroy(){n.destroy()}}}var _y=e=>e instanceof Function?e:()=>e,vy=new Set([`$$slots`,`$$events`,`$$legacy`,`position`,`ariaLabel`,`nodeStrokeColor`,`nodeColor`,`nodeClass`,`nodeBorderRadius`,`nodeStrokeWidth`,`nodeComponent`,`bgColor`,`maskColor`,`maskStrokeColor`,`maskStrokeWidth`,`width`,`height`,`pannable`,`zoomable`,`inversePan`,`zoomStep`,`class`]),yy=si(`<title> </title>`),by=si(`<svg class="svelte-flow__minimap-svg" role="img"><!><!><path class="svelte-flow__minimap-mask" fill-rule="evenodd" pointer-events="none"></path></svg>`),xy=V(`<svelte-css-wrapper style="display: contents"><!></svelte-css-wrapper>`,1);function Sy(e,t){O(t,!0);let n=Y(t,`position`,3,`bottom-right`),r=Y(t,`nodeStrokeColor`,3,`transparent`),i=Y(t,`nodeClass`,3,``),a=Y(t,`nodeBorderRadius`,3,5),o=Y(t,`nodeStrokeWidth`,3,2),s=Y(t,`width`,3,200),c=Y(t,`height`,3,150),l=Y(t,`pannable`,3,!0),u=Y(t,`zoomable`,3,!0),d=J(t,vy),f=A(Z_),p=A(()=>R(f).ariaLabelConfig),m=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`,h=A(()=>`svelte-flow__minimap-desc-${R(f).flowId}`),g=A(()=>({x:-R(f).viewport.x/R(f).viewport.zoom,y:-R(f).viewport.y/R(f).viewport.zoom,width:R(f).width/R(f).viewport.zoom,height:R(f).height/R(f).viewport.zoom})),_=A(()=>R(f).nodes.some(e=>!e.hidden)),v=A(()=>R(_)?eh(Lm(R(f).nodeLookup,{filter:e=>!e.hidden}),R(g)):R(g)),y=A(()=>R(v).width/s()),b=A(()=>R(v).height/c()),x=A(()=>Math.max(R(y),R(b))),S=A(()=>R(x)*s()),C=A(()=>R(x)*c()),w=A(()=>5*R(x)),T=A(()=>R(v).x-(R(S)-R(v).width)/2-R(w)),ee=A(()=>R(v).y-(R(C)-R(v).height)/2-R(w)),te=A(()=>R(S)+R(w)*2),E=A(()=>R(C)+R(w)*2),ne=()=>R(x);var re=xy(),ie=P(re);{let e=A(()=>[`svelte-flow__minimap`,t.class]);Ei(ie,()=>({"--xy-minimap-background-color-props":t.bgColor})),Gv(ie.lastChild,Ba({get position(){return n()},get class(){return R(e)},"data-testid":`svelte-flow__minimap`},()=>d,{children:(e,n)=>{var d=li(),_=P(d),v=e=>{var n=by();let d;var _=N(n),v=e=>{var n=yy(),r=F(n,!0);L(()=>{q(n,`id`,R(h)),U(r,t.ariaLabel??R(p)[`minimap.ariaLabel`])}),H(e,n)};W(_,e=>{(t.ariaLabel??R(p)[`minimap.ariaLabel`])&&e(v)});var y=I(_);G(y,17,()=>R(f).nodes,e=>e.id,(e,n)=>{let s=A(()=>R(f).nodeLookup.get(R(n).id));var c=li(),l=P(c),u=e=>{{let c=A(()=>t.nodeColor===void 0?void 0:_y(t.nodeColor)(R(n))),l=A(()=>_y(r())(R(n))),u=A(()=>_y(i())(R(n)));hy(e,{get id(){return R(s).id},get selected(){return R(s).selected},get nodeComponent(){return t.nodeComponent},get color(){return R(c)},get borderRadius(){return a()},get strokeColor(){return R(l)},get strokeWidth(){return o()},get shapeRendering(){return m},get class(){return R(u)}})}},d=A(()=>R(s)&&gh(R(s))&&!R(s).hidden);W(l,e=>{R(d)&&e(u)}),H(e,c)});var b=I(y);D(n),zi(n,(e,t)=>gy?.(e,t),()=>({store:R(f),panZoom:R(f).panZoom,getViewScale:ne,translateExtent:R(f).translateExtent,width:R(f).width,height:R(f).height,inversePan:t.inversePan,zoomStep:t.zoomStep,pannable:l(),zoomable:u()})),L(()=>{q(n,`width`,s()),q(n,`height`,c()),q(n,`viewBox`,`${R(T)??``} ${R(ee)??``} ${R(te)??``} ${R(E)??``}`),q(n,`aria-labelledby`,R(h)),d=Xi(n,``,d,{"--xy-minimap-mask-background-color-props":t.maskColor,"--xy-minimap-mask-stroke-color-props":t.maskStrokeColor,"--xy-minimap-mask-stroke-width-props":t.maskStrokeWidth?t.maskStrokeWidth*R(x):void 0}),q(b,`d`,`M${R(T)-R(w)},${R(ee)-R(w)}h${R(te)+R(w)*2}v${R(E)+R(w)*2}h${-R(te)-R(w)*2}z
6
6
  M${R(g).x??``},${R(g).y??``}h${R(g).width??``}v${R(g).height??``}h${-R(g).width}z`)}),H(e,n)};W(_,e=>{R(f).panZoom&&e(v)}),H(e,d)},$$slots:{default:!0}})),D(ie)}H(e,re),k()}var Cy=new Set([`$$slots`,`$$events`,`$$legacy`,`nodeId`,`position`,`align`,`offset`,`isVisible`,`children`]),wy=V(`<div><!></div>`);function Ty(e,t){O(t,!0);let n=Y(t,`position`,19,()=>Am.Top),r=Y(t,`align`,3,`center`),i=Y(t,`offset`,3,10),a=J(t,Cy),o=Z_(),{getNodesBounds:s}=Lv(),c=e_(),l=A(()=>(o.nodes,(Array.isArray(t.nodeId)?t.nodeId:[t.nodeId??c]).reduce((e,t)=>{if(!t)throw Error(`Either pass a nodeId or use within a Custom Node component`);let n=o.nodeLookup.get(t);return n&&e.push(n),e},[]))),u=A(()=>{let e=s(R(l));return e?eg(e,o.viewport,n(),i(),r()):``}),d=A(()=>R(l).length===0?1:Math.max(...R(l).map(e=>(e.internals.z||5)+1))),p=A(()=>o.nodes.filter(e=>e.selected).length),m=A(()=>typeof t.isVisible==`boolean`?t.isVisible:R(l).length===1&&R(l)[0].selected&&R(p)===1);var h=li(),g=P(h),_=e=>{var n=wy();va(n,(e,t)=>({class:`svelte-flow__node-toolbar`,"data-id":e,...a,[oa]:{display:t,position:`absolute`,transform:R(u),"z-index":R(d)}}),[()=>R(l).reduce((e,t)=>`${e}${t.id} `,``).trim(),()=>v_().value?`none`:void 0]),Ii(N(n),()=>t.children??f),D(n),zi(n,(e,t)=>__?.(e,t),()=>`root`),H(e,n)};W(g,e=>{o.domNode&&R(m)&&R(l)&&e(_)}),H(e,h),k()}function Ey(){let e=A(Z_);return{get current(){return R(e).viewport},set current(t){R(e).viewport=t},update(t){R(e).viewport=t(R(e).viewport)},set(t){R(e).viewport=t}}}var Dy=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oy(e,t){let n=J(t,Dy),r={name:`plug`,size:24,node:[[`path`,{d:`M12 22v-5`}],[`path`,{d:`M15 8V2`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`}],[`path`,{d:`M9 8V2`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var ky=new class{#e=j(!1);get open(){return R(this.#e)}set open(e){M(this.#e,e,!0)}#t=j(mn({}));#n=j(!1);#r=new Set;#i=!1;#a=``;#o=A(()=>[...Q.status?.messages??[]].reverse().map(e=>({...e,answered:R(this.#t)[e.id]??e.answered??null})).filter(e=>!R(this.#n)||e.kind===`question`&&!e.answered));get messages(){return R(this.#o)}set messages(e){M(this.#o,e)}#s=A(()=>this.messages.find(e=>e.kind===`question`&&e.choices?.length&&!e.answered));get question(){return R(this.#s)}set question(e){M(this.#s,e)}follow(){if(Q.status){for(let e of this.messages)this.#r.has(e.id)||(this.#r.add(e.id),this.#i&&(e.kind===`question`&&!e.answered?this.open=!0:e.from===`koppler`&&!e.answered?(this.open=!0,this.#a=e.id):$.show(`Agent: ${e.title}`,e.kind===`failure`?`warning`:`message`,{label:`Open`,run:()=>this.open=!0})));this.#i=!0,this.#a&&this.messages.find(e=>e.id===this.#a)?.answered&&(this.#a=``,this.question||(this.open=!1)),R(this.#n)&&!(Q.status.messages??[]).some(e=>!(e.kind===`question`&&!e.answered))&&M(this.#n,!1)}}async answer(e,t){let n=e.choices?.find(e=>e.id===t.choice),r=n?`${n.label}${t.text?`. ${t.text}`:``}`:t.text??``,i=await xo(`prompt`,{tag:`koppler-reply`,text:`Answer to your question "${e.title}"${e.run?` (run ${e.run})`:``}: ${r}`,data:{message:e.id,...t}});i?.ok?(R(this.#t)[e.id]={at:new Date().toISOString(),...t,via:`canvas`},(Q.status?.agent?.state??`none`)===`none`&&$.show(`Answer saved. The agent gets it when one connects.`)):$.show(i?.status===409?`That question was already answered.`:`Could not send the answer.`,`warning`)}async dismiss(e){let t=await xo(`message-dismiss`,{id:e.id});!t?.ok&&t?.status!==409?$.show(`Could not dismiss it.`,`warning`):R(this.#t)[e.id]={at:new Date().toISOString(),via:`dismissed`}}get waiting(){return[...Q.status?.waiting??[]].reverse().filter(e=>!R(this.#c).includes(e.key))}#c=j(mn([]));async drop(e){let t=await xo(`prompt-drop`,{key:e});t?.ok||t?.status===409?M(this.#c,[...R(this.#c),e],!0):$.show(`Could not drop it.`,`warning`)}async clear(){(await xo(`messages-clear`,{}))?.ok?(M(this.#n,!0),this.question&&$.show(`Cleared. The open question stays.`)):$.show(`Could not clear the messages.`,`warning`)}},Ay=V(`<button class="how svelte-ssy1qy" type="button" aria-label="How to connect an agent" title="How to connect an agent" aria-haspopup="dialog"><!></button>`),jy=V(`<button class="agent svelte-ssy1qy" type="button"><span class="dot svelte-ssy1qy" aria-hidden="true"></span><span class="words svelte-ssy1qy"> </span></button> <!> <div class="connect svelte-ssy1qy" popover="" role="dialog"><h2 class="svelte-ssy1qy">Connect an agent</h2> <p class="svelte-ssy1qy">Koppler starts and stops a confirmed run by itself. The agent is needed for what it cannot do alone: manual
@@ -23,7 +23,7 @@ PLAN the user confirmed on the canvas (do exactly this; check it first with kopp
23
23
  apps. Nothing else changes.</p> <div class="list svelte-cao9th"></div> <div class="acts svelte-cao9th"><button type="button" class="svelte-cao9th"> </button> <button class="go svelte-cao9th" type="button"> </button></div></dialog>`);function eC(e,t){O(t,!0);let n=[[`alias`,`Environment names`,`The repos name an environment differently from this stack.`],[`call`,`Who calls whom`,`Found by another app's address in the code. Becomes a cable you can plug.`],[`address`,`Deployed addresses`,`From each app's Terraform. Used to find the calls above, and what an app calls when the other one is not running here.`],[`url`,`Where each app runs on this Mac`,`From launch settings and config. The port Koppler starts it on.`]],r=j(void 0),i=j([]),a=j(!1),o=j(!1),s=new L_,c=(e=``)=>Z.nameOf(e),l=e=>!e.needs||s.has(e.needs),u=A(()=>R(i).filter(e=>s.has(e.id)&&l(e)).length);async function d({afterAdding:e=!1}={}){M(a,e,!0),$.show(`Looking through the repos…`);let t=await Co(`discover`);if(`error`in t)$.show(t.error,`warning`),e&&setTimeout(()=>{location.reload()},1500);else if(!t.findings.length)e?location.reload():$.show(`Nothing new found in the repos.`);else{M(i,t.findings),s.clear();for(let e of R(i))s.add(e.id);$.hide(),R(r)?.showModal()}}let f=()=>R(r)?.close(),p=async()=>{let e=R(i).filter(e=>s.has(e.id)&&l(e)).map(e=>e.id);if(!e.length){f();return}M(o,!0);let t=await Co(`discover-apply`,{ids:e});M(o,!1),`error`in t?$.show(t.error,`warning`):location.reload()};var m={open:d},h=$S(),g=N(h),_=F(g,!0),y=I(g,4);G(y,21,()=>n,([e,t,n])=>e,(e,t)=>{var n=A(()=>v(R(t),3));let r=()=>R(n)[0],a=()=>R(n)[1],o=()=>R(n)[2],u=A(()=>R(i).filter(e=>e.kind===r()));var d=li(),f=P(d),p=e=>{var t=QS(),n=N(t),i=N(n),d=F(I(i),!0);D(n);var f=I(n,2),p=F(f,!0);G(I(f,2),17,()=>R(u),e=>e.id,(e,t)=>{var n=ZS(),i=N(n);ma(i);var a=I(i,2),o=N(a),u=e=>{var n=JS(),r=I(P(n)),i=F(r,!0),a=F(I(r,2),!0);L(e=>{U(i,R(t).value),U(a,e)},[()=>(R(t).env??``).toUpperCase()]),H(e,n)},d=e=>{var n=YS(),r=P(n),i=F(r,!0),a=F(I(r,2),!0);L((e,t)=>{U(i,e),U(a,t)},[()=>c(R(t).app),()=>c(R(t).to)]),H(e,n)},f=e=>{var n=XS(),r=P(n),i=F(r,!0),a=I(r),o=F(I(a),!0);L((e,n)=>{U(i,e),U(a,` on ${n??``}: `),U(o,R(t).value)},[()=>c(R(t).app),()=>(R(t).env??``).toUpperCase()]),H(e,n)},p=e=>{var n=XS(),r=P(n),i=F(r,!0),a=F(I(r,2),!0);L(e=>{U(i,e),U(a,R(t).value)},[()=>c(R(t).app)]),H(e,n)};W(o,e=>{r()===`alias`?e(u):r()===`call`?e(d,1):r()===`address`?e(f,2):e(p,-1)});var m=I(o,2),h=F(m,!0);D(a),D(n),L((e,n)=>{ga(i,e),i.disabled=n,q(m,`title`,R(t).why),U(h,r()===`alias`||r()===`call`?R(t).why:`from ${R(t).why??``}`)},[()=>s.has(R(t).id)&&l(R(t)),()=>!l(R(t))]),B(`change`,i,e=>{e.currentTarget.checked?s.add(R(t).id):s.delete(R(t).id)}),H(e,n)}),D(t),L(()=>{U(i,`${a()??``} `),U(d,R(u).length),U(p,o())}),H(e,t)};W(f,e=>{R(u).length&&e(p)}),H(e,d)}),D(y);var b=I(y,2),x=N(b),S=F(x,!0),C=I(x,2),w=F(C,!0);return D(b),D(h),Ma(h,e=>M(r,e),()=>R(r)),L(e=>{U(_,R(a)?`Here is what Koppler found`:`What the repos say`),U(S,R(a)?`Skip`:`Cancel`),C.disabled=R(o),U(w,e)},[()=>R(u)?`Add ${String(R(u))} to the stack`:`Add nothing`]),z(`close`,h,()=>{R(a)&&location.reload()}),B(`click`,x,f),B(`click`,C,p),H(e,h),k(m)}Qr([`change`,`click`]);var tC=Z.nameOf,nC=(e,t,n)=>`${String(e)} ${e===1?t:n}`,rC=e=>e.to?`${e.from} to ${e.to}`:e.from,iC=e=>`tunnel:${e.host}:${String(e.original)}`,aC=new class{#e=j(null);get flow(){return R(this.#e)}set flow(e){M(this.#e,e)}#t=j(!1);get asked(){return R(this.#t)}set asked(e){M(this.#t,e,!0)}#n=A(()=>Z.cards.map(e=>e.id).filter(e=>Q.sent(e)));get sent(){return R(this.#n)}set sent(e){M(this.#n,e)}starting(e){return Q.sent(e)&&!!Q.status?.running?.includes(e)&&Q.up(e)===!1}#r=A(()=>{let e=this.sent,t=[];for(let n of e){let e=Q.steps(n),r=e.find(e=>e.state===`failed`);Q.up(n)===!1&&this.starting(n)?t.push({level:`warn`,id:n,down:!0,text:`${tC(n)} is starting`}):Q.up(n)===!1?t.push({level:`bad`,id:n,down:!0,text:`${tC(n)} is not running`}):r?t.push({level:`bad`,id:n,text:`${tC(n)}: ${r.label.toLowerCase()} failed`}):e.some(e=>e.state===`user`)&&t.push({level:`warn`,id:n,text:`${tC(n)} is waiting on you`})}for(let n of Z.plan){let r=n.apps.find(t=>e.includes(t));r&&Q.status?.ports?.[String(n.port)]===!1&&t.push({level:`bad`,id:r,text:`${n.what} tunnel is closed`})}for(let[n,r]of Object.entries(Ux.results)){let[i=``,a=``]=n.replace(/^node:/,``).split(`>`);r.state===`bad`&&e.includes(i)&&!t.some(e=>e.down&&(e.id===i||e.id===a))&&t.push({level:`bad`,id:i,text:`${tC(i)}${a?` to ${tC(a)}`:``}: ${(r.text??``).toLowerCase()}`})}return t});get items(){return R(this.#r)}set items(e){M(this.#r,e)}jobs(){return[...Z.cards.filter(({id:e})=>Z.app(e)?.serves).map(({id:e})=>({kind:`app`,key:`node:${e}`,id:e,from:tC(e),payload:{node:e}})),...Z.edges.map(({id:e,source:t,target:n})=>({kind:`cable`,key:e,id:t,from:tC(t),to:`local ${tC(n)}`,payload:{from:t,to:n}})),...Z.links.map(({from:e,tunnel:t})=>({kind:`tunnel`,key:`${e}>${iC(t)}`,id:e,from:tC(e),to:t.what,payload:{app:e,host:t.bind,port:t.port,original:t.original}}))]}result(e){return Ux.results[e.key]??{state:`busy`}}get busy(){return!!this.flow?.some(e=>this.result(e).state===`busy`)}async check(){let e=this.jobs();this.flow=e,this.asked=!1;let t=e=>Object.values(e.payload).find(e=>typeof e==`string`&&Z.apps.some(t=>t.id===e)&&!Q.sent(e));Ux.forget(e.map(e=>e.key));for(let n of e){let e=t(n);e&&(Ux.results[n.key]={state:`warn`,text:`Not started`,detail:`${tC(e)} is on the board but has not been started yet. Press Run to start it.`})}await Promise.all(e.filter(e=>!t(e)).map(e=>Ux.test(e,!0)))}async askToFix(){let e=(this.flow??[]).filter(e=>this.result(e).state===`bad`).map(e=>({connection:rC(e),result:this.result(e).text??``,detail:this.result(e).detail??``,...e.payload}));if(!e.length)return;let t=[`Fix what the Koppler flow check found, using the koppler-run skill.`,`ENV ${Z.env.toUpperCase()}`,`FAILED:`,...e.map(e=>` ${e.connection}: ${e.result}. ${e.detail}`),`Find the cause of each, say what you would change, and ask before you start, stop or restart anything.`].join(`
24
24
  `),n=(Q.status?.agent?.state??`none`)===`none`;this.asked=await Xb.deliver(t,{tag:`koppler-fix`,data:{env:Z.env,failures:e}},n?`Saved. The agent gets it when one connects.`:`Sent to the agent`)}#i=A(()=>{let e=Z.cards.map(e=>e.id),t=Q.status?.live,n=t?.env&&Object.keys(t.nodes??{}).length?t.env:null,r=n&&n!==Z.env?n.toUpperCase():null,i=r?[]:this.sent.filter(e=>Q.steps(e).some(e=>e.state===`failed`));if(i.length)return{state:`bad`,label:`${String(i.length)} failed: ${i.map(tC).join(`, `)}`,title:`Its card says why. Ask the agent to fix it from the card, or run a Flow check.`};let a=r?[]:e.filter(e=>this.starting(e));if(a.length)return{state:`busy`,label:`Starting ${a.length===1?tC(a[0]??``):`${String(a.length)} apps`}`,title:`Koppler checks the connections again once it answers.`};let o=this.sent.length,s=!this.busy&&!r&&!o?(Q.status?.running??[]).filter(t=>Z.apps.some(e=>e.id===t)&&!e.includes(t)):[];if(s.length)return{state:`warn`,label:`${s.length===1?tC(s[0]??``):`${String(s.length)} apps`} running, not on this board`,title:`${s.map(tC).join(`, `)} ${s.length===1?`runs`:`run`}, but this board does not show ${s.length===1?`it`:`them`}. Run starts this board and stops what is not on it; Stop stops everything.`};if(this.busy&&this.flow){let e=this.flow.filter(e=>this.result(e).state!==`busy`).length;return{state:`busy`,label:`Checking ${String(e)} of ${String(this.flow.length)}`,title:`Flow check in progress`}}if(r)return{state:`warn`,label:`Running on ${r}`,title:`What runs now is your ${r} board. This board is set to ${Z.env.toUpperCase()} and has not been run; Run switches over.`};if(!o)return{state:`idle`,label:`Nothing running`,title:`Nothing on the board is running. Run starts it.`};let c=this.flow?this.flow.filter(e=>this.result(e).state===`bad`).length:this.items.filter(e=>e.level===`bad`).length,l=this.flow?0:this.items.length-c,u=e.length-o,d=`Flow check: test every connection on the board`;return c?{state:`bad`,label:`${nC(c,`thing is`,`things are`)} off`,title:d}:u?{state:`warn`,label:`${String(u)} not started`,title:`${nC(u,`app on this board was`,`apps on this board were`)} not started yet. Run starts ${u===1?`it`:`them`}.`}:l?{state:`warn`,label:`${String(l)} waiting on you`,title:d}:{state:`ok`,label:`All running`,title:d}});get chip(){return R(this.#i)}set chip(e){M(this.#i,e)}},oC=V(`<p class="sum svelte-6gc4ih">Nothing is running</p> <p class="idle svelte-6gc4ih">Press Run to start the apps on your board. Flow check then tests every connection between them: apps, cables,
25
25
  databases and caches.</p>`,1),sC=V(`<progress aria-label="Connections checked" class="svelte-6gc4ih"></progress>`),cC=V(`<button class="fail svelte-6gc4ih" type="button" title="Show it on the board"><span class="route svelte-6gc4ih"> </span> <span class="verdict svelte-6gc4ih"> </span> <span class="why svelte-6gc4ih"> </span></button>`),lC=V(`<button class="row svelte-6gc4ih" type="button"><span class="route"> </span> <span class="verdict svelte-6gc4ih"> </span></button>`),uC=V(`<details class="svelte-6gc4ih"><summary class="svelte-6gc4ih"> <span class="tally svelte-6gc4ih"> </span></summary> <!></details>`),dC=V(`<div class="fix svelte-6gc4ih"><p class="svelte-6gc4ih">The agent can find the cause of each failure and tell you what it would change. It asks before it starts,
26
- stops or restarts anything.</p> <button class="go svelte-6gc4ih" type="button"> </button></div>`),fC=V(`<header class="svelte-6gc4ih"><p class="sum svelte-6gc4ih"> </p> <button type="button" class="svelte-6gc4ih">Check again</button></header> <!> <!> <!> <!>`,1),pC=V(`<button class="chip svelte-6gc4ih" type="button" aria-haspopup="dialog"><span class="dot svelte-6gc4ih" aria-hidden="true"></span><span class="words"> </span></button> <p class="sr svelte-6gc4ih" aria-live="polite"> </p> <div class="pop svelte-6gc4ih" popover="" role="dialog" tabindex="-1" aria-label="Flow check"><!></div>`,1);function mC(e,t){let n=ui();O(t,!0);let r=[[`app`,`Apps`],[`cable`,`Cables between local apps`],[`tunnel`,`Databases and caches`]],i=j(void 0),a=j(void 0),o=j(!1),s=A(()=>aC.chip),c=A(()=>(aC.flow??[]).map(e=>({job:e,result:aC.result(e)}))),l=A(()=>R(c).filter(e=>e.result.state===`bad`)),u=A(()=>R(c).filter(e=>e.result.state!==`busy`).length),d=A(()=>R(c).filter(e=>e.result.state===`warn`).length),f=A(()=>aC.busy?`Checking, ${String(R(u))} of ${String(R(c).length)} done`:R(l).length?`${String(R(l).length)} of ${String(R(c).length)} connections ${R(l).length===1?`fails`:`fail`}`:R(d)?`Nothing fails, ${String(R(d))} not checked`:`All ${String(R(c).length)} connections work`),p=e=>{let t=R(c).filter(t=>t.job.kind===e),n=t.filter(e=>e.result.state===`bad`).length,r=t.filter(e=>e.result.state===`ok`).length,i=String(t.length);return t.some(e=>e.result.state===`busy`)?{text:`checking`,level:``}:n?{text:`${String(n)} of ${i} ${n===1?`fails`:`fail`}`,level:`bad`}:r<t.length?{text:`${String(r)} of ${i} work, ${String(t.length-r)} not checked`,level:`warn`}:{text:`${i} of ${i} work`,level:``}},m=e=>{R(a)?.hidePopover(),Z.show(e.id)},h=()=>{let e=R(i)?.getBoundingClientRect();e&&R(a)&&(R(a).style.top=`${String(e.bottom+6)}px`,R(a).style.left=`${String(Math.max(12,Math.min(e.left,innerWidth-492)))}px`)};var g=li(),_=P(g),y=e=>{var t=pC(),d=P(t),g=F(I(N(d)),!0);D(d),Ma(d,e=>M(i,e),()=>R(i));var _=I(d,2),y=F(_),b=I(_,2),x=N(b),S=e=>{var t=oC();Me(2),H(e,t)},C=e=>{var t=fC(),n=P(t),i=N(n),a=F(i,!0),o=I(i,2);D(n);var s=I(n,2),d=e=>{var t=sC();L(()=>{q(t,`max`,R(c).length),ha(t,R(u))}),H(e,t)};W(s,e=>{aC.busy&&e(d)});var h=I(s,2);G(h,17,()=>R(l),({job:e,result:t})=>e.key,(e,t)=>{let n=()=>R(t).job,r=()=>R(t).result;var i=cC(),a=N(i),o=F(a),s=I(a,2),c=F(s,!0),l=F(I(s,2),!0);D(i),L(()=>{U(o,`${n().from??``}${n().to?` → ${n().to}`:``}`),U(c,r().text),U(l,r().detail)}),B(`click`,i,()=>{m(n())}),H(e,i)});var g=I(h,2);G(g,17,()=>r,([e,t])=>e,(e,t)=>{var n=A(()=>v(R(t),2));let r=()=>R(n)[0],i=()=>R(n)[1],a=A(()=>R(c).filter(e=>e.job.kind===r()&&e.result.state!==`bad`)),o=A(()=>p(r()));var s=li(),l=P(s),u=e=>{var t=uC(),n=N(t),r=N(n,!0),s=I(r),c=F(s,!0);D(n),G(I(n,2),17,()=>R(a),({job:e,result:t})=>e.key,(e,t)=>{let n=()=>R(t).job,r=()=>R(t).result;var i=lC(),a=N(i),o=F(a),s=F(I(a,2),!0);D(i),L(e=>{q(i,`data-level`,r().state),q(i,`title`,r().detail),U(o,`${n().from??``}${n().to?` → ${n().to}`:``}`),U(s,e)},[()=>(r().text??``).replace(/^Answers, /,``)]),B(`click`,i,()=>{m(n())}),H(e,i)}),D(t),L(()=>{t.open=R(o).level===`warn`,U(r,i()),q(s,`data-level`,R(o).level),U(c,R(o).text)}),H(e,t)},d=A(()=>R(c).some(e=>e.job.kind===r()));W(l,e=>{R(d)&&e(u)}),H(e,s)});var _=I(g,2),y=e=>{var t=dC(),n=I(N(t),2),r=F(n,!0);D(t),L(()=>{n.disabled=aC.asked,U(r,aC.asked?`Sent to the agent`:R(l).length===1?`Ask the agent to fix it`:`Ask the agent to fix these`)}),B(`click`,n,()=>void aC.askToFix()),H(e,t)};W(_,e=>{R(l).length&&!aC.busy&&e(y)}),L(()=>{U(a,R(f)),o.disabled=aC.busy}),B(`click`,o,()=>void aC.check()),H(e,t)};W(x,e=>{!aC.sent.length&&!aC.flow?e(S):e(C,-1)}),D(b),Ma(b,e=>M(a,e),()=>R(a)),L(()=>{q(d,`data-state`,R(s).state),q(d,`title`,R(s).title),q(d,`aria-expanded`,R(o)),q(d,`popovertarget`,n),U(g,R(s).label),U(y,`Board: ${R(s).label??``}`),q(b,`id`,n)}),z(`toggle`,b,e=>{M(o,e.newState===`open`),R(o)&&(h(),!aC.flow&&aC.sent.length&&aC.check())}),H(e,t)};W(_,e=>{Q.status&&e(y)}),H(e,g),k()}Qr([`click`]);var hC=new Set([`$$slots`,`$$events`,`$$legacy`]);function gC(e,t){let n=J(t,hC),r={name:`circle-question-mark`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`}],[`path`,{d:`M12 17h.01`}]],aliases:[`help-circle`,`circle-help`]};$a(e,Ba(()=>n,{get icon(){return r}}))}var _C=V(`<button class="open svelte-zovg1u" type="button" popovertarget="help" aria-label="Shortcuts and legend" title="Shortcuts and legend (?)"><!></button> <div class="sheet svelte-zovg1u" id="help" popover="" aria-label="Shortcuts and legend"><h2 class="svelte-zovg1u">Shortcuts</h2> <dl class="svelte-zovg1u"><dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">F</kbd></dt> <dd class="svelte-zovg1u">Fit the whole board in view</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">P</kbd>, <kbd class="svelte-zovg1u">Esc</kbd> to stop</dt> <dd class="svelte-zovg1u">Present: the board alone, full screen</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">E</kbd> / <kbd class="svelte-zovg1u">L</kbd></dt> <dd class="svelte-zovg1u">Edit view / Live view</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">V</kbd> / <kbd class="svelte-zovg1u">H</kbd>, hold <kbd class="svelte-zovg1u">Space</kbd></dt> <dd class="svelte-zovg1u">Select / move around the board</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Cmd</kbd> or <kbd class="svelte-zovg1u">Ctrl</kbd> + <kbd class="svelte-zovg1u">Z</kbd></dt> <dd class="svelte-zovg1u">Undo (add <kbd class="svelte-zovg1u">Shift</kbd> to redo)</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Cmd</kbd> or <kbd class="svelte-zovg1u">Ctrl</kbd> + <kbd class="svelte-zovg1u">A</kbd></dt> <dd class="svelte-zovg1u">Select every card</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Tab</kbd>, then arrow keys</dt> <dd class="svelte-zovg1u">Move to a card, then move it</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Delete</kbd></dt> <dd class="svelte-zovg1u">Remove the selected cards</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">?</kbd></dt> <dd class="svelte-zovg1u">This sheet</dd></dl> <h2 class="svelte-zovg1u">On the board</h2> <dl class="svelte-zovg1u"><dt class="svelte-zovg1u"><span class="cable svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A cable: the app at its start calls your local copy of the app at its end. Drag from the ring on a card's edge, or
26
+ stops or restarts anything.</p> <button class="go svelte-6gc4ih" type="button"> </button></div>`),fC=V(`<header class="svelte-6gc4ih"><p class="sum svelte-6gc4ih"> </p> <button type="button" class="svelte-6gc4ih">Check again</button></header> <!> <!> <!> <!>`,1),pC=V(`<button class="chip svelte-6gc4ih" type="button" aria-haspopup="dialog"><span class="dot svelte-6gc4ih" aria-hidden="true"></span><span class="words"> </span></button> <p class="sr svelte-6gc4ih" aria-live="polite"> </p> <div class="pop svelte-6gc4ih" popover="" role="dialog" tabindex="-1" aria-label="Flow check"><!></div>`,1);function mC(e,t){let n=ui();O(t,!0);let r=[[`app`,`Apps`],[`cable`,`Cables between local apps`],[`tunnel`,`Databases and caches`]],i=j(void 0),a=j(void 0),o=j(!1),s=A(()=>aC.chip),c=A(()=>(aC.flow??[]).map(e=>({job:e,result:aC.result(e)}))),l=A(()=>R(c).filter(e=>e.result.state===`bad`)),u=A(()=>R(c).filter(e=>e.result.state!==`busy`).length),d=A(()=>R(c).filter(e=>e.result.state===`warn`).length),f=A(()=>aC.busy?`Checking, ${String(R(u))} of ${String(R(c).length)} done`:R(l).length?`${String(R(l).length)} of ${String(R(c).length)} connections ${R(l).length===1?`fails`:`fail`}`:R(d)?`Nothing fails, ${String(R(d))} not checked`:`All ${String(R(c).length)} connections work`),p=e=>{let t=R(c).filter(t=>t.job.kind===e),n=t.filter(e=>e.result.state===`bad`).length,r=t.filter(e=>e.result.state===`ok`).length,i=String(t.length);return t.some(e=>e.result.state===`busy`)?{text:`checking`,level:``}:n?{text:`${String(n)} of ${i} ${n===1?`fails`:`fail`}`,level:`bad`}:r<t.length?{text:`${String(r)} of ${i} work, ${String(t.length-r)} not checked`,level:`warn`}:{text:`${i} of ${i} work`,level:``}},m=e=>{R(a)?.hidePopover(),Z.show(e.id)},h=()=>{let e=R(i)?.getBoundingClientRect();e&&R(a)&&(R(a).style.top=`${String(e.bottom+6)}px`,R(a).style.left=`${String(Math.max(12,Math.min(e.left,innerWidth-492)))}px`)};var g=li(),_=P(g),y=e=>{var t=pC(),d=P(t),g=F(I(N(d)),!0);D(d),Ma(d,e=>M(i,e),()=>R(i));var _=I(d,2),y=F(_),b=I(_,2),x=N(b),S=e=>{var t=oC();Me(2),H(e,t)},C=e=>{var t=fC(),n=P(t),i=N(n),a=F(i,!0),o=I(i,2);D(n);var s=I(n,2),d=e=>{var t=sC();L(()=>{q(t,`max`,R(c).length),ha(t,R(u))}),H(e,t)};W(s,e=>{aC.busy&&e(d)});var h=I(s,2);G(h,17,()=>R(l),({job:e,result:t})=>e.key,(e,t)=>{let n=()=>R(t).job,r=()=>R(t).result;var i=cC(),a=N(i),o=F(a),s=I(a,2),c=F(s,!0),l=F(I(s,2),!0);D(i),L(()=>{U(o,`${n().from??``}${n().to?` → ${n().to}`:``}`),U(c,r().text),U(l,r().detail)}),B(`click`,i,()=>{m(n())}),H(e,i)});var g=I(h,2);G(g,17,()=>r,([e,t])=>e,(e,t)=>{var n=A(()=>v(R(t),2));let r=()=>R(n)[0],i=()=>R(n)[1],a=A(()=>R(c).filter(e=>e.job.kind===r()&&e.result.state!==`bad`)),o=A(()=>p(r()));var s=li(),l=P(s),u=e=>{var t=uC(),n=N(t),r=N(n,!0),s=I(r),c=F(s,!0);D(n),G(I(n,2),17,()=>R(a),({job:e,result:t})=>e.key,(e,t)=>{let n=()=>R(t).job,r=()=>R(t).result;var i=lC(),a=N(i),o=F(a),s=F(I(a,2),!0);D(i),L(e=>{q(i,`data-level`,r().state),q(i,`title`,r().detail),U(o,`${n().from??``}${n().to?` → ${n().to}`:``}`),U(s,e)},[()=>(r().text??``).replace(/^Answers, /,``)]),B(`click`,i,()=>{m(n())}),H(e,i)}),D(t),L(()=>{t.open=R(o).level===`warn`,q(n,`aria-label`,`${i()??``}: ${R(o).text??``}`),U(r,i()),q(s,`data-level`,R(o).level),U(c,R(o).text)}),H(e,t)},d=A(()=>R(c).some(e=>e.job.kind===r()));W(l,e=>{R(d)&&e(u)}),H(e,s)});var _=I(g,2),y=e=>{var t=dC(),n=I(N(t),2),r=F(n,!0);D(t),L(()=>{n.disabled=aC.asked,U(r,aC.asked?`Sent to the agent`:R(l).length===1?`Ask the agent to fix it`:`Ask the agent to fix these`)}),B(`click`,n,()=>void aC.askToFix()),H(e,t)};W(_,e=>{R(l).length&&!aC.busy&&e(y)}),L(()=>{U(a,R(f)),o.disabled=aC.busy}),B(`click`,o,()=>void aC.check()),H(e,t)};W(x,e=>{!aC.sent.length&&!aC.flow?e(S):e(C,-1)}),D(b),Ma(b,e=>M(a,e),()=>R(a)),L(()=>{q(d,`data-state`,R(s).state),q(d,`title`,R(s).title),q(d,`aria-expanded`,R(o)),q(d,`popovertarget`,n),U(g,R(s).label),U(y,`Board: ${R(s).label??``}`),q(b,`id`,n)}),z(`toggle`,b,e=>{M(o,e.newState===`open`),R(o)&&(h(),!aC.flow&&aC.sent.length&&aC.check())}),H(e,t)};W(_,e=>{Q.status&&e(y)}),H(e,g),k()}Qr([`click`]);var hC=new Set([`$$slots`,`$$events`,`$$legacy`]);function gC(e,t){let n=J(t,hC),r={name:`circle-question-mark`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`}],[`path`,{d:`M12 17h.01`}]],aliases:[`help-circle`,`circle-help`]};$a(e,Ba(()=>n,{get icon(){return r}}))}var _C=V(`<button class="open svelte-zovg1u" type="button" popovertarget="help" aria-label="Shortcuts and legend" title="Shortcuts and legend (?)"><!></button> <div class="sheet svelte-zovg1u" id="help" popover="" aria-label="Shortcuts and legend"><h2 class="svelte-zovg1u">Shortcuts</h2> <dl class="svelte-zovg1u"><dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">F</kbd></dt> <dd class="svelte-zovg1u">Fit the whole board in view</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">P</kbd>, <kbd class="svelte-zovg1u">Esc</kbd> to stop</dt> <dd class="svelte-zovg1u">Present: the board alone, full screen</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">E</kbd> / <kbd class="svelte-zovg1u">L</kbd></dt> <dd class="svelte-zovg1u">Edit view / Live view</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">V</kbd> / <kbd class="svelte-zovg1u">H</kbd>, hold <kbd class="svelte-zovg1u">Space</kbd></dt> <dd class="svelte-zovg1u">Select / move around the board</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Cmd</kbd> or <kbd class="svelte-zovg1u">Ctrl</kbd> + <kbd class="svelte-zovg1u">Z</kbd></dt> <dd class="svelte-zovg1u">Undo (add <kbd class="svelte-zovg1u">Shift</kbd> to redo)</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Cmd</kbd> or <kbd class="svelte-zovg1u">Ctrl</kbd> + <kbd class="svelte-zovg1u">A</kbd></dt> <dd class="svelte-zovg1u">Select every card</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Tab</kbd>, then arrow keys</dt> <dd class="svelte-zovg1u">Move to a card, then move it</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">Delete</kbd></dt> <dd class="svelte-zovg1u">Remove the selected cards</dd> <dt class="svelte-zovg1u"><kbd class="svelte-zovg1u">?</kbd></dt> <dd class="svelte-zovg1u">This sheet</dd></dl> <h2 class="svelte-zovg1u">On the board</h2> <dl class="svelte-zovg1u"><dt class="svelte-zovg1u"><span class="cable svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A cable: the app at its start calls your local copy of the app at its end. Drag from the ring on a card's edge, or
27
27
  use the card's Cables field.</dd> <dt class="svelte-zovg1u"><span class="card svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A tunnel to a database or cache the app uses</dd> <dt class="svelte-zovg1u"><span class="cable queue svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">A queue between apps: dashed while it is the deployed one, solid once its switch runs it locally</dd> <dt class="svelte-zovg1u"><span class="card outside svelte-zovg1u"></span></dt> <dd class="svelte-zovg1u">An outside system, such as a payment provider: it never runs here</dd> <dt class="svelte-zovg1u"><span class="protected svelte-zovg1u">Protected</span></dt> <dd class="svelte-zovg1u">A protected environment (production, usually): red marks only the frame. Red on the board always means something
28
28
  failed.</dd> <dt class="svelte-zovg1u"><span class="calls svelte-zovg1u">Calls QA</span></dt> <dd class="svelte-zovg1u">Apps this one still calls in the deployed environment. Click one to run it locally too.</dd> <dt class="svelte-zovg1u">Zoomed out</dt> <dd class="svelte-zovg1u">Cards show only their state; zoom in to change them</dd></dl></div>`,1);function vC(e){let t=j(void 0),n=e=>{e.key!==`?`||e.target.closest(`input, select, textarea`)||R(t)?.togglePopover()};var r=_C();z(`keydown`,_n,n);var i=P(r);X(N(i),{get of(){return gC},size:16}),D(i),Ma(I(i,2),e=>M(t,e),()=>R(t)),H(e,r)}var yC=V(`<p class="svelte-146fxte"> </p>`),bC=V(`<h4 class="svelte-146fxte"> </h4>`),xC=V(`<li> </li>`),SC=V(`<ul class="svelte-146fxte"></ul>`),CC=V(`<!> <!> <!>`,1),wC=V(`<span class="svelte-146fxte"> </span>`),TC=V(`<button class="choice svelte-146fxte" type="button"><strong> </strong><!></button>`),EC=V(`<div class="choices svelte-146fxte"></div>`),DC=V(`<!> <form class="svelte-146fxte"><textarea rows="1" placeholder="Or answer in your own words" aria-label="Your answer" class="svelte-146fxte"></textarea> <button type="submit" class="svelte-146fxte">Send</button></form> <button class="dismiss svelte-146fxte" type="button" title="Close this question without answering; the agent is not told">Dismiss</button>`,1),OC=V(`<p class="answered svelte-146fxte"> </p>`),kC=V(`<article><div class="meta svelte-146fxte"><span class="kind svelte-146fxte"> </span><time> </time></div> <h3 class="svelte-146fxte"> </h3> <!> <!> <!> <!></article>`);function AC(e,t){O(t,!0);let n={question:`Question`,result:`Done`,failure:`Failed`,info:`Update`},r=e=>e.kind===`question`&&!e.answered,i=(e=``)=>{let t=new Date(e),n=t.toDateString()===new Date().toDateString();return t.toLocaleString([],n?{hour:`2-digit`,minute:`2-digit`}:{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})},a=e=>{let t=e.answered;if(!t)return``;let n=e.choices?.find(e=>e.id===t.choice)?.label??t.choice;return`${t.via===`replaced`?`Closed: a newer run replaced it`:t.via===`dismissed`?`Dismissed`:t.via===`chat`?`Answered in the chat`:n?`You chose: ${n}`:`You answered: ${t.text??``}`}, ${i(t.at)}.`},o=(e,t)=>{e.preventDefault();let n=e.currentTarget.querySelector(`textarea`)?.value.trim();n&&ky.answer(t,{text:n})};var s=kC();let c;var l=N(s),u=N(l),d=F(u,!0),f=F(I(u),!0);D(l);var p=I(l,2),m=F(p,!0),h=I(p,2),g=e=>{var n=yC(),r=F(n,!0);L(()=>U(r,t.one.summary)),H(e,n)};W(h,e=>{t.one.summary&&e(g)});var _=I(h,2);G(_,17,()=>t.one.sections??[],Di,(e,t)=>{var n=CC(),r=P(n),i=e=>{var n=bC(),r=F(n,!0);L(()=>U(r,R(t).title)),H(e,n)};W(r,e=>{R(t).title&&e(i)});var a=I(r,2);G(a,16,()=>R(t).commands??[],e=>e,(e,t)=>{Ic(e,{get command(){return t}})});var o=I(a,2),s=e=>{var n=SC();G(n,21,()=>R(t).items,Di,(e,t)=>{var n=xC(),r=F(n,!0);L(()=>U(r,R(t))),H(e,n)}),D(n),H(e,n)};W(o,e=>{R(t).items?.length&&e(s)}),H(e,n)});var v=I(_,2),y=e=>{var n=DC(),r=P(n),i=e=>{var n=EC();G(n,21,()=>t.one.choices,e=>e.id,(e,n)=>{var r=TC(),i=N(r),a=F(i,!0),o=I(i),s=e=>{var t=wC(),r=F(t,!0);L(()=>U(r,R(n).detail)),H(e,t)};W(o,e=>{R(n).detail&&e(s)}),D(r),L(()=>U(a,R(n).label)),B(`click`,r,()=>void ky.answer(t.one,{choice:R(n).id})),H(e,r)}),D(n),H(e,n)};W(r,e=>{t.one.choices?.length&&e(i)});var a=I(r,2),s=I(a,2);z(`submit`,a,e=>{o(e,t.one)}),B(`click`,s,()=>void ky.dismiss(t.one)),H(e,n)},b=A(()=>r(t.one));W(v,e=>{R(b)&&e(y)});var x=I(v,2),S=e=>{var n=OC(),r=F(n,!0);L(e=>U(r,e),[()=>a(t.one)]),H(e,n)};W(x,e=>{t.one.answered&&e(S)}),D(s),L((e,r)=>{q(s,`data-kind`,t.one.kind),s.inert=t.past,c=K(s,1,`svelte-146fxte`,null,c,{waits:e,past:t.past}),U(d,n[t.one.kind]??`Update`),U(f,r),U(m,t.one.title)},[()=>r(t.one),()=>i(t.one.at)]),H(e,s),k()}Qr([`click`]);var jC=V(`<button type="button" class="svelte-1ekufpr">Clear</button>`),MC=V(`<li class="svelte-1ekufpr"><span class="what svelte-1ekufpr"> <small class="svelte-1ekufpr"> </small></span> <button type="button" class="svelte-1ekufpr">Drop</button></li>`),NC=V(`<section class="waiting svelte-1ekufpr" aria-labelledby="waiting-title"><h3 id="waiting-title" class="svelte-1ekufpr"> </h3> <p class="svelte-1ekufpr">Sent while no agent was connected. Of several runs and Stops only the newest is acted on. One gets them when
29
29
  you run this in your agent session:</p> <!> <ul class="svelte-1ekufpr"></ul></section>`),PC=V(`<p class="none svelte-1ekufpr">The agent has said nothing yet.</p>`),FC=V(`<p class="none svelte-1ekufpr">Nothing yet. When the agent needs a decision about your run, or finishes one, it shows up here.</p>`),IC=V(`<p class="none svelte-1ekufpr">Nothing since the canvas started.</p>`),LC=V(`<details class="svelte-1ekufpr"><summary class="svelte-1ekufpr"> </summary> <!></details>`),RC=V(`<!> <!>`,1),zC=V(`<div class="panel svelte-1ekufpr" role="dialog" tabindex="-1" aria-label="Messages from the agent"><header class="svelte-1ekufpr"><h2 class="svelte-1ekufpr">Agent</h2> <span class="sub svelte-1ekufpr"> </span> <!> <button class="close svelte-1ekufpr" type="button" aria-label="Close"><!></button></header> <div class="list svelte-1ekufpr"><!> <!></div></div>`);function BC(e,t){O(t,!0);let n=j(void 0),r=A(()=>ky.messages),i=e=>e.kind===`question`&&!e.answered,a=e=>e.from===`koppler`&&!!e.answered,o=e=>!a(e)&&(!Q.status?.startedAt||(e.at??``)>=Q.status.startedAt||i(e)),s=A(()=>R(r).filter(o)),c=A(()=>R(r).filter(e=>!o(e))),l=e=>!i(e)&&(R(r)[0]!==e||e.answered?.via===`dismissed`||e.answered?.via===`replaced`);Ln(()=>{ky.open&&(R(n)?.querySelector(`.choice`)??R(n)?.querySelector(`.close`))?.focus()});var u=li(),d=P(u),f=e=>{var t=zC(),a=N(t),o=I(N(a),2),u=F(o,!0),d=I(o,2),f=e=>{var t=jC();B(`click`,t,()=>void ky.clear()),H(e,t)},p=A(()=>R(r).some(e=>!i(e)));W(d,e=>{R(p)&&e(f)});var m=I(d,2);X(N(m),{get of(){return to},size:14}),D(m),D(a);var h=I(a,2),g=N(h),_=e=>{var t=NC(),n=N(t),r=F(n),i=I(n,4);Ic(i,{command:`/koppler-run connect`});var a=I(i,2);G(a,21,()=>ky.waiting,e=>e.key,(e,t)=>{var n=MC(),r=N(n),i=N(r,!0),a=F(I(i),!0);D(r);var o=I(r,2);D(n),L(e=>{U(i,R(t).what),U(a,e),q(o,`aria-label`,`Drop: ${R(t).what??``}`)},[()=>Wb(R(t).at)]),B(`click`,o,()=>void ky.drop(R(t).key)),H(e,n)}),D(a),D(t),L(()=>U(r,`Waiting for an agent (${ky.waiting.length??``})`)),H(e,t)};W(g,e=>{ky.waiting.length&&e(_)});var v=I(g,2),y=e=>{H(e,PC())},b=e=>{H(e,FC())},x=e=>{var t=RC(),n=P(t);G(n,17,()=>R(s),e=>e.id,(e,t)=>{{let n=A(()=>l(R(t)));AC(e,{get one(){return R(t)},get past(){return R(n)}})}},e=>{H(e,IC())});var r=I(n,2),i=e=>{var t=LC(),n=N(t),r=F(n);G(I(n,2),17,()=>R(c),e=>e.id,(e,t)=>{{let n=A(()=>l(R(t)));AC(e,{get one(){return R(t)},get past(){return R(n)}})}}),D(t),L(()=>U(r,`Earlier (${R(c).length??``})`)),H(e,t)};W(r,e=>{R(c).length&&e(i)}),H(e,t)};W(v,e=>{!R(r).length&&ky.waiting.length?e(y):R(r).length?e(x,-1):e(b,1)}),D(h),D(t),Ma(t,e=>M(n,e),()=>R(n)),L(()=>U(u,ky.question?`Waiting for your answer`:``)),B(`keydown`,t,e=>{e.key===`Escape`&&(ky.open=!1)}),B(`click`,m,()=>ky.open=!1),H(e,t)};W(d,e=>{ky.open&&e(f)}),H(e,u),k()}Qr([`keydown`,`click`]);var VC=new Set([`$$slots`,`$$events`,`$$legacy`]);function HC(e,t){let n=J(t,VC),r={name:`clock`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 6v6l4 2`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var UC=new Set([`$$slots`,`$$events`,`$$legacy`]);function WC(e,t){let n=J(t,UC),r={name:`pin`,size:24,node:[[`path`,{d:`M12 17v5`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var GC=new Set([`$$slots`,`$$events`,`$$legacy`]);function KC(e,t){let n=J(t,GC),r={name:`pin-off`,size:24,node:[[`path`,{d:`M12 17v5`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`}],[`path`,{d:`m2 2 20 20`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var qC=V(`<small class="svelte-i7whuv"> </small>`),JC=V(`<div class="run svelte-i7whuv"><div class="head note svelte-i7whuv"><span class="what svelte-i7whuv"> <!></span> <time class="svelte-i7whuv"> </time></div></div>`),YC=V(`<span class="changes svelte-i7whuv" title="Code changes Koppler made in your repos"> </span>`),XC=V(`<p class="reason svelte-i7whuv"> </p>`),ZC=V(`<span> <!></span>`),QC=V(`<li class="svelte-i7whuv"><span class="verb svelte-i7whuv"> </span> <span class="apps svelte-i7whuv"></span></li>`),$C=V(`<span class="del svelte-i7whuv"><b aria-hidden="true" class="svelte-i7whuv">-</b><span class="sr svelte-i7whuv">removed: </span> </span>`),ew=V(`<span class="add svelte-i7whuv"><b aria-hidden="true" class="svelte-i7whuv">+</b><span class="sr svelte-i7whuv">added: </span> </span>`),tw=V(`<span class="svelte-i7whuv">No lines recorded.</span>`),nw=V(`<figure class="svelte-i7whuv"><figcaption class="svelte-i7whuv"><code class="svelte-i7whuv"> </code> <span class="svelte-i7whuv"> </span></figcaption> <pre class="svelte-i7whuv"><!><!><!></pre></figure>`),rw=V(`<h4 class="svelte-i7whuv"> </h4> <!>`,1),iw=V(`<div class="diffs svelte-i7whuv"><h3 class="svelte-i7whuv">Code changes in your repos</h3> <!></div>`),aw=V(`<button type="button" class="svelte-i7whuv"> </button>`),ow=V(`<div class="logs svelte-i7whuv"><h3 class="svelte-i7whuv">Logs</h3> <!> <button class="pin svelte-i7whuv" type="button"><!> </button></div>`),sw=V(`<button class="back svelte-i7whuv" type="button">Put this board back</button>`),cw=V(`<ul class="plan svelte-i7whuv"></ul> <!> <!> <!>`,1),lw=V(`<div class="run svelte-i7whuv"><button class="head svelte-i7whuv" type="button"><span class="what svelte-i7whuv"> <!></span> <!> <span class="state svelte-i7whuv"> </span> <time class="svelte-i7whuv"> </time></button> <!> <!></div>`);function uw(e,t){O(t,!0);let n=[[`starts`,`Starts`],[`restarts`,`Restarts`],[`stops`,`Stops and reverts`],[`keeps`,`Keeps running`]],r={waiting:`Waiting for the agent`,applying:`Being applied`,done:`Done`,failed:`Failed`,replaced:`Replaced by a newer run`},i={"stop-apps":`Apps stopped, changes kept`,"stop-all":`Everything stopped, changes kept`,"canvas-closed":`Canvas closed`},a=Z.nameOf,o=A(()=>{let e=new Date(t.run.at??``),n=e.toDateString()===new Date().toDateString();return e.toLocaleString([],n?{hour:`2-digit`,minute:`2-digit`}:{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}),s=A(()=>[...new Set((t.run.changes??[]).map(e=>e.app))]);var c=li(),l=P(c),u=e=>{let n=A(()=>(t.run.stopped??[]).map(a).join(`, `));var r=JC(),s=N(r),c=N(s),l=N(c,!0),u=I(l),d=e=>{var t=qC(),r=F(t,!0);L(()=>{q(t,`title`,R(n)),U(r,R(n))}),H(e,t)};W(u,e=>{R(n)&&e(d)}),D(c);var f=F(I(c,2),!0);D(s),D(r),L(()=>{U(l,i[t.run.note]??`Stopped`),U(f,R(o))}),H(e,r)},d=e=>{let i=A(()=>Object.keys(t.run.nodes??{}).map(a).join(`, `));var c=lw(),l=N(c),u=N(l),d=N(u,!0),f=I(d),p=e=>{var t=qC(),n=F(t,!0);L(()=>{q(t,`title`,R(i)),U(n,R(i))}),H(e,t)};W(f,e=>{R(i)&&e(p)}),D(u);var m=I(u,2),h=e=>{var n=YC(),r=F(n);L(()=>U(r,`${t.run.changes.length??``} ${t.run.changes.length===1?`change`:`changes`}`)),H(e,n)};W(m,e=>{t.run.changes?.length&&e(h)});var g=I(m,2),_=F(g,!0),y=F(I(g,2),!0);D(l);var b=I(l,2),x=e=>{var n=XC(),r=F(n,!0);L(()=>U(r,t.run.reason)),H(e,n)};W(b,e=>{t.run.reason&&e(x)});var S=I(b,2),C=e=>{var r=cw(),o=P(r);G(o,21,()=>n,([e,t])=>e,(e,n)=>{var r=A(()=>v(R(n),2));let i=()=>R(r)[0],o=()=>R(r)[1];var s=li(),c=P(s),l=e=>{var n=QC(),r=N(n),s=F(r,!0),c=I(r,2);G(c,21,()=>t.run.plan[i()],e=>e.id,(e,t)=>{var n=ZC(),r=N(n,!0),i=I(r),o=e=>{var n=qC(),r=F(n,!0);L(e=>U(r,e),[()=>R(t).why.join(`; `)]),H(e,n)};W(i,e=>{R(t).why?.length&&e(o)}),D(n),L(e=>U(r,e),[()=>a(R(t).id)]),H(e,n)}),D(c),D(n),L(()=>{q(r,`data-verb`,i()),U(s,o())}),H(e,n)};W(c,e=>{t.run.plan?.[i()]?.length&&e(l)}),H(e,s)}),D(o);var c=I(o,2),l=e=>{var n=iw();G(I(N(n),2),16,()=>R(s),e=>e,(e,n)=>{var r=rw(),i=P(r),o=F(i,!0);G(I(i,2),17,()=>t.run.changes.filter(e=>e.app===n),e=>e.title+(e.file??``),(e,t)=>{var n=nw(),r=N(n),i=N(r),a=F(i,!0),o=F(I(i,2));D(r);var s=I(r,2),c=N(s);G(c,17,()=>R(t).removed??[],Di,(e,t)=>{var n=$C(),r=I(N(n),2,!0);D(n),L(()=>U(r,R(t))),H(e,n)});var l=I(c);G(l,17,()=>R(t).added??[],Di,(e,t)=>{var n=ew(),r=I(N(n),2,!0);D(n),L(()=>U(r,R(t))),H(e,n)});var u=I(l),d=e=>{H(e,tw())};W(u,e=>{!R(t).removed?.length&&!R(t).added?.length&&e(d)}),D(s),D(n),L(()=>{U(a,R(t).file||R(t).title),U(o,`${(R(t).file?R(t).title:``)??``}${R(t).fresh?``:` (from an earlier run)`}`)}),H(e,n)}),L(e=>U(o,e),[()=>a(n)]),H(e,r)}),D(n),H(e,n)};W(c,e=>{t.run.changes?.length&&e(l)});var u=I(c,2),d=e=>{let n=A(()=>t.run.id);var r=ow(),i=I(N(r),2);G(i,16,()=>t.run.logs,e=>e,(e,t)=>{var r=aw(),i=F(r,!0);L(e=>U(i,e),[()=>a(t)]),B(`click`,r,()=>{Rb.open(t,R(n))}),H(e,r)});var o=I(i,2),s=N(o);{let e=A(()=>t.run.pinned?KC:WC);X(s,{get of(){return R(e)},size:13})}var c=I(s,1,!0);D(o),D(r),L(()=>{q(o,`aria-pressed`,!!t.run.pinned),q(o,`title`,t.run.pinned?`Kept for good. Unpin to let them go with the oldest runs.`:`Keep these logs: the newest 20 runs keep theirs, older ones are let go.`),U(c,t.run.pinned?`Unpin`:`Pin`)}),B(`click`,o,()=>void Co(`run-pin`,{id:R(n),on:!t.run.pinned})),H(e,r)};W(u,e=>{t.run.logs?.length&&t.run.id&&e(d)});var f=I(u,2),p=e=>{var n=sw();B(`click`,n,function(...e){t.back?.apply(this,e)}),H(e,n)};W(f,e=>{R(i)&&e(p)}),H(e,r)};W(S,e=>{t.open&&e(C)}),D(c),L(e=>{q(l,`aria-expanded`,t.open),U(d,e),q(g,`data-state`,t.run.state),U(_,r[t.run.state??``]??t.run.state),U(y,R(o))},[()=>t.run.kind===`stop`?`Stop and revert`:`${(t.run.env??``).toUpperCase()}, ${t.run.mode??`auto`}`]),B(`click`,l,function(...e){t.toggle?.apply(this,e)}),H(e,c)};W(l,e=>{t.run.note?e(u):e(d,-1)}),H(e,c),k()}Qr([`click`]);var dw=V(`<p class="none svelte-16dstxb">No runs yet. Each run and Stop shows up here with how it ended.</p>`),fw=V(`<p class="none svelte-16dstxb">No runs since the canvas started.</p>`),pw=V(`<details class="svelte-16dstxb"><summary class="svelte-16dstxb"> </summary> <!></details>`),mw=V(`<!> <!>`,1),hw=V(`<button type="button" aria-label="History" aria-haspopup="dialog"><!></button> <div class="pop svelte-16dstxb" popover="" role="dialog" tabindex="-1" aria-label="History"><!></div>`,1);function gw(e,t){let n=ui();O(t,!0);let r=j(void 0),i=j(void 0),a=j(!1),o=j(null),s=A(()=>!!Q.status?.runs?.some(e=>e.state===`waiting`)),c=A(()=>[...Q.status?.runs??[],...Q.status?.notes??[]].sort((e,t)=>(t.at??``).localeCompare(e.at??``))),l=e=>!Q.status?.startedAt||(e.at??``)>=Q.status.startedAt||e.state===`waiting`||e.state===`applying`,u=A(()=>R(c).filter(l)),d=A(()=>R(c).filter(e=>!l(e))),f=(e=``)=>{let t=new Date(e),n=t.toDateString()===new Date().toDateString();return t.toLocaleString([],n?{hour:`2-digit`,minute:`2-digit`}:{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})},p=()=>{let e=R(r)?.getBoundingClientRect();e&&R(i)&&(R(i).style.top=`${String(e.bottom+6)}px`,R(i).style.right=`${String(Math.max(12,innerWidth-e.right))}px`)},m=e=>{R(i)?.hidePopover(),Bb({name:`Run from ${f(e.at)}`,version:1,nodes:e.nodes??{},edges:e.edges??[]})};var h=hw(),g=P(h);let _;X(N(g),{get of(){return HC},size:16}),D(g),Ma(g,e=>M(r,e),()=>R(r));var v=I(g,2),y=N(v),b=e=>{H(e,dw())},x=e=>{var t=mw(),n=P(t);G(n,17,()=>R(u),e=>e.id??e.at,(e,t)=>{{let n=A(()=>R(o)===R(t).id);uw(e,{get run(){return R(t)},get open(){return R(n)},toggle:()=>M(o,R(o)===R(t).id?null:R(t).id??null,!0),back:()=>{m(R(t))}})}},e=>{H(e,fw())});var r=I(n,2),i=e=>{var t=pw(),n=N(t),r=F(n);G(I(n,2),17,()=>R(d),e=>e.id??e.at,(e,t)=>{{let n=A(()=>R(o)===R(t).id);uw(e,{get run(){return R(t)},get open(){return R(n)},toggle:()=>M(o,R(o)===R(t).id?null:R(t).id??null,!0),back:()=>{m(R(t))}})}}),D(t),L(()=>U(r,`Earlier (${R(d).length??``})`)),H(e,t)};W(r,e=>{R(d).length&&e(i)}),H(e,t)};W(y,e=>{R(c).length?e(x,-1):e(b)}),D(v),Ma(v,e=>M(i,e),()=>R(i)),L(()=>{_=K(g,1,`open svelte-16dstxb`,null,_,{waiting:R(s)}),q(g,`aria-expanded`,R(a)),q(g,`title`,R(s)?`A run is waiting for the agent`:`Every run and Stop, and how it ended`),q(g,`popovertarget`,n),q(v,`id`,n)}),z(`toggle`,v,e=>{M(a,e.newState===`open`),R(a)&&p()}),H(e,h),k()}var _w=V(`<button class="open svelte-1la1tzd" type="button"><!></button>`);function vw(e,t){O(t,!0);let n=A(()=>Q.status?.traces?.state??`off`),r=async()=>{if(R(n)===`on`){window.open(Q.status?.traces?.view??``,`_blank`,`noopener`);return}if(R(n)===`starting`)return;let e=await Co(`traces`,{on:!0});`error`in e?$.show(e.error,`warning`):$.show(`Collecting traces. Apps started from now on send theirs; restart the running ones to include them.`)};var i=_w();X(N(i),{get of(){return Qy},size:16}),D(i),L(()=>{q(i,`data-state`,R(n)),q(i,`aria-label`,R(n)===`on`?`Open traces`:R(n)===`starting`?`Traces are starting`:`Collect traces`),q(i,`title`,R(n)===`on`?`Follow one request across your local apps, to where it failed`:R(n)===`starting`?`Starting the trace collector (Jaeger in Docker)`:`Collect traces from the apps Koppler starts (Jaeger in Docker)`)}),B(`click`,i,()=>void r()),H(e,i),k()}Qr([`click`]);var yw=new Set([`$$slots`,`$$events`,`$$legacy`]);function bw(e,t){let n=J(t,yw),r={name:`pencil`,size:24,node:[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]]};$a(e,Ba(()=>n,{get icon(){return r}}))}var xw={verbose:`debug`,trace:`debug`,debug:`debug`,dbg:`debug`,information:`info`,info:`info`,inf:`info`,warning:`warn`,warn:`warn`,wrn:`warn`,error:`error`,err:`error`,fatal:`error`,critical:`error`,crit:`error`},Sw=e=>e==null?``:typeof e==`string`?e:JSON.stringify(e),Cw=e=>xw[Sw(e).toLowerCase()]??`info`;function ww(e){let t=/T?(\d{2}:\d{2}:\d{2})/.exec(Sw(e))?.[1];if(!t)return``;let n=new Date(Sw(e));return Number.isNaN(n.getTime())?t:n.toTimeString().slice(0,8)}var Tw=(e,t)=>Sw(e).replace(/\{[@$]?([\w.]+)(?:[,:][^}]*)?\}/g,(e,n)=>n in t?Sw(t[n]):e);function Ew(e){if(!e.startsWith(`{`)||!e.endsWith(`}`))return null;let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!=`object`||!t)return null;let n=t;if(`@t`in n||`@m`in n||`@mt`in n)return{time:ww(n[`@t`]),level:Cw(n[`@l`]??`Information`),text:Sw(n[`@m`]??Tw(n[`@mt`],n)),detail:Sw(n[`@x`])};if(`Timestamp`in n||`MessageTemplate`in n||`RenderedMessage`in n){let e=n.Properties??{};return{time:ww(n.Timestamp),level:Cw(n.Level),text:Sw(n.RenderedMessage??Tw(n.MessageTemplate,e)),detail:Sw(n.Exception)}}return null}var Dw=/\\?\^?\[\[?\d+m|\x1b\[[0-9;]*m/g,Ow=[[/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?)\s+(INF|ERR|WRN|DBG)\s+(.*)$/,e=>({time:ww(e[1]),level:Cw(e[2]),text:e[3]??``,detail:``})],[/^\[(\d{2}:\d{2}:\d{2})\s+(\w+)\]\s*(.*)$/,e=>({time:e[1]??``,level:Cw(e[2]),text:e[3]??``,detail:``})],[/^\d{4}-\d{2}-\d{2} (\d{2}:\d{2}:\d{2}) \$ (.*)$/,e=>({time:e[1]??``,level:`start`,text:e[2]??``,detail:``})],[/^flutter: (.*)$/s,e=>({time:``,level:/(^|\s)(Exception|Error)\b|\[31m/.test(e[1]??``)?`error`:`info`,text:(e[1]??``).replace(Dw,``),detail:``})],[/^(.*?\.cs)\((\d+),\d+\): (warning|error) (\w+): (.*?)(?: \[[^\]]+\])?$/,e=>({time:``,level:e[3]===`error`?`error`:`warn`,build:!0,text:`${e[4]??``} ${(e[1]??``).split(`/`).slice(-2).join(`/`)}:${e[2]??``} ${e[5]??``}`,detail:``})],[/^koppler: (.*)$/s,e=>({time:``,level:`koppler`,text:e[1]??``,detail:``})]];function kw(e){let t=e.trim(),n=Ew(t);if(n)return n;for(let[e,n]of Ow){let r=e.exec(t);if(r)return n(r)}return{time:``,level:/\b(error|exception|fail(ed|ure)?|unhandled)\b/i.test(t)?`error`:/\bwarn(ing)?\b/i.test(t)?`warn`:`info`,text:t,detail:``}}var Aw=/^flutter: (#\d+\s|<asynchronous suspension>|\s*-- \S)/,jw=(e,t)=>Aw.test(e)&&t.level===`error`||/^\s+(at |---|\.\.\.)/.test(e)||/^\s{2,}\S/.test(e);function Mw(e,t,n,r){if(!t.trim())return;let i=e.at(-1);if(i&&r(i)&&jw(t,i)){i.detail+=(i.detail?`