@makerstufferupper/flypi 0.1.5 → 0.1.6

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.
@@ -0,0 +1,102 @@
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,d=()=>{};function f(e){for(var t=0;t<e.length;t++)e[t]()}function p(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var m=1024,h=2048,g=4096,_=8192,v=16384,y=32768,b=1<<25,x=65536,S=1<<19,ee=1<<20,te=1<<25,C=1<<21,ne=1<<22,re=1<<23,w=Symbol(`$state`),ie=Symbol(`component`),ae=Symbol(`legacy props`),oe=Symbol(``),se=Symbol(`attributes`),ce=Symbol(`class`),le=Symbol(`style`),ue=Symbol(`text`),de=Symbol(`form reset`),fe=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},pe=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`),me={},T=Symbol(`uninitialized`),he=`http://www.w3.org/1999/xhtml`,ge=`http://www.w3.org/2000/svg`,_e=`http://www.w3.org/1998/Math/MathML`;function ve(){console.warn(`https://svelte.dev/e/derived_inert`)}function ye(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function be(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function xe(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var E=!1;function Se(e){E=e}var D;function O(e){if(e===null)throw ye(),me;return D=e}function Ce(){return O(an(D))}function k(e){if(E){if(an(D)!==null)throw ye(),me;D=e}}function we(e=1){if(E){for(var t=e,n=D;t--;)n=an(n);D=n}}function Te(e=!0){for(var t=0,n=D;;){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=an(n);e&&n.remove(),n=i}}function Ee(e){if(!e||e.nodeType!==8)throw ye(),me;return e.data}function De(e){return e===this.v}function Oe(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function ke(e){return!Oe(e,this.v)}function Ae(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function je(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function Me(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function Ne(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function Pe(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function Fe(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function Ie(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function Le(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Re(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function ze(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Be(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Ve(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var He=null;function Ue(e){He=e}function We(e,t=!1,n){He={p:He,i:!1,c:null,e:null,s:e,x:null,r:V,l:null}}function Ge(e){var t=He,n=t.e;if(n!==null){t.e=null;for(var r of n)vn(r)}return e!==void 0&&(t.x=e),t.i=!0,He=t.p,Ke(e)}function Ke(e={}){return i(e,ie,{value:!0}),e}function qe(){return!0}var Je=[];function Ye(){var e=Je;Je=[],f(e)}function Xe(e){if(Je.length===0&&!Ct){var t=Je;queueMicrotask(()=>{t===Je&&Ye()})}Je.push(e)}function Ze(){for(;Je.length>0;)Ye()}var Qe=~(h|g|m);function A(e,t){e.f=e.f&Qe|t}function $e(e){e.f&512||e.deps===null?A(e,m):A(e,g)}function et(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),A(e,m)}function tt(e){E&&rn(e)!==null&&on(e)}var nt=!1;function rt(){nt||(nt=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[de]?.()})},{capture:!0}))}function it(e){var t=B,n=V;Bn(null),Vn(null);try{return e()}finally{Bn(t),Vn(n)}}function at(e,t,n,r=n){e.addEventListener(t,()=>it(n));let i=e[de];e[de]=i?()=>{i(),r(!0)}:()=>r(!0),rt()}function ot(e,t,n,r){let i=qe()?ut:pt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=V,c=st(),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){dn(e,s)}ct()}}var d=lt();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>ft(e))).then(u).catch(e=>dn(e,s)).finally(d)}l?l.then(()=>{if(s.f&16384){d();return}c(),f(),ct()}):f()}function st(){var e=V,t=B,n=He,r=M;return function(i=!0){Vn(e),Bn(t),Ue(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function ct(e=!0){Vn(null),Bn(null),Ue(null),e&&M?.deactivate()}function lt(){var e=V,t=e.b,n=M,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 ut(e){var t=2|h;return V!==null&&(V.f|=S),{ctx:He,deps:null,effects:null,equals:De,f:t,fn:e,reactions:null,rv:0,v:T,wv:0,parent:V,ac:null}}var dt=Symbol(`obsolete`);function ft(e,t,n){let r=V;r===null&&je();var i=void 0,a=Bt(T),o=!B,s=new Set;return xn(()=>{var t=V,n=p();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==fe&&n.reject(e)}).finally(ct)}catch(e){n.reject(e),ct()}var c=M;if(o){if(t.f&32768)var l=lt();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(dt);else for(let e of s.values())e.reject(dt);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==dt&&(c.activate(),t?(a.f|=re,Wt(a,t)):(a.f&8388608&&(a.f^=re),Wt(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),gn(()=>{for(let e of s)e.reject(dt)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function j(e){let t=ut(e);return Un(t),t}function pt(e){let t=ut(e);return t.equals=ke,t}function mt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)On(t[n])}}function ht(e){var t,n=V,r=e.parent;if(!Ln&&r!==null&&e.v!==T&&r.f&24576)return ve(),e.v;Vn(r);try{mt(e),t=tr(e)}finally{Vn(n)}return t}function gt(e){var t=ht(e);if(!e.equals(t)&&(e.wv=Qn(),(!M?.is_fork||e.deps===null)&&(M===null?e.v=t:(M.capture(e,t,!0),bt?.capture(e,t,!0)),e.deps===null))){A(e,m);return}Ln||(xt===null?$e(e):(hn()||M?.is_fork)&&xt.set(e,t))}function _t(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac!==null&&it(()=>{t.ac.abort(fe),t.ac=null}),t.fn!==null&&(t.teardown=d),ir(t,0),En(t))}function vt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&ar(t)}var yt=null,M=null,bt=null,xt=null,St=null,Ct=!1,wt=!1,Tt=null,Et=null,Dt=0,Ot=1,kt=class e{id=Ot++;#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(){yt===null?yt=this:(yt.#n=this,this.#t=yt),yt=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)A(r,h),t(r);for(r of n.m)A(r,g),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^=m}}n||e.push(t)}return this.#c=[],e}#_(){this.#e=!0;for(let e of this.#u)this.#d.delete(e),A(e,h),this.schedule(e);for(let e of this.#d)A(e,g),this.schedule(e);this.apply();for(var t=Tt=[],n=[],r=Et=[];this.#c.length>0;){Dt++>1e3&&(this.#S(),jt());for(let e of this.#g())try{this.#v(e,t,n)}catch(t){throw It(e),this.#h()||this.discard(),t}}if(M=null,r.length>0){var i=e.ensure();for(let e of r)i.schedule(e)}if(Tt=null,Et=null,this.#h()){this.#x(n),this.#x(t);for(let[e,t]of this.#f)Ft(e,t);r.length>0&&M.#_();return}let a=this.#y();if(a){this.#x(n),this.#x(t),a.#b(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),bt=this,Nt(n),Nt(t),bt=null,this.#s?.resolve();var o=M;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&&(Rt.clear(),o.#_())}#v(e,t,n){e.f^=m;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^=m:i&4?t.push(r):$n(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),A(i,h),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#S(),M=this,this.#_()}#x(e){for(var t=0;t<e.length;t+=1)et(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==T&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),xt?.set(e,t)),this.is_fork||(e.v=t)}activate(){M=this}deactivate(){M=null,xt=null}flush(){try{wt=!0,M=this,this.#_()}finally{Dt=0,St=null,Tt=null,Et=null,wt=!1,M=null,xt=null,Rt.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(dt);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,Xe(()=>{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??=p()).promise}static ensure(){if(M===null){let t=M=new e;!wt&&!Ct&&Xe(()=>{t.#e||t.flush()})}return M}apply(){xt=null}schedule(e){if(St=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}this.#c.push(e)}#S(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?yt=e:t.#t=e,this.linked=!1}}};function At(e){var t=Ct,n=bt;bt=null,Ct=!0;try{var r;for(e&&(At(),r=e());;){if(Ze(),M===null)return r;M.flush()}}finally{Ct=t,bt=n}}function jt(){try{Ie()}catch(e){dn(e,St)}}var Mt=null;function Nt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&$n(r)&&(Mt=new Set,ar(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&An(r),Mt?.size>0)){Rt.clear();for(let e of Mt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Mt.has(n)&&(Mt.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)}}Mt.clear()}}Mt=null}}function Pt(e){M.schedule(e)}function Ft(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),A(e,m);for(var n=e.first;n!==null;)Ft(n,t),n=n.next}}function It(e){A(e,m);for(var t=e.first;t!==null;)It(t),t=t.next}var Lt=new Set,Rt=new Map,zt=!1;function Bt(e,t){return{f:0,v:e,reactions:null,equals:De,rv:0,wv:0}}function N(e,t){let n=Bt(e,t);return Un(n),n}function Vt(e,t=!1,n=!0){let r=Bt(e);return t||(r.equals=ke),r}function P(e,t,n=!1){return B!==null&&(!zn||B.f&131072)&&qe()&&B.f&4325394&&(Hn===null||!Hn.has(e))&&Be(),Wt(e,n?Jt(t):t,Et)}var Ht=null,Ut=0;function Wt(e,t,n=null){if(!e.equals(t)){Ln?Rt.set(e,t):Rt.has(e)||Rt.set(e,e.v);var r=kt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&ht(t),xt===null&&$e(t)}e.wv=Qn(),Ht=null,Ut=0,qt(e,h,n),Ht=null,qe()&&V!==null&&V.f&1024&&!(V.f&96)&&(Kn===null?qn([e]):Kn.push(e)),!r.is_fork&&Lt.size>0&&!zt&&Gt()}return t}function Gt(){zt=!1;for(let e of Lt){e.f&1024&&A(e,g);let t;try{t=$n(e)}catch{t=!0}t&&ar(e)}Lt.clear()}function Kt(e){P(e,e.v+1)}function qt(e,t,n){var r=e.reactions;if(r!==null){var i=qe(),a=r.length;if(Ut+=a,Ut>1e5&&Ht===null&&(Ht=new Set),Ht!==null){if(Ht.has(e))return;Ht.add(e)}for(var o=0;o<a;o++){var s=r[o],c=s.f;if(i||s!==V){var l=(c&h)===0;if(l&&A(s,t),c&131072)Lt.add(s);else if(c&2){var u=s;xt?.delete(u),qt(u,g,n)}else if(l){var d=s;c&16&&Mt!==null&&Mt.add(d),n===null?Pt(d):n.push(d)}}}}}function Jt(t){if(typeof t!=`object`||!t||w in t||ie in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=N(0),u=null,d=Xn,f=e=>{if(Xn===d)return e();var t=B,n=Xn;Bn(null),Zn(d);var r=e();return Bn(t),Zn(n),r};return i&&r.set(`length`,N(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Re();var i=r.get(t);return i===void 0?f(()=>{var e=N(n.value,u);return r.set(t,e),e}):P(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>N(T,u));r.set(t,e),Kt(o)}}else P(n,T),Kt(o);return!0},get(e,n,i){if(n===w)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>N(Jt(s?e[n]:T),u)),r.set(n,o)),o!==void 0){var c=H(o);return c===T?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=H(i);if(a===T)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===w)return!0;var n=r.get(t),i=n!==void 0&&n.v!==T||Reflect.has(e,t);return(n!==void 0||V!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>N(i?Jt(e[t]):T,u)),r.set(t,n)),H(n)===T)?!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(()=>N(T,u)),r.set(d+``,p)):P(p,T)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>N(void 0,u)),P(c,Jt(n)),r.set(t,c));else{l=c.v!==T;var m=f(()=>Jt(n));P(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&&P(g,_+1)}Kt(o)}return!0},ownKeys(e){H(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==T});for(var[n,i]of r)i.v!==T&&!(n in e)&&t.push(n);return t},setPrototypeOf(){ze()}})}function Yt(e){try{if(typeof e==`object`&&e&&w in e)return e[w]}catch{}return e}function Xt(e,t){return Object.is(Yt(e),Yt(t))}var Zt,Qt,$t,en;function tn(){if(Zt===void 0){Zt=window,Qt=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;$t=a(t,`firstChild`).get,en=a(t,`nextSibling`).get,u(e)&&(e[ce]=void 0,e[se]=null,e[le]=void 0,e.__e=void 0),u(n)&&(n[ue]=void 0)}}function nn(e=``){return document.createTextNode(e)}function rn(e){return $t.call(e)}function an(e){return en.call(e)}function F(e,t){if(!E)return rn(e);var n=rn(D);if(n===null)n=D.appendChild(nn());else if(t&&n.nodeType!==3){var r=nn();return n?.before(r),O(r),r}return t&&ln(n),O(n),n}function I(e,t=!1){if(!E){var n=rn(e);return n instanceof Comment&&n.data===``?an(n):n}if(t){if(D?.nodeType!==3){var r=nn();return D?.before(r),O(r),r}ln(D)}return D}function L(e,t=!1){if(!E)return rn(e);var n=F(e,t);return k(e),n}function R(e,t=1,n=!1){let r=E?D:e;for(var i;t--;)i=r,r=an(r);if(!E)return r;if(n){if(r?.nodeType!==3){var a=nn();return r===null?i?.after(a):r.before(a),O(a),a}ln(r)}return O(r),r}function on(e){e.textContent=``}function sn(){return!1}function cn(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 ln(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 un(e){var t=V;if(t===null)return B.f|=re,e;if(!(t.f&32768)&&!(t.f&4))throw e;dn(e,t)}function dn(e,t){if(e===me)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 fn(e){V===null&&(B===null&&Fe(e),Pe()),Ln&&Ne(e)}function pn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function mn(e,t){var n=V;n!==null&&n.f&8192&&(e|=_);var r={ctx:He,deps:null,nodes:null,f:e|h|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};M?.register_created_effect(r);var i=r;if(e&4)Tt===null?kt.ensure().schedule(r):Tt.push(r);else if(t!==null){try{ar(r)}catch(e){throw On(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|=x))}if(i!==null&&(i.parent=n,n!==null&&pn(i,n),B!==null&&B.f&2&&!(e&64))){var a=B;(a.effects??=[]).push(i)}return r}function hn(){return B!==null&&!zn}function gn(e){let t=mn(8,null);return A(t,m),t.teardown=e,t}function _n(e){fn(`$effect`);var t=V.f;if(!B&&t&32&&He!==null&&!He.i){var n=He;(n.e??=[]).push(e)}else return vn(e)}function vn(e){return mn(4|ee,e)}function yn(e){kt.ensure();let t=mn(64|S,e);return(e={})=>new Promise(n=>{e.outro?jn(t,()=>{On(t),n(void 0)}):(On(t),n(void 0))})}function bn(e){return mn(4,e)}function xn(e){return mn(ne|S,e)}function Sn(e,t=0){return mn(8|t,e)}function z(e,t=[],n=[],r=[]){ot(r,t,n,t=>{mn(8,()=>{e(...t.map(H))})})}function Cn(e,t=0){return mn(16|t,e)}function wn(e){return mn(32|S,e)}function Tn(e){var t=e.teardown;if(t!==null){let n=Ln,r=B;Rn(!0),Bn(null);try{t.call(null)}catch(t){dn(t,e.parent)}finally{Rn(n),Bn(r)}}}function En(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&it(()=>{e.abort(fe)});var r=n.next;n.f&64?n.parent=null:On(n,t),n=r}}function Dn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||On(t),t=n}}function On(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(kn(e.nodes.start,e.nodes.end),n=!0),e.f|=b,En(e,t&&!n),ir(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Tn(e),e.f^=b,e.f|=v;var i=e.parent;i!==null&&i.first!==null&&An(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function kn(e,t){for(;e!==null;){var n=e===t?null:an(e);e.remove(),e=n}}function An(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 jn(e,t,n=!0){var r=[];e.f|=256,Mn(e,r,!0);var i=()=>{n&&On(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Mn(e,t,n){if(!(e.f&8192)){e.f^=_;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);Mn(i,t,o?n:!1)}i=a}}}function Nn(e){e.f&=-257,Pn(e,!0)}function Pn(e,t){if(!(e.f&256)&&e.f&8192){e.f^=_,e.f&1024||(A(e,h),kt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=!!(n.f&65536)||!!(n.f&32);Pn(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 Fn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:an(n);t.append(n),n=i}}var In=null,Ln=!1;function Rn(e){Ln=e}var B=null,zn=!1;function Bn(e){B=e}var V=null;function Vn(e){V=e}var Hn=null;function Un(e){B!==null&&(B.f&2097152||B.f&2)&&(Hn??=new Set).add(e)}var Wn=null,Gn=0,Kn=null;function qn(e){Kn=e}var Jn=1,Yn=0,Xn=Yn;function Zn(e){Xn=e}function Qn(){return++Jn}function $n(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($n(a)&&gt(a),a.wv>e.wv)return!0}t&512&&xt===null&&A(e,m)}return!1}function er(e,t,n=!0){var r=e.reactions;if(r!==null&&!(Hn!==null&&Hn.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?er(a,t,!1):t===a&&(n?A(a,h):a.f&1024&&A(a,g),Pt(a))}}function tr(e){var t=Wn,n=Gn,r=Kn,i=B,a=Hn,o=He,s=zn,c=Xn,l=e.f;Wn=null,Gn=0,Kn=null,B=l&96?null:e,Hn=null,Ue(e.ctx),zn=!1,Xn=++Yn,e.ac!==null&&(it(()=>{e.ac.abort(fe)}),e.ac=null);try{e.f|=C;var u=e.fn,d=u();e.f|=y;var f=nr(e);if(qe()&&Kn!==null&&!zn&&f!==null&&!(e.f&6146))for(var p=0;p<Kn.length;p++)er(Kn[p],e);if(i!==null&&i!==e){if(Yn++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=Yn;if(t!==null)for(let e of t)e.rv=Yn;Kn!==null&&(r===null?r=Kn:r.push(...Kn))}return e.f&8388608&&(e.f^=re),d}catch(t){return nr(e),un(t)}finally{e.f^=C,Wn=t,Gn=n,Kn=r,B=i,Hn=a,Ue(o),zn=s,Xn=c}}function nr(e){var t=e.deps,n=M?.is_fork;if(Wn!==null){var r;if(n||ir(e,Gn),t!==null&&Gn>0)for(t.length=Gn+Wn.length,r=0;r<Wn.length;r++)t[Gn+r]=Wn[r];else e.deps=t=Wn;if(hn()&&e.f&512)for(r=Gn;r<t.length;r++)(t[r].reactions??=[]).push(e)}else!n&&t!==null&&Gn<t.length&&(ir(e,Gn),t.length=Gn);return t}function rr(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&&(Wn===null||!n.call(Wn,r))){var s=r;s.f&512&&(s.f^=512),s.v!==T&&$e(s),s.ac!==null&&it(()=>{s.ac.abort(fe),s.ac=null,A(s,h)}),_t(s),ir(s,0)}}function ir(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)rr(e,n[r])}function ar(e){var t=e.f;if(!(t&16384)){A(e,m);var n=V;V=e;try{t&16777232?Dn(e):En(e),Tn(e);var r=tr(e);e.teardown=typeof r==`function`?r:null,e.wv=Jn}finally{V=n}}}async function or(){await Promise.resolve(),At()}function H(e){var t=!!(e.f&2);if(In?.add(e),B!==null&&!zn&&!(V!==null&&V.f&16384)&&(Hn===null||!Hn.has(e))){var r=B.deps;if(B.f&2097152)e.rv<Yn&&(e.rv=Yn,Wn===null&&r!==null&&r[Gn]===e?Gn++:Wn===null?Wn=[e]:Wn.push(e));else{B.deps??=[],n.call(B.deps,e)||B.deps.push(e);var i=e.reactions;i===null?e.reactions=[B]:n.call(i,B)||i.push(B)}}if(Ln&&Rt.has(e))return Rt.get(e);if(t){var a=e;if(Ln){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||cr(a))&&(o=ht(a)),Rt.set(a,o),o}var s=!(a.f&512)&&!zn&&B!==null&&!!(B.f&512),c=(a.f&y)===0;$n(a)&&(s&&(a.f|=512),gt(a)),s&&!c&&(vt(a),sr(a))}if(xt?.has(e))return xt.get(e);if(e.f&8388608)throw e.v;return e.v}function sr(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)&&(vt(r),sr(r))}}function cr(e){if(e.v===T)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Rt.has(t)||t.f&2&&cr(t))return!0;return!1}function lr(e){var t=zn;try{return zn=!0,e()}finally{zn=t}}function ur(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(w in e)dr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&w in n&&dr(n)}}}function dr(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{dr(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{}}}}}[...`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(`.`)];var fr=[`touchstart`,`touchmove`];function pr(e){return fr.includes(e)}var mr=Symbol(`events`),hr=new Set,gr=new Set;function _r(e,t,n,r={}){function i(e){if(r.capture||Sr.call(t,e),!e.cancelBubble)return it(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?(i.__removed=!1,Xe(()=>{i.__removed||t.addEventListener(e,i,r)})):t.addEventListener(e,i,r),i}function vr(e,t,n,r,i){var a={capture:r,passive:i},o=_r(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&gn(()=>{o.__removed=!0,t.removeEventListener(e,o,a)})}function U(e,t,n){(t[mr]??={})[e]=n}function yr(e){for(var t=0;t<e.length;t++)hr.add(e[t]);for(var n of gr)n(e)}var br=null,xr=!1;function Sr(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;br=e,xr||(xr=!0,setTimeout(()=>{xr=!1,br=null}));var s=0,c=br===e&&e[mr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[mr]=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=B,f=V;Bn(null),Vn(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[mr]?.[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[mr]=t,delete e.currentTarget,Bn(d),Vn(f)}}}var Cr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function wr(e){return Cr?.createHTML(e)??e}function Tr(e){var t=cn(`template`);return t.innerHTML=wr(e.replaceAll(`<!>`,`<!---->`)),t.content}function Er(e,t){var n=V;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function W(e,t){var n=!!(t&1),r=!!(t&2),i,a=!e.startsWith(`<!>`);return()=>{if(E)return Er(D,null),D;i===void 0&&(i=Tr(a?e:`<!>`+e),n||(i=rn(i)));var t=r||Qt?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=rn(t),s=t.lastChild;Er(o,s)}else Er(t,t);return t}}function Dr(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=!!(t&1),a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(E)return Er(D,null),D;if(!o){var e=rn(Tr(a));if(i)for(o=document.createDocumentFragment();rn(e);)o.appendChild(rn(e));else o=rn(e)}var t=o.cloneNode(!0);if(i){var n=rn(t),r=t.lastChild;Er(n,r)}else Er(t,t);return t}}function Or(e,t){return Dr(e,t,`svg`)}function kr(e=``){if(!E){var t=nn(e+``);return Er(t,t),t}var n=D;return n.nodeType===3?ln(n):(n.before(n=nn()),O(n)),Er(n,n),n}function Ar(){if(E)return Er(D,null),D;var e=document.createDocumentFragment(),t=document.createComment(``),n=nn();return e.append(t,n),Er(t,n),e}function G(e,t){if(E){var n=V;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=D),Ce();return}e!==null&&e.before(t)}function jr(e){let t=0,n=Bt(0),r;return()=>{hn()&&(H(n),Sn(()=>(t===0&&(r=lr(()=>e(()=>Kt(n)))),t+=1,()=>{Xe(()=>{--t,t===0&&(r?.(),r=void 0,Kt(n))})})))}}var Mr=x|S;function Nr(e,t,n,r){new Pr(e,t,n,r)}var Pr=class{parent;is_pending=!1;transform_error;#e;#t=E?D: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=jr(()=>(this.#m=Bt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=V;t.b=this,t.f|=128,n(e)},this.parent=V.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Cn(()=>{if(E){let e=Ee(this.#t);Ce();let t=e===`[!`;if(e.startsWith(`[?`)){let t=JSON.parse(e.slice(2));this.#_(t)}else t?this.#b():this.#g()}else this.#x()},Mr),E&&(this.#e=D)}#g(){try{this.#a=wn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed,{reset:n,invoke_onerror:r}=this.#v(e);Xe(r),t&&(this.#s=wn(()=>{t(this.#e,()=>e,()=>n)}))}#v(e){var t=!1,n=!1;let r=()=>{if(!this.#y()){if(t){xe();return}t=!0,n&&Ve(),this.#s!==null&&jn(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){dn(e,this.#i&&this.#i.parent)}}}}#y(){return(this.#i.f&(v|b))!==0}#b(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=wn(()=>e(this.#e)),Xe(()=>{if(!this.#y()){var e=this.#c=document.createDocumentFragment(),t=nn(),n=!1;if(e.append(t),this.#a=this.#C(()=>{try{return wn(()=>this.#r(t))}catch(e){try{this.error(e),n=!0}catch(e){dn(e,this.#i.parent)}return null}}),this.#a===null){this.#c=null,n&&this.#S(M);return}this.#u===0&&(this.#e.before(e),this.#c=null,jn(this.#o,()=>{this.#o=null}),this.#S(M))}}))}#x(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=wn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Fn(this.#a,e);let t=this.#n.pending;this.#o=wn(()=>t(this.#e))}else this.#S(M)}catch(e){this.error(e)}}#S(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){et(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=V,n=B,r=He;Vn(this.#i),Bn(this.#i),Ue(this.#i.ctx);try{return kt.ensure(),e()}finally{Vn(t),Bn(n),Ue(r)}}#w(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#w(e,t);return}this.#u+=e,this.#u===0&&(this.#S(t),this.#o&&jn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#w(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,Xe(()=>{this.#d=!1,this.#m&&Wt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),H(this.#m)}error(e){if(e===me||!this.#n.onerror&&!this.#n.failed)throw e;M?.is_fork?(this.#a&&M.skip_effect(this.#a),this.#o&&M.skip_effect(this.#o),this.#s&&M.skip_effect(this.#s),M.oncommit(()=>{this.#y()||this.#T(e)})):this.#T(e)}#T(e){this.#a&&=(On(this.#a),null),this.#o&&=(On(this.#o),null),this.#s&&=(On(this.#s),null),E&&(O(this.#t),we(),O(Te()));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 wn(()=>{var r=V;r.b=this,r.f|=128,t(this.#e,()=>e,()=>n)})}catch(e){return dn(e,this.#i.parent),null}}))};Xe(()=>{if(!this.#y()){var t;try{t=this.transform_error(e)}catch(e){dn(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(n,e=>dn(e,this.#i&&this.#i.parent)):n(t)}})}};function K(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ue]??=e.nodeValue)&&(e[ue]=n,e.nodeValue=`${n}`)}function Fr(e,t){return Lr(e,t)}var Ir=new Map;function Lr(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){tn();var l=void 0,u=yn(()=>{var s=n??t.appendChild(nn());Nr(s,{pending:()=>{}},t=>{We({});var n=He;if(o&&(n.c=o),a&&(i.$$events=a),E&&Er(t,null),l=e(t,i)||Ke(),E&&(V.nodes.end=D,D===null||D.nodeType!==8||D.data!==`]`))throw ye(),me;Ge()},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=pr(r);for(let e of[t,document]){var a=Ir.get(e);a===void 0&&(a=new Map,Ir.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,Sr,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return d(r(hr)),gr.add(d),()=>{for(var e of u)for(let n of[t,document]){var r=Ir.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Sr),r.delete(e),r.size===0&&Ir.delete(n)):r.set(e,i)}gr.delete(d),s!==n&&s.parentNode?.removeChild(s)}});return Rr.set(l,u),l}var Rr=new WeakMap,zr=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)Nn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Nn(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&&(On(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();Fn(r,t),t.append(nn()),this.#n.set(e,{effect:r,fragment:t})}else On(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),jn(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)||(On(n.effect),this.#n.delete(e))};ensure(e,t){var n=M,r=sn();if(t&&!this.#t.has(e)&&!this.#n.has(e)){if(r){var i=document.createDocumentFragment(),a=nn();i.append(a),this.#n.set(e,{effect:wn(()=>t(a)),fragment:i})}else this.#t.set(e,wn(()=>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 E&&(this.anchor=D),this.#a(n)}};function q(e,t,n=!1){var r;E&&(r=D,Ce());var i=new zr(e),a=n?x:0;function o(e,t){if(E){var n=Ee(r);if(e!==parseInt(n.substring(1))){var a=Te();O(a),i.anchor=a,Se(!1),i.ensure(e,t),Se(!0);return}}i.ensure(e,t)}Cn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Br(e,t){return t}function Vr(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];jn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Hr(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;on(d),d.append(u),e.items.clear()}Hr(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Hr(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|=te,Fn(a,document.createDocumentFragment())):On(t[i],n)}}var Ur;function J(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=E?O(rn(u)):u.appendChild(nn())}E&&Ce();var d=null,f=pt(()=>{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=H(f);_.fallback=d,Gr(_,t,c,n,a),d!==null&&(t.length===0?d.f&33554432?(d.f^=te,qr(d,null,c)):Nn(d):jn(d,()=>{d=null}))}}function g(e){_.pending.delete(e)}var _={effect:Cn(()=>{var e=H(f),t=e.length;let r=!1;E&&Ee(c)===`[!`!=(t===0)&&(c=Te(),O(c),Se(!1),r=!0);for(var u=new Set,_=M,v=sn(),y=0;y<t;y+=1){E&&D.nodeType===8&&D.data===`]`&&(c=D,r=!0,Se(!1));var b=e[y],x=a(b,y),S=m?null:l.get(x);S?(S.v&&Wt(S.v,b),S.i&&Wt(S.i,y),v&&_.unskip_effect(S.e)):(S=Kr(l,m?c:Ur??=nn(),b,x,y,o,n,i),m||(S.e.f|=te),l.set(x,S)),u.add(x)}if(t===0&&s&&!d&&(m?d=wn(()=>s(c)):(d=wn(()=>s(Ur??=nn())),d.f|=te)),t>u.size&&Me(``,``,``),E&&t>0&&O(Te()),!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&&Se(!0),H(f)}),flags:n,items:l,pending:p,outrogroups:null,fallback:d};m=!1,E&&(c=D)}function Wr(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Gr(e,t,n,i,a){var o=!!(i&8),s=t.length,c=e.items,l=Wr(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&&(Nn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432){if(_.f^=te,_===l)qr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Jr(e,d,_),Jr(e,_,y),qr(_,y,n),d=_,p=[],m=[],l=Wr(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],ee=p[p.length-1];for(x=0;x<p.length;x+=1)qr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Jr(e,S.prev,ee.next),Jr(e,d,S),Jr(e,ee,b),l=b,d=ee,--v,p=[],m=[]}else u.delete(_),qr(_,l,n),Jr(e,_.prev,_.next),Jr(e,_,d===null?e.effect.first:d.next),Jr(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Wr(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Wr(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Hr(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var C=[];if(u!==void 0)for(_ of u)_.f&8192||C.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&C.push(l),l=Wr(l.next);var ne=C.length;if(ne>0){var re=i&4&&s===0?n:null;if(o){for(v=0;v<ne;v+=1)C[v].nodes?.a?.measure();for(v=0;v<ne;v+=1)C[v].nodes?.a?.fix()}Vr(e,C,re)}}o&&Xe(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Kr(e,t,n,r,i,a,o,s){var c=o&1?o&16?Bt(n):Vt(n,!1,!1):null,l=o&2?Bt(i):null;return{v:c,i:l,e:wn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function qr(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=an(r);if(a.before(r),r===i)return;r=o}}function Jr(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function Yr(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;E&&(o=O(rn(c)))}z(()=>{var e=V;if(s===(s=t()??``)){E&&Ce();return}if(n&&!E){e.nodes=null,c.innerHTML=s,s!==``&&Er(rn(c),c.lastChild);return}if(e.nodes!==null&&(kn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(E){for(var a=D.data,l=Ce(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=an(l);if(l===null)throw ye(),me;Er(D,u),o=O(l);return}var d=cn(r?`svg`:i?`math`:`template`,r?ge:i?_e:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Er(rn(f),f.lastChild),r||i)for(;rn(f);)o.before(rn(f));else o.before(f)}})}function Xr(e,t,n){bn(()=>{var r=lr(()=>t(e,n?.())||{});if(n&&r?.update){var i=!1,a={};Sn(()=>{var e=n();ur(e),i&&Oe(a,e)&&(a=e,r.update(e))}),i=!0}if(r?.destroy)return()=>r.destroy()})}var Zr=[...`
2
+ \r\f\xA0\v`];function Qr(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||Zr.includes(r[o-1]))&&(s===r.length||Zr.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function $r(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 ei(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function ti(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(ei)),i&&c.push(...Object.keys(i).map(ei));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=ei(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+=$r(r)),i&&(n+=$r(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function ni(e,t,n,r,i,a){var o=e[ce];if(E||o!==n||o===void 0){var s=Qr(n,r,a);(!E||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[ce]=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 ri(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 ii(e,t,n,r){var i=e[le];if(E||i!==t){var a=ti(t,r);(!E||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e[le]=t}else r&&(Array.isArray(r)?(ri(e,n?.[0],r[0]),ri(e,n?.[1],r[1],`important`)):ri(e,n,r));return r}function ai(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function oi(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=ui(c);ai(c,i?a.includes(l):Xt(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 si(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return be();for(var i of t.options)i.selected=n.includes(ui(i));return}for(i of t.options)if(Xt(ui(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function ci(e){var t=new MutationObserver(t=>{t.every(di)||(`__defaultValue`in e&&oi(e,!1),`__value`in e&&si(e,e.__value))});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),gn(()=>{t.disconnect()})}function li(e,t,n=t){var r=new WeakSet,i=!0;at(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),ui);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&ui(o)}n(a),e.__value=a,M!==null&&r.add(M)}),bn(()=>{var a=t();if(e===document.activeElement){var o=M;if(r.has(o))return}if(si(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=ui(s),n(a))}e.__value=a,i=!1})}function ui(e){return`__value`in e?e.__value:e.value}function di(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 fi=Symbol(`is custom element`),pi=Symbol(`is html`),mi=pe?`link`:`LINK`,hi=pe?`progress`:`PROGRESS`;function Y(e){if(E){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;X(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;X(e,`checked`,null),e.checked=r}}};e[de]=n,Xe(n),rt()}}function gi(e,t){var n=_i(e);n.value!==(n.value=t??void 0)&&(e.value!==t||t===0&&e.nodeName===hi)&&(e.value=t??``)}function X(e,t,n,r){var i=_i(e);E&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===mi)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[oe]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&yi(e).has(t)?e[t]=n:e.setAttribute(t,n))}function _i(e){return e[se]??={[fi]:e.nodeName.includes(`-`),[pi]:e.namespaceURI===he}}var vi=new Map;function yi(e){var t=e.getAttribute(`is`)||e.nodeName,n=vi.get(t);if(n)return n;vi.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 Z(e,t,n=t){var r=new WeakSet;at(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=xi(e)?Si(a):a,n(a),M!==null&&r.add(M),await or(),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))}}}),(E&&e.defaultValue!==e.value||lr(t)==null&&e.value)&&(n(xi(e)?Si(e.value):e.value),M!==null&&r.add(M)),Sn(()=>{var n=t();if(e===document.activeElement){var i=M;if(r.has(i))return}xi(e)&&n===Si(e.value)||(e.type!==`date`||n||e.value)&&n!==e.value&&(e.value=n??``)})}function bi(e,t,n=t){at(e,`change`,t=>{n(t?e.defaultChecked:e.checked)}),(E&&e.defaultChecked!==e.checked||lr(t)==null)&&n(e.checked),Sn(()=>{e.checked=!!t()})}function xi(e){var t=e.type;return t===`number`||t===`range`}function Si(e){return e===``?null:+e}function Ci(e,t){return e===t||e?.[w]===t}function wi(e=Ke(),t,n,r){var i=He.r,a=V;return bn(()=>{var o,s;return Sn(()=>{o=s,s=r?.()||[],lr(()=>{Ci(n(...s),e)||(t(e,...s),o&&Ci(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&&Ci(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}var Ti=!1;function Ei(e){var t=Ti;try{return Ti=!1,[e(),Ti]}finally{Ti=t}}function Di(e,t,n,r){var i=!0,o=!!(n&8),s=!!(n&16),c=r,l=!0,u=void 0,d=()=>s&&i?(u??=ut(r),H(u)):(l&&(l=!1,c=s?lr(r):r),c);let f;if(o){var p=w in e||ae in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=Ei(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&Le(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?ut:pt)(()=>(v=!1,g()));o&&H(y);var b=V;return(function(e,t){if(arguments.length>0){let n=t?H(y):i&&o?Jt(e):e;return P(y,n),v=!0,c!==void 0&&(c=n),e}return Ln&&v||b.f&16384?y.v:H(y)})}function Oi(e){He===null&&Ae(`onMount`),_n(()=>{let t=lr(e);if(typeof t==`function`)return t})}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`);function ki(){return{messages:[],streaming:null,tools:{},queue:{steering:[],followUp:[]},running:!1,turn:Ai(),total:Ai()}}function Ai(){return{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:0}}function ji(e){let t=e,n=typeof t.role==`string`?t.role:`unknown`,r=[];if(n===`toolResult`)r.push({kind:`tool-result`,id:typeof t.toolCallId==`string`?t.toolCallId:``,name:typeof t.toolName==`string`?t.toolName:``,output:Ii(t.content),isError:t.isError===!0});else{let e=t.content;if(typeof e==`string`)e&&r.push({kind:`text`,text:e});else if(Array.isArray(e))for(let t of e)r.push(...Mi(t))}let i={role:n,blocks:r},a=Ni(t.usage);return a&&(i.usage=a),i}function Mi(e){if(!e||typeof e!=`object`)return[];let t=e;switch(t.type){case`text`:return typeof t.text==`string`&&t.text?[{kind:`text`,text:t.text}]:[];case`image`:return typeof t.data==`string`&&typeof t.mimeType==`string`?[{kind:`image`,data:t.data,mimeType:t.mimeType}]:[];case`thinking`:return typeof t.thinking==`string`&&t.thinking?[{kind:`thinking`,text:t.thinking}]:[];case`toolCall`:return[{kind:`tool-call`,id:typeof t.id==`string`?t.id:``,name:typeof t.name==`string`?t.name:``,args:t.arguments}];default:return[]}}function Ni(e){if(!e||typeof e!=`object`)return;let t=e;return{input:Pi(t.input),output:Pi(t.output),cacheRead:Pi(t.cacheRead),cacheWrite:Pi(t.cacheWrite),totalTokens:Pi(t.totalTokens),cost:Fi(t.cost)}}function Pi(e){return typeof e==`number`&&Number.isFinite(e)?e:0}function Fi(e){return typeof e==`number`?e:e&&typeof e==`object`?Pi(e.total):0}function Ii(e){if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(Ii).filter(Boolean).join(`
3
+ `);if(e&&typeof e==`object`){let t=e;return`content`in t?Ii(t.content):`text`in t&&typeof t.text==`string`?t.text:JSON.stringify(e,null,2)}return``}function Li(e,t){return{input:e.input+t.input,output:e.output+t.output,cacheRead:e.cacheRead+t.cacheRead,cacheWrite:e.cacheWrite+t.cacheWrite,totalTokens:e.totalTokens+t.totalTokens,cost:e.cost+t.cost}}function Ri(e,t,n=Date.now,r){switch(t.type){case`agent_start`:return{...e,running:!0,turn:Ai()};case`agent_settled`:return{...e,running:!1,streaming:null,queue:{steering:[],followUp:[]}};case`message_start`:return zi(t.message)?{...e,streaming:ji(t.message)}:e;case`message_update`:{let n=t.assistantMessageEvent;return n?.partial?{...e,streaming:ji(n.partial)}:e}case`message_end`:{let n=ji(t.message);if(n.role===`system`||n.role===`custom`)return e;if(n.role===`toolResult`){let t=n.blocks[0],r=e.tools[t.id];if(r)return{...e,tools:{...e.tools,[t.id]:{...r,output:t.output,state:t.isError?`error`:`done`}}}}r!==void 0&&(n.seq=r);let i=n.usage?Li(e.turn,n.usage):e.turn,a={...e.tools};for(let e of n.blocks)e.kind===`tool-call`&&!a[e.id]&&(a[e.id]={id:e.id,name:e.name,args:e.args,output:``,state:`pending`});return{...e,messages:[...e.messages,n],streaming:null,tools:a,turn:i,total:n.usage?Li(e.total,n.usage):e.total}}case`tool_execution_start`:{let r=t,i=e.tools[r.toolCallId];return{...e,tools:{...e.tools,[r.toolCallId]:{id:r.toolCallId,name:r.toolName,args:r.args,output:i?.output??``,state:`running`,startedAt:i?.startedAt??n()}}}}case`tool_execution_update`:{let n=t,r=e.tools[n.toolCallId];return r?{...e,tools:{...e.tools,[n.toolCallId]:{...r,output:Ii(n.partialResult)}}}:e}case`tool_execution_end`:{let r=t,i=e.tools[r.toolCallId],a={id:r.toolCallId,name:r.toolName,args:i?.args,output:Ii(r.result),state:r.isError?`error`:`done`,startedAt:i?.startedAt??n(),endedAt:n()};return{...e,tools:{...e.tools,[r.toolCallId]:a}}}case`queue_update`:{let n=t;return{...e,queue:{steering:[...n.steering],followUp:[...n.followUp]}}}default:return e}}function zi(e){return e?.role===`assistant`}function Bi(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function Vi(e){return`${`${Bi(e.input)} in / ${Bi(e.output)} out`}${e.cacheRead?` / ${Bi(e.cacheRead)} cached`:``} · $${e.cost.toFixed(4)}`}function Hi(e){return e.input+e.cacheRead+e.cacheWrite}function Ui(e){let t=Hi(e);return t?`${Bi(e.cacheRead)} read / ${Bi(e.cacheWrite)} write · ${Math.round(e.cacheRead/t*100)}% of the prompt from cache`:`the provider reported no usage`}var Wi=new Set([`text_start`,`text_delta`,`thinking_start`,`thinking_delta`,`toolcall_start`,`toolcall_delta`]),Gi={promptTokens:0,outputTokens:0,prefillMs:0,decodeMs:0};function Ki(e){return e!==null&&(e.promptTokens>0||e.outputTokens>0)}function qi(){return{live:null,last:null,run:{...Gi}}}function Ji(e,t,n=Date.now){switch(t.type){case`agent_start`:return{...e,pendingStart:void 0,live:null,run:{...Gi}};case`turn_start`:return{...e,pendingStart:n()};case`message_start`:return zi(t.message)?{...e,pendingStart:void 0,live:{requestStart:e.pendingStart??n(),firstTokenAt:null,promptTokens:0,outputTokens:0}}:e;case`message_update`:{if(!e.live)return e;let r=t.assistantMessageEvent,i=Ni(r?.partial?.usage);return{...e,live:{...e.live,firstTokenAt:e.live.firstTokenAt??(Wi.has(r?.type??``)?n():null),promptTokens:i?Hi(i):e.live.promptTokens,outputTokens:i&&i.output>0?i.output:e.live.outputTokens}}}case`message_end`:{let r=t.message;if(!zi(r)||!e.live)return e;let i=Ni(r.usage),a=e.live.firstTokenAt,o=i?Hi(i):0,s=i?.output??0,c={promptTokens:o,outputTokens:s,prefillMs:a===null?0:Zi(o,a-e.live.requestStart),decodeMs:a===null?0:Zi(s,n()-a)};return{...e,pendingStart:void 0,live:null,last:Ki(c)?c:e.last,run:a===null?e.run:Xi(e.run,c)}}case`agent_settled`:return{...e,pendingStart:void 0,live:null};default:return e}}function Yi(e,t){let n=e.live,r=n?.firstTokenAt==null?e.run:Xi(e.run,{promptTokens:n.promptTokens,outputTokens:n.outputTokens,prefillMs:Zi(n.promptTokens,n.firstTokenAt-n.requestStart),decodeMs:Zi(n.outputTokens,t-n.firstTokenAt)});if(r.promptTokens===0&&r.outputTokens===0){let t=e.last;return t?{prefill:Qi(t.promptTokens,t.prefillMs),decode:Qi(t.outputTokens,t.decodeMs)}:{prefill:null,decode:null}}return{prefill:Qi(r.promptTokens,r.prefillMs),decode:Qi(r.outputTokens,r.decodeMs)}}function Xi(e,t){return{promptTokens:e.promptTokens+t.promptTokens,outputTokens:e.outputTokens+t.outputTokens,prefillMs:e.prefillMs+t.prefillMs,decodeMs:e.decodeMs+t.decodeMs}}function Zi(e,t){return e>0?t:0}function Qi(e,t){return t>0&&e>0?e*1e3/t:null}function $i(e){return e>=100?String(Math.round(e)):e.toFixed(1)}var ea=`flypi.lastAnswers`;function ta(e){return e.model?`${e.model.provider}/${e.model.modelId}`:null}function na(e){return oa()[e]??null}function ra(e,t){let n=oa();n[e]=t,aa(n)}function ia(e){let t=oa();e in t&&(delete t[e],aa(t))}function aa(e){try{localStorage.setItem(ea,JSON.stringify(e))}catch{}}function oa(){let e;try{e=JSON.parse(localStorage.getItem(ea)??``)}catch{return{}}if(!e||typeof e!=`object`)return{};let t={};for(let[n,r]of Object.entries(e)){let e=sa(r);e&&(t[n]=e)}return t}function sa(e){let t=e;if(!t||typeof t!=`object`)return null;let{promptTokens:n,outputTokens:r,prefillMs:i,decodeMs:a}=t;return ca(n)&&ca(r)&&ca(i)&&ca(a)?{promptTokens:n,outputTokens:r,prefillMs:i,decodeMs:a,model:typeof t.model==`string`?t.model:null}:null}function ca(e){return Number.isFinite(e)}var la=ki(),ua=qi(),da=class{options;#e=N(Jt([]));get chats(){return H(this.#e)}set chats(e){P(this.#e,e,!0)}#t=N(void 0);get activeChatId(){return H(this.#t)}set activeChatId(e){P(this.#t,e,!0)}#n=N(Jt([]));get sessions(){return H(this.#n)}set sessions(e){P(this.#n,e,!0)}#r=N(void 0);get scheduler(){return H(this.#r)}set scheduler(e){P(this.#r,e,!0)}#i=N(void 0);get config(){return H(this.#i)}set config(e){P(this.#i,e,!0)}#a=N(`chat`);get view(){return H(this.#a)}set view(e){P(this.#a,e,!0)}#o=N(!1);get connected(){return H(this.#o)}set connected(e){P(this.#o,e,!0)}#s=N(void 0);get pageError(){return H(this.#s)}set pageError(e){P(this.#s,e,!0)}#c=N(void 0);get configError(){return H(this.#c)}set configError(e){P(this.#c,e,!0)}#l=N(void 0);get mcpStatus(){return H(this.#l)}set mcpStatus(e){P(this.#l,e,!0)}#u=N(!1);get mcpChecking(){return H(this.#u)}set mcpChecking(e){P(this.#u,e,!0)}#d=N(void 0);get mcpSignIn(){return H(this.#d)}set mcpSignIn(e){P(this.#d,e,!0)}#f=N(!1);get mcpSigningIn(){return H(this.#f)}set mcpSigningIn(e){P(this.#f,e,!0)}#p=N(void 0);get packages(){return H(this.#p)}set packages(e){P(this.#p,e,!0)}#m=N(!1);get packagesBusy(){return H(this.#m)}set packagesBusy(e){P(this.#m,e,!0)}#h=N(void 0);get schedulerError(){return H(this.#h)}set schedulerError(e){P(this.#h,e,!0)}#g=N(!1);get updateInstalling(){return H(this.#g)}set updateInstalling(e){P(this.#g,e,!0)}#_=N(void 0);get updateError(){return H(this.#_)}set updateError(e){P(this.#_,e,!0)}#v=N(void 0);get secrets(){return H(this.#v)}set secrets(e){P(this.#v,e,!0)}#y=N(void 0);get secretsError(){return H(this.#y)}set secretsError(e){P(this.#y,e,!0)}#b=N(void 0);get revealed(){return H(this.#b)}set revealed(e){P(this.#b,e,!0)}#x=N(void 0);get memories(){return H(this.#x)}set memories(e){P(this.#x,e,!0)}#S=N(void 0);get memoryError(){return H(this.#S)}set memoryError(e){P(this.#S,e,!0)}#C=N(void 0);get protocolMismatch(){return H(this.#C)}set protocolMismatch(e){P(this.#C,e,!0)}#w=N(void 0);get pi(){return H(this.#w)}set pi(e){P(this.#w,e,!0)}#T=N(void 0);get piVersions(){return H(this.#T)}set piVersions(e){P(this.#T,e,!0)}#E=N(!1);get piBusy(){return H(this.#E)}set piBusy(e){P(this.#E,e,!0)}#D;#O=new Set;#k=0;#A=new Map;#j=new Map;#M=new Map;#N=new Set;constructor(e,t={}){this.options=t,this.#D=e}#P(){return this.chats.find(e=>e.id===this.activeChatId)}get conversationId(){return this.#P()?.conversationId}get sessionPath(){return this.#P()?.sessionPath}get transcript(){return this.#P()?.transcript??la}get metrics(){return this.#P()?.metrics??ua}get measuredOn(){return this.#P()?.measuredOn??null}get debug(){return this.#P()?.debug}get interruptedAt(){return this.#P()?.interruptedAt}get extensionNotes(){return this.#P()?.extensionNotes??[]}get extensionDialog(){return this.#P()?.extensionDialog}get lastError(){return this.#P()?.error??this.pageError}get draft(){return this.#P()?.draft??``}set draft(e){let t=this.#P();t&&(t.draft=e)}get attachments(){return this.#P()?.attachments??[]}set attachments(e){let t=this.#P();t&&(t.attachments=e)}isRunning(e){let t=this.chats.find(t=>t.sessionPath===e);return t?t.transcript.running:this.sessions.find(t=>t.path===e)?.running===!0}isUnread(e){return this.chats.find(t=>t.sessionPath===e)?.unread===!0}watch(){return this.#D.on(e=>{if(e.type===`connected`){this.connected=!0,this.#O.clear(),this.chats.length?this.#V():this.newSession(),this.view===`chat`&&this.showConfig();return}if(e.type===`disconnected`){this.connected=!1;return}this.handleFrame(e)})}send(e){this.#D.send(e)}now(){return Date.now()+this.#k}async request(e){return new Promise(t=>{this.#M.set(e.requestId,t),this.send(e)})}#F(e,t){return{id:`chat-${++pa}`,conversationId:e,...t?{sessionPath:t}:{},transcript:ki(),metrics:{...qi(),last:t?na(t):null},measuredOn:t?na(t)?.model??null:null,modelInUse:null,extensionNotes:[],draft:``,attachments:[],lastSeq:0,rowRequested:!1,rebinding:!1}}#I(e,t,n){this.#O.delete(e.conversationId)&&this.send({type:`unsubscribe`,conversationId:e.conversationId}),e.conversationId=t,n&&(e.sessionPath=n);let r=e.sessionPath?na(e.sessionPath):null;e.transcript=ki(),e.metrics={...qi(),last:r},e.measuredOn=r?.model??null,e.modelInUse=null,e.debug=void 0,e.interruptedAt=void 0,e.extensionNotes=[],e.extensionDialog=void 0,e.lastSeq=0,e.rowRequested=!1,e.rebinding=!1,e.error=void 0}#L(e){this.activeChatId=e.id,e.unread=!1,this.#V()}#R(e,t,n){let r=n.kind===`open`?this.chats.find(e=>t?e.sessionPath===t:!1)??this.chats.find(t=>t.conversationId===e):n.kind===`new`&&n.replace?this.chats.find(e=>e.id===n.replace):void 0;if(r)return r.conversationId===e?t&&(r.sessionPath=t):this.#I(r,e,t),r.rebinding=!1,this.activeChatId=r.id,r.unread=!1,this.#V(),r;let i=this.#F(e,t);return this.chats.push(i),this.activeChatId=i.id,this.#V(),i}#z(e){if(this.options.onTurnSettled)try{this.options.onTurnSettled({chatId:e.id,...e.sessionPath?{sessionPath:e.sessionPath}:{},active:e.id===this.activeChatId,title:this.#B(e),preview:fa(e.transcript)})}catch{}}#B(e){let t=e.sessionPath?this.sessions.find(t=>t.path===e.sessionPath):void 0;return t?.name||t?.firstMessage||e.sessionPath?.split(`/`).pop()||`flypi`}#V(){for(let e of this.chats){if(e.rebinding)continue;let t=e.id===this.activeChatId||e.transcript.running,n=this.#O.has(e.conversationId);t&&!n?(this.#O.add(e.conversationId),this.send({type:`resume`,conversationId:e.conversationId,afterSeq:e.lastSeq})):!t&&n&&(this.#O.delete(e.conversationId),this.send({type:`unsubscribe`,conversationId:e.conversationId}))}for(let e of[...this.#O])this.chats.some(t=>t.conversationId===e)||(this.#O.delete(e),this.send({type:`unsubscribe`,conversationId:e}))}newSession(){let e=ha();this.#A.set(e,{kind:`new`}),this.send({type:`newSession`,requestId:e})}openSession(e){let t=this.chats.find(t=>t.sessionPath===e);if(t){this.#L(t),this.showDebug(t);return}let n=ha();this.#A.set(n,{kind:`open`}),this.send({type:`switchSession`,sessionPath:e,requestId:n})}#H(e){e.rebinding=!0,this.#O.delete(e.conversationId);let t=ha();if(e.sessionPath){this.#A.set(t,{kind:`open`}),this.send({type:`switchSession`,sessionPath:e.sessionPath,requestId:t});return}this.#A.set(t,{kind:`new`,replace:e.id}),this.send({type:`newSession`,requestId:t})}prompt(e,t=`steer`,n=[]){let r=this.#P();r&&(r.error=void 0,this.send({type:`prompt`,conversationId:r.conversationId,text:e,...n.length?{attachments:n}:{},mode:t}))}abort(){let e=this.#P();e&&this.send({type:`abort`,conversationId:e.conversationId})}fork(e){let t=this.#P();if(!t)return;let n=ha();this.#A.set(n,{kind:`fork`}),this.send({type:`fork`,conversationId:t.conversationId,messageSeq:e,requestId:n})}listSessions(){this.request({type:`listSessions`,requestId:ha()})}rename(e){let t=this.#P();t&&this.send({type:`renameSession`,conversationId:t.conversationId,name:e})}deleteSession(e){ia(e),this.request({type:`deleteSession`,sessionPath:e,requestId:ha()}).then(()=>{let t=this.chats.find(t=>t.sessionPath===e);if(!t)return;this.#O.delete(t.conversationId);let n=this.activeChatId===t.id;if(this.chats=this.chats.filter(e=>e.id!==t.id),!n)return;let r=this.chats.at(-1);r?this.#L(r):this.newSession()})}setModel(e,t){let n=this.#P();n&&(this.send({type:`setModel`,conversationId:n.conversationId,provider:e,modelId:t}),this.#U(n,`${e}/${t}`))}#U(e,t){if(!t||(e.modelInUse=t,!e.sessionPath||e.measuredOn===t))return;if(!e.measuredOn&&(Ki(e.metrics.run)||Ki(e.metrics.last))){e.measuredOn=t,Ki(e.metrics.run)&&ra(e.sessionPath,{...e.metrics.run,model:t});return}let n=na(e.sessionPath),r=n&&n.model===t?n:null;e.metrics={...qi(),last:r},e.measuredOn=r?t:null}setThinkingLevel(e){let t=this.#P();t&&this.send({type:`setThinkingLevel`,conversationId:t.conversationId,level:e})}answerExtension(e,t){let n=this.#P();n&&(this.send({type:`extensionReply`,conversationId:n.conversationId,dialogId:e,value:t}),n.extensionDialog=void 0)}showDebug(e=this.#P()){if(!e)return;let t=ha();this.#j.set(t,e.id),this.request({type:`debug`,conversationId:e.conversationId,requestId:t})}loadScheduler(){let e=ha();this.#q.add(e),this.request({type:`scheduler`,requestId:e})}installUpdate(){let e=ha();this.#N.add(e),this.updateError=void 0,this.updateInstalling=!0,this.request({type:`installUpdate`,requestId:e})}openChat(){this.revealed=void 0,this.view=`chat`,this.config||this.showConfig()}openSettings(){this.revealed=void 0,this.view=`settings`}openSecrets(){this.view=`secrets`}openMemory(){this.revealed=void 0,this.view=`memory`}toggleSettings(){this.view===`settings`?this.openChat():this.openSettings()}toggleSecrets(){this.view===`secrets`?this.openChat():this.openSecrets()}toggleMemory(){this.view===`memory`?this.openChat():this.openMemory()}showConfig(){this.request({type:`getConfig`,requestId:this.#J()})}saveConfig(e){this.request({type:`saveConfig`,...e,requestId:this.#J()})}showPackages(){this.request({type:`packages`,requestId:this.#J()})}savePackages(e){this.packagesBusy=!0,this.request({type:`savePackages`,...e,requestId:this.#J()})}showPiVersions(){this.request({type:`piVersions`,requestId:this.#J()})}checkPi(){this.request({type:`piCheck`,requestId:this.#J()})}usePi(e){this.piBusy=!0,this.request({type:`usePi`,version:e,requestId:this.#J()})}checkMcp(){this.mcpChecking=!0,this.request({type:`mcpStatus`,requestId:this.#J()})}signInMcp(e){this.mcpSigningIn=!0,this.request({type:`mcpSignIn`,name:e,requestId:this.#J()})}submitMcpRedirect(e,t){this.send({type:`mcpRedirect`,name:e,url:t})}showSecrets(){this.request({type:`secrets`,requestId:this.#Y()})}saveSecrets(e){this.request({type:`saveSecrets`,secrets:e,requestId:this.#Y()})}revealSecret(e){this.request({type:`revealSecret`,name:e,requestId:this.#Y()})}showMemories(){this.request({type:`memory`,requestId:this.#X()})}saveMemories(e){this.request({type:`saveMemory`,memories:e,requestId:this.#X()})}hideSecret(){this.revealed=void 0}#W=new Set;#G=new Set;#K=new Set;#q=new Set;#J(){let e=ha();return this.#W.add(e),e}#Y(){let e=ha();return this.#G.add(e),e}#X(){let e=ha();return this.#K.add(e),e}handleFrame(e){switch(e.type){case`hello`:e.protocolVersion!==1&&(this.protocolMismatch=`server speaks protocol v${e.protocolVersion}, this UI speaks v1`),typeof e.now==`number`&&(this.#k=e.now-Date.now()),this.pi=e.pi;return;case`event`:{let t=this.chats.find(t=>t.conversationId===e.conversationId);if(!t)return;t.lastSeq=Math.max(t.lastSeq,e.seq);let n=e.event;n.type===`agent_start`&&(t.error=void 0);let r=typeof e.at==`number`?e.at:Date.now(),i=()=>r;if(t.transcript=Ri(t.transcript,n,i,e.seq),t.metrics=Ji(t.metrics,n,i),n.type===`message_end`&&Ki(t.metrics.run)&&t.sessionPath){let e=t.modelInUse;e&&(t.measuredOn=e),ra(t.sessionPath,{...t.metrics.run,model:e})}n.type===`agent_settled`&&(t.unread=t.id!==this.activeChatId,this.showDebug(t),this.listSessions(),this.#z(t)),n.type===`agent_start`&&(t.unread=!1),!t.rowRequested&&t.transcript.messages.some(e=>e.role===`user`)&&(t.rowRequested=!0,this.listSessions()),(n.type===`agent_start`||n.type===`agent_settled`)&&this.#V();return}case`extensionUi`:{let t=this.chats.find(t=>t.conversationId===e.conversationId);if(!t)return;if(e.kind===`notify`){t.extensionNotes=[...t.extensionNotes.slice(-49),{message:e.message,level:e.level??`info`}];return}t.extensionDialog=e;return}case`mcpAuth`:this.mcpSignIn={name:e.name,url:e.url};return;case`result`:{let t=(e.requestId?this.#A.get(e.requestId):void 0)??(e.conversationId&&e.sessionPath?{kind:`open`}:void 0);if(t&&e.conversationId){e.requestId&&this.#A.delete(e.requestId);let n=this.#R(e.conversationId,e.sessionPath,t);n.interruptedAt=e.interrupted?.at,this.showDebug(n),this.listSessions()}if(e.sessions&&(this.sessions=e.sessions),e.config&&(e.requestId&&this.#W.delete(e.requestId),this.config=e.config,this.configError=void 0,this.mcpStatus=void 0),e.debug){let t=e.requestId?this.#j.get(e.requestId):void 0;e.requestId&&this.#j.delete(e.requestId);let n=this.chats.find(e=>e.id===t)??(e.conversationId?this.chats.find(t=>t.conversationId===e.conversationId):void 0)??this.#P();n&&(n.debug=e.debug,this.#U(n,ta(e.debug)))}e.scheduler&&(this.scheduler=e.scheduler),e.secrets&&(e.requestId&&this.#G.delete(e.requestId),this.secrets=e.secrets,this.secretsError=void 0),e.revealed&&(e.requestId&&this.#G.delete(e.requestId),this.revealed=e.revealed),e.memory&&(e.requestId&&this.#K.delete(e.requestId),this.memories=e.memory,this.memoryError=void 0),e.mcpStatus&&(e.requestId&&this.#W.delete(e.requestId),this.mcpStatus=e.mcpStatus,this.mcpChecking=!1,this.mcpSignIn=void 0,this.mcpSigningIn=!1),e.pi&&(e.requestId&&this.#W.delete(e.requestId),this.piVersions=e.pi,this.piBusy=!1),e.packages&&(e.requestId&&this.#W.delete(e.requestId),this.packages=e.packages,this.packagesBusy=!1,this.configError=void 0),this.#M.get(e.requestId)?.(e),this.#M.delete(e.requestId);return}case`error`:{if(e.requestId&&this.#N.delete(e.requestId)){this.updateError=e.message,this.updateInstalling=!1;return}if(e.requestId&&this.#q.delete(e.requestId)){this.schedulerError=e.message;return}if(e.code===`unknownConversation`&&e.conversationId){let t=this.chats.find(t=>t.conversationId===e.conversationId);if(t&&!t.rebinding){this.#H(t);return}if(!t)return}let t=e.conversationId?this.chats.find(t=>t.conversationId===e.conversationId):void 0;if(t?t.error=e.message:this.pageError=e.message,e.requestId&&this.#W.delete(e.requestId)){this.configError=e.message,this.mcpChecking=!1,this.mcpSignIn=void 0,this.mcpSigningIn=!1,this.packagesBusy=!1,this.piBusy=!1;return}e.requestId&&this.#G.delete(e.requestId)&&(this.secretsError=e.message,this.revealed=void 0),e.requestId&&this.#K.delete(e.requestId)&&(this.memoryError=e.message);return}}}};function fa(e){for(let t=e.messages.length-1;t>=0;--t){let n=e.messages[t];if(!n||n.role!==`assistant`)continue;let r=n.blocks.filter(e=>e.kind===`text`).map(e=>e.kind===`text`?e.text:``).join(` `).replace(/\s+/g,` `).trim();if(r)return r.length>160?`${r.slice(0,157)}…`:r}return`Finished its turn.`}var pa=0,ma=0;function ha(){return`ui-${++ma}`}var ga=`flypi.theme`;function _a(){let e=document.documentElement.dataset.theme;return e===`light`||e===`dark`?e:null}function va(e){document.documentElement.dataset.theme=e;try{localStorage.setItem(ga,e)}catch{}}function ya(){let e=localStorage.getItem(ga);va(e===`light`||e===`dark`?e:matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`)}var ba=`flypi.notifications`;function xa(){return typeof Notification<`u`}function Sa(){return xa()?Notification.permission:`unsupported`}function Ca(){try{return localStorage.getItem(ba)!==`off`}catch{return!0}}function wa(e){try{localStorage.setItem(ba,e?`on`:`off`)}catch{}}async function Ta(){if(!xa())return`unsupported`;if(Notification.permission!=="default")return Notification.permission;try{return await Notification.requestPermission()}catch{return Notification.permission}}function Ea(e){if(xa()&&Notification.permission===`granted`&&Ca())try{let t=new Notification(e.title,{body:e.body,tag:e.tag});return t.onclick=()=>{window.focus(),e.onClick?.(),t.close()},t}catch(e){console.warn(`flypi: desktop notification failed: ${e.message}`);return}}var Da=W(`<span class="port">· new</span>`),Oa=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2m0 16v2M2 12h2m16 0h2M4.9 4.9l1.4 1.4m11.4 11.4 1.4 1.4m0-14.2-1.4 1.4M6.3 17.7l-1.4 1.4" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg>`),ka=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M21 13.1A8.5 8.5 0 1 1 10.9 3a7.5 7.5 0 0 0 10.1 10.1Z" fill="currentColor"></path></svg>`),Aa=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 9a6 6 0 0 1 12 0c0 4 1.2 5.2 1.7 5.8.3.4 0 1-.4 1H4.7c-.5 0-.7-.6-.4-1C4.8 14.2 6 13 6 9Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M9.5 19a2.5 2.5 0 0 0 5 0" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg>`),ja=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 9a6 6 0 0 1 12 0c0 4 1.2 5.2 1.7 5.8.3.4 0 1-.4 1H4.7c-.5 0-.7-.6-.4-1C4.8 14.2 6 13 6 9Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M9.5 19a2.5 2.5 0 0 0 5 0" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><path d="M4 4l16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg>`),Ma=W(`<p class="update" data-role="notifications-note" role="status"> </p>`),Na=W(`<p class="update error" data-role="update-error"> </p>`),Pa=W(`<p class="update" data-role="update"> <button type="button" class="icon" data-role="install-update"> </button></p> <!>`,1),Fa=W(`<p class="update" data-role="pi-version"> </p>`),Ia=W(`<span class="run-dot" role="img" aria-label="Running" title="A turn is running in this session"></span>`),La=W(`<span class="unread-dot" role="img" aria-label="Finished, unread" title="Finished — you have not read it"></span>`),Ra=W(`<input class="name current" placeholder="New session" aria-label="Session name"/>`),za=W(`<button type="button" class="session"> </button>`),Ba=W(`<li><!> <!> <button type="button" class="icon remove" title="Delete this session"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M9 7V4.5h6V7M6.5 7l.8 12.5h9.4L17.5 7M10.2 10.5v6m3.6-6v6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg></button></li>`),Va=W(`<aside class="sidebar"><header class="panel-head"><img class="logo" alt=""/> <h1>flypi<!></h1></header> <div class="panel-actions"><button type="button" class="icon" aria-label="New session" title="New session"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 5v14M5 12h14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg></button> <button type="button" class="icon"><!></button> <button type="button" class="icon notify" data-role="notifications"><!></button> <button type="button" class="icon" data-role="memory" aria-label="Memory" title="Memory — what is remembered, and why"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.5 6.2h6.2c1 0 1.8.8 1.8 1.8v9.6c0-1 .8-1.8 1.8-1.8h5.2V6.2H4.5Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M12.5 17.6c0-1 .8-1.8 1.8-1.8h5.2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path></svg></button> <button type="button" class="icon" data-role="secrets" aria-label="Secrets" title="Secrets — the encrypted vault"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="7.8" cy="7.8" r="3.6" fill="none" stroke="currentColor" stroke-width="1.8"></circle><path d="M10.4 10.4 19.5 19.5M15.4 15.4l2.4-2.4M12.9 12.9l2-2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg></button> <button type="button" class="icon" data-role="settings" aria-label="Model endpoints and MCP servers" title="Model endpoints and MCP servers"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M4 12h16M4 17h16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path><circle cx="9" cy="7" r="2" fill="currentColor"></circle><circle cx="15" cy="12" r="2" fill="currentColor"></circle><circle cx="11" cy="17" r="2" fill="currentColor"></circle></svg></button></div> <!> <!> <!> <ul class="sessions"></ul></aside>`);function Ha(e,t){We(t,!0);let n=N(Jt(_a()??`light`));function r(){P(n,H(n)===`dark`?`light`:`dark`,!0),va(H(n))}function i(e){return e.name||e.firstMessage}function a(e){return i(e)||e.path}function o(e,n){let r=n.currentTarget.value.trim();r&&r!==e.trim()&&t.app.rename(r)}function s(e){t.app.deleteSession(e.path)}let c=j(()=>new Set(t.app.sessions.filter(e=>t.app.isRunning(e.path)).map(e=>e.path))),l=j(()=>new Set(t.app.sessions.filter(e=>t.app.isUnread(e.path)).map(e=>e.path))),u=N(Jt(Sa())),d=N(Jt(Ca())),f=j(()=>H(u)===`unsupported`?`This browser has no desktop notifications`:H(u)===`denied`?`Desktop notifications are blocked in the browser`:H(u)===`granted`?H(d)?`Desktop notifications on — click to turn off`:`Desktop notifications off — click to turn on`:`Enable desktop notifications for finished sessions`),p=N(void 0),m;function h(e){clearTimeout(m),P(p,e,!0),m=setTimeout(()=>P(p,void 0),8e3)}_n(()=>()=>clearTimeout(m));async function g(){if(H(u)!==`unsupported`&&H(u)!==`denied`){if(H(u)==="default"){if(P(u,await Ta(),!0),H(u)!==`granted`){h(`the browser did not allow notifications`);return}P(d,!0)}else P(d,!H(d));if(wa(H(d)),!H(d)){h(`desktop notifications are off`);return}Ea({title:`flypi — notifications on`,body:`This is what the end of a turn looks like.`,tag:`flypi-notifications`}),h(`desktop notifications are on`)}}var _=Va(),v=F(_),y=F(v),b=R(y,2),x=R(F(b)),S=e=>{G(e,Da())};q(x,e=>{t.app.sessionPath||e(S)}),k(b),k(v);var ee=R(v,2),te=F(ee),C=R(te,2),ne=F(C),re=e=>{G(e,Oa())},w=e=>{G(e,ka())};q(ne,e=>{H(n)===`dark`?e(re):e(w,-1)}),k(C);var ie=R(C,2),ae=F(ie),oe=e=>{G(e,Aa())},se=e=>{G(e,ja())};q(ae,e=>{H(u)===`granted`&&H(d)?e(oe):e(se,-1)}),k(ie);var ce=R(ie,2),le=R(ce,2),ue=R(le,2);k(ee);var de=R(ee,2),fe=e=>{var t=Ma(),n=L(t,!0);z(()=>K(n,H(p))),G(e,t)};q(de,e=>{H(p)&&e(fe)});var pe=R(de,2),me=e=>{var n=Pa(),r=I(n),i=F(r),a=R(i),o=L(a,!0);k(r);var s=R(r,2),c=e=>{var n=Na(),r=L(n,!0);z(()=>K(r,t.app.updateError)),G(e,n)};q(s,e=>{t.app.updateError&&e(c)}),z(()=>{K(i,`flypi ${t.update.version??``} ${t.update.ready?`is downloaded — it installs when nothing is running`:`is available`} `),a.disabled=t.app.updateInstalling,X(a,`title`,`Install ${t.update.version??``} now — the daemon restarts to run it`),K(o,t.app.updateInstalling?`installing…`:`install now`)}),U(`click`,a,()=>t.app.installUpdate()),G(e,n)};q(pe,e=>{t.update&&e(me)});var T=R(pe,2),he=e=>{var n=Fa(),r=L(n,!0);z(()=>K(r,`pi ${t.app.pi.version}${t.app.pi.pinned?` (pinned)`:``}${t.app.pi.bundled?` · installed tree holds ${t.app.pi.bundled}`:``}`)),G(e,n)};q(T,e=>{t.app.pi&&e(he)});var ge=R(T,2);J(ge,21,()=>t.app.sessions,e=>e.path,(e,n)=>{var r=Ba();let u;var d=F(r),f=e=>{G(e,Ia())},p=j(()=>H(c).has(H(n).path)),m=e=>{G(e,La())},h=j(()=>H(l).has(H(n).path));q(d,e=>{H(p)?e(f):H(h)&&e(m,1)});var g=R(d,2),_=e=>{var t=Ra();Y(t),z(e=>gi(t,e),[()=>i(H(n))]),vr(`blur`,t,e=>o(i(H(n)),e)),U(`keydown`,t,e=>{e.key===`Enter`?o(i(H(n)),e):e.key===`Escape`&&(e.currentTarget.value=i(H(n)))}),G(e,t)},v=e=>{var r=za(),i=L(r,!0);z(e=>K(i,e),[()=>a(H(n))]),U(`click`,r,()=>{t.app.openChat(),t.app.openSession(H(n).path)}),G(e,r)};q(g,e=>{H(n).path===t.app.sessionPath?e(_):e(v,-1)});var y=R(g,2);k(r),z((e,t,n)=>{u=ni(r,1,``,null,u,{running:e,unread:t}),X(y,`aria-label`,`Delete ${n??``}`)},[()=>H(c).has(H(n).path),()=>H(l).has(H(n).path),()=>a(H(n))]),U(`click`,y,()=>s(H(n))),G(e,r)}),k(ge),k(_),z(e=>{X(y,`src`,H(n)===`dark`?`/flypi-logo-dark.jpeg`:`/flypi-logo-light.jpeg`),X(C,`aria-label`,`Switch to ${H(n)===`dark`?`light`:`dark`} theme`),X(C,`title`,`Switch to ${H(n)===`dark`?`light`:`dark`} theme`),X(ie,`aria-pressed`,H(u)===`granted`&&H(d)),X(ie,`aria-label`,H(f)),X(ie,`title`,H(f)),ie.disabled=e,X(ce,`aria-pressed`,t.app.view===`memory`),X(le,`aria-pressed`,t.app.view===`secrets`),X(ue,`aria-pressed`,t.app.view===`settings`)},[()=>!xa()||H(u)===`denied`]),U(`click`,te,()=>{t.app.openChat(),t.app.newSession()}),U(`click`,C,r),U(`click`,ie,()=>void g()),U(`click`,ce,()=>t.app.toggleMemory()),U(`click`,le,()=>t.app.toggleSecrets()),U(`click`,ue,()=>t.app.toggleSettings()),G(e,_),Ge()}yr([`click`,`keydown`]);var Ua=4194304;function Wa(e){return e.mimeType.startsWith(`image/`)}function Ga(e){let t=new Uint8Array(e),n=``;for(let e=0;e<t.length;e+=32768)n+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(n)}function Ka(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var qa=Ka();function Ja(e){qa=e}var Ya={exec:()=>null};function Xa(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),i=t[r];return i||(i=e(r),t[r]=i),i}}function Q(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(Qa.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var Za=((e=``)=>{try{return!!RegExp(`(?<=1)(?<!1)`+e)}catch{return!1}})(),Qa={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:Xa(e=>RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:Xa(e=>RegExp(`^ {0,${e}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`)),fencesBeginRegex:Xa(e=>RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:Xa(e=>RegExp(`^ {0,${e}}#`)),htmlBeginRegex:Xa(e=>RegExp(`^ {0,${e}}<(?:[a-z].*>|!--)`,`i`)),blockquoteBeginRegex:Xa(e=>RegExp(`^ {0,${e}}>`))},$a=/^(?:[ \t]*(?:\n|$))+/,eo=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,to=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,no=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ro=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,io=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,ao=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,oo=Q(ao).replace(/bull/g,io).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),so=Q(ao).replace(/bull/g,io).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),co=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,lo=/^[^\n]+/,uo=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,fo=Q(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,uo).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),po=Q(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,io).getRegex(),mo=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,ho=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,go=Q(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,ho).replace(`tag`,mo).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),_o=e=>Q(co).replace(`hr`,no).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,e).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,mo).getRegex(),vo=_o(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),yo=_o(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),bo={blockquote:Q(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,yo).getRegex(),code:eo,def:fo,fences:to,heading:ro,hr:no,html:go,lheading:oo,list:po,newline:$a,paragraph:vo,table:Ya,text:lo},xo=Q(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,no).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,mo).getRegex(),So={...bo,lheading:so,table:xo,paragraph:Q(co).replace(`hr`,no).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,xo).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,mo).getRegex()},Co={...bo,html:Q(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,ho).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ya,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Q(co).replace(`hr`,no).replace(`heading`,` *#{1,6} *[^
4
+ ]`).replace(`lheading`,oo).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},wo=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,To=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Eo=/^( {2,}|\\)\n(?!\s*$)/,Do=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Oo=/[\p{P}\p{S}]/u,ko=/[\s\p{P}\p{S}]/u,Ao=/[^\s\p{P}\p{S}]/u,jo=Q(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,ko).getRegex(),Mo=/[\p{Pi}\p{Ps}"']/u,No=/(?!~)[\p{P}\p{S}]/u,Po=/(?!~)[\s\p{P}\p{S}]/u,Fo=/(?:[^\s\p{P}\p{S}]|~)/u,Io=Q(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,Za?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Lo=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,Ro=Q(Lo,`u`).replace(/punct/g,Oo).getRegex(),zo=Q(Lo,`u`).replace(/punct/g,No).getRegex(),Bo=Q(/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,`u`).replace(/openQuote/g,Mo).replace(/punct/g,Oo).getRegex(),Vo=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Ho=Q(Vo,`gu`).replace(/notPunctSpace/g,Ao).replace(/punctSpace/g,ko).replace(/punct/g,Oo).getRegex(),Uo=Q(Vo,`gu`).replace(/notPunctSpace/g,Fo).replace(/punctSpace/g,Po).replace(/punct/g,No).getRegex(),Wo=Q(`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Ao).replace(/punctSpace/g,ko).replace(/punct/g,Oo).getRegex(),Go=Q(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Ao).replace(/punctSpace/g,ko).replace(/punct/g,Oo).getRegex(),Ko=Q(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Ao).replace(/punctSpace/g,ko).replace(/punct/g,Oo).getRegex(),qo=Q(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,Oo).getRegex(),Jo=Q(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Ao).replace(/punctSpace/g,ko).replace(/punct/g,Oo).getRegex(),Yo=Q(/\\(punct)/,`gu`).replace(/punct/g,Oo).getRegex(),Xo=Q(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Zo=Q(ho).replace(`(?:-->|$)`,`-->`).getRegex(),Qo=Q(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,Zo).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),$o=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,es=Q(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,$o).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ts=Q(/^!?\[(label)\]\[(ref)\]/).replace(`label`,$o).replace(`ref`,uo).getRegex(),ns=Q(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,uo).getRegex(),rs=Q(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,ts).replace(`nolink`,ns).getRegex(),is=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,as={_backpedal:Ya,anyPunctuation:Yo,autolink:Xo,blockSkip:Io,br:Eo,code:To,del:Ya,delLDelim:Ya,delRDelim:Ya,emStrongLDelim:Ro,emStrongRDelimAst:Ho,emStrongRDelimUnd:Go,escape:wo,link:es,nolink:ns,punctuation:jo,reflink:ts,reflinkSearch:rs,tag:Qo,text:Do,url:Ya},os={...as,emStrongLDelim:Bo,emStrongRDelimAst:Wo,emStrongRDelimUnd:Ko,link:Q(/^!?\[(label)\]\((.*?)\)/).replace(`label`,$o).getRegex(),reflink:Q(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,$o).getRegex()},ss={...as,emStrongRDelimAst:Uo,emStrongLDelim:zo,delLDelim:qo,delRDelim:Jo,url:Q(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,is).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Q(/^(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,is).getRegex()},cs={...ss,br:Q(Eo).replace(`{2,}`,`*`).getRegex(),text:Q(ss.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},ls={normal:bo,gfm:So,pedantic:Co},us={normal:as,gfm:ss,breaks:cs,pedantic:os},ds={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},fs=e=>ds[e];function ps(e,t){if(t){if(Qa.escapeTest.test(e))return e.replace(Qa.escapeReplace,fs)}else if(Qa.escapeTestNoEncode.test(e))return e.replace(Qa.escapeReplaceNoEncode,fs);return e}function ms(e){try{e=encodeURI(e).replace(Qa.percentDecode,`%`)}catch{return null}return e}function hs(e,t){let n=e.replace(Qa.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(Qa.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t){if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``)}for(;r<n.length;r++)n[r]=n[r].trim().replace(Qa.slashPipe,`|`);return n}function gs(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function _s(e){let t=e.split(`
5
+ `),n=t.length-1;for(;n>=0&&Qa.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
6
+ `)}function vs(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function ys(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function bs(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`),c=e[0].charAt(0)===`!`;r.state.inLink=!0;let l=r.state.linkEmitted,u=r.state.inRawBlock;r.state.linkEmitted=!1;let d=r.inlineTokens(s),f=r.state.linkEmitted;if(r.state.linkEmitted=l,r.state.inLink=!1,!c){if(f){r.state.inRawBlock=u;return}r.state.linkEmitted=!0}return{type:c?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:d}}function xs(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
7
+ `).map(e=>{let t=e.match(n.other.beginningSpace);if(t===null)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(`
8
+ `)}var Ss=class{options;rules;lexer;constructor(e){this.options=e||qa}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:`space`,raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:_s(t[0]);return{type:`code`,raw:e,codeBlockStyle:`indented`,text:e.replace(this.rules.other.codeRemoveIndent,``)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=xs(e,t[3]||``,this.rules);return{type:`code`,raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,`$1`):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=gs(e,`#`);(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:`heading`,raw:gs(t[0],`
9
+ `),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:`hr`,raw:gs(t[0],`
10
+ `)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=gs(t[0],`
11
+ `).split(`
12
+ `),n=``,r=``,i=[];for(;e.length>0;){let t=!1,a=[],o=0;for(;o<e.length;o++)if(this.rules.other.blockquoteStart.test(e[o]))a.push(e[o]),t=!0;else if(!t)a.push(e[o]);else break;e=e.slice(o);let s=a.join(`
13
+ `),c=s.replace(this.rules.other.blockquoteSetextReplace,`
14
+ $1`).replace(this.rules.other.blockquoteSetextReplace2,``);n=n?`${n}
15
+ ${s}`:s,r=r?`${r}
16
+ ${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,i,!0),this.lexer.state.top=l,e.length===0)break;let u=i.at(-1);if(u?.type===`code`)break;if(u?.type===`blockquote`){let t=u,a=e.join(`
17
+ `),o=t.raw+`
18
+ `+a.replace(this.rules.other.blockquoteSetextReplace2,``),s=this.blockquote(o);i[i.length-1]=s,n=`${n}
19
+ ${a}`,r=r.substring(0,r.length-t.text.length)+s.text;break}if(u?.type===`list`){let t=u,a=t.raw+`
20
+ `+e.join(`
21
+ `),o=this.list(a);i[i.length-1]=o,n=n.substring(0,n.length-u.raw.length)+o.raw,r=r.substring(0,r.length-t.raw.length)+o.raw,e=a.substring(i.at(-1).raw.length).split(`
22
+ `);continue}}return{type:`blockquote`,raw:n,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:`list`,raw:``,ordered:r,start:r?+n.slice(0,-1):``,loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:`[*+-]`);let a=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r=``,s=``;if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=ys(t[2].split(`
23
+ `,1)[0],t[1].length),l=e.split(`
24
+ `,1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,s=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,s=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+`
25
+ `,e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),a=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),f=this.rules.other.blockquoteBeginRegex(d);for(;e;){let p=e.split(`
26
+ `,1)[0],m;if(l=p,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting,` `),m=l):m=l.replace(this.rules.other.tabCharGlobal,` `),i.test(l)||a.test(l)||o.test(l)||f.test(l)||t.test(l)||n.test(l))break;if(m.search(this.rules.other.nonSpaceChar)>=d||!l.trim())s+=`
27
+ `+m.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal,` `).search(this.rules.other.nonSpaceChar)>=4||i.test(c)||a.test(c)||n.test(c))break;s+=`
28
+ `+l}u=!l.trim(),r+=p+`
29
+ `,e=e.substring(p.length+1),c=m.slice(d)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),i.items.push({type:`list_item`,raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(s),loose:!1,text:s,tokens:[]}),i.raw+=r}let s=i.items.at(-1);if(s)s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let e of i.items)if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),!i.loose){let t=e.tokens.filter(e=>e.type===`space`);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}for(let e of i.items){let t=e.tokens[0];if(e.task&&(t?.type===`text`||t?.type===`paragraph`)){e.text=e.text.replace(this.rules.other.listReplaceTask,``),t.raw=t.raw.replace(this.rules.other.listReplaceTask,``),t.text=t.text.replace(this.rules.other.listReplaceTask,``);for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,``);break}let n=this.rules.other.listTaskCheckbox.exec(e.raw);if(n){let t={type:`checkbox`,raw:n[0]+` `,checked:n[0]!==`[ ]`};e.checked=t.checked,i.loose?e.tokens[0]&&[`paragraph`,`text`].includes(e.tokens[0].type)&&`tokens`in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=t.raw+e.tokens[0].raw,e.tokens[0].text=t.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(t)):e.tokens.unshift({type:`paragraph`,raw:t.raw,text:t.raw,tokens:[t]}):e.tokens.unshift(t)}}else e.task&&=!1}if(i.loose)for(let e of i.items){e.loose=!0;for(let t of e.tokens)t.type===`text`&&(t.type=`paragraph`)}return i}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=_s(t[0]);return{type:`html`,block:!0,raw:e,pre:t[1]===`pre`||t[1]===`script`||t[1]===`style`,text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,` `),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,`$1`).replace(this.rules.inline.anyPunctuation,`$1`):``,r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,`$1`):t[3];return{type:`def`,tag:e,raw:gs(t[0],`
30
+ `),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=hs(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,``).split(`|`),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,``).split(`
31
+ `):[],a={type:`table`,raw:gs(t[0],`
32
+ `),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?a.align.push(`right`):this.rules.other.tableAlignCenter.test(e)?a.align.push(`center`):this.rules.other.tableAlignLeft.test(e)?a.align.push(`left`):a.align.push(null);for(let e=0;e<n.length;e++)a.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:a.align[e]});for(let e of i)a.rows.push(hs(e,a.header.length).map((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:a.align[t]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:`heading`,raw:gs(t[0],`
33
+ `),depth:t[2].charAt(0)===`=`?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===`
34
+ `?t[1].slice(0,-1):t[1];return{type:`paragraph`,raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:`text`,raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:`escape`,raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:`html`,raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=gs(e.slice(0,-1),`\\`);if((e.length-t.length)%2==0)return}else{let e=vs(t[2],`()`);if(e===-2)return;if(e>-1){let n=(t[0].indexOf(`!`)===0?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=``}}let n=t[2],r=``;if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):``;return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),bs(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,`$1`),title:r&&r.replace(this.rules.inline.anyPunctuation,`$1`)},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,` `).toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:`text`,raw:e,text:e}}return bs(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=``){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let i=[...r[0]].length-1,a,o,s=i,c=0,l=r[0][0],u=n===l,d=l===`*`?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,t=t.slice(-1*e.length+i);(r=d.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){s+=o;continue}if(r[5]||r[6]){if(i%3&&!((i+o)%3)){c+=o;continue}if(u)break}if(s-=o,s>0)continue;o=Math.min(o,o+s+c);let t=[...r[0]][0].length,n=e.slice(0,i+r.index+t+o);if(Math.min(i,o)%2){let e=n.slice(1,-1);return{type:`em`,raw:n,text:e,tokens:this.lexer.inlineTokens(e)}}let l=n.slice(2,-2);return{type:`strong`,raw:n,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal,` `),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:`codespan`,raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:`br`,raw:t[0]}}del(e,t,n=``){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,a,o=n,s=this.rules.inline.delRDelim;for(s.lastIndex=0,t=t.slice(-1*e.length+n);(r=s.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(a=[...i].length,a!==n))continue;if(r[3]||r[4]){o+=a;continue}if(o-=a,o>0)continue;a=Math.min(a,a+o);let t=[...r[0]][0].length,s=e.slice(0,n+r.index+t+a),c=s.slice(n,-n);return{type:`del`,raw:s,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return t[2]===`@`?(e=t[1],n=`mailto:`+e):(e=t[1],n=e),{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if(t[2]===`@`)e=t[0],n=`mailto:`+e;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??``;while(r!==t[0]);e=t[0],n=t[1]===`www.`?`http://`+t[0]:t[0]}return{type:`link`,raw:t[0],text:e,href:n,tokens:[{type:`text`,raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:`text`,raw:t[0],text:t[0],escaped:e}}}},Cs=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||qa,this.options.tokenizer=this.options.tokenizer||new Ss,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let t={other:Qa,block:ls.normal,inline:us.normal};this.options.pedantic?(t.block=ls.pedantic,t.inline=us.pedantic):this.options.gfm&&(t.block=ls.gfm,t.inline=this.options.breaks?us.breaks:us.gfm),this.tokenizer.rules=t}static get rules(){return{block:ls,inline:us}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(Qa.carriageReturn,`
35
+ `),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(Qa.tabCharGlobal,` `).replace(Qa.spaceLine,``));let r=1/0;for(;e;){if(e.length<r)r=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(n=>(i=n.call({lexer:this},e,t))?(e=e.substring(i.raw.length),t.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let n=t.at(-1);i.raw.length===1&&n!==void 0?n.raw+=`
36
+ `:t.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
37
+ `)?``:`
38
+ `)+i.raw,n.text+=`
39
+ `+i.text,this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`paragraph`||n?.type===`text`?(n.raw+=(n.raw.endsWith(`
40
+ `)?``:`
41
+ `)+i.raw,n.text+=`
42
+ `+i.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},t.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),t.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),t.push(i);continue}let a=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(a=e.substring(0,t+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let r=t.at(-1);n&&r?.type===`paragraph`?(r.raw+=(r.raw.endsWith(`
43
+ `)?``:`
44
+ `)+i.raw,r.text+=`
45
+ `+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(i),n=a.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let n=t.at(-1);n?.type===`text`?(n.raw+=(n.raw.endsWith(`
46
+ `)?``:`
47
+ `)+i.raw,n.text+=`
48
+ `+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}linkInText(e){if(!e.includes(`[`))return!1;let t=this.tokenizer.rules.inline.link;for(let n of e.matchAll(this.tokenizer.rules.inline.blockSkip))if(t.test(n[0])&&e.charAt(n.index-1)!==`!`)return!0;for(let t of e.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let e=t[0],n=e.lastIndexOf(`[`);if(e.charAt(0)!==`!`&&Object.hasOwn(this.tokens.links,e.slice(n+1,-1))&&!(n>1&&this.linkInText(e.slice(1,n-1))))return!0}return!1}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e;if(this.tokens.links&&e.includes(`[`)){let e=this.tokenizer.rules.inline.reflinkSearch,t=n=>{let r=n.lastIndexOf(`[`);if(!Object.hasOwn(this.tokens.links,n.slice(r+1,-1)))return n;if(r>1&&n.charAt(0)!==`!`){let i=n.slice(1,r-1);if(this.linkInText(i))return`[`+i.replace(e,t)+`][`+`a`.repeat(n.length-r-2)+`]`}return`[`+`a`.repeat(n.length-2)+`]`};n=n.replace(e,t)}n=n.replace(this.tokenizer.rules.inline.anyPunctuation,e=>`+`.repeat(e.length)),n=n.replace(this.tokenizer.rules.inline.blockSkip,(e,t,n)=>{let r=n?n.length:0;return e.slice(0,r)+`[`+`a`.repeat(e.length-r-2)+`]`}),n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let r=!1,i=``,a=1/0;for(;e;){if(e.length<a)a=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}r||(i=``),r=!1;let o;if(this.options.extensions?.inline?.some(n=>(o=n.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let n=t.at(-1);o.type===`text`&&n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,i)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{r=e.call({lexer:this},n),typeof r==`number`&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(o=this.tokenizer.inlineText(s)){e=e.substring(o.raw.length),o.raw.slice(-1)!==`_`&&(i=o.raw.slice(-1)),r=!0;let n=t.at(-1);n?.type===`text`?(n.raw+=o.raw,n.text+=o.text):t.push(o);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=`Infinite loop on byte: `+e;if(this.options.silent)console.error(t);else throw Error(t)}},ws=class{options;parser;constructor(e){this.options=e||qa}space(e){return``}code({text:e,lang:t,escaped:n}){let r=(t||``).match(Qa.notSpaceStart)?.[0],i=e.replace(Qa.endingNewline,``)+`
49
+ `;return r?`<pre><code class="language-`+ps(r)+`">`+(n?i:ps(i,!0))+`</code></pre>
50
+ `:`<pre><code>`+(n?i:ps(i,!0))+`</code></pre>
51
+ `}blockquote({tokens:e}){return`<blockquote>
52
+ ${this.parser.parse(e)}</blockquote>
53
+ `}html({text:e}){return e}def(e){return``}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
54
+ `}hr(e){return`<hr>
55
+ `}list(e){let t=e.ordered,n=e.start,r=``;for(let t=0;t<e.items.length;t++){let n=e.items[t];r+=this.listitem(n)}let i=t?`ol`:`ul`,a=t&&n!==1?` start="`+n+`"`:``;return`<`+i+a+`>
56
+ `+r+`</`+i+`>
57
+ `}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>
58
+ `}checkbox({checked:e}){return`<input `+(e?`checked="" `:``)+`disabled="" type="checkbox"> `}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
59
+ `}table(e){let t=``,n=``;for(let t=0;t<e.header.length;t++)n+=this.tablecell(e.header[t]);t+=this.tablerow({text:n});let r=``;for(let t=0;t<e.rows.length;t++){let i=e.rows[t];n=``;for(let e=0;e<i.length;e++)n+=this.tablecell(i[e]);r+=this.tablerow({text:n})}return r&&=`<tbody>${r}</tbody>`,`<table>
60
+ <thead>
61
+ `+t+`</thead>
62
+ `+r+`</table>
63
+ `}tablerow({text:e}){return`<tr>
64
+ ${e}</tr>
65
+ `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
66
+ `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${ps(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=ms(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+ps(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=ms(e);if(i===null)return ps(n);e=i;let a=`<img src="${e}" alt="${ps(n)}"`;return t&&(a+=` title="${ps(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:ps(e.text)}},Ts=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},Es=class e{options;renderer;textRenderer;constructor(e){this.options=e||qa,this.options.renderer=this.options.renderer||new ws,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Ts}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`checkbox`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`checkbox`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},Ds=class{options;block;constructor(e){this.options=e||qa}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?Cs.lex:Cs.lexInline}provideParser(e=this.block){return e?Es.parse:Es.parseInline}},Os=new class{defaults=Ka();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Es;Renderer=ws;TextRenderer=Ts;Lexer=Cs;Tokenizer=Ss;Hooks=Ds;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new ws(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new Ss(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Ds;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=Ds.passThroughHooks.has(n)?e=>{if(this.defaults.async&&Ds.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Cs.lex(e,t??this.defaults)}parser(e,t){return Es.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?Cs.lex:Cs.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?Es.parse:Es.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?Cs.lex:Cs.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?Es.parse:Es.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
67
+ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+ps(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function $(e,t){return Os.parse(e,t)}$.options=$.setOptions=function(e){return Os.setOptions(e),$.defaults=Os.defaults,Ja($.defaults),$},$.getDefaults=Ka,$.defaults=qa;function ks(...e){return Os.use(...e),$.defaults=Os.defaults,Ja($.defaults),$}$.use=ks,$.walkTokens=function(e,t){return Os.walkTokens(e,t)},$.parseInline=Os.parseInline,$.Parser=Es,$.parser=Es.parse,$.Renderer=ws,$.TextRenderer=Ts,$.Lexer=Cs,$.lexer=Cs.lex,$.Tokenizer=Ss,$.Hooks=Ds,$.parse=$,$.options,$.setOptions,$.walkTokens,$.parseInline,Es.parse,Cs.lex,$.setOptions({gfm:!0,breaks:!1});function As(e){return $.parse(e.replace(/</g,`&lt;`),{async:!1}).replace(/href=["']\s*(?:javascript|data|vbscript):/gi,`href="#blocked:`)}var js=class{places=new Map;shown;following=!0;remember(e,t){e&&t&&(this.following=Ms(t),this.places.set(e,{top:t.scrollTop,following:this.following}))}switched(e){return e!==this.shown&&(this.shown=e,this.following=(e?this.places.get(e)?.following:void 0)??!0,!0)}land(e,t){let n=e?this.places.get(e):void 0;t.scrollTop=n&&!n.following?n.top:t.scrollHeight,this.following=Ms(t)}keep(e){e&&this.following&&(e.scrollTop=e.scrollHeight)}};function Ms(e){return e.scrollHeight-e.scrollTop-e.clientHeight<40}var Ns=(e,t=d)=>{var n=Ar();J(I(n),17,t,Br,(e,t)=>{var n=Ar(),r=I(n),i=e=>{var n=Ps();Yr(n,()=>As(H(t).text),!0),k(n),G(e,n)},a=e=>{var n=Fs();z(()=>X(n,`src`,`data:${H(t).mimeType};base64,${H(t).data}`)),G(e,n)};q(r,e=>{H(t).kind===`text`?e(i):H(t).kind===`image`&&e(a,1)}),G(e,n)}),G(e,n)},Ps=W(`<div class="markdown"></div>`),Fs=W(`<img class="attachment-image" alt="attachment" loading="lazy"/>`),Is=W(`<p class="error" role="alert" data-role="protocol"> </p>`),Ls=W(`<p class="error" role="alert"> </p>`),Rs=W(`<p class="notice" role="status" data-role="interrupted"> </p>`),zs=W(`<span class="usage" data-role="usage"> </span>`),Bs=W(`<button type="button" class="icon fork" aria-label="Fork from this answer" title="Fork this session from this answer"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 3v12m0 6a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm12-18a3 3 0 1 0 0 6 3 3 0 0 0 0-6Zm0 6a9 9 0 0 1-9 9" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path></svg></button>`),Vs=W(`<li class="msg"><span class="role"> </span> <!> <!> <!></li>`),Hs=W(`<li class="msg streaming"><span class="role"> </span> <!></li>`),Us=W(`<li class="queued"> </li>`),Ws=W(`<ul class="queue" aria-label="Queued messages"></ul>`),Gs=W(`<li class="extension-note"> </li>`),Ks=W(`<ul class="extension-output" aria-label="Extension output" data-role="extension-output"></ul>`),qs=W(`<button type="button" class="choice" data-role="extension-choice"> </button>`),Js=W(`<button type="button" class="choice" data-role="extension-yes">Yes</button>`),Ys=W(`<form class="answer-input"><input aria-label="Answer"/> <button type="submit" data-role="extension-submit">Answer</button></form>`),Xs=W(`<div class="extension-dialog" role="group" data-role="extension-dialog"><p class="ask"> </p> <div class="answers"><!> <!> <!> <button type="button" class="cancel" data-role="extension-cancel">Cancel</button></div></div>`),Zs=W(`<option selected=""> </option>`),Qs=W(`<option> </option>`),$s=W(`<img class="thumb" alt=""/>`),ec=W(`<li class="attachment"><!> <span class="name"> </span> <button type="button" class="remove">✕</button></li>`),tc=W(`<ul class="attachments" aria-label="Attached files"></ul>`),nc=W(`<p class="error" role="alert" data-role="attachment"> </p>`),rc=W(`<span class="desc"> </span>`),ic=W(`<li><button type="button" class="command" data-role="command"> <!></button></li>`),ac=W(`<ul class="commands" aria-label="Slash commands" data-role="commands"></ul>`),oc=W(`<label class="followup"><input type="checkbox"/> follow up</label> <button type="button" class="stop">Stop</button>`,1),sc=W(`<span class="offline">reconnecting…</span>`),cc=W(`<dialog class="cfg-modal" data-role="no-endpoint" aria-label="No model endpoint configured"><h3>No model endpoint configured</h3> <p class="cfg-note">flypi has no built-in default model, so a new conversation cannot start yet.</p> <div class="cfg-actions"><a href="/settings" data-role="no-endpoint-settings">Open the settings page</a> <button type="button" data-role="no-endpoint-dismiss">Not now</button></div></dialog>`),lc=W(`<section class="chat" aria-label="Chat"><!> <!> <!> <ol class="messages"><!> <!></ol> <!> <!> <!> <div class="picker"><label class="field">Model <select class="model"><!><!></select></label> <label class="field">Thinking <select class="thinking-level"></select></label></div> <form class="composer"><!> <!> <textarea rows="3" aria-label="Prompt"></textarea> <!> <div class="controls"><button type="submit">Send</button> <!> <!> <div class="metrics" role="group" aria-label="Live model metrics"><div class="gauge" role="meter" aria-label="Context window used"><svg viewBox="0 0 20 20" aria-hidden="true"><circle class="track" cx="10" cy="10" r="7" pathLength="100"></circle><circle class="fill" cx="10" cy="10" r="7" pathLength="100"></circle></svg></div> <span class="metric" data-role="context"> </span> <span class="metric" data-role="decode">decode <b> </b></span> <span class="metric" data-role="prefill">prefill <b> </b></span></div></div></form> <!></section>`);function uc(e,t){We(t,!0);let n=Di(t,`app`,7),r=j(()=>n().draft),i=j(()=>n().attachments),a=N(!1),o=j(()=>[...n().transcript.queue.steering,...n().transcript.queue.followUp]),s=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`];function c(e){let[t=``,...r]=e.currentTarget.value.split(`/`);n().setModel(t,r.join(`/`))}function l(e){return e.blocks.filter(e=>e.kind===`text`||e.kind===`image`)}function u(){let e=H(r).trim();(e||H(i).length)&&(n().prompt(e,n().transcript.running&&H(a)?`followUp`:`steer`,H(i)),n().draft=``,n().attachments=[])}let d=N(``),f=j(()=>n().debug?.model?.input.includes(`image`)??!0);async function p(e){P(d,``);for(let t of e){if(H(i).length>=8){P(d,`at most 8 attachments`);return}if(t.size>4194304){P(d,`${t.name} is over ${Math.floor(Ua/1024/1024)} MB`);continue}if(!H(f)&&Wa({mimeType:t.type})){P(d,`${t.name}: ${n().debug?.model?.modelId??`this model`} has no image input`);continue}n().attachments=[...n().attachments,{name:t.name||`pasted`,mimeType:t.type||`application/octet-stream`,data:Ga(await t.arrayBuffer())}]}}function m(e){let t=[...e.clipboardData?.files??[]];t.length&&(e.preventDefault(),p(t))}function h(e){e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),u())}let g=N(void 0),_=new js;function v(){return n().sessionPath??n().conversationId}let y=j(()=>H(r).startsWith(`/`)?(n().debug?.commands??[]).filter(e=>e.name.startsWith(H(r).slice(1).split(/\s/)[0])).slice(0,8):[]),b=N(``);function x(){_.remember(v(),H(g))}_n(()=>{n().transcript,H(g)&&(_.switched(v())?_.land(v(),H(g)):_.keep(H(g)))});let S=N(0);_n(()=>{if(!n().metrics.live)return;P(S,n().now(),!0);let e=setInterval(()=>P(S,n().now(),!0),500);return()=>clearInterval(e)});let ee=j(()=>Yi(n().metrics,H(S))),te=j(()=>n().debug?.context),C=j(()=>H(te)?.percent??null),ne=j(()=>!H(te)||H(te).tokens===null?`context unknown`:`${Bi(H(te).tokens)} / ${Bi(H(te).contextWindow)} in context · ${Math.round(H(te).percent??0)}%`);function re(e){return e===null?`—`:`${$i(e)} tok/s`}let w=j(()=>n().measuredOn?`measured on ${n().measuredOn} in this chat`:`measured in this chat`),ie=j(()=>!!n().config&&n().config.endpoints.length===0&&!n().config.defaults.provider),ae=N(!1);function oe(e){return e.showModal(),{destroy:()=>e.close()}}var se=lc(),ce=F(se),le=e=>{var t=Is(),r=L(t,!0);z(()=>K(r,n().protocolMismatch)),G(e,t)};q(ce,e=>{n().protocolMismatch&&e(le)});var ue=R(ce,2),de=e=>{var t=Ls(),r=L(t,!0);z(()=>K(r,n().lastError)),G(e,t)};q(ue,e=>{n().lastError&&e(de)});var fe=R(ue,2),pe=e=>{var t=Rs(),r=L(t);z(()=>K(r,`The turn in this chat was interrupted when flypi stopped (${n().interruptedAt??``}). It is not re-run: its
68
+ tools may already have written to the world.`)),G(e,t)};q(fe,e=>{n().interruptedAt&&e(pe)});var me=R(fe,2),T=F(me);J(T,17,()=>n().transcript.messages,Br,(e,t)=>{var r=Ar(),i=I(r),a=e=>{var r=Vs(),i=F(r),a=L(i,!0),o=R(i,2),s=e=>{var n=zs(),r=L(n,!0);z(e=>K(r,e),[()=>Vi(H(t).usage)]),G(e,n)};q(o,e=>{H(t).usage&&e(s)});var c=R(o,2);{let e=j(()=>l(H(t)));Ns(c,()=>H(e))}var u=R(c,2),d=e=>{var r=Bs();U(`click`,r,()=>n().fork(H(t).seq)),G(e,r)};q(u,e=>{H(t).role===`assistant`&&H(t).seq&&e(d)}),k(r),z(()=>{X(r,`data-role`,H(t).role),K(a,H(t).role)}),G(e,r)},o=j(()=>l(H(t)).length);q(i,e=>{H(o)&&e(a)}),G(e,r)});var he=R(T,2),ge=e=>{var t=Hs(),r=F(t),i=L(r,!0),a=R(r,2);{let e=j(()=>l(n().transcript.streaming));Ns(a,()=>H(e))}k(t),z(()=>{X(t,`data-role`,n().transcript.streaming.role),K(i,n().transcript.streaming.role)}),G(e,t)},_e=j(()=>n().transcript.streaming&&l(n().transcript.streaming).length);q(he,e=>{H(_e)&&e(ge)}),k(me),wi(me,e=>P(g,e),()=>H(g));var ve=R(me,2),ye=e=>{var t=Ws();J(t,21,()=>H(o),Br,(e,t)=>{var n=Us(),r=L(n,!0);z(()=>K(r,H(t))),G(e,n)}),k(t),G(e,t)};q(ve,e=>{H(o).length&&e(ye)});var be=R(ve,2),xe=e=>{var t=Ks();J(t,21,()=>n().extensionNotes,Br,(e,t)=>{var n=Gs(),r=L(n,!0);z(()=>{X(n,`data-level`,H(t).level),K(r,H(t).message)}),G(e,n)}),k(t),G(e,t)};q(be,e=>{n().extensionNotes.length&&e(xe)});var E=R(be,2),Se=e=>{let t=j(()=>n().extensionDialog);var r=Xs(),i=F(r),a=L(i,!0),o=R(i,2),s=F(o);J(s,17,()=>H(t).options??[],Br,(e,r)=>{var i=qs(),a=L(i,!0);z(()=>K(a,H(r))),U(`click`,i,()=>n().answerExtension(H(t).dialogId,H(r))),G(e,i)});var c=R(s,2),l=e=>{var r=Js();U(`click`,r,()=>n().answerExtension(H(t).dialogId,`yes`)),G(e,r)};q(c,e=>{H(t).kind===`confirm`&&e(l)});var u=R(c,2),d=e=>{var r=Ys(),i=F(r);Y(i),we(2),k(r),z(()=>X(i,`placeholder`,H(t).message)),vr(`submit`,r,e=>{e.preventDefault(),n().answerExtension(H(t).dialogId,H(b)),P(b,``)}),Z(i,()=>H(b),e=>P(b,e)),G(e,r)};q(u,e=>{H(t).kind===`input`&&e(d)});var f=R(u,2);k(o),k(r),z(e=>{X(r,`aria-label`,H(t).title||`Extension question`),K(a,e)},[()=>[H(t).title,H(t).message].filter(Boolean).join(` — `)]),U(`click`,f,()=>n().answerExtension(H(t).dialogId,null)),G(e,r)};q(E,e=>{n().extensionDialog&&e(Se)});var D=R(E,2),O=F(D),Ce=R(F(O)),Te=F(Ce),Ee=e=>{var t=Zs(),r=L(t),i={};z(()=>{K(r,`${n().debug.model.modelId??``} (current)`),i!==(i=`${n().debug.model.provider}/${n().debug.model.modelId}`)&&(t.value=t.__value=i)}),G(e,t)};q(Te,e=>{n().debug?.model&&e(Ee)}),J(R(Te),17,()=>n().debug?.models??[],Br,(e,t)=>{var n=Qs(),r=L(n),i={};z(()=>{K(r,`${H(t).provider??``}/${H(t).modelId??``}`),i!==(i=`${H(t).provider}/${H(t).modelId}`)&&(n.value=n.__value=i)}),G(e,n)}),k(Ce),k(O);var De=R(O,2),Oe=R(F(De));J(Oe,21,()=>s,Br,(e,t)=>{var r=Qs(),i=L(r,!0),a={};z(()=>{ai(r,n().debug?.thinkingLevel===H(t)),K(i,H(t)),a!==(a=H(t))&&(r.value=(r.__value=a)??``)}),G(e,r)}),k(Oe),k(De),k(D);var ke=R(D,2),Ae=F(ke),je=e=>{var t=tc();J(t,21,()=>H(i),Br,(e,t,r)=>{var a=ec(),o=F(a),s=e=>{var n=$s();z(()=>X(n,`src`,`data:${H(t).mimeType};base64,${H(t).data}`)),G(e,n)},c=j(()=>Wa(H(t)));q(o,e=>{H(c)&&e(s)});var l=R(o,2),u=L(l,!0),d=R(l,2);k(a),z(()=>{K(u,H(t).name),X(d,`aria-label`,`Remove ${H(t).name}`)}),U(`click`,d,()=>n().attachments=H(i).filter((e,t)=>t!==r)),G(e,a)}),k(t),G(e,t)};q(Ae,e=>{H(i).length&&e(je)});var Me=R(Ae,2),Ne=e=>{var t=nc(),n=L(t,!0);z(()=>K(n,H(d))),G(e,t)};q(Me,e=>{H(d)&&e(Ne)});var Pe=R(Me,2);tt(Pe);var Fe=R(Pe,2),Ie=e=>{var t=ac();J(t,21,()=>H(y),Br,(e,t)=>{var r=ic(),i=F(r),a=F(i),o=R(a),s=e=>{var n=rc(),r=L(n,!0);z(()=>K(r,H(t).description)),G(e,n)};q(o,e=>{H(t).description&&e(s)}),k(i),k(r),z(()=>{X(i,`title`,H(t).source),K(a,`/${H(t).name??``} `)}),U(`click`,i,()=>n().draft=`/${H(t).name} `),G(e,r)}),k(t),G(e,t)};q(Fe,e=>{H(y).length&&e(Ie)});var Le=R(Fe,2),Re=R(F(Le),2),ze=e=>{var t=oc(),r=I(t),i=F(r);Y(i),we(),k(r);var o=R(r,2);bi(i,()=>H(a),e=>P(a,e)),U(`click`,o,()=>n().abort()),G(e,t)};q(Re,e=>{n().transcript.running&&e(ze)});var Be=R(Re,2),Ve=e=>{G(e,sc())};q(Be,e=>{n().connected||e(Ve)});var He=R(Be,2),Ue=F(He);X(Ue,`aria-valuemin`,0),X(Ue,`aria-valuemax`,100);var Ke=F(Ue),qe=R(F(Ke));k(Ke),k(Ue);var Je=R(Ue,2),Ye=L(Je,!0),Xe=R(Je,2),Ze=L(R(F(Xe)),!0);k(Xe);var Qe=R(Xe,2),A=L(R(F(Qe)),!0);k(Qe),k(He),k(Le),k(ke);var $e=R(ke,2),et=e=>{var t=cc(),r=R(F(t),4),i=F(r),a=R(i,2);k(r),k(t),Xr(t,e=>oe?.(e)),vr(`close`,t,()=>P(ae,!0)),U(`click`,i,e=>{e.preventDefault(),n().openSettings()}),U(`click`,a,()=>P(ae,!0)),G(e,t)};q($e,e=>{H(ie)&&!H(ae)&&e(et)}),k(se),z((e,t,i,a)=>{gi(Pe,H(r)),X(Pe,`placeholder`,n().transcript.running?`steer the running turn…`:`what should flypi do?`),X(Ue,`aria-valuenow`,e),X(Ue,`aria-valuetext`,H(ne)),X(Ue,`title`,H(ne)),ii(qe,`stroke-dasharray: ${t??``} 100`),K(Ye,H(ne)),X(Xe,`title`,H(w)),K(Ze,i),X(Qe,`title`,H(w)),K(A,a)},[()=>Math.round(H(C)??0),()=>Math.max(0,Math.min(100,H(C)??0)),()=>re(H(ee).decode),()=>re(H(ee).prefill)]),vr(`scroll`,me,x),U(`change`,Ce,c),U(`change`,Oe,e=>n().setThinkingLevel(e.currentTarget.value)),vr(`submit`,ke,e=>{e.preventDefault(),u()}),U(`input`,Pe,e=>n().draft=e.currentTarget.value),U(`keydown`,Pe,h),vr(`paste`,Pe,m),G(e,se),Ge()}yr([`click`,`change`,`input`,`keydown`]);var dc=W(`<p class="activity-empty">nothing yet — thinking and tool output land here</p>`),fc=W(`<details class="thinking" open=""><summary>thinking</summary><pre> </pre></details>`),pc=W(`<code class="tool-args" data-role="args"> </code>`),mc=W(`<pre class="tool-output" data-role="output"> </pre>`),hc=W(`<article class="tool-card"><header><span class="tool-name"> </span> <!> <span class="tool-state"> </span></header> <!></article>`),gc=W(`<pre class="orphan-result"> </pre>`),_c=W(`<li><!></li>`),vc=W(`<li> </li>`),yc=W(`<h2>System prompt</h2> <pre class="system-prompt"> </pre> <h2>Active tools</h2> <ul class="active-tools"></ul> <h2>Injected memory</h2> <pre class="memory-block"> </pre>`,1),bc=W(`<p class="debug-empty">no debug info yet</p>`),xc=W(`<p class="scheduler-empty" data-role="scheduler-error"> </p>`),Sc=W(`<p class="scheduler-empty">no scheduler info yet</p>`),Cc=W(`<li class="muted">nothing queued</li>`),wc=W(`<li> <!></li>`),Tc=W(`<li class="muted">no job has run yet</li>`),Ec=W(`<ul class="scheduler-jobs" data-role="scheduler-jobs"></ul> <ul class="scheduler-runs" data-role="scheduler-runs"></ul>`,1),Dc=W(`<h2>Prompt cache</h2> <pre class="cache-usage" data-role="cache"> </pre> <h2>Scheduler</h2> <!>`,1),Oc=W(`<aside class="activity-panel" aria-label="Thinking and tool activity"><h2>Activity <span class="count" data-role="count"> </span></h2> <!> <ol class="activity"></ol> <footer><button type="button" class="debug-toggle"> </button> <!> <!></footer></aside>`);function kc(e,t){We(t,!0);let n=j(()=>{let e=[],n=t.app.transcript.streaming?[...t.app.transcript.messages,t.app.transcript.streaming]:t.app.transcript.messages;for(let r of n)for(let n of r.blocks)if(n.kind===`thinking`)e.push({kind:`thinking`,text:n.text});else if(n.kind===`tool-call`){let r=t.app.transcript.tools[n.id];r&&e.push({kind:`tool`,card:r})}else n.kind===`tool-result`&&e.push({kind:`orphan`,text:n.output,isError:n.isError});return e}),r=N(!1),i=N(void 0),a=new js;function o(){return t.app.sessionPath??t.app.conversationId}function s(){a.remember(o(),H(i))}_n(()=>{H(n),H(i)&&(a.switched(o())?a.land(o(),H(i)):a.keep(H(i)))});function c(){P(r,!H(r)),H(r)&&(t.app.showDebug(),t.app.loadScheduler())}function l(e){return e.startedAt===void 0||e.endedAt===void 0?``:` · ${((e.endedAt-e.startedAt)/1e3).toFixed(1)}s`}var u=Oc(),d=F(u),f=L(R(F(d)),!0);k(d);var p=R(d,2),m=e=>{G(e,dc())};q(p,e=>{H(n).length||e(m)});var h=R(p,2);J(h,21,()=>H(n),Br,(e,t)=>{var n=_c(),r=F(n),i=e=>{var n=fc(),r=L(R(F(n)),!0);k(n),z(()=>K(r,H(t).text)),G(e,n)},a=e=>{var n=hc(),r=F(n),i=F(r),a=L(i,!0),o=R(i,2),s=e=>{var n=pc(),r=L(n,!0);z(e=>K(r,e),[()=>JSON.stringify(H(t).card.args)]),G(e,n)};q(o,e=>{H(t).card.args&&e(s)});var c=L(R(o,2));k(r);var u=R(r,2),d=e=>{var n=mc(),r=L(n,!0);z(()=>K(r,H(t).card.output)),G(e,n)};q(u,e=>{H(t).card.output&&e(d)}),k(n),z(e=>{X(n,`data-tool`,H(t).card.name),X(n,`data-state`,H(t).card.state),K(a,H(t).card.name),K(c,`${H(t).card.state??``}${e??``}`)},[()=>l(H(t).card)]),G(e,n)},o=e=>{var n=gc(),r=L(n,!0);z(e=>{X(n,`data-error`,e),K(r,H(t).text)},[()=>String(H(t).isError)]),G(e,n)};q(r,e=>{H(t).kind===`thinking`?e(i):H(t).kind===`tool`?e(a,1):e(o,-1)}),k(n),G(e,n)}),k(h),wi(h,e=>P(i,e),()=>H(i));var g=R(h,2),_=F(g),v=L(_,!0),y=R(_,2),b=e=>{var n=yc(),r=R(I(n),2),i=L(r,!0),a=R(r,4);J(a,21,()=>t.app.debug.activeTools,Br,(e,t)=>{var n=vc(),r=L(n,!0);z(()=>K(r,H(t))),G(e,n)}),k(a);var o=L(R(a,4),!0);z(()=>{K(i,t.app.debug.systemPrompt),K(o,t.app.debug.memoryBlock??`no memory block injected`)}),G(e,n)},x=e=>{G(e,bc())};q(y,e=>{H(r)&&t.app.debug?e(b):H(r)&&e(x,1)});var S=R(y,2),ee=e=>{var n=Dc(),r=R(I(n),2),i=L(r),a=R(r,4),o=e=>{var n=xc(),r=L(n,!0);z(()=>K(r,t.app.schedulerError)),G(e,n)},s=e=>{G(e,Sc())},c=e=>{var n=Ec(),r=I(n);J(r,21,()=>t.app.scheduler.jobs,Br,(e,t)=>{var n=vc(),r=L(n);z(()=>{X(n,`data-kind`,H(t).kind),K(r,`${H(t).kind??``} — ${H(t).running?`running`:`due ${H(t).nextRunAt}`}`)}),G(e,n)},e=>{G(e,Cc())}),k(r);var i=R(r,2);J(i,21,()=>t.app.scheduler.jobRuns,Br,(e,t)=>{var n=wc(),r=F(n),i=R(r),a=e=>{var n=kr();z(()=>K(n,`— ${H(t).detail??``}`)),G(e,n)};q(i,e=>{H(t).detail&&e(a)}),k(n),z(()=>{X(n,`data-kind`,H(t).kind),X(n,`data-status`,H(t).status),K(r,`${H(t).kind??``} ${H(t).status??``}`)}),G(e,n)},e=>{G(e,Tc())}),k(i),G(e,n)};q(a,e=>{t.app.schedulerError?e(o):t.app.scheduler?e(c,-1):e(s,1)}),z((e,n)=>K(i,`${t.app.transcript.running?`this turn`:`last turn`}: ${e??``}
69
+ this conversation: ${n??``}`),[()=>Ui(t.app.transcript.turn),()=>Ui(t.app.transcript.total)]),G(e,n)};q(S,e=>{H(r)&&e(ee)}),k(g),k(u),z(()=>{K(f,H(n).length),K(v,H(r)?`Hide debug`:`Debug`)}),vr(`scroll`,h,s),U(`click`,_,c),G(e,u),Ge()}yr([`click`]);var Ac=e=>{G(e,Nc())},jc=e=>{G(e,Pc())},Mc=e=>{G(e,Fc())},Nc=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L20 8l-4-4L4 16v4Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M14.2 5.8 18.2 9.8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg>`),Pc=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M9 7V4.5h6V7M6.5 7l.8 12.5h9.4L17.5 7M10.2 10.5v6m3.6-6v6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),Fc=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 4.4l2.3 4.8 5.2.6-3.9 3.6 1 5.1-4.6-2.6-4.6 2.6 1-5.1L4.5 9.8l5.2-.6Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path></svg>`),Ic=W(`<li class="error"> </li>`),Lc=W(`<ul class="cfg-errors" role="alert" data-role="config-error"></ul>`),Rc=W(`<ul class="cfg-errors" role="alert" data-role="save-error"><li class="error"> </li></ul>`),zc=W(`<option> </option>`),Bc=W(`<label class="cfg-default">default <select data-role="default-model"></select></label>`),Vc=W(`<button type="button" class="icon" data-role="endpoint-default"><!></button>`),Hc=W(`<li data-role="endpoint"><button type="button" class="cfg-name"> </button> <code> </code> <!> <button type="button" class="icon" data-role="endpoint-edit" title="Edit this endpoint"><!></button> <button type="button" class="icon remove" data-role="endpoint-remove" title="Delete this endpoint"><!></button></li>`),Uc=W(`<li class="cfg-none">none configured</li>`),Wc=W(`<code> </code> <!>`,1),Gc=W(`<b>nothing set</b> — pick one below.`,1),Kc=W(`<span class="cfg-off">disabled</span>`),qc=W(`<code class="cfg-state-error" data-role="mcp-error"> </code>`),Jc=W(`<span data-role="mcp-state"> </span> <!>`,1),Yc=W(`<button type="button" data-role="mcp-signin"> </button>`),Xc=W(`<div class="cfg-signin" data-role="mcp-signin-box"><p class="cfg-note">If the browser cannot reach this machine, paste the redirect URL.</p> <p><a target="_blank" rel="noreferrer" data-role="mcp-auth-url"> </a></p> <form class="cfg-signin-form"><label class="field">Redirect URL <input name="redirect" placeholder="http://127.0.0.1:port/callback?code=…"/></label> <button type="submit" data-role="mcp-redirect">Finish sign-in</button> <button type="button" data-role="mcp-signin-cancel">Cancel</button></form></div>`),Zc=W(`<li data-role="mcp"><button type="button" class="cfg-name"> </button> <code> </code> <!> <!> <button type="button" class="icon" data-role="mcp-edit" title="Edit this server"><!></button> <button type="button" class="icon remove" data-role="mcp-remove" title="Delete this server"><!></button> <!></li>`),Qc=W(`<pre class="cfg-log" data-role="mcp-log"> </pre>`),$c=W(`<p class="cfg-note" data-role="mcp-log">nothing logged in <code>.flypi/agent/mcp.log</code></p>`),el=W(`<button type="button" data-role="pi-check">Check for updates</button>`),tl=W(`<span class="cfg-state" data-role="pi-confirm"> </span> <button type="button" data-role="pi-use-confirm"> </button> <button type="button" class="icon remove" data-role="pi-use-cancel" title="Do not switch"><!></button>`,1),nl=W(`<button type="button" data-role="pi-use">Use this version</button>`),rl=W(`<li data-role="pi-next"><code> </code> <span class="cfg-state">published</span> <!></li>`),il=W(`<li data-role="pi-tree"><code> </code> <span class="cfg-state">on disk</span> <button type="button" data-role="pi-rollback"> </button></li>`),al=W(`<ul class="cfg-list cfg-plain" data-role="pi-versions"><!> <!></ul>`),ol=W(`<p class="cfg-note" data-role="pi-running"> </p> <!>`,1),sl=W(`<p class="cfg-note" data-role="pi-none">which pi this process runs is shown in the sidebar; moving it is a CLI thing in a checkout.</p>`),cl=W(`<ul class="cfg-errors" role="alert" data-role="package-errors"></ul>`),ll=W(`<span class="cfg-state" data-role="package-version"> </span>`),ul=W(`<span class="cfg-state" data-role="package-update">update available</span> <button type="button" data-role="package-update-now">Update</button>`,1),dl=W(`<span class="cfg-state" data-role="package-available"> </span> <label class="field">Version <select data-role="package-version-pick"></select></label> <button type="button" data-role="package-pin"> </button>`,1),fl=W(`<span class="cfg-state" data-role="package-pinned">pinned</span>`),pl=W(`<li data-role="package"><code> </code> <!> <span data-role="package-state"> </span> <!> <!> <!> <button type="button" class="icon remove" data-role="package-remove" title="Remove this package"><!></button></li>`),ml=W(`<li class="cfg-none">none installed</li>`),hl=W(`<label class="field"> <textarea class="cfg-raw" rows="14" spellcheck="false"></textarea></label> <button type="button"> </button>`,1),gl=W(`<form class="cfg-form" data-role="endpoint-form"><label class="field">Name <input name="name" placeholder="chatgml" required=""/></label> <label class="field">Base URL<input name="baseUrl" placeholder="https://chatgml.dev/v1" required=""/></label> <label class="field">API<input name="api" list="flypi-api-kinds" required=""/></label> <label class="field">Key<input name="apiKey"/></label> <label class="field">Add model ids<input name="models" placeholder="comma-separated; the models already there are kept"/></label> <p class="cfg-note"> </p> <div class="cfg-actions"><button type="submit">Save endpoint</button></div></form>`),_l=W(`<p class="error" role="alert" data-role="form-error"> </p>`),vl=W(`<form class="cfg-form" data-role="mcp-form"><div class="cfg-section"><span></span> <button type="button" class="linklike" data-role="memory-mcp">use flypi's memory MCP</button></div> <label class="field">Name<input name="name" placeholder="flypi-memory" required=""/></label> <label class="field">URL<input name="url" placeholder="http://127.0.0.1:8790/mcp"/></label> <label class="field">Command<input name="command" placeholder="npx (for a stdio server)"/></label> <label class="field">Arguments<input name="args" placeholder="-y @modelcontextprotocol/server-filesystem ."/></label> <label class="field">Authorization header<input name="authorization"/></label> <label class="field">Description<input name="description" placeholder="what this server offers"/></label> <div class="cfg-inline"><label class="field">Exposure<select name="exposure"></select></label> <label class="field cfg-enabled"><input type="checkbox" name="enabled"/> enabled</label></div> <details class="cfg-extra" data-role="mcp-extra"><summary>Environment, working directory, tool exceptions, OAuth</summary> <p class="cfg-note">One <code>name=value</code> per line; <code>NAME=</code> removes a key.</p> <label class="field">Working directory<input name="cwd" placeholder="relative to the session's working directory (stdio)"/></label> <label class="field">Environment<textarea name="env" rows="3" data-role="mcp-env"></textarea></label> <label class="field">Tool exceptions<textarea name="toolExposure" rows="3" data-role="mcp-tool-exposure" placeholder="memory_cite=hidden, or read_*=direct for a pattern"></textarea></label> <label class="field">OAuth client id<input name="oauthClientId" placeholder="for a server that does not register clients itself"/></label> <label class="field">OAuth client secret<input name="oauthClientSecret"/></label> <label class="field">OAuth redirect URI<input name="oauthCallbackUrl" placeholder="http://localhost:8080/oauth/callback"/></label> <label class="field">OAuth scopes<input name="oauthScope" placeholder="space-separated, as the server advertises them"/></label></details> <!> <div class="cfg-actions"><button type="submit">Save server</button></div></form>`),yl=W(`<dialog class="cfg-modal" data-role="config-modal"><div class="cfg-section"><h3> </h3> <button type="button" class="linklike">Cancel</button></div> <!></dialog>`),bl=W(`<option></option>`),xl=W(`<section class="settings-view" aria-label="Settings" data-role="settings-view"><header class="panel-head"><h2>Settings</h2> <button type="button" data-role="back-to-chat">Back to chat</button></header> <!> <!> <div class="cfg-stack"><section><div class="cfg-section"><h3>Model endpoints</h3> <button type="button" data-role="endpoint-add">Add endpoint</button></div> <p class="cfg-note"><code>.flypi/agent/models.json</code> <code>!command</code>; a model's <code>input</code>, <code>contextWindow</code> and cost are edits to the file.</p> <ul class="cfg-list" data-role="endpoints"></ul> <p class="cfg-note" data-role="default-line">default for new conversations: <!></p></section> <section><div class="cfg-section"><h3>MCP servers</h3> <button type="button" data-role="mcp-check"> </button> <button type="button" data-role="mcp-add">Add server</button></div> <p class="cfg-note"><code>.flypi/agent/mcp.json</code> — a URL or a command, not both. An open conversation keeps its
70
+ connections.</p> <ul class="cfg-list" data-role="mcp-servers"></ul> <!></section> <section><div class="cfg-section"><h3>pi</h3> <!></div> <!> <p class="cfg-note" data-role="pi-checked"> </p></section> <section><div class="cfg-section"><h3>Extensions</h3></div> <p class="cfg-note"><code>packages</code> in <code>.flypi/agent/settings.json</code> — <code>npm:…</code>, a git URL or a
71
+ path. An extension runs as flypi runs, with your files and your keys.</p> <form class="cfg-install"><label class="field">Source <input name="source" placeholder="npm:pi-web-access" data-role="package-source"/></label> <button type="submit" data-role="package-install"> </button></form> <!> <ul class="cfg-list" data-role="packages"></ul></section> <section data-role="raw-files"><div class="cfg-section"><h3>The files as text</h3></div> <p class="cfg-note">Saving replaces the file. It must parse as JSON.</p> <!></section></div> <!> <datalist id="flypi-api-kinds"></datalist></section>`);function Sl(e,t){We(t,!0),Oi(()=>{t.app.showConfig(),t.app.checkMcp(),t.app.showPackages(),t.app.showPiVersions()});let n=j(()=>t.app.config?.endpoints??[]),r=j(()=>t.app.config?.mcpServers??[]),i=j(()=>t.app.packages?.packages??[]),a=j(()=>t.app.piVersions?.checkedAt??t.app.packages?.checkedAt),o=j(()=>!!t.app.piVersions&&(t.app.piVersions.next!==void 0&&t.app.piVersions.next!==t.app.piVersions.running||t.app.piVersions.trees.some(e=>e!==t.app.piVersions.running))),s=N(``),c=N(void 0),l=Jt({}),u=(e,t)=>`npm:${e.name}@${t}`,d=e=>l[e.source]??e.versions?.at(-1)??``,f=e=>t.app.mcpStatus?.servers.find(t=>t.name===e),p={connected:`connected`,disabled:`off — disabled in the file`,failed:`not reachable`,"needs-auth":`needs authorisation`},m=e=>e.enabled&&!!e.url&&!e.authorization,h=Jt({}),g=[`openai-completions`,`openai-responses`,`azure-openai-responses`,`anthropic-messages`,`google-generative-ai`,`mistral-conversations`],_=[`direct`,`deferred`,`codemode`,`hidden`],v=N(null),y=N(``),b=()=>(P(y,``),{kind:`endpoint`,name:null,values:{name:``,baseUrl:``,api:`openai-completions`,apiKey:``,models:``}}),x=()=>(P(y,``),{kind:`mcp`,name:null,values:{name:``,url:``,command:``,args:``,authorization:``,env:``,cwd:``,description:``,exposure:`codemode`,toolExposure:``,oauthClientId:``,oauthClientSecret:``,oauthCallbackUrl:``,oauthScope:``,enabled:!0}});function S(e){P(y,``),P(v,{kind:`endpoint`,name:e.name,values:{name:e.name,baseUrl:e.baseUrl,api:e.api,apiKey:e.apiKey,models:``}},!0)}function ee(e){P(y,``),P(v,{kind:`mcp`,name:e.name,values:{name:e.name,url:e.url,command:e.command,args:e.args.join(` `),authorization:e.authorization,env:ne(e.env),cwd:e.cwd,description:e.description,exposure:e.exposure,toolExposure:ne(e.toolExposure),oauthClientId:e.oauth.clientId,oauthClientSecret:e.oauth.clientSecret,oauthCallbackUrl:e.oauth.callbackUrl,oauthScope:e.oauth.scope,enabled:e.enabled}},!0)}function te(){H(v)?.kind===`mcp`&&(H(v).values={...H(v).values,name:`flypi-memory`,url:`http://127.0.0.1:8790/mcp`,authorization:"Bearer ${FLYPI_MEMORY_TOKEN}",description:`flypi memory store: memory_search, memory_write, memory_read, memory_supersede, memory_forget, memory_media, memory_index_status`,exposure:`direct`,toolExposure:ne({memory_cite:`hidden`,memory_capture:`hidden`,memory_turn:`hidden`})})}let C=e=>e.split(/[\s,]+/).filter(Boolean),ne=e=>Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`
72
+ `),re=e=>{let t=Object.keys(e.toolExposure).length;return t?` · ${t} tool exception${t===1?``:`s`}`:``};function w(e,t){let n={};for(let r of e.split(`
73
+ `)){if(!r.trim())continue;let e=r.indexOf(`=`),i=r.slice(0,e).trim(),a=r.slice(e+1).trim();if(e<0||!i)throw Error(`“${r.trim()}” is not a name=value line`);if(t&&a&&!_.includes(a))throw Error(`“${a}” is not an exposure: ${_.join(`, `)}`);n[i]=a}return n}function ie(e){if(e.preventDefault(),!H(v))return;let n=H(v).name??H(v).values.name;if(H(v).kind===`endpoint`){let{baseUrl:e,api:r,apiKey:i,models:a}=H(v).values,o={name:n,baseUrl:e,api:r,apiKey:i,models:C(a)};t.app.saveConfig({endpoints:[o]})}else{let e=H(v).values,r;try{r={name:n,url:e.url,command:e.command,args:C(e.args),authorization:e.authorization,env:w(e.env,!1),cwd:e.cwd,description:e.description,exposure:e.exposure,toolExposure:w(e.toolExposure,!0),oauth:{clientId:e.oauthClientId,clientSecret:e.oauthClientSecret,callbackUrl:e.oauthCallbackUrl,scope:e.oauthScope},enabled:e.enabled}}catch(e){P(y,e.message,!0);return}t.app.saveConfig({mcpServers:[r]})}P(y,``),P(v,null)}function ae(e,n){t.app.saveConfig(e===`endpoints`?{endpoints:[{name:n,remove:!0}]}:{mcpServers:[{name:n,remove:!0}]})}let oe=j(()=>t.app.config?.defaults??{provider:``,model:``});function se(e,n){e&&n&&t.app.saveConfig({defaults:{provider:e,model:n}})}let ce=Jt({}),le=Jt({}),ue=j(()=>t.app.config?.files??[]);_n(()=>{for(let e of H(ue)){let t=ce[e.name];(t===void 0||t===le[e.name]||t===e.text)&&(ce[e.name]=e.text,le[e.name]=e.text)}});function de(e){t.app.saveConfig({files:[{name:e,text:ce[e]??``,base:le[e]}]})}function fe(e){return e.showModal(),{destroy:()=>e.close()}}var pe=xl(),me=F(pe),T=R(F(me),2);k(me);var he=R(me,2),ge=e=>{var n=Lc();J(n,21,()=>t.app.config.errors,Br,(e,t)=>{var n=Ic(),r=L(n,!0);z(()=>K(r,H(t))),G(e,n)}),k(n),G(e,n)};q(he,e=>{t.app.config?.errors.length&&e(ge)});var _e=R(he,2),ve=e=>{var n=Rc(),r=L(F(n),!0);k(n),z(()=>K(r,t.app.configError)),G(e,n)};q(_e,e=>{t.app.configError&&e(ve)});var ye=R(_e,2),be=F(ye),xe=F(be),E=R(F(xe),2);k(xe);var Se=R(xe,2),D=R(F(Se));D.nodeValue=" — a key may be ${NAME} or ",we(6),k(Se);var O=R(Se,2);J(O,21,()=>H(n),e=>e.name,(e,t)=>{var n=Hc(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=e=>{var n=Bc(),r=R(F(n));J(r,21,()=>[H(oe).model,...H(t).models.filter(e=>e!==H(oe).model)],Br,(e,t)=>{var n=zc(),r=L(n,!0),i={};z(()=>{K(r,H(t)),i!==(i=H(t))&&(n.value=(n.__value=i)??``)}),G(e,n)}),k(r),k(n),z(()=>X(r,`aria-label`,`Default model for ${H(t).name??``}`)),U(`change`,r,e=>se(H(t).name,e.currentTarget.value)),G(e,n)},l=e=>{var n=Vc();Mc(F(n)),k(n),z(()=>{X(n,`aria-label`,`Set ${H(t).name??``} as default`),X(n,`title`,H(t).models.length?`Start new conversations on this endpoint`:`This endpoint defines no model id to start on`),n.disabled=!H(t).models.length}),U(`click`,n,()=>se(H(t).name,H(t).models[0])),G(e,n)};q(s,e=>{H(t).name===H(oe).provider?e(c):e(l,-1)});var u=R(s,2);Ac(F(u)),k(u);var d=R(u,2);jc(F(d)),k(d),k(n),z(e=>{K(i,H(t).name),K(o,e),X(u,`aria-label`,`Edit ${H(t).name??``}`),X(d,`aria-label`,`Delete ${H(t).name??``}`)},[()=>`${H(t).baseUrl||`no base URL`} · ${H(t).models.length?H(t).models.join(`, `):`no models`}`]),U(`click`,r,()=>S(H(t))),U(`click`,u,()=>S(H(t))),U(`click`,d,()=>ae(`endpoints`,H(t).name)),G(e,n)},e=>{G(e,Uc())}),k(O);var Ce=R(O,2),Te=R(F(Ce)),Ee=e=>{var t=Wc(),r=I(t),i=L(r,!0),a=R(r,2),o=e=>{G(e,kr(`— not one of these endpoints.`))},s=j(()=>!H(n).some(e=>e.name===H(oe).provider));q(a,e=>{H(s)&&e(o)}),z(()=>K(i,`${H(oe).provider}/${H(oe).model}`)),G(e,t)},De=e=>{var t=Gc();we(),G(e,t)};q(Te,e=>{H(oe).provider?e(Ee):e(De,-1)}),k(Ce),k(be);var Oe=R(be,2),ke=F(Oe),Ae=R(F(ke),2),je=L(Ae,!0),Me=R(Ae,2);k(ke);var Ne=R(ke,4);J(Ne,21,()=>H(r),e=>e.name,(e,n)=>{var r=Zc(),i=F(r),a=L(i,!0),o=R(i,2),s=L(o,!0),c=R(o,2),l=e=>{G(e,Kc())},u=e=>{let t=j(()=>f(H(n).name));var r=Jc(),i=I(r),a=L(i),o=R(i,2),s=e=>{var n=qc(),r=L(n,!0);z(()=>K(r,H(t).error)),G(e,n)};q(o,e=>{H(t)?.error&&e(s)}),z(()=>{ni(i,1,`cfg-state ${H(t)?.state??`unchecked`??``}`),K(a,`${(H(t)?p[H(t).state]:`not checked`)??``}${H(t)?.state===`connected`?` · ${H(t).tools.length} tools`:``}`)}),G(e,r)};q(c,e=>{H(n).enabled?e(u,-1):e(l)});var d=R(c,2),g=e=>{var r=Yc(),i=L(r,!0);z(()=>{r.disabled=t.app.mcpSigningIn,K(i,t.app.mcpSignIn?.name===H(n).name?`Sign-in waiting…`:`Sign in`)}),U(`click`,r,()=>t.app.signInMcp(H(n).name)),G(e,r)},_=j(()=>m(H(n)));q(d,e=>{H(_)&&e(g)});var v=R(d,2);Ac(F(v)),k(v);var y=R(v,2);jc(F(y)),k(y);var b=R(y,2),x=e=>{var r=Xc(),i=R(F(r),2),a=F(i),o=L(a,!0);k(i);var s=R(i,2),c=F(s),l=R(F(c));Y(l),k(c);var u=R(c,4);k(s),k(r),z(()=>{X(a,`href`,t.app.mcpSignIn.url),K(o,t.app.mcpSignIn.url)}),vr(`submit`,s,e=>{e.preventDefault(),t.app.submitMcpRedirect(H(n).name,h[H(n).name]??``)}),Z(l,()=>h[H(n).name],e=>h[H(n).name]=e),U(`click`,u,()=>t.app.submitMcpRedirect(H(n).name,``)),G(e,r)};q(b,e=>{t.app.mcpSignIn?.name===H(n).name&&e(x)}),k(r),z(e=>{K(a,H(n).name),K(s,e),X(v,`aria-label`,`Edit ${H(n).name??``}`),X(y,`aria-label`,`Delete ${H(n).name??``}`)},[()=>`${H(n).url||`${H(n).command} ${H(n).args.join(` `)}`} · ${H(n).exposure}${re(H(n))}`]),U(`click`,i,()=>ee(H(n))),U(`click`,v,()=>ee(H(n))),U(`click`,y,()=>ae(`mcpServers`,H(n).name)),G(e,r)},e=>{G(e,Uc())}),k(Ne);var Pe=R(Ne,2),Fe=e=>{var n=Ar(),r=I(n),i=e=>{var n=Qc(),r=L(n,!0);z(()=>K(r,t.app.mcpStatus.log)),G(e,n)},a=e=>{G(e,$c())};q(r,e=>{t.app.mcpStatus.log?e(i):e(a,-1)}),G(e,n)};q(Pe,e=>{t.app.mcpStatus&&e(Fe)}),k(Oe);var Ie=R(Oe,2),Le=F(Ie),Re=R(F(Le),2),ze=e=>{var n=el();U(`click`,n,()=>t.app.checkPi()),G(e,n)};q(Re,e=>{t.app.piVersions&&e(ze)}),k(Le);var Be=R(Le,2),Ve=e=>{var n=ol(),r=I(n),i=L(r,!0),a=R(r,2),s=e=>{var n=al(),r=F(n),i=e=>{var n=rl(),r=F(n),i=L(r,!0),a=R(r,4),o=e=>{var n=tl(),r=I(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2);jc(F(s)),k(s),z(()=>{K(i,`this restarts the daemon${t.app.sessions.length?`; ${t.app.sessions.length} conversation(s) are listed`:``}`),a.disabled=t.app.piBusy,K(o,t.app.piBusy?`Restarting…`:`Confirm — use ${t.app.piVersions.next}`)}),U(`click`,a,()=>t.app.usePi(t.app.piVersions.next)),U(`click`,s,()=>P(c,void 0)),G(e,n)},s=e=>{var n=nl();z(()=>n.disabled=t.app.piBusy),U(`click`,n,()=>P(c,t.app.piVersions.next,!0)),G(e,n)};q(a,e=>{H(c)===t.app.piVersions.next?e(o):e(s,-1)}),k(n),z(()=>K(i,`pi ${t.app.piVersions.next}`)),G(e,n)};q(r,e=>{t.app.piVersions.next&&t.app.piVersions.next!==t.app.piVersions.running&&e(i)}),J(R(r,2),16,()=>t.app.piVersions.trees.filter(e=>e!==t.app.piVersions.running),e=>e,(e,n)=>{var r=il(),i=F(r),a=L(i,!0),o=R(i,4),s=L(o,!0);k(r),z(()=>{K(a,`pi ${n}`),o.disabled=t.app.piBusy,K(s,t.app.piBusy?`Restarting…`:`Switch back to ${n}`)}),U(`click`,o,()=>t.app.usePi(n)),G(e,r)}),k(n),G(e,n)};q(a,e=>{H(o)&&e(s)}),z(()=>K(i,`running pi ${t.app.piVersions.running}${t.app.piVersions.pinned?` (pinned)`:``}`)),G(e,n)},He=e=>{G(e,sl())};q(Be,e=>{t.app.piVersions?e(Ve):e(He,-1)});var Ue=L(R(Be,2),!0);k(Ie);var Ke=R(Ie,2),qe=R(F(Ke),4),Je=F(qe),Ye=R(F(Je));Y(Ye),k(Je);var Xe=R(Je,2),Ze=L(Xe,!0);k(qe);var Qe=R(qe,2),A=e=>{var n=cl();J(n,21,()=>t.app.packages.errors,Br,(e,t)=>{var n=Ic(),r=L(n,!0);z(()=>K(r,H(t))),G(e,n)}),k(n),G(e,n)};q(Qe,e=>{t.app.packages?.errors.length&&e(A)});var $e=R(Qe,2);J($e,21,()=>H(i),e=>e.source,(e,n)=>{var r=pl(),i=F(r),a=L(i,!0),o=R(i,2),s=e=>{var t=ll(),r=L(t);z(()=>K(r,`pi sees ${H(n).version??``}`)),G(e,t)};q(o,e=>{H(n).version&&e(s)});var c=R(o,2),f=L(c,!0),p=R(c,2),m=e=>{var r=ul(),i=R(I(r),2);z(()=>{X(i,`aria-label`,`Update ${H(n).source??``}`),i.disabled=t.app.packagesBusy}),U(`click`,i,()=>t.app.savePackages({update:[H(n).source]})),G(e,r)};q(p,e=>{H(n).update&&e(m)});var h=R(p,2),g=e=>{var r=dl(),i=I(r),a=L(i,!0),o=R(i,2),s=R(F(o));J(s,20,()=>H(n).versions.slice().reverse(),e=>e,(e,t)=>{var r=zc(),i=L(r,!0),a={};z(()=>{K(i,t===H(n).version?`${t} — installed`:t),a!==(a=t)&&(r.value=(r.__value=a)??``)}),G(e,r)}),k(s),k(o);var c=R(o,2),f=L(c,!0);z((e,r)=>{K(a,H(n).available?`newest published ${H(n).available}`:`nothing newer published`),X(s,`aria-label`,`Version of ${H(n).source}`),X(c,`aria-label`,`Install ${e??``} of ${H(n).source??``}`),c.disabled=t.app.packagesBusy,K(f,r)},[()=>d(H(n)),()=>t.app.packagesBusy?`Working…`:`Install ${d(H(n))}`]),U(`change`,s,e=>l[H(n).source]=e.currentTarget.value),U(`click`,c,()=>{let e=d(H(n));e&&t.app.savePackages({install:[u(H(n),e)]})}),G(e,r)};q(h,e=>{H(n).name&&H(n).versions?.length&&e(g)});var _=R(h,2),v=e=>{G(e,fl())};q(_,e=>{H(n).name&&H(n).source!==`npm:${H(n).name}`&&e(v)});var y=R(_,2);jc(F(y)),k(y),k(r),z(()=>{K(a,H(n).source),ni(c,1,`cfg-state ${H(n).installed?`connected`:`failed`}`),K(f,H(n).installed?`installed`:`not installed`),X(y,`aria-label`,`Remove ${H(n).source??``}`)}),U(`click`,y,()=>t.app.savePackages({remove:[H(n).source]})),G(e,r)},e=>{G(e,ml())}),k($e),k(Ke);var et=R(Ke,2);J(R(F(et),4),17,()=>H(ue),e=>e.name,(e,t)=>{var n=hl(),r=I(n),i=F(r),a=R(i);tt(a),k(r);var o=R(r,2),s=L(o);z(()=>{K(i,`${H(t).name??``}.json${H(t).text===``?` (not created yet)`:``} `),X(a,`data-role`,`raw-${H(t).name}`),X(o,`data-role`,`raw-save-${H(t).name}`),K(s,`Save ${H(t).name??``}.json`)}),Z(a,()=>ce[H(t).name],e=>ce[H(t).name]=e),U(`click`,o,()=>de(H(t).name)),G(e,n)}),k(et),k(ye);var nt=R(ye,2),rt=e=>{var t=yl(),r=F(t),i=F(r),a=L(i,!0),o=R(i,2);k(r);var s=R(r,2),c=e=>{var t=gl(),r=F(t),i=R(F(r));Y(i),k(r);var a=R(r,2),o=R(F(a));Y(o),k(a);var s=R(a,2),c=R(F(s));Y(c),k(s);var l=R(s,2),u=R(F(l));Y(u),X(u,`placeholder`,"${chatgml_API_KEY}"),k(l);var d=R(l,2),f=R(F(d));Y(f),k(d);var p=L(R(d,2),!0);we(2),k(t),z(e=>{i.disabled=H(v).name!==null,K(p,e)},[()=>H(v).name===null?``:`Already defines: ${H(n).find(e=>e.name===H(v)?.name)?.models.join(`, `)||`nothing`}`]),vr(`submit`,t,ie),Z(i,()=>H(v).values.name,e=>H(v).values.name=e),Z(o,()=>H(v).values.baseUrl,e=>H(v).values.baseUrl=e),Z(c,()=>H(v).values.api,e=>H(v).values.api=e),Z(u,()=>H(v).values.apiKey,e=>H(v).values.apiKey=e),Z(f,()=>H(v).values.models,e=>H(v).values.models=e),G(e,t)},l=e=>{var t=vl(),n=F(t),r=R(F(n),2);k(n);var i=R(n,2),a=R(F(i));Y(a),k(i);var o=R(i,2),s=R(F(o));Y(s),k(o);var c=R(o,2),l=R(F(c));Y(l),k(c);var u=R(c,2),d=R(F(u));Y(d),k(u);var f=R(u,2),p=R(F(f));Y(p),X(p,`placeholder`,"Bearer ${FLYPI_MEMORY_TOKEN}"),k(f);var m=R(f,2),h=R(F(m));Y(h),k(m);var g=R(m,2),b=F(g),x=R(F(b));J(x,21,()=>_,Br,(e,t)=>{var n=zc(),r=L(n,!0),i={};z(()=>{K(r,H(t)),i!==(i=H(t))&&(n.value=(n.__value=i)??``)}),G(e,n)}),k(x),ci(x),k(b);var S=R(b,2),ee=F(S);Y(ee),we(),k(S),k(g);var C=R(g,2),ne=R(F(C),4),re=R(F(ne));Y(re),k(ne);var w=R(ne,2),ae=R(F(w));tt(ae),X(ae,`placeholder`,"API_KEY=${OPENROUTER_API_KEY}"),k(w);var oe=R(w,2),se=R(F(oe));tt(se),k(oe);var ce=R(oe,2),le=R(F(ce));Y(le),k(ce);var ue=R(ce,2),de=R(F(ue));Y(de),X(de,`placeholder`,"${NAME} or !command, not a typed secret"),k(ue);var fe=R(ue,2),pe=R(F(fe));Y(pe),k(fe);var me=R(fe,2),T=R(F(me));Y(T),k(me),k(C);var he=R(C,2),ge=e=>{var t=_l(),n=L(t,!0);z(()=>K(n,H(y))),G(e,t)};q(he,e=>{H(y)&&e(ge)}),we(2),k(t),z(()=>a.disabled=H(v).name!==null),vr(`submit`,t,ie),U(`click`,r,te),Z(a,()=>H(v).values.name,e=>H(v).values.name=e),Z(s,()=>H(v).values.url,e=>H(v).values.url=e),Z(l,()=>H(v).values.command,e=>H(v).values.command=e),Z(d,()=>H(v).values.args,e=>H(v).values.args=e),Z(p,()=>H(v).values.authorization,e=>H(v).values.authorization=e),Z(h,()=>H(v).values.description,e=>H(v).values.description=e),li(x,()=>H(v).values.exposure,e=>H(v).values.exposure=e),bi(ee,()=>H(v).values.enabled,e=>H(v).values.enabled=e),Z(re,()=>H(v).values.cwd,e=>H(v).values.cwd=e),Z(ae,()=>H(v).values.env,e=>H(v).values.env=e),Z(se,()=>H(v).values.toolExposure,e=>H(v).values.toolExposure=e),Z(le,()=>H(v).values.oauthClientId,e=>H(v).values.oauthClientId=e),Z(de,()=>H(v).values.oauthClientSecret,e=>H(v).values.oauthClientSecret=e),Z(pe,()=>H(v).values.oauthCallbackUrl,e=>H(v).values.oauthCallbackUrl=e),Z(T,()=>H(v).values.oauthScope,e=>H(v).values.oauthScope=e),G(e,t)};q(s,e=>{H(v).kind===`endpoint`?e(c):e(l,-1)}),k(t),Xr(t,e=>fe?.(e)),z(()=>{X(t,`aria-label`,H(v).kind===`endpoint`?`Model endpoint`:`MCP server`),K(a,H(v).name===null?H(v).kind===`endpoint`?`Add an endpoint`:`Add a server`:`Edit ${H(v).name}`)}),vr(`close`,t,()=>P(v,null)),U(`click`,o,()=>P(v,null)),G(e,t)};q(nt,e=>{H(v)&&e(rt)});var it=R(nt,2);J(it,21,()=>g,Br,(e,t)=>{var n=bl(),r={};z(()=>{r!==(r=H(t))&&(n.value=(n.__value=r)??``)}),G(e,n)}),k(it),k(pe),z(e=>{Ae.disabled=t.app.mcpChecking,K(je,t.app.mcpChecking?`Checking…`:`Check connections`),K(Ue,H(a)?`last checked ${H(a)}`:`not checked yet`),Xe.disabled=e,K(Ze,t.app.packagesBusy?`Working…`:`Install`)},[()=>t.app.packagesBusy||!H(s).trim()]),U(`click`,T,()=>t.app.openChat()),U(`click`,E,()=>P(v,b(),!0)),U(`click`,Ae,()=>t.app.checkMcp()),U(`click`,Me,()=>P(v,x(),!0)),vr(`submit`,qe,e=>{e.preventDefault(),H(s).trim()&&(t.app.savePackages({install:[H(s).trim()]}),P(s,``))}),Z(Ye,()=>H(s),e=>P(s,e)),G(e,pe),Ge()}yr([`click`,`change`]);var Cl=e=>{G(e,El())},wl=e=>{G(e,Dl())},Tl=e=>{G(e,Ol())},El=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L20 8l-4-4L4 16v4Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M14.2 5.8 18.2 9.8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg>`),Dl=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M2.5 12S6 6.5 12 6.5 21.5 12 21.5 12 18 17.5 12 17.5 2.5 12 2.5 12Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><circle cx="12" cy="12" r="2.6" fill="none" stroke="currentColor" stroke-width="1.8"></circle></svg>`),Ol=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M9 7V4.5h6V7M6.5 7l.8 12.5h9.4L17.5 7M10.2 10.5v6m3.6-6v6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),kl=W(`<ul class="cfg-errors" role="alert" data-role="save-error"><li class="error"> </li></ul>`),Al=W(`(<code>.flypi/secret.key</code>, mode 0600)`,1),jl=W(`<b> </b> `,1),Ml=W(`<code class="revealed svelte-19l53a6" data-role="revealed-value"> </code> <button type="button" data-role="secret-copy">Copy</button> <button type="button" data-role="secret-hide">Hide</button>`,1),Nl=W(`<code> </code> <button type="button" class="icon" data-role="secret-reveal" title="Show this value here for a few seconds; the vault records that it was revealed"><!></button>`,1),Pl=W(`<span class="cfg-state failed" data-role="key-drift"> </span>`),Fl=W(`<span class="cfg-state" data-role="secret-meta"> </span>`),Il=W(`<li data-role="secret"><button type="button" class="cfg-name" data-role="secret-name"> </button> <!> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <!> <!> <button type="button" class="icon" data-role="secret-edit" title="Store a new value under this name"><!></button> <button type="button" class="icon remove" data-role="secret-remove" title="Delete this secret"><!></button></li>`),Ll=W(`<li class="cfg-none" data-role="no-secrets"> </li>`),Rl=W(`<p class="cfg-note" data-role="short-warning"> </p>`),zl=W(`<li data-role="deleted-secret"><span class="cfg-name"> </span> <code> </code> <span class="cfg-state"> </span> <button type="button" data-role="secret-restore">Restore</button></li>`),Bl=W(`<div class="cfg-section"><h3>Deleted</h3></div> <ul class="cfg-list" data-role="deleted-secrets"></ul>`,1),Vl=W(`<li data-role="reference"><code> </code> <span class="cfg-state">→</span> <span class="cfg-name"> </span></li>`),Hl=W(`<li class="cfg-none">no <code>auth.json</code> or <code>mcp.json</code> entry names a secret</li>`),Ul=W(`<option> </option>`),Wl=W(`<textarea name="value" rows="10" data-role="form-value" spellcheck="false"></textarea>`),Gl=W(`<input name="value" type="password" data-role="form-value" autocomplete="new-password"/>`),Kl=W(`<p class="error" role="alert" data-role="form-error"> </p>`),ql=W(`<dialog class="cfg-modal"><form class="secret-form" data-role="secret-form"><div class="cfg-section"><h3> </h3> <button type="button">Cancel</button></div> <div class="cfg-inline"><label class="field">Name <input name="name" data-role="form-name" placeholder="lowercase, dots, dashes — the handle config files will name" autocomplete="off"/></label> <label class="field">Kind <select name="kind" data-role="form-kind"></select></label></div> <label class="field">Value <!></label> <label class="field">Notes<textarea name="meta" rows="3" data-role="form-meta"></textarea></label> <p class="cfg-note">Non-secret notes only — host, port, username, the path of an SSH key. The same <code></code> the CLI takes. Notes written here are stored with the row; changing
74
+ them on an existing secret means storing its value again, because this page cannot read it back.</p> <!> <div class="cfg-actions"><button type="submit"> </button></div></form></dialog>`),Jl=W(`<section class="settings-view" aria-label="Secrets" data-role="secrets-view"><header class="panel-head"><h2>Secrets</h2> <button type="button" data-role="back-to-chat">Back to chat</button></header> <!> <div class="cfg-stack"><section><div class="cfg-section"><h3>The vault</h3> <button type="button" data-role="secret-add">Add secret</button></div> <p class="cfg-note" data-role="key-state"> <!> <!></p> <p class="cfg-note">Values are stored sealed (AES-256-GCM per row) and are never shown here unless asked for. The agent
75
+ uses them through <code>secret_env</code> / <code>secret_file</code> and never sees them in its
76
+ environment; anything it prints comes back with <code>[secret:NAME]</code> in place of the value
77
+ (docs/secrets.md). Only the process holding the vault's write lock — <code>flypi start</code> — takes a
78
+ new value: a second one (a <code>serve</code> or the dev server) reads and redacts, and says so here if
79
+ a write is refused.</p> <ul class="cfg-list" data-role="secrets"></ul> <!> <p class="cfg-note" data-role="stream-caveat">The live answer is redacted as it streams, which means a value is masked once its last piece has
80
+ arrived: the part of it still on its way can be on screen for a moment. That is the one place a
81
+ secret may briefly appear — the session file, the transcript table and any memory of the turn hold <code>[secret:NAME]</code>.</p> <!></section> <section><div class="cfg-section"><h3>Used by</h3></div> <p class="cfg-note"><code>auth.json</code> and <code>mcp.json</code> point at a name with <code></code>; pi runs that command once per process, so a rotated value
82
+ takes effect after <code>flypi restart</code>. A secret listed here as used N× says how often it was
83
+ read, not by which conversation — the vault keeps the audit rows, this page does not list them.</p> <ul class="cfg-list" data-role="references"></ul></section></div> <!></section>`);function Yl(e,t){We(t,!0),Oi(()=>t.app.showSecrets());let n=j(()=>t.app.secrets?.secrets??[]),r=j(()=>H(n).filter(e=>e.status===`active`)),i=j(()=>H(n).filter(e=>e.status===`deleted`)),a=j(()=>t.app.secrets?.references??[]),o=j(()=>t.app.secrets?.key),s=j(()=>t.app.secrets?.tooShortToRedact??[]),c=j(()=>(H(o)?.stale??0)>0),l=[`password`,`ssh_private_key`,`ssh_public_key`,`yaml`,`generic`],u=[`ssh_private_key`,`ssh_public_key`,`yaml`],d={password:`api key, token or password — whatever the service gave you`,ssh_private_key:`the whole key, header and footer included`,ssh_public_key:`the one line from the .pub file — type and key together`,yaml:`the whole document — it is stored as one value, and read back as one file`,generic:`anything else, stored exactly as written`},f;_n(()=>{let e=t.app.revealed;clearTimeout(f),e&&(f=setTimeout(()=>t.app.hideSecret(),3e4))}),Oi(()=>()=>clearTimeout(f));let p=N(null),m=j(()=>H(p)!==null&&u.includes(H(p).values.kind)),h=N(``),g=()=>(P(h,``),{name:null,values:{name:``,kind:`password`,value:``,meta:``}}),_=e=>Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`
84
+ `);function v(e){P(h,``),P(p,{name:e.name,values:{name:e.name,kind:e.kind,value:``,meta:_(e.meta)}},!0)}function y(e){let t={};for(let n of e.split(`
85
+ `)){if(!n.trim())continue;let e=n.indexOf(`=`);if(e<1)throw Error(`"${n}" is not a name=value pair`);t[n.slice(0,e).trim()]=n.slice(e+1).trim()}return t}function b(){if(!H(p))return;let e=H(p).values.name.trim(),n=H(p).values.value;if(!e||!n){P(h,`a name and a value are both needed — a secret with no value is only a note`);return}let r;try{r=y(H(p).values.meta)}catch(e){P(h,e.message,!0);return}t.app.saveSecrets([{name:e,kind:H(p).values.kind,value:n,meta:r}]),P(h,``),P(p,null)}let x=e=>t.app.saveSecrets([{name:e.name,remove:!0}]),S=e=>t.app.saveSecrets([{name:e.name,restore:!0}]);function ee(){let e=t.app.revealed;e&&navigator.clipboard?.writeText(e.value)}function te(e){return e.showModal(),{destroy:()=>e.close()}}let C=e=>e.useCount===0?`never used`:`used ${e.useCount}×${e.lastUsedAt?`, last ${e.lastUsedAt.slice(0,10)}`:``}`;var ne=Jl(),re=F(ne),w=R(F(re),2);k(re);var ie=R(re,2),ae=e=>{var n=kl(),r=L(F(n),!0);k(n),z(()=>K(r,t.app.secretsError)),G(e,n)};q(ie,e=>{t.app.secretsError&&e(ae)});var oe=R(ie,2),se=F(oe),ce=F(se),le=R(F(ce),2);k(ce);var ue=R(ce,2),de=F(ue),fe=R(de),pe=e=>{var t=Al();we(2),G(e,t)};q(fe,e=>{H(o)?.provider===`keyfile`&&e(pe)});var me=R(fe),T=R(me),he=e=>{var t=jl(),n=I(t),r=L(n),i=R(n);z(()=>{K(r,`${H(o)?.stale??``} ${H(o)?.stale===1?`row is`:`rows are`}`),K(i,` still sealed under an older key —
86
+ ${H(o)?.reencryptQueued?`a re-encrypt is queued`:`they are re-sealed the next time each is used`}.`)}),G(e,t)};q(T,e=>{H(c)&&e(he)}),k(ue);var ge=R(ue,4);J(ge,21,()=>H(r),e=>e.id,(e,n)=>{var r=Il(),i=F(r),a=L(i,!0),s=R(i,2),c=e=>{var n=Ml(),r=I(n),i=L(r,!0),a=R(r,2),o=R(a,2);z(()=>K(i,t.app.revealed.value)),U(`click`,a,()=>ee()),U(`click`,o,()=>t.app.hideSecret()),G(e,n)},l=e=>{var r=Nl(),i=I(r),a=L(i,!0),o=R(i,2);wl(F(o)),k(o),z(()=>{K(a,H(n).mask),X(o,`aria-label`,`Reveal ${H(n).name??``}`)}),U(`click`,o,()=>t.app.revealSecret(H(n).name)),G(e,r)};q(s,e=>{t.app.revealed?.name===H(n).name?e(c):e(l,-1)});var u=R(s,2),d=L(u,!0),f=R(u,2),p=L(f,!0),m=R(f,2),h=e=>{var t=Pl(),r=L(t);z(()=>K(r,`sealed under key v${H(n).keyVersion??``}`)),G(e,t)};q(m,e=>{H(o)&&H(n).keyVersion!==H(o).currentVersion&&e(h)});var g=R(m,2),y=e=>{var t=Fl(),r=L(t,!0);z(e=>K(r,e),[()=>_(H(n).meta).replace(/\n/g,` `)]),G(e,t)},b=j(()=>Object.keys(H(n).meta).length);q(g,e=>{H(b)&&e(y)});var S=R(g,2);Cl(F(S)),k(S);var te=R(S,2);Tl(F(te)),k(te),k(r),z((e,t)=>{X(r,`title`,e),K(a,H(n).name),K(d,H(n).kind),K(p,t),X(S,`aria-label`,`Rotate ${H(n).name??``}`),X(te,`aria-label`,`Delete ${H(n).name??``}`)},[()=>`stored ${H(n).createdAt.slice(0,10)} · fingerprint ${H(n).fingerprint.slice(0,12)}`,()=>C(H(n))]),U(`click`,i,()=>v(H(n))),U(`click`,S,()=>v(H(n))),U(`click`,te,()=>x(H(n))),G(e,r)},e=>{var n=Ll(),r=L(n,!0);z(()=>K(r,t.app.secrets?`none stored`:`the vault has not answered yet`)),G(e,n)}),k(ge);var _e=R(ge,2),ve=e=>{var t=Rl(),n=L(t);z(e=>K(n,`${e??``} ${H(s).length===1?`is`:`are`} shorter than the redaction floor, so a
87
+ transcript or a memory that repeats ${H(s).length===1?`it`:`them`} will not be rewritten.`),[()=>H(s).join(`, `)]),G(e,t)};q(_e,e=>{H(s).length&&e(ve)});var ye=R(_e,4),be=e=>{var t=Bl(),n=R(I(t),2);J(n,21,()=>H(i),e=>e.id,(e,t)=>{var n=zl(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=L(s),l=R(s,2);k(n),z(e=>{K(i,H(t).name),K(o,H(t).mask),K(c,`deleted ${e??``}`)},[()=>H(t).createdAt.slice(0,10)]),U(`click`,l,()=>S(H(t))),G(e,n)}),k(n),G(e,t)};q(ye,e=>{H(i).length&&e(be)}),k(se);var xe=R(se,2),E=R(F(xe),2),Se=R(F(E),4);Se.textContent=`!flypi secret print NAME`,we(3),k(E);var D=R(E,2);J(D,21,()=>H(a),e=>`${e.file}${e.path}`,(e,t)=>{var n=Vl(),r=F(n),i=L(r),a=L(R(r,4),!0);k(n),z(()=>{K(i,`${H(t).file??``} · ${H(t).path??``}`),K(a,H(t).name)}),G(e,n)},e=>{G(e,Hl())}),k(D),k(xe),k(oe);var O=R(oe,2),Ce=e=>{var t=ql(),n=F(t),r=F(n),i=F(r),a=L(i,!0),o=R(i,2);k(r);var s=R(r,2),c=F(s),u=R(F(c));Y(u),k(c);var f=R(c,2),g=R(F(f));J(g,21,()=>l,Br,(e,t)=>{var n=Ul(),r=L(n,!0),i={};z(()=>{K(r,H(t)),i!==(i=H(t))&&(n.value=(n.__value=i)??``)}),G(e,n)}),k(g),ci(g),k(f),k(s);var _=R(s,2),v=R(F(_)),y=e=>{var t=Wl();tt(t),z(()=>X(t,`placeholder`,d[H(p).values.kind])),Z(t,()=>H(p).values.value,e=>H(p).values.value=e),G(e,t)},x=e=>{var t=Gl();Y(t),z(()=>X(t,`placeholder`,d[H(p).values.kind])),Z(t,()=>H(p).values.value,e=>H(p).values.value=e),G(e,t)};q(v,e=>{H(m)?e(y):e(x,-1)}),k(_);var S=R(_,2),ee=R(F(S));tt(ee),X(ee,`placeholder`,`host=192.168.1.1
88
+ username=admin`),k(S);var C=R(S,2),ne=R(F(C));ne.textContent=`--meta k=v`,we(),k(C);var re=R(C,2),w=e=>{var t=Kl(),n=L(t,!0);z(()=>K(n,H(h))),G(e,t)};q(re,e=>{H(h)&&e(w)});var ie=R(re,2),ae=L(F(ie),!0);k(ie),k(n),k(t),Xr(t,e=>te?.(e)),z(()=>{K(a,H(p).name===null?`Add a secret`:`Rotate ${H(p).name}`),u.disabled=H(p).name!==null,K(ae,H(p).name===null?`Store secret`:`Rotate secret`)}),vr(`submit`,n,e=>{e.preventDefault(),b()}),U(`click`,o,()=>P(p,null)),Z(u,()=>H(p).values.name,e=>H(p).values.name=e),li(g,()=>H(p).values.kind,e=>H(p).values.kind=e),Z(ee,()=>H(p).values.meta,e=>H(p).values.meta=e),G(e,t)};q(O,e=>{H(p)&&e(Ce)}),k(ne),z(()=>{K(de,`sealed with ${H(o)?.provider===`keyfile`?`a keyring file`:`the ${H(o)?.provider??`unknown`} key provider`} `),K(me,`,
89
+ key v${H(o)?.currentVersion??`?`??``} · ${H(o)?.rows??0??``} rows. `)}),U(`click`,w,()=>t.app.openChat()),U(`click`,le,()=>P(p,g(),!0)),G(e,ne),Ge()}yr([`click`]);var Xl=e=>{G(e,Ql())},Zl=e=>{G(e,$l())},Ql=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L20 8l-4-4L4 16v4Z" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"></path><path d="M14.2 5.8 18.2 9.8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"></path></svg>`),$l=Or(`<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 7h16M9 7V4.5h6V7M6.5 7l.8 12.5h9.4L17.5 7M10.2 10.5v6m3.6-6v6" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"></path></svg>`),eu=W(`<ul class="cfg-errors" role="alert" data-role="save-error"><li class="error"> </li></ul>`),tu=W(` <b> </b> <!>.`,1),nu=W(`<span class="cfg-state" data-role="merged-from"> </span>`),ru=W(`<li data-role="memory-use" class="svelte-3w3u32"><q> </q> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <span> </span></li>`),iu=W(`<ul class="memory-uses svelte-3w3u32" data-role="memory-uses"></ul>`),au=W(`<p class="cfg-note" data-role="memory-unused">No recorded turn fetched it — it has never been injected in the turns this
90
+ store still holds.</p>`),ou=W(`<span class="cfg-state"> </span>`),su=W(`<button type="button" data-role="memory-undo">Undo</button>`),cu=W(`<li data-role="audit-entry" class="svelte-3w3u32"><span class="cfg-state"> </span> <span class="cfg-state"> </span> <!> <details class="preimage svelte-3w3u32"><summary class="svelte-3w3u32">pre-image</summary> <pre class="memory-block svelte-3w3u32" data-role="pre-image"> </pre></details> <!></li>`),lu=W(`<div class="memory-why svelte-3w3u32" data-role="memory-why-panel"><!> <ul class="memory-history svelte-3w3u32" data-role="memory-history"></ul></div>`),uu=W(`<li class="memory-row svelte-3w3u32" data-role="memory-entry"><code class="memory-body svelte-3w3u32" data-role="memory-body"> </code> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <span class="cfg-state" title="How often recall fetched it, how often an answer cited it, and its rank weight"> </span> <!> <button type="button" data-role="memory-why"> </button> <button type="button" class="icon" data-role="memory-edit" title="Edit this memory"><!></button> <button type="button" class="icon remove" data-role="memory-remove" title="Delete this memory (undoable)"><!></button> <!></li>`),du=W(`<li class="cfg-none" data-role="no-memories"> </li>`),fu=W(`<button type="button" data-role="memory-restore">Undo</button>`),pu=W(`<li data-role="superseded-memory"><code class="memory-body svelte-3w3u32"> </code> <span class="cfg-state"> </span> <span class="cfg-state"> <!></span> <!></li>`),mu=W(`<div class="cfg-section"><h3>Superseded</h3></div> <p class="cfg-note">A merge or a correction retires a row; it never removes it. These are the copies the sweep
91
+ folded away, each with the pre-image it had when it went and an undo that puts it back.</p> <ul class="cfg-list" data-role="superseded-list"></ul>`,1),hu=W(`<button type="button" data-role="memory-restore">Restore</button>`),gu=W(`<li data-role="deleted-memory"><code class="memory-body svelte-3w3u32"> </code> <span class="cfg-state"> </span> <!></li>`),_u=W(`<div class="cfg-section"><h3>Deleted</h3></div> <ul class="cfg-list" data-role="deleted-list"></ul>`,1),vu=W(`<li data-role="turn-cost"><code class="memory-body svelte-3w3u32"> </code> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <span class="cfg-state"> </span> <span class="cfg-state"> </span></li>`),yu=W(`<li class="cfg-none">no turns recorded yet</li>`),bu=W(`<div class="wiki-page svelte-3w3u32" data-role="wiki-page"><h4 class="svelte-3w3u32"> </h4> <p class="cfg-note"> </p> <pre class="memory-block" data-role="wiki-body"> </pre></div>`),xu=W(`<p class="cfg-note" data-role="no-wiki">Nothing rendered yet — the wiki is rebuilt after a consolidation sweep, which runs when the
92
+ daemon is idle.</p>`),Su=W(`<p class="error" role="alert" data-role="form-error"> </p>`),Cu=W(`<dialog class="cfg-modal"><form class="memory-form" data-role="memory-form"><div class="cfg-section"><h3> </h3> <button type="button">Cancel</button></div> <label class="field">Text <textarea name="body" rows="5" data-role="form-body" spellcheck="false"></textarea></label> <div class="cfg-inline"><label class="field">Kind <input name="kind" data-role="form-kind"/></label> <label class="field">Tags <input name="tags" data-role="form-tags" placeholder="comma, separated"/></label></div> <p class="cfg-note">What the row says, and how it is filed. Where the fact came from — the user's own words or the
93
+ agent's — is set by the code that wrote it and is not editable here, because a body claiming
94
+ "the user said so" carries no authority (docs/memory.md).</p> <!> <div class="cfg-actions"><button type="submit">Save memory</button></div></form></dialog>`),wu=W(`<section class="settings-view" aria-label="Memory" data-role="memory-view"><header class="panel-head"><h2>Memory</h2> <button type="button" data-role="back-to-chat">Back to chat</button></header> <!> <div class="cfg-stack"><section><div class="cfg-section"><h3>The store</h3> <input class="search svelte-3w3u32" data-role="memory-search" placeholder="filter by text, kind, tag or #id" aria-label="Filter memories"/></div> <p class="cfg-note" data-role="memory-stats"> <!></p> <p class="cfg-note">Nothing here is deleted automatically: a consolidation sweep may merge and supersede, and <code>deleted</code> takes a click on this page. Every change carries its pre-image, so each row of
95
+ the history below can be undone on its own.</p> <ul class="cfg-list" data-role="memory-list"></ul> <!> <!></section> <section><div class="cfg-section"><h3>What recall injected, per turn</h3></div> <p class="cfg-note">The question, how many rows it fetched, how many the answer cited, and what those rows would have
96
+ cost in prompt tokens — the same estimate the injection budget works against, so a turn that was
97
+ shown too much is visible as a number.</p> <ul class="cfg-list" data-role="turn-costs"></ul></section> <section><div class="cfg-section"><h3>The wiki</h3></div> <p class="cfg-note">A render of the active rows — one page per kind, sections by tag, every claim cited as <code>#id</code>. It is a view, not a second memory: nothing is injected from it, nothing here is
98
+ editable, and it is rebuilt whole after a consolidation sweep.</p> <!></section></div> <!></section>`);function Tu(e,t){We(t,!0),Oi(()=>t.app.showMemories());let n=j(()=>t.app.memories?.memories??[]),r=j(()=>t.app.memories?.turns??[]),i=j(()=>t.app.memories?.wiki??[]),a=j(()=>t.app.memories?.stats),o=j(()=>H(n).filter(e=>e.status===`active`)),s=j(()=>H(n).filter(e=>e.status===`superseded`)),c=j(()=>H(n).filter(e=>e.status===`deleted`)),l=N(``),u=e=>{let t=H(l).trim().toLowerCase();return!t||`${e.body} ${e.kind} ${e.tags.join(` `)} #${e.id}`.toLowerCase().includes(t)},d=j(()=>H(o).filter(u)),f=j(()=>H(s).filter(u)),p=j(()=>H(c).filter(u)),m=j(()=>new Map(H(n).map(e=>[e.id,e]))),h=e=>H(r).filter(t=>t.retrieved.includes(e)),g=N(Jt(new Set));function _(e){let t=new Set(H(g));t.has(e)?t.delete(e):t.add(e),P(g,t,!0)}let v=N(null),y=N(``);function b(e){P(y,``),P(v,{id:e.id,values:{body:e.body,kind:e.kind,tags:e.tags.join(`, `)}},!0)}function x(){if(!H(v))return;let e=H(v).values.body.trim(),n=H(v).values.kind.trim();if(!e||!n){P(y,`a memory needs its text and its kind — an empty row is a fact nobody can retrieve`);return}t.app.saveMemories([{id:H(v).id,body:e,kind:n,tags:H(v).values.tags.split(`,`).map(e=>e.trim()).filter(Boolean)}]),P(y,``),P(v,null)}let S=e=>t.app.saveMemories([{id:e.id,remove:!0}]),ee=e=>e.history.filter(e=>e.action===`forget`).at(-1),te=e=>{let n=ee(e);n&&t.app.saveMemories([{id:e.id,undoAudit:n.id}])},C=(e,n)=>t.app.saveMemories([{id:e.id,undoAudit:n}]);function ne(e){return e.showModal(),{destroy:()=>e.close()}}let re=e=>e.slice(0,10),w=e=>`#${e.id} ${e.body}`,ie=e=>e.tags.length?`${e.kind} · ${e.tags.join(`, `)}`:e.kind,ae=e=>`fetched ${e.useCount}× · cited ${e.citedCount}× · strength ${e.strength.toFixed(2)}`;var oe=wu(),se=F(oe),ce=R(F(se),2);k(se);var le=R(se,2),ue=e=>{var n=eu(),r=L(F(n),!0);k(n),z(()=>K(r,t.app.memoryError)),G(e,n)};q(le,e=>{t.app.memoryError&&e(ue)});var de=R(le,2),fe=F(de),pe=F(fe),me=R(F(pe),2);Y(me),k(pe);var T=R(pe,2),he=F(T),ge=R(he),_e=e=>{var t=tu(),n=I(t),r=R(n),i=L(r),o=R(r),s=R(o),c=e=>{var t=kr();z(()=>K(t,`, ${H(a).indexStale??``} from another model`)),G(e,t)};q(s,e=>{H(a).indexStale&&e(c)}),we(),z(e=>{K(n,`Recall was shown a memory in ${H(a).turnsShownMemories??``} of ${H(a).turns??``} turns, and the answer
99
+ cited one in ${H(a).turnsCiting??``} — `),K(i,`${e??``}%`),K(o,` of the turns that were
100
+ shown something used it.
101
+ ${H(a).indexRows??``} rows have a vector${H(a).embedModel?` (${H(a).embedModel})`:` — none: search is keyword-only here`}`)},[()=>Math.round(H(a).rate*100)]),G(e,t)};q(ge,e=>{H(a)&&e(_e)}),k(T);var ve=R(T,4);J(ve,21,()=>H(d),e=>e.id,(e,t)=>{var n=uu(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=L(s,!0),l=R(s,2),u=L(l,!0),d=R(l,2),f=e=>{var n=nu(),r=L(n);z(e=>K(r,`merged ${e??``}`),[()=>H(t).mergedFrom.map(e=>`#${e}`).join(` `)]),G(e,n)};q(d,e=>{H(t).mergedFrom.length&&e(f)});var p=R(d,2),m=L(p,!0),v=R(p,2);Xl(F(v)),k(v);var y=R(v,2);Zl(F(y)),k(y);var x=R(y,2),ee=e=>{var n=lu(),r=F(n),i=e=>{var n=iu();J(n,21,()=>h(H(t).id),e=>e.id,(e,n)=>{var r=ru(),i=F(r),a=L(i,!0),o=R(i,2),s=L(o,!0),c=R(o,2),l=L(c),u=R(c,2),d=L(u,!0);k(r),z((e,t,r)=>{K(a,H(n).userText),K(s,e),K(l,`${H(n).injectedTokens??``} tokens injected`),ni(u,1,`cfg-state ${t??``}`),K(d,r)},[()=>re(H(n).createdAt),()=>H(n).cited.includes(H(t).id)?`connected`:``,()=>H(n).cited.includes(H(t).id)?`cited`:`not cited`]),G(e,r)}),k(n),G(e,n)},a=j(()=>h(H(t).id).length),o=e=>{G(e,au())};q(r,e=>{H(a)?e(i):e(o,-1)});var s=R(r,2);J(s,21,()=>H(t).history,e=>e.id,(e,n)=>{var r=cu(),i=F(r),a=L(i),o=R(i,2),s=L(o,!0),c=R(o,2),l=e=>{var t=ou(),r=L(t,!0);z(()=>K(r,H(n).reason)),G(e,t)};q(c,e=>{H(n).reason&&e(l)});var u=R(c,2),d=L(R(F(u),2),!0);k(u);var f=R(u,2),p=e=>{var r=su();U(`click`,r,()=>C(H(t),H(n).id)),G(e,r)};q(f,e=>{H(n).action!==`create`&&e(p)}),k(r),z(e=>{K(a,`${H(n).action??``} by ${H(n).actor??``}`),K(s,e),K(d,H(n).preImage)},[()=>re(H(n).createdAt)]),G(e,r)}),k(s),k(n),G(e,n)},te=j(()=>H(g).has(H(t).id));q(x,e=>{H(te)&&e(ee)}),k(n),z((e,n,r,a)=>{K(i,e),K(o,n),K(c,H(t).originClass),K(u,r),K(m,a),X(v,`aria-label`,`Edit memory ${H(t).id??``}`),X(y,`aria-label`,`Delete memory ${H(t).id??``}`)},[()=>w(H(t)),()=>ie(H(t)),()=>ae(H(t)),()=>H(g).has(H(t).id)?`Hide why`:`Why was this injected?`]),U(`click`,p,()=>_(H(t).id)),U(`click`,v,()=>b(H(t))),U(`click`,y,()=>S(H(t))),G(e,n)},e=>{var n=du(),r=L(n,!0);z(()=>K(r,t.app.memories?`nothing remembered`:`the store has not answered yet`)),G(e,n)}),k(ve);var ye=R(ve,2),be=e=>{var t=mu(),n=R(I(t),4);J(n,21,()=>H(f),e=>e.id,(e,t)=>{var n=pu(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=F(s),l=R(c),u=e=>{G(e,kr(`(that row is superseded too)`))},d=j(()=>H(t).supersededBy&&H(m).get(H(t).supersededBy)?.status===`superseded`);q(l,e=>{H(d)&&e(u)}),k(s),J(R(s,2),17,()=>H(t).history.filter(e=>e.action===`supersede`),e=>e.id,(e,n)=>{var r=fu();U(`click`,r,()=>C(H(t),H(n).id)),G(e,r)}),k(n),z(e=>{K(i,e),K(o,H(t).kind),K(c,`→ ${H(t).supersededBy?`#${H(t).supersededBy}`:`nothing`} `)},[()=>w(H(t))]),G(e,n)}),k(n),G(e,t)};q(ye,e=>{H(f).length&&e(be)});var xe=R(ye,2),E=e=>{var t=_u(),n=R(I(t),2);J(n,21,()=>H(p),e=>e.id,(e,t)=>{var n=gu(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a),s=R(a,2),c=e=>{var n=hu();U(`click`,n,()=>te(H(t))),G(e,n)},l=j(()=>ee(H(t)));q(s,e=>{H(l)&&e(c)}),k(n),z((e,t)=>{K(i,e),K(o,`deleted ${t??``}`)},[()=>w(H(t)),()=>re(H(t).createdAt)]),G(e,n)}),k(n),G(e,t)};q(xe,e=>{H(p).length&&e(E)}),k(fe);var Se=R(fe,2),D=R(F(Se),4);J(D,21,()=>H(r),e=>e.id,(e,t)=>{var n=vu(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a,!0),s=R(a,2),c=L(s),l=R(s,2),u=L(l),d=L(R(l,2));k(n),z(e=>{K(i,H(t).userText),K(o,e),K(c,`fetched ${H(t).retrieved.length??``}`),K(u,`cited ${H(t).cited.length??``}`),K(d,`${H(t).injectedTokens??``} tokens`)},[()=>re(H(t).createdAt)]),G(e,n)},e=>{G(e,yu())}),k(D),k(Se);var O=R(Se,2);J(R(F(O),4),17,()=>H(i),e=>e.slug,(e,t)=>{var n=bu(),r=F(n),i=L(r,!0),a=R(r,2),o=L(a),s=L(R(a,2),!0);k(n),z(e=>{K(i,H(t).title),K(o,`${H(t).sections.length??``} section${H(t).sections.length===1?``:`s`} · ${H(t).claimIds.length??``}
102
+ claim${H(t).claimIds.length===1?``:`s`} · rendered ${e??``}`),K(s,H(t).body)},[()=>re(H(t).generatedAt)]),G(e,n)},e=>{G(e,xu())}),k(O),k(de);var Ce=R(de,2),Te=e=>{var t=Cu(),n=F(t),r=F(n),i=F(r),a=L(i),o=R(i,2);k(r);var s=R(r,2),c=R(F(s));tt(c),k(s);var l=R(s,2),u=F(l),d=R(F(u));Y(d),k(u);var f=R(u,2),p=R(F(f));Y(p),k(f),k(l);var m=R(l,4),h=e=>{var t=Su(),n=L(t,!0);z(()=>K(n,H(y))),G(e,t)};q(m,e=>{H(y)&&e(h)}),we(2),k(n),k(t),Xr(t,e=>ne?.(e)),z(()=>K(a,`Edit #${H(v).id??``}`)),vr(`submit`,n,e=>{e.preventDefault(),x()}),U(`click`,o,()=>P(v,null)),Z(c,()=>H(v).values.body,e=>H(v).values.body=e),Z(d,()=>H(v).values.kind,e=>H(v).values.kind=e),Z(p,()=>H(v).values.tags,e=>H(v).values.tags=e),G(e,t)};q(Ce,e=>{H(v)&&e(Te)}),k(oe),z(()=>K(he,`${H(n).length??``} rows · ${H(o).length??``} active. `)),U(`click`,ce,()=>t.app.openChat()),Z(me,()=>H(l),e=>P(l,e)),G(e,oe),Ge()}yr([`click`]);var Eu={sidebar:{min:11,max:34,fallback:15},activity:{min:14,max:40,fallback:22}};function Du(e){return Eu[e]}function Ou(e){let t=localStorage.getItem(`flypi.${e}Width`),n=t===null?NaN:Number(t);return Number.isFinite(n)?ku(e,n):Eu[e].fallback}function ku(e,t){let{min:n,max:r}=Eu[e];return Math.min(r,Math.max(n,Math.round(t*4)/4))}function Au(e,t){try{localStorage.setItem(`flypi.${e}Width`,String(ku(e,t)))}catch{}}var ju=[`settings`,`secrets`,`memory`],Mu=`sessions`;function Nu(e){let t=e.split(`/`).filter(Boolean),n=t.lastIndexOf(Mu),r=n>=0?t[n-1]??``:t.at(-1)??``;return{view:ju.includes(r)?r:`chat`,session:n>=0?t[n+1]??null:null}}function Pu(e){return e.split(`/`).pop()??e}function Fu(){return Nu(location.pathname)}function Iu(e,t){let n=e===`chat`?t?`/${Mu}/${Pu(t)}`:`/`:`/${e}`;n!==location.pathname&&history.replaceState(null,``,`${n}${location.hash}`)}var Lu=W(`<section class="updating" data-role="updating" role="status" aria-live="polite"><h2>Updating flypi</h2> <p>The daemon is installing the new version and restarting to run it.</p> <p>This page goes back on its own once the new one answers.</p></section>`),Ru=W(`<div class="gutter" role="slider" aria-orientation="vertical" tabindex="0"></div>`),zu=W(`<!> <!> <!>`,1),Bu=W(`<div class="layout"><!> <!> <!></div>`);function Vu(e,t){We(t,!0);let n=new da(t.transport,{onTurnSettled:e=>{Ea({title:`flypi — ${e.title}`,body:e.preview,tag:e.sessionPath??e.chatId,onClick:()=>{n.openChat(),e.sessionPath&&n.openSession(e.sessionPath)}})}});n.watch();let r=Jt({sidebar:Ou(`sidebar`),activity:Ou(`activity`)});function i(){return parseFloat(getComputedStyle(document.documentElement).fontSize)||16}function a(e,t){e.preventDefault();let n=e.clientX,a=r[t],o=e=>{r[t]=ku(t,a+(e.clientX-n)*s(t)/i())},c=()=>{window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,c),window.removeEventListener(`pointercancel`,c),Au(t,r[t])};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,c),window.addEventListener(`pointercancel`,c)}function o(e,t){let n={ArrowLeft:-1,ArrowRight:1}[e.key];n!==void 0&&(e.preventDefault(),r[t]=ku(t,r[t]+s(t)*n),Au(t,r[t]))}function s(e){return e===`sidebar`?1:-1}let c=Fu(),l=c.session;c.view===`settings`&&n.openSettings(),c.view===`secrets`&&n.openSecrets(),c.view===`memory`&&n.openMemory(),_n(()=>Iu(n.view,n.sessionPath??null)),_n(()=>{if(!l||!n.conversationId)return;let e=l;l=null,e!==Pu(n.sessionPath??``)&&n.openSession(e)});let u=Jt({available:null,ready:null}),f=j(()=>u.ready?{version:u.ready,ready:!0}:u.available?{version:u.available,ready:!1}:null),p={version:null,startedAt:null};async function m(){try{let e=await(await fetch(`/healthz`)).json();e.pi&&(n.pi=e.pi),u.available=e.updateAvailable??null,u.ready=e.updateReady??null,p={version:e.version??null,startedAt:e.startedAt??null}}catch{}}_n(()=>{m();let e=setInterval(()=>void m(),6e4);return()=>clearInterval(e)}),_n(()=>{if(!n.updateInstalling)return;let e=p,t=Date.now(),r=setInterval(()=>{m().then(()=>{if(p.version===e.version&&p.startedAt===e.startedAt){Date.now()-t>=12e4&&(n.updateError=`the daemon never restarted — the install may have failed`,n.updateInstalling=!1);return}e.version&&p.version!==e.version?location.reload():n.updateInstalling=!1})},1e3);return()=>clearInterval(r)});var h=Ar(),g=I(h),_=e=>{G(e,Lu())},v=e=>{var t=Bu();{let e=(e,t=d)=>{var n=Ru();z((e,i)=>{X(n,`aria-label`,`Resize the ${t()===`sidebar`?`sidebar`:`activity panel`}`),X(n,`aria-valuenow`,r[t()]),X(n,`aria-valuetext`,`${r[t()]} rem`),X(n,`aria-valuemin`,e),X(n,`aria-valuemax`,i)},[()=>Du(t()).min,()=>Du(t()).max]),U(`pointerdown`,n,e=>a(e,t())),U(`keydown`,n,e=>o(e,t())),G(e,n)};var i=F(t);Ha(i,{get app(){return n},get update(){return H(f)}});var s=R(i,2);e(s,()=>`sidebar`);var c=R(s,2),l=e=>{Sl(e,{get app(){return n}})},u=e=>{Yl(e,{get app(){return n}})},p=e=>{Tu(e,{get app(){return n}})},m=t=>{var r=zu(),i=I(r);uc(i,{get app(){return n}});var a=R(i,2);e(a,()=>`activity`),kc(R(a,2),{get app(){return n}}),G(t,r)};q(c,e=>{n.view===`settings`?e(l):n.view===`secrets`?e(u,1):n.view===`memory`?e(p,2):e(m,-1)}),k(t)}z(()=>ii(t,`--sidebar-w: ${r.sidebar??``}rem; --activity-w: ${r.activity??``}rem`)),G(e,t)};q(g,e=>{n.updateInstalling?e(_):e(v,-1)}),G(e,h),Ge()}yr([`pointerdown`,`keydown`]);async function Hu(){let e=await fetch(`/__flypi.json`);if(!e.ok)throw Error(`flypi: /__flypi.json returned ${e.status} — is the agent server running?`);return await e.json()}var Uu=class{#e;#t;#n=new Set;#r=[];#i=!1;constructor(e){this.#e=e}on(e){return this.#n.add(e),()=>this.#n.delete(e)}send(e){let t=JSON.stringify(e);this.#t?.readyState===WebSocket.OPEN?this.#t.send(t):this.#r.push(t)}connect(){let e=`${location.protocol===`https:`?`wss`:`ws`}://${location.host}${this.#e.wsPath}?token=${encodeURIComponent(this.#e.token)}`,t=new WebSocket(e);this.#t=t,t.addEventListener(`open`,()=>{for(let e of this.#r.splice(0))t.send(e);for(let e of this.#n)e({type:`connected`})}),t.addEventListener(`message`,e=>{let t;try{t=JSON.parse(String(e.data))}catch{return}if(t&&typeof t==`object`&&`type`in t)for(let e of this.#n)e(t)}),t.addEventListener(`close`,()=>{for(let e of this.#n)e({type:`disconnected`});this.#i||setTimeout(()=>{Hu().then(e=>this.#e=e).catch(()=>{}).finally(()=>this.connect())},500)})}close(){this.#i=!0,this.#t?.close()}},Wu=document.getElementById(`app`);if(!Wu)throw Error(`flypi: #app is missing from index.html`);ya();var Gu=await Hu();if(Gu.protocolVersion!==1)Wu.textContent=`flypi UI speaks protocol v1, the server speaks v${Gu.protocolVersion}`;else{let e=new Uu(Gu);Fr(Vu,{target:Wu,props:{transport:e}}),e.connect()}