livedesk 0.1.293 → 0.1.294
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/web/dist/assets/icons-PpNkB49G.js +1 -0
- package/web/dist/assets/{index-BRZacV35.js → index-CuH60c4F.js} +12 -12
- package/web/dist/assets/index-DxyOOLex.css +1 -0
- package/web/dist/assets/{react-Dzxs2pF1.js → react-CTNs9Op0.js} +1 -1
- package/web/dist/index.html +4 -4
- package/web/dist/assets/icons-CLe-Rnjq.js +0 -1
- package/web/dist/assets/index-DnKg2C5n.css +0 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import{r as
|
|
1
|
+
import{r as $b,a as f,R as Oc,D as yc,C as yh,b as On,W as wc,S as ly,K as bc,c as wn,A as Zt,d as bd,L as Tc,M as Jt,e as Ub,f as Rc,g as ir,F as ao,B as Nv,T as Pb,h as qb,i as wh,j as Sc,m as bh,H as mc,U as Gb,N as Sh,k as iy,l as Vb,n as Sd,o as Tv,p as Ch,q as Yb,s as Ld,t as ry,u as md,v as Cd,w as Cc,X as rr,x as Wb,y as Ec,z as oy,E as Kb,G as cy,I as Qb,J as Xb,O as Zb,P as Zm,Q as Jb,V as eS,Y as tS,Z as nS,_ as aS,$ as sS,a0 as uy,a1 as lS,a2 as iS,a3 as Rv,a4 as rS,a5 as oS,a6 as hd,a7 as hc,a8 as Jm,a9 as pc,aa as cS,ab as ym,ac as uS,ad as dS,ae as fS,af as Ev,ag as Xi,ah as mS,ai as Dv,aj as dy,ak as Lv,al as hS}from"./icons-PpNkB49G.js";import{r as fy}from"./react-CTNs9Op0.js";import{c as pS}from"./supabase-C7qjtLN3.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))r(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const m of d.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&r(m)}).observe(document,{childList:!0,subtree:!0});function i(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function r(c){if(c.ep)return;c.ep=!0;const d=i(c);fetch(c.href,d)}})();var wm={exports:{}},oc={};var _v;function gS(){if(_v)return oc;_v=1;var n=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function i(r,c,d){var m=null;if(d!==void 0&&(m=""+d),c.key!==void 0&&(m=""+c.key),"key"in c){d={};for(var p in c)p!=="key"&&(d[p]=c[p])}else d=c;return c=d.ref,{$$typeof:n,type:r,key:m,ref:c!==void 0?c:null,props:d}}return oc.Fragment=a,oc.jsx=i,oc.jsxs=i,oc}var zv;function vS(){return zv||(zv=1,wm.exports=gS()),wm.exports}var l=vS(),bm={exports:{}},cc={},Sm={exports:{}},Cm={};var Ov;function xS(){return Ov||(Ov=1,(function(n){function a(z,K){var Q=z.length;z.push(K);e:for(;0<Q;){var P=Q-1>>>1,ie=z[P];if(0<c(ie,K))z[P]=K,z[Q]=ie,Q=P;else break e}}function i(z){return z.length===0?null:z[0]}function r(z){if(z.length===0)return null;var K=z[0],Q=z.pop();if(Q!==K){z[0]=Q;e:for(var P=0,ie=z.length,Se=ie>>>1;P<Se;){var D=2*(P+1)-1,Z=z[D],ye=D+1,be=z[ye];if(0>c(Z,Q))ye<ie&&0>c(be,Z)?(z[P]=be,z[ye]=Q,P=ye):(z[P]=Z,z[D]=Q,P=D);else if(ye<ie&&0>c(be,Q))z[P]=be,z[ye]=Q,P=ye;else break e}}return K}function c(z,K){var Q=z.sortIndex-K.sortIndex;return Q!==0?Q:z.id-K.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;n.unstable_now=function(){return d.now()}}else{var m=Date,p=m.now();n.unstable_now=function(){return m.now()-p}}var v=[],g=[],w=1,y=null,b=3,C=!1,j=!1,A=!1,T=!1,k=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;function $(z){for(var K=i(g);K!==null;){if(K.callback===null)r(g);else if(K.startTime<=z)r(g),K.sortIndex=K.expirationTime,a(v,K);else break;K=i(g)}}function F(z){if(A=!1,$(z),!j)if(i(v)!==null)j=!0,q||(q=!0,Y());else{var K=i(g);K!==null&&V(F,K.startTime-z)}}var q=!1,I=-1,_=5,fe=-1;function G(){return T?!0:!(n.unstable_now()-fe<_)}function ue(){if(T=!1,q){var z=n.unstable_now();fe=z;var K=!0;try{e:{j=!1,A&&(A=!1,R(I),I=-1),C=!0;var Q=b;try{t:{for($(z),y=i(v);y!==null&&!(y.expirationTime>z&&G());){var P=y.callback;if(typeof P=="function"){y.callback=null,b=y.priorityLevel;var ie=P(y.expirationTime<=z);if(z=n.unstable_now(),typeof ie=="function"){y.callback=ie,$(z),K=!0;break t}y===i(v)&&r(v),$(z)}else r(v);y=i(v)}if(y!==null)K=!0;else{var Se=i(g);Se!==null&&V(F,Se.startTime-z),K=!1}}break e}finally{y=null,b=Q,C=!1}K=void 0}}finally{K?Y():q=!1}}}var Y;if(typeof E=="function")Y=function(){E(ue)};else if(typeof MessageChannel<"u"){var ae=new MessageChannel,le=ae.port2;ae.port1.onmessage=ue,Y=function(){le.postMessage(null)}}else Y=function(){k(ue,0)};function V(z,K){I=k(function(){z(n.unstable_now())},K)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(z){z.callback=null},n.unstable_forceFrameRate=function(z){0>z||125<z?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):_=0<z?Math.floor(1e3/z):5},n.unstable_getCurrentPriorityLevel=function(){return b},n.unstable_next=function(z){switch(b){case 1:case 2:case 3:var K=3;break;default:K=b}var Q=b;b=K;try{return z()}finally{b=Q}},n.unstable_requestPaint=function(){T=!0},n.unstable_runWithPriority=function(z,K){switch(z){case 1:case 2:case 3:case 4:case 5:break;default:z=3}var Q=b;b=z;try{return K()}finally{b=Q}},n.unstable_scheduleCallback=function(z,K,Q){var P=n.unstable_now();switch(typeof Q=="object"&&Q!==null?(Q=Q.delay,Q=typeof Q=="number"&&0<Q?P+Q:P):Q=P,z){case 1:var ie=-1;break;case 2:ie=250;break;case 5:ie=1073741823;break;case 4:ie=1e4;break;default:ie=5e3}return ie=Q+ie,z={id:w++,callback:K,priorityLevel:z,startTime:Q,expirationTime:ie,sortIndex:-1},Q>P?(z.sortIndex=Q,a(g,z),i(v)===null&&z===i(g)&&(A?(R(I),I=-1):A=!0,V(F,Q-P))):(z.sortIndex=ie,a(v,z),j||C||(j=!0,q||(q=!0,Y()))),z},n.unstable_shouldYield=G,n.unstable_wrapCallback=function(z){var K=b;return function(){var Q=b;b=K;try{return z.apply(this,arguments)}finally{b=Q}}}})(Cm)),Cm}var Iv;function yS(){return Iv||(Iv=1,Sm.exports=xS()),Sm.exports}var Bv;function wS(){if(Bv)return cc;Bv=1;var n=yS(),a=$b(),i=fy();function r(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var s=2;s<arguments.length;s++)t+="&args[]="+encodeURIComponent(arguments[s])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function c(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function d(e){var t=e,s=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(s=t.return),e=t.return;while(e)}return t.tag===3?s:null}function m(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function p(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function v(e){if(d(e)!==e)throw Error(r(188))}function g(e){var t=e.alternate;if(!t){if(t=d(e),t===null)throw Error(r(188));return t!==e?null:e}for(var s=e,o=t;;){var u=s.return;if(u===null)break;var h=u.alternate;if(h===null){if(o=u.return,o!==null){s=o;continue}break}if(u.child===h.child){for(h=u.child;h;){if(h===s)return v(u),e;if(h===o)return v(u),t;h=h.sibling}throw Error(r(188))}if(s.return!==o.return)s=u,o=h;else{for(var S=!1,M=u.child;M;){if(M===s){S=!0,s=u,o=h;break}if(M===o){S=!0,o=u,s=h;break}M=M.sibling}if(!S){for(M=h.child;M;){if(M===s){S=!0,s=h,o=u;break}if(M===o){S=!0,o=h,s=u;break}M=M.sibling}if(!S)throw Error(r(189))}}if(s.alternate!==o)throw Error(r(190))}if(s.tag!==3)throw Error(r(188));return s.stateNode.current===s?e:t}function w(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=w(e),t!==null)return t;e=e.sibling}return null}var y=Object.assign,b=Symbol.for("react.element"),C=Symbol.for("react.transitional.element"),j=Symbol.for("react.portal"),A=Symbol.for("react.fragment"),T=Symbol.for("react.strict_mode"),k=Symbol.for("react.profiler"),R=Symbol.for("react.consumer"),E=Symbol.for("react.context"),$=Symbol.for("react.forward_ref"),F=Symbol.for("react.suspense"),q=Symbol.for("react.suspense_list"),I=Symbol.for("react.memo"),_=Symbol.for("react.lazy"),fe=Symbol.for("react.activity"),G=Symbol.for("react.memo_cache_sentinel"),ue=Symbol.iterator;function Y(e){return e===null||typeof e!="object"?null:(e=ue&&e[ue]||e["@@iterator"],typeof e=="function"?e:null)}var ae=Symbol.for("react.client.reference");function le(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ae?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case A:return"Fragment";case k:return"Profiler";case T:return"StrictMode";case F:return"Suspense";case q:return"SuspenseList";case fe:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case j:return"Portal";case E:return e.displayName||"Context";case R:return(e._context.displayName||"Context")+".Consumer";case $:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case I:return t=e.displayName||null,t!==null?t:le(e.type)||"Memo";case _:t=e._payload,e=e._init;try{return le(e(t))}catch{}}return null}var V=Array.isArray,z=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,K=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Q={pending:!1,data:null,method:null,action:null},P=[],ie=-1;function Se(e){return{current:e}}function D(e){0>ie||(e.current=P[ie],P[ie]=null,ie--)}function Z(e,t){ie++,P[ie]=e.current,e.current=t}var ye=Se(null),be=Se(null),de=Se(null),Ne=Se(null);function Ie(e,t){switch(Z(de,t),Z(be,e),Z(ye,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Xg(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Xg(t),e=Zg(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}D(ye),Z(ye,e)}function re(){D(ye),D(be),D(de)}function Ke(e){e.memoizedState!==null&&Z(Ne,e);var t=ye.current,s=Zg(t,e.type);t!==s&&(Z(be,e),Z(ye,s))}function De(e){be.current===e&&(D(ye),D(be)),Ne.current===e&&(D(Ne),sc._currentValue=Q)}var Qe,ne;function ge(e){if(Qe===void 0)try{throw Error()}catch(s){var t=s.stack.trim().match(/\n( *(at )?)/);Qe=t&&t[1]||"",ne=-1<s.stack.indexOf(`
|
|
2
2
|
at`)?" (<anonymous>)":-1<s.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
3
|
-
`+Qe+e+ne}var Re=!1;function te(e,t){if(!e||Re)return"";Re=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var o={DetermineComponentFrameRoot:function(){try{if(t){var we=function(){throw Error()};if(Object.defineProperty(we.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(we,[])}catch(ce){var se=ce}Reflect.construct(e,[],we)}else{try{we.call()}catch(ce){se=ce}e.call(we.prototype)}}else{try{throw Error()}catch(ce){se=ce}(we=e())&&typeof we.catch=="function"&&we.catch(function(){})}}catch(ce){if(ce&&se&&typeof ce.stack=="string")return[ce.stack,se.stack]}return[null,null]}};o.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var
|
|
3
|
+
`+Qe+e+ne}var Re=!1;function te(e,t){if(!e||Re)return"";Re=!0;var s=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var o={DetermineComponentFrameRoot:function(){try{if(t){var we=function(){throw Error()};if(Object.defineProperty(we.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(we,[])}catch(ce){var se=ce}Reflect.construct(e,[],we)}else{try{we.call()}catch(ce){se=ce}e.call(we.prototype)}}else{try{throw Error()}catch(ce){se=ce}(we=e())&&typeof we.catch=="function"&&we.catch(function(){})}}catch(ce){if(ce&&se&&typeof ce.stack=="string")return[ce.stack,se.stack]}return[null,null]}};o.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var u=Object.getOwnPropertyDescriptor(o.DetermineComponentFrameRoot,"name");u&&u.configurable&&Object.defineProperty(o.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var h=o.DetermineComponentFrameRoot(),S=h[0],M=h[1];if(S&&M){var B=S.split(`
|
|
4
4
|
`),ee=M.split(`
|
|
5
|
-
`);for(
|
|
6
|
-
`+B[o].replace(" at new "," at ");return e.displayName&&he.includes("<anonymous>")&&(he=he.replace("<anonymous>",e.displayName)),he}while(1<=o&&0<=
|
|
5
|
+
`);for(u=o=0;o<B.length&&!B[o].includes("DetermineComponentFrameRoot");)o++;for(;u<ee.length&&!ee[u].includes("DetermineComponentFrameRoot");)u++;if(o===B.length||u===ee.length)for(o=B.length-1,u=ee.length-1;1<=o&&0<=u&&B[o]!==ee[u];)u--;for(;1<=o&&0<=u;o--,u--)if(B[o]!==ee[u]){if(o!==1||u!==1)do if(o--,u--,0>u||B[o]!==ee[u]){var he=`
|
|
6
|
+
`+B[o].replace(" at new "," at ");return e.displayName&&he.includes("<anonymous>")&&(he=he.replace("<anonymous>",e.displayName)),he}while(1<=o&&0<=u);break}}}finally{Re=!1,Error.prepareStackTrace=s}return(s=e?e.displayName||e.name:"")?ge(s):""}function oe(e,t){switch(e.tag){case 26:case 27:case 5:return ge(e.type);case 16:return ge("Lazy");case 13:return e.child!==t&&t!==null?ge("Suspense Fallback"):ge("Suspense");case 19:return ge("SuspenseList");case 0:case 15:return te(e.type,!1);case 11:return te(e.type.render,!1);case 1:return te(e.type,!0);case 31:return ge("Activity");default:return""}}function Ae(e){try{var t="",s=null;do t+=oe(e,s),s=e,e=e.return;while(e);return t}catch(o){return`
|
|
7
7
|
Error generating stack: `+o.message+`
|
|
8
|
-
`+o.stack}}var Ce=Object.prototype.hasOwnProperty,st=n.unstable_scheduleCallback,me=n.unstable_cancelCallback,He=n.unstable_shouldYield,_e=n.unstable_requestPaint,Ge=n.unstable_now,aa=n.unstable_getCurrentPriorityLevel,gn=n.unstable_ImmediatePriority,An=n.unstable_UserBlockingPriority,Kn=n.unstable_NormalPriority,Ci=n.unstable_LowPriority,Ta=n.unstable_IdlePriority,Bn=n.log,dr=n.unstable_setDisableYieldValue,gs=null,mt=null;function Mn(e){if(typeof Bn=="function"&&dr(e),mt&&typeof mt.setStrictMode=="function")try{mt.setStrictMode(gs,e)}catch{}}var Me=Math.clz32?Math.clz32:fr,ji=Math.log,Je=Math.LN2;function fr(e){return e>>>=0,e===0?32:31-(ji(e)/Je|0)|0}var At=256,Ra=262144,Gt=4194304;function Qn(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ya(e,t,s){var o=e.pendingLanes;if(o===0)return 0;var d=0,h=e.suspendedLanes,S=e.pingedLanes;e=e.warmLanes;var M=o&134217727;return M!==0?(o=M&~h,o!==0?d=Qn(o):(S&=M,S!==0?d=Qn(S):s||(s=M&~e,s!==0&&(d=Qn(s))))):(M=o&~h,M!==0?d=Qn(M):S!==0?d=Qn(S):s||(s=o&~e,s!==0&&(d=Qn(s)))),d===0?0:t!==0&&t!==d&&(t&h)===0&&(h=d&-d,s=t&-t,h>=s||h===32&&(s&4194048)!==0)?t:d}function Ea(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Vt(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Is(){var e=Gt;return Gt<<=1,(Gt&62914560)===0&&(Gt=4194304),e}function vs(e){for(var t=[],s=0;31>s;s++)t.push(e);return t}function xs(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function mr(e,t,s,o,d,h){var S=e.pendingLanes;e.pendingLanes=s,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=s,e.entangledLanes&=s,e.errorRecoveryDisabledLanes&=s,e.shellSuspendCounter=0;var M=e.entanglements,B=e.expirationTimes,ee=e.hiddenUpdates;for(s=S&~s;0<s;){var he=31-Me(s),we=1<<he;M[he]=0,B[he]=-1;var se=ee[he];if(se!==null)for(ee[he]=null,he=0;he<se.length;he++){var ce=se[he];ce!==null&&(ce.lane&=-536870913)}s&=~we}o!==0&&hr(e,o,0),h!==0&&d===0&&e.tag!==0&&(e.suspendedLanes|=h&~(S&~t))}function hr(e,t,s){e.pendingLanes|=t,e.suspendedLanes&=~t;var o=31-Me(t);e.entangledLanes|=t,e.entanglements[o]=e.entanglements[o]|1073741824|s&261930}function Da(e,t){var s=e.entangledLanes|=t;for(e=e.entanglements;s;){var o=31-Me(s),d=1<<o;d&t|e[o]&t&&(e[o]|=t),s&=~d}}function ys(e,t){var s=t&-t;return s=(s&42)!==0?1:Nn(s),(s&(e.suspendedLanes|t))!==0?0:s}function Nn(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function sa(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function tn(){var e=K.p;return e!==0?e:(e=window.event,e===void 0?32:Cv(e.type))}function Bs(e,t){var s=K.p;try{return K.p=e,t()}finally{K.p=s}}var Tn=Math.random().toString(36).slice(2),X="__reactFiber$"+Tn,je="__reactProps$"+Tn,Le="__reactContainer$"+Tn,We="__reactEvents$"+Tn,xt="__reactListeners$"+Tn,gt="__reactHandles$"+Tn,Ue="__reactResources$"+Tn,dt="__reactMarker$"+Tn;function nn(e){delete e[X],delete e[je],delete e[We],delete e[xt],delete e[gt]}function Ht(e){var t=e[X];if(t)return t;for(var s=e.parentNode;s;){if(t=s[Le]||s[X]){if(s=t.alternate,t.child!==null||s!==null&&s.child!==null)for(e=rv(e);e!==null;){if(s=e[X])return s;e=rv(e)}return t}e=s,s=e.parentNode}return null}function Rn(e){if(e=e[X]||e[Le]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Mt(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(r(33))}function $t(e){var t=e[Ue];return t||(t=e[Ue]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function Et(e){e[dt]=!0}var ws=new Set,vn={};function Yt(e,t){bt(e,t),bt(e+"Capture",t)}function bt(e,t){for(vn[e]=t,e=0;e<t.length;e++)ws.add(t[e])}var La=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Ka={},Qa={};function ki(e){return Ce.call(Qa,e)?!0:Ce.call(Ka,e)?!1:La.test(e)?Qa[e]=!0:(Ka[e]=!0,!1)}function Fs(e,t,s){if(ki(t))if(s===null)e.removeAttribute(t);else{switch(typeof s){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var o=t.toLowerCase().slice(0,5);if(o!=="data-"&&o!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+s)}}function bs(e,t,s){if(s===null)e.removeAttribute(t);else{switch(typeof s){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+s)}}function Fn(e,t,s,o){if(o===null)e.removeAttribute(s);else{switch(typeof o){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(s);return}e.setAttributeNS(t,s,""+o)}}function cn(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function pr(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ai(e,t,s){var o=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof o<"u"&&typeof o.get=="function"&&typeof o.set=="function"){var d=o.get,h=o.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return d.call(this)},set:function(S){s=""+S,h.call(this,S)}}),Object.defineProperty(e,t,{enumerable:o.enumerable}),{getValue:function(){return s},setValue:function(S){s=""+S},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function bl(e){if(!e._valueTracker){var t=pr(e)?"checked":"value";e._valueTracker=Ai(e,t,""+e[t])}}function Mi(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var s=t.getValue(),o="";return e&&(o=pr(e)?e.checked?"true":"false":e.value),e=o,e!==s?(t.setValue(e),!0):!1}function Hs(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var fo=/[\n"\\]/g;function Xn(e){return e.replace(fo,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function _a(e,t,s,o,d,h,S,M){e.name="",S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"?e.type=S:e.removeAttribute("type"),t!=null?S==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+cn(t)):e.value!==""+cn(t)&&(e.value=""+cn(t)):S!=="submit"&&S!=="reset"||e.removeAttribute("value"),t!=null?za(e,S,cn(t)):s!=null?za(e,S,cn(s)):o!=null&&e.removeAttribute("value"),d==null&&h!=null&&(e.defaultChecked=!!h),d!=null&&(e.checked=d&&typeof d!="function"&&typeof d!="symbol"),M!=null&&typeof M!="function"&&typeof M!="symbol"&&typeof M!="boolean"?e.name=""+cn(M):e.removeAttribute("name")}function Ss(e,t,s,o,d,h,S,M){if(h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"&&(e.type=h),t!=null||s!=null){if(!(h!=="submit"&&h!=="reset"||t!=null)){bl(e);return}s=s!=null?""+cn(s):"",t=t!=null?""+cn(t):s,M||t===e.value||(e.value=t),e.defaultValue=t}o=o??d,o=typeof o!="function"&&typeof o!="symbol"&&!!o,e.checked=M?e.checked:!!o,e.defaultChecked=!!o,S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"&&(e.name=S),bl(e)}function za(e,t,s){t==="number"&&Hs(e.ownerDocument)===e||e.defaultValue===""+s||(e.defaultValue=""+s)}function Sl(e,t,s,o){if(e=e.options,t){t={};for(var d=0;d<s.length;d++)t["$"+s[d]]=!0;for(s=0;s<e.length;s++)d=t.hasOwnProperty("$"+e[s].value),e[s].selected!==d&&(e[s].selected=d),d&&o&&(e[s].defaultSelected=!0)}else{for(s=""+cn(s),t=null,d=0;d<e.length;d++){if(e[d].value===s){e[d].selected=!0,o&&(e[d].defaultSelected=!0);return}t!==null||e[d].disabled||(t=e[d])}t!==null&&(t.selected=!0)}}function gr(e,t,s){if(t!=null&&(t=""+cn(t),t!==e.value&&(e.value=t),s==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=s!=null?""+cn(s):""}function Ud(e,t,s,o){if(t==null){if(o!=null){if(s!=null)throw Error(r(92));if(V(o)){if(1<o.length)throw Error(r(93));o=o[0]}s=o}s==null&&(s=""),t=s}s=cn(t),e.defaultValue=s,o=e.textContent,o===s&&o!==""&&o!==null&&(e.value=o),bl(e)}function Cl(e,t){if(t){var s=e.firstChild;if(s&&s===e.lastChild&&s.nodeType===3){s.nodeValue=t;return}}e.textContent=t}var jl=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Bc(e,t,s){var o=t.indexOf("--")===0;s==null||typeof s=="boolean"||s===""?o?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":o?e.setProperty(t,s):typeof s!="number"||s===0||jl.has(t)?t==="float"?e.cssFloat=s:e[t]=(""+s).trim():e[t]=s+"px"}function $s(e,t,s){if(t!=null&&typeof t!="object")throw Error(r(62));if(e=e.style,s!=null){for(var o in s)!s.hasOwnProperty(o)||t!=null&&t.hasOwnProperty(o)||(o.indexOf("--")===0?e.setProperty(o,""):o==="float"?e.cssFloat="":e[o]="");for(var d in t)o=t[d],t.hasOwnProperty(d)&&s[d]!==o&&Bc(e,d,o)}else for(var h in t)t.hasOwnProperty(h)&&Bc(e,h,t[h])}function Ni(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Gh=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Vh=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function mo(e){return Vh.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function Xa(){}var vr=null;function xr(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var kl=null,Al=null;function Fc(e){var t=Rn(e);if(t&&(e=t.stateNode)){var s=e[je]||null;e:switch(e=t.stateNode,t.type){case"input":if(_a(e,s.value,s.defaultValue,s.defaultValue,s.checked,s.defaultChecked,s.type,s.name),t=s.name,s.type==="radio"&&t!=null){for(s=e;s.parentNode;)s=s.parentNode;for(s=s.querySelectorAll('input[name="'+Xn(""+t)+'"][type="radio"]'),t=0;t<s.length;t++){var o=s[t];if(o!==e&&o.form===e.form){var d=o[je]||null;if(!d)throw Error(r(90));_a(o,d.value,d.defaultValue,d.defaultValue,d.checked,d.defaultChecked,d.type,d.name)}}for(t=0;t<s.length;t++)o=s[t],o.form===e.form&&Mi(o)}break e;case"textarea":gr(e,s.value,s.defaultValue);break e;case"select":t=s.value,t!=null&&Sl(e,!!s.multiple,t,!1)}}}var Ti=!1;function ho(e,t,s){if(Ti)return e(t,s);Ti=!0;try{var o=e(t);return o}finally{if(Ti=!1,(kl!==null||Al!==null)&&(Au(),kl&&(t=kl,e=Al,Al=kl=null,Fc(t),e)))for(t=0;t<e.length;t++)Fc(e[t])}}function Za(e,t){var s=e.stateNode;if(s===null)return null;var o=s[je]||null;if(o===null)return null;s=o[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(o=!o.disabled)||(e=e.type,o=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!o;break e;default:e=!1}if(e)return null;if(s&&typeof s!="function")throw Error(r(231,t,typeof s));return s}var xn=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ml=!1;if(xn)try{var Nl={};Object.defineProperty(Nl,"passive",{get:function(){Ml=!0}}),window.addEventListener("test",Nl,Nl),window.removeEventListener("test",Nl,Nl)}catch{Ml=!1}var Ja=null,Us=null,Ri=null;function po(){if(Ri)return Ri;var e,t=Us,s=t.length,o,d="value"in Ja?Ja.value:Ja.textContent,h=d.length;for(e=0;e<s&&t[e]===d[e];e++);var S=s-e;for(o=1;o<=S&&t[s-o]===d[h-o];o++);return Ri=d.slice(e,1<o?1-o:void 0)}function Ve(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function nt(){return!0}function la(){return!1}function yn(e){function t(s,o,d,h,S){this._reactName=s,this._targetInst=d,this.type=o,this.nativeEvent=h,this.target=S,this.currentTarget=null;for(var M in e)e.hasOwnProperty(M)&&(s=e[M],this[M]=s?s(h):h[M]);return this.isDefaultPrevented=(h.defaultPrevented!=null?h.defaultPrevented:h.returnValue===!1)?nt:la,this.isPropagationStopped=la,this}return y(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var s=this.nativeEvent;s&&(s.preventDefault?s.preventDefault():typeof s.returnValue!="unknown"&&(s.returnValue=!1),this.isDefaultPrevented=nt)},stopPropagation:function(){var s=this.nativeEvent;s&&(s.stopPropagation?s.stopPropagation():typeof s.cancelBubble!="unknown"&&(s.cancelBubble=!0),this.isPropagationStopped=nt)},persist:function(){},isPersistent:nt}),t}var Hn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Xe=yn(Hn),Tl=y({},Hn,{view:0,detail:0}),Pd=yn(Tl),Rl,Ps,qs,es=y({},Tl,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:go,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==qs&&(qs&&e.type==="mousemove"?(Rl=e.screenX-qs.screenX,Ps=e.screenY-qs.screenY):Ps=Rl=0,qs=e),Rl)},movementY:function(e){return"movementY"in e?e.movementY:Ps}}),ia=yn(es),El=y({},es,{dataTransfer:0}),En=yn(El),yr=y({},Tl,{relatedTarget:0}),Te=yn(yr),Hc=y({},Hn,{animationName:0,elapsedTime:0,pseudoElement:0}),qd=yn(Hc),Oa=y({},Hn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Gd=yn(Oa),Vd=y({},Hn,{data:0}),Dl=yn(Vd),Rt={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},$c={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},wr={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Gs(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=wr[e])?!!t[e]:!1}function go(){return Gs}var Yd=y({},Tl,{key:function(e){if(e.key){var t=Rt[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Ve(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?$c[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:go,charCode:function(e){return e.type==="keypress"?Ve(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Ve(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Wt=yn(Yd),Ll=y({},es,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Uc=yn(Ll),Pc=y({},Tl,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:go}),ts=yn(Pc),qc=y({},Hn,{propertyName:0,elapsedTime:0,pseudoElement:0}),br=yn(qc),Vs=y({},es,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Ia=yn(Vs),un=y({},Hn,{newState:0,oldState:0}),Wd=yn(un),Gc=[9,13,27,32],Cs=xn&&"CompositionEvent"in window,Ei=null;xn&&"documentMode"in document&&(Ei=document.documentMode);var Kt=xn&&"TextEvent"in window&&!Ei,js=xn&&(!Cs||Ei&&8<Ei&&11>=Ei),Di=" ",Li=!1;function Ba(e,t){switch(e){case"keyup":return Gc.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Vc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var _l=!1;function Sr(e,t){switch(e){case"compositionend":return Vc(t);case"keypress":return t.which!==32?null:(Li=!0,Di);case"textInput":return e=t.data,e===Di&&Li?null:e;default:return null}}function Cr(e,t){if(_l)return e==="compositionend"||!Cs&&Ba(e,t)?(e=po(),Ri=Us=Ja=null,_l=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return js&&t.locale!=="ko"?null:t.data;default:return null}}var Yc={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Ys(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!Yc[e.type]:t==="textarea"}function vo(e,t,s,o){kl?Al?Al.push(o):Al=[o]:kl=o,t=Lu(t,"onChange"),0<t.length&&(s=new Xe("onChange","change",null,s,o),e.push({event:s,listeners:t}))}var zl=null,_i=null;function Ol(e){Yg(e,0)}function jr(e){var t=Mt(e);if(Mi(t))return e}function xo(e,t){if(e==="change")return t}var Wc=!1;if(xn){var yo;if(xn){var wo="oninput"in document;if(!wo){var bo=document.createElement("div");bo.setAttribute("oninput","return;"),wo=typeof bo.oninput=="function"}yo=wo}else yo=!1;Wc=yo&&(!document.documentMode||9<document.documentMode)}function Il(){zl&&(zl.detachEvent("onpropertychange",So),_i=zl=null)}function So(e){if(e.propertyName==="value"&&jr(_i)){var t=[];vo(t,_i,e,xr(e)),ho(Ol,t)}}function ks(e,t,s){e==="focusin"?(Il(),zl=t,_i=s,zl.attachEvent("onpropertychange",So)):e==="focusout"&&Il()}function kr(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return jr(_i)}function Bl(e,t){if(e==="click")return jr(t)}function Ws(e,t){if(e==="input"||e==="change")return jr(t)}function Co(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Zn=typeof Object.is=="function"?Object.is:Co;function Fl(e,t){if(Zn(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var s=Object.keys(e),o=Object.keys(t);if(s.length!==o.length)return!1;for(o=0;o<s.length;o++){var d=s[o];if(!Ce.call(t,d)||!Zn(e[d],t[d]))return!1}return!0}function Ar(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Mr(e,t){var s=Ar(e);e=0;for(var o;s;){if(s.nodeType===3){if(o=e+s.textContent.length,e<=t&&o>=t)return{node:s,offset:t-e};e=o}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=Ar(s)}}function Hl(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Hl(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Kc(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Hs(e.document);t instanceof e.HTMLIFrameElement;){try{var s=typeof t.contentWindow.location.href=="string"}catch{s=!1}if(s)e=t.contentWindow;else break;t=Hs(e.document)}return t}function $l(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Qc=xn&&"documentMode"in document&&11>=document.documentMode,ns=null,zi=null,Ks=null,Ul=!1;function Oi(e,t,s){var o=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;Ul||ns==null||ns!==Hs(o)||(o=ns,"selectionStart"in o&&$l(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Ks&&Fl(Ks,o)||(Ks=o,o=Lu(zi,"onSelect"),0<o.length&&(t=new Xe("onSelect","select",null,t,s),e.push({event:t,listeners:o}),t.target=ns)))}function as(e,t){var s={};return s[e.toLowerCase()]=t.toLowerCase(),s["Webkit"+e]="webkit"+t,s["Moz"+e]="moz"+t,s}var Qs={animationend:as("Animation","AnimationEnd"),animationiteration:as("Animation","AnimationIteration"),animationstart:as("Animation","AnimationStart"),transitionrun:as("Transition","TransitionRun"),transitionstart:as("Transition","TransitionStart"),transitioncancel:as("Transition","TransitionCancel"),transitionend:as("Transition","TransitionEnd")},As={},Xs={};xn&&(Xs=document.createElement("div").style,"AnimationEvent"in window||(delete Qs.animationend.animation,delete Qs.animationiteration.animation,delete Qs.animationstart.animation),"TransitionEvent"in window||delete Qs.transitionend.transition);function Fa(e){if(As[e])return As[e];if(!Qs[e])return e;var t=Qs[e],s;for(s in t)if(t.hasOwnProperty(s)&&s in Xs)return As[e]=t[s];return e}var Pl=Fa("animationend"),wa=Fa("animationiteration"),jo=Fa("animationstart"),ko=Fa("transitionrun"),Xc=Fa("transitionstart"),Dn=Fa("transitioncancel"),Ao=Fa("transitionend"),Nr=new Map,Ii="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Ii.push("scrollEnd");function $n(e,t){Nr.set(e,t),Yt(t,[e])}var Tr=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},dn=[],ql=0,Mo=0;function Zs(){for(var e=ql,t=Mo=ql=0;t<e;){var s=dn[t];dn[t++]=null;var o=dn[t];dn[t++]=null;var d=dn[t];dn[t++]=null;var h=dn[t];if(dn[t++]=null,o!==null&&d!==null){var S=o.pending;S===null?d.next=d:(d.next=S.next,S.next=d),o.pending=d}h!==0&&Rr(s,d,h)}}function Bi(e,t,s,o){dn[ql++]=e,dn[ql++]=t,dn[ql++]=s,dn[ql++]=o,Mo|=o,e.lanes|=o,e=e.alternate,e!==null&&(e.lanes|=o)}function Js(e,t,s,o){return Bi(e,t,s,o),Fi(e)}function Ms(e,t){return Bi(e,null,null,t),Fi(e)}function Rr(e,t,s){e.lanes|=s;var o=e.alternate;o!==null&&(o.lanes|=s);for(var d=!1,h=e.return;h!==null;)h.childLanes|=s,o=h.alternate,o!==null&&(o.childLanes|=s),h.tag===22&&(e=h.stateNode,e===null||e._visibility&1||(d=!0)),e=h,h=h.return;return e.tag===3?(h=e.stateNode,d&&t!==null&&(d=31-Me(s),e=h.hiddenUpdates,o=e[d],o===null?e[d]=[t]:o.push(t),t.lane=s|536870912),h):null}function Fi(e){if(50<Jo)throw Jo=0,Pf=null,Error(r(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var Gl={};function No(e,t,s,o){this.tag=e,this.key=s,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Jn(e,t,s,o){return new No(e,t,s,o)}function Er(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Ha(e,t){var s=e.alternate;return s===null?(s=Jn(e.tag,t,e.key,e.mode),s.elementType=e.elementType,s.type=e.type,s.stateNode=e.stateNode,s.alternate=e,e.alternate=s):(s.pendingProps=t,s.type=e.type,s.flags=0,s.subtreeFlags=0,s.deletions=null),s.flags=e.flags&65011712,s.childLanes=e.childLanes,s.lanes=e.lanes,s.child=e.child,s.memoizedProps=e.memoizedProps,s.memoizedState=e.memoizedState,s.updateQueue=e.updateQueue,t=e.dependencies,s.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},s.sibling=e.sibling,s.index=e.index,s.ref=e.ref,s.refCleanup=e.refCleanup,s}function To(e,t){e.flags&=65011714;var s=e.alternate;return s===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=s.childLanes,e.lanes=s.lanes,e.child=s.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=s.memoizedProps,e.memoizedState=s.memoizedState,e.updateQueue=s.updateQueue,e.type=s.type,t=s.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Dr(e,t,s,o,d,h){var S=0;if(o=e,typeof e=="function")Er(e)&&(S=1);else if(typeof e=="string")S=_b(e,s,ye.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case fe:return e=Jn(31,s,t,d),e.elementType=fe,e.lanes=h,e;case A:return $a(s.children,d,h,t);case T:S=8,d|=24;break;case j:return e=Jn(12,s,t,d|2),e.elementType=j,e.lanes=h,e;case F:return e=Jn(13,s,t,d),e.elementType=F,e.lanes=h,e;case q:return e=Jn(19,s,t,d),e.elementType=q,e.lanes=h,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case E:S=10;break e;case R:S=9;break e;case H:S=11;break e;case I:S=14;break e;case _:S=16,o=null;break e}S=29,s=Error(r(130,e===null?"null":typeof e,"")),o=null}return t=Jn(S,s,t,d),t.elementType=e,t.type=o,t.lanes=h,t}function $a(e,t,s,o){return e=Jn(7,e,o,t),e.lanes=s,e}function Ua(e,t,s){return e=Jn(6,e,null,t),e.lanes=s,e}function Hi(e){var t=Jn(18,null,null,0);return t.stateNode=e,t}function Ro(e,t,s){return t=Jn(4,e.children!==null?e.children:[],e.key,t),t.lanes=s,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var Lr=new WeakMap;function Un(e,t){if(typeof e=="object"&&e!==null){var s=Lr.get(e);return s!==void 0?s:(t={value:e,source:t,stack:Ae(t)},Lr.set(e,t),t)}return{value:e,source:t,stack:Ae(t)}}var ke=[],ss=0,$i=null,Ui=0,ba=[],Pn=0,Ns=null,ea=1,St="";function Ot(e,t){ke[ss++]=Ui,ke[ss++]=$i,$i=e,Ui=t}function lt(e,t,s){ba[Pn++]=ea,ba[Pn++]=St,ba[Pn++]=Ns,Ns=e;var o=ea;e=St;var d=32-Me(o)-1;o&=~(1<<d),s+=1;var h=32-Me(t)+d;if(30<h){var S=d-d%5;h=(o&(1<<S)-1).toString(32),o>>=S,d-=S,ea=1<<32-Me(t)+d|s<<d|o,St=h+e}else ea=1<<h|s<<d|o,St=e}function Eo(e){e.return!==null&&(Ot(e,1),lt(e,1,0))}function Do(e){for(;e===$i;)$i=ke[--ss],ke[ss]=null,Ui=ke[--ss],ke[ss]=null;for(;e===Ns;)Ns=ba[--Pn],ba[Pn]=null,St=ba[--Pn],ba[Pn]=null,ea=ba[--Pn],ba[Pn]=null}function Zc(e,t){ba[Pn++]=ea,ba[Pn++]=St,ba[Pn++]=Ns,ea=t.id,St=t.overflow,Ns=e}var fn=null,Nt=null,it=!1,Ts=null,ra=!1,Lo=Error(r(519));function Rs(e){var t=Error(r(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw Pi(Un(t,e)),Lo}function Jc(e){var t=e.stateNode,s=e.type,o=e.memoizedProps;switch(t[X]=e,t[je]=o,s){case"dialog":ot("cancel",t),ot("close",t);break;case"iframe":case"object":case"embed":ot("load",t);break;case"video":case"audio":for(s=0;s<tc.length;s++)ot(tc[s],t);break;case"source":ot("error",t);break;case"img":case"image":case"link":ot("error",t),ot("load",t);break;case"details":ot("toggle",t);break;case"input":ot("invalid",t),Ss(t,o.value,o.defaultValue,o.checked,o.defaultChecked,o.type,o.name,!0);break;case"select":ot("invalid",t);break;case"textarea":ot("invalid",t),Ud(t,o.value,o.defaultValue,o.children)}s=o.children,typeof s!="string"&&typeof s!="number"&&typeof s!="bigint"||t.textContent===""+s||o.suppressHydrationWarning===!0||Xg(t.textContent,s)?(o.popover!=null&&(ot("beforetoggle",t),ot("toggle",t)),o.onScroll!=null&&ot("scroll",t),o.onScrollEnd!=null&&ot("scrollend",t),o.onClick!=null&&(t.onclick=Xa),t=!0):t=!1,t||Rs(e,!0)}function eu(e){for(fn=e.return;fn;)switch(fn.tag){case 5:case 31:case 13:ra=!1;return;case 27:case 3:ra=!0;return;default:fn=fn.return}}function Vl(e){if(e!==fn)return!1;if(!it)return eu(e),it=!0,!1;var t=e.tag,s;if((s=t!==3&&t!==27)&&((s=t===5)&&(s=e.type,s=!(s!=="form"&&s!=="button")||sm(e.type,e.memoizedProps)),s=!s),s&&Nt&&Rs(e),eu(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));Nt=iv(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));Nt=iv(e)}else t===27?(t=Nt,ui(e.type)?(e=cm,cm=null,Nt=e):Nt=t):Nt=fn?Ga(e.stateNode.nextSibling):null;return!0}function el(){Nt=fn=null,it=!1}function _o(){var e=Ts;return e!==null&&(fa===null?fa=e:fa.push.apply(fa,e),Ts=null),e}function Pi(e){Ts===null?Ts=[e]:Ts.push(e)}var qi=Se(null),ls=null,is=null;function Es(e,t,s){Z(qi,t._currentValue),t._currentValue=s}function rs(e){e._currentValue=qi.current,D(qi)}function zo(e,t,s){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===s)break;e=e.return}}function Oo(e,t,s,o){var d=e.child;for(d!==null&&(d.return=e);d!==null;){var h=d.dependencies;if(h!==null){var S=d.child;h=h.firstContext;e:for(;h!==null;){var M=h;h=d;for(var B=0;B<t.length;B++)if(M.context===t[B]){h.lanes|=s,M=h.alternate,M!==null&&(M.lanes|=s),zo(h.return,s,e),o||(S=null);break e}h=M.next}}else if(d.tag===18){if(S=d.return,S===null)throw Error(r(341));S.lanes|=s,h=S.alternate,h!==null&&(h.lanes|=s),zo(S,s,e),S=null}else S=d.child;if(S!==null)S.return=d;else for(S=d;S!==null;){if(S===e){S=null;break}if(d=S.sibling,d!==null){d.return=S.return,S=d;break}S=S.return}d=S}}function Yl(e,t,s,o){e=null;for(var d=t,h=!1;d!==null;){if(!h){if((d.flags&524288)!==0)h=!0;else if((d.flags&262144)!==0)break}if(d.tag===10){var S=d.alternate;if(S===null)throw Error(r(387));if(S=S.memoizedProps,S!==null){var M=d.type;Zn(d.pendingProps.value,S.value)||(e!==null?e.push(M):e=[M])}}else if(d===Ne.current){if(S=d.alternate,S===null)throw Error(r(387));S.memoizedState.memoizedState!==d.memoizedState.memoizedState&&(e!==null?e.push(ic):e=[ic])}d=d.return}e!==null&&Oo(t,e,s,o),t.flags|=262144}function _r(e){for(e=e.firstContext;e!==null;){if(!Zn(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function tl(e){ls=e,is=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function mn(e){return Io(ls,e)}function os(e,t){return ls===null&&tl(e),Io(e,t)}function Io(e,t){var s=t._currentValue;if(t={context:t,memoizedValue:s,next:null},is===null){if(e===null)throw Error(r(308));is=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else is=is.next=t;return s}var Bo=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(s,o){e.push(o)}};this.abort=function(){t.aborted=!0,e.forEach(function(s){return s()})}},Kd=n.unstable_scheduleCallback,Qd=n.unstable_NormalPriority,It={$$typeof:E,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Wl(){return{controller:new Bo,data:new Map,refCount:0}}function Gi(e){e.refCount--,e.refCount===0&&Kd(Qd,function(){e.controller.abort()})}var Qt=null,Kl=0,nl=0,Ql=null;function Yh(e,t){if(Qt===null){var s=Qt=[];Kl=0,nl=Kf(),Ql={status:"pending",value:void 0,then:function(o){s.push(o)}}}return Kl++,t.then(tu,tu),t}function tu(){if(--Kl===0&&Qt!==null){Ql!==null&&(Ql.status="fulfilled");var e=Qt;Qt=null,nl=0,Ql=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function Xd(e,t){var s=[],o={status:"pending",value:null,reason:null,then:function(d){s.push(d)}};return e.then(function(){o.status="fulfilled",o.value=t;for(var d=0;d<s.length;d++)(0,s[d])(t)},function(d){for(o.status="rejected",o.reason=d,d=0;d<s.length;d++)(0,s[d])(void 0)}),o}var Fo=z.S;z.S=function(e,t){bg=Ge(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&Yh(e,t),Fo!==null&&Fo(e,t)};var Pa=Se(null);function al(){var e=Pa.current;return e!==null?e:Tt.pooledCache}function Vi(e,t){t===null?Z(Pa,Pa.current):Z(Pa,t.pool)}function nu(){var e=al();return e===null?null:{parent:It._currentValue,pool:e}}var Xl=Error(r(460)),Ho=Error(r(474)),zr=Error(r(542)),Or={then:function(){}};function au(e){return e=e.status,e==="fulfilled"||e==="rejected"}function su(e,t,s){switch(s=e[s],s===void 0?e.push(t):s!==t&&(t.then(Xa,Xa),t=s),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,ll(e),e;default:if(typeof t.status=="string")t.then(Xa,Xa);else{if(e=Tt,e!==null&&100<e.shellSuspendCounter)throw Error(r(482));e=t,e.status="pending",e.then(function(o){if(t.status==="pending"){var d=t;d.status="fulfilled",d.value=o}},function(o){if(t.status==="pending"){var d=t;d.status="rejected",d.reason=o}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,ll(e),e}throw sl=t,Xl}}function an(e){try{var t=e._init;return t(e._payload)}catch(s){throw s!==null&&typeof s=="object"&&typeof s.then=="function"?(sl=s,Xl):s}}var sl=null;function lu(){if(sl===null)throw Error(r(459));var e=sl;return sl=null,e}function ll(e){if(e===Xl||e===zr)throw Error(r(483))}var Zl=null,il=0;function Ir(e){var t=il;return il+=1,Zl===null&&(Zl=[]),su(Zl,e,t)}function Jl(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function x(e,t){throw t.$$typeof===b?Error(r(525)):(e=Object.prototype.toString.call(t),Error(r(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function N(e){function t(W,U){if(e){var J=W.deletions;J===null?(W.deletions=[U],W.flags|=16):J.push(U)}}function s(W,U){if(!e)return null;for(;U!==null;)t(W,U),U=U.sibling;return null}function o(W){for(var U=new Map;W!==null;)W.key!==null?U.set(W.key,W):U.set(W.index,W),W=W.sibling;return U}function d(W,U){return W=Ha(W,U),W.index=0,W.sibling=null,W}function h(W,U,J){return W.index=J,e?(J=W.alternate,J!==null?(J=J.index,J<U?(W.flags|=67108866,U):J):(W.flags|=67108866,U)):(W.flags|=1048576,U)}function S(W){return e&&W.alternate===null&&(W.flags|=67108866),W}function M(W,U,J,xe){return U===null||U.tag!==6?(U=Ua(J,W.mode,xe),U.return=W,U):(U=d(U,J),U.return=W,U)}function B(W,U,J,xe){var Pe=J.type;return Pe===A?he(W,U,J.props.children,xe,J.key):U!==null&&(U.elementType===Pe||typeof Pe=="object"&&Pe!==null&&Pe.$$typeof===_&&an(Pe)===U.type)?(U=d(U,J.props),Jl(U,J),U.return=W,U):(U=Dr(J.type,J.key,J.props,null,W.mode,xe),Jl(U,J),U.return=W,U)}function ee(W,U,J,xe){return U===null||U.tag!==4||U.stateNode.containerInfo!==J.containerInfo||U.stateNode.implementation!==J.implementation?(U=Ro(J,W.mode,xe),U.return=W,U):(U=d(U,J.children||[]),U.return=W,U)}function he(W,U,J,xe,Pe){return U===null||U.tag!==7?(U=$a(J,W.mode,xe,Pe),U.return=W,U):(U=d(U,J),U.return=W,U)}function we(W,U,J){if(typeof U=="string"&&U!==""||typeof U=="number"||typeof U=="bigint")return U=Ua(""+U,W.mode,J),U.return=W,U;if(typeof U=="object"&&U!==null){switch(U.$$typeof){case C:return J=Dr(U.type,U.key,U.props,null,W.mode,J),Jl(J,U),J.return=W,J;case k:return U=Ro(U,W.mode,J),U.return=W,U;case _:return U=an(U),we(W,U,J)}if(V(U)||Y(U))return U=$a(U,W.mode,J,null),U.return=W,U;if(typeof U.then=="function")return we(W,Ir(U),J);if(U.$$typeof===E)return we(W,os(W,U),J);x(W,U)}return null}function se(W,U,J,xe){var Pe=U!==null?U.key:null;if(typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint")return Pe!==null?null:M(W,U,""+J,xe);if(typeof J=="object"&&J!==null){switch(J.$$typeof){case C:return J.key===Pe?B(W,U,J,xe):null;case k:return J.key===Pe?ee(W,U,J,xe):null;case _:return J=an(J),se(W,U,J,xe)}if(V(J)||Y(J))return Pe!==null?null:he(W,U,J,xe,null);if(typeof J.then=="function")return se(W,U,Ir(J),xe);if(J.$$typeof===E)return se(W,U,os(W,J),xe);x(W,J)}return null}function ce(W,U,J,xe,Pe){if(typeof xe=="string"&&xe!==""||typeof xe=="number"||typeof xe=="bigint")return W=W.get(J)||null,M(U,W,""+xe,Pe);if(typeof xe=="object"&&xe!==null){switch(xe.$$typeof){case C:return W=W.get(xe.key===null?J:xe.key)||null,B(U,W,xe,Pe);case k:return W=W.get(xe.key===null?J:xe.key)||null,ee(U,W,xe,Pe);case _:return xe=an(xe),ce(W,U,J,xe,Pe)}if(V(xe)||Y(xe))return W=W.get(J)||null,he(U,W,xe,Pe,null);if(typeof xe.then=="function")return ce(W,U,J,Ir(xe),Pe);if(xe.$$typeof===E)return ce(W,U,J,os(U,xe),Pe);x(U,xe)}return null}function Oe(W,U,J,xe){for(var Pe=null,ht=null,Fe=U,at=U=0,ut=null;Fe!==null&&at<J.length;at++){Fe.index>at?(ut=Fe,Fe=null):ut=Fe.sibling;var pt=se(W,Fe,J[at],xe);if(pt===null){Fe===null&&(Fe=ut);break}e&&Fe&&pt.alternate===null&&t(W,Fe),U=h(pt,U,at),ht===null?Pe=pt:ht.sibling=pt,ht=pt,Fe=ut}if(at===J.length)return s(W,Fe),it&&Ot(W,at),Pe;if(Fe===null){for(;at<J.length;at++)Fe=we(W,J[at],xe),Fe!==null&&(U=h(Fe,U,at),ht===null?Pe=Fe:ht.sibling=Fe,ht=Fe);return it&&Ot(W,at),Pe}for(Fe=o(Fe);at<J.length;at++)ut=ce(Fe,W,at,J[at],xe),ut!==null&&(e&&ut.alternate!==null&&Fe.delete(ut.key===null?at:ut.key),U=h(ut,U,at),ht===null?Pe=ut:ht.sibling=ut,ht=ut);return e&&Fe.forEach(function(pi){return t(W,pi)}),it&&Ot(W,at),Pe}function qe(W,U,J,xe){if(J==null)throw Error(r(151));for(var Pe=null,ht=null,Fe=U,at=U=0,ut=null,pt=J.next();Fe!==null&&!pt.done;at++,pt=J.next()){Fe.index>at?(ut=Fe,Fe=null):ut=Fe.sibling;var pi=se(W,Fe,pt.value,xe);if(pi===null){Fe===null&&(Fe=ut);break}e&&Fe&&pi.alternate===null&&t(W,Fe),U=h(pi,U,at),ht===null?Pe=pi:ht.sibling=pi,ht=pi,Fe=ut}if(pt.done)return s(W,Fe),it&&Ot(W,at),Pe;if(Fe===null){for(;!pt.done;at++,pt=J.next())pt=we(W,pt.value,xe),pt!==null&&(U=h(pt,U,at),ht===null?Pe=pt:ht.sibling=pt,ht=pt);return it&&Ot(W,at),Pe}for(Fe=o(Fe);!pt.done;at++,pt=J.next())pt=ce(Fe,W,at,pt.value,xe),pt!==null&&(e&&pt.alternate!==null&&Fe.delete(pt.key===null?at:pt.key),U=h(pt,U,at),ht===null?Pe=pt:ht.sibling=pt,ht=pt);return e&&Fe.forEach(function(Gb){return t(W,Gb)}),it&&Ot(W,at),Pe}function kt(W,U,J,xe){if(typeof J=="object"&&J!==null&&J.type===A&&J.key===null&&(J=J.props.children),typeof J=="object"&&J!==null){switch(J.$$typeof){case C:e:{for(var Pe=J.key;U!==null;){if(U.key===Pe){if(Pe=J.type,Pe===A){if(U.tag===7){s(W,U.sibling),xe=d(U,J.props.children),xe.return=W,W=xe;break e}}else if(U.elementType===Pe||typeof Pe=="object"&&Pe!==null&&Pe.$$typeof===_&&an(Pe)===U.type){s(W,U.sibling),xe=d(U,J.props),Jl(xe,J),xe.return=W,W=xe;break e}s(W,U);break}else t(W,U);U=U.sibling}J.type===A?(xe=$a(J.props.children,W.mode,xe,J.key),xe.return=W,W=xe):(xe=Dr(J.type,J.key,J.props,null,W.mode,xe),Jl(xe,J),xe.return=W,W=xe)}return S(W);case k:e:{for(Pe=J.key;U!==null;){if(U.key===Pe)if(U.tag===4&&U.stateNode.containerInfo===J.containerInfo&&U.stateNode.implementation===J.implementation){s(W,U.sibling),xe=d(U,J.children||[]),xe.return=W,W=xe;break e}else{s(W,U);break}else t(W,U);U=U.sibling}xe=Ro(J,W.mode,xe),xe.return=W,W=xe}return S(W);case _:return J=an(J),kt(W,U,J,xe)}if(V(J))return Oe(W,U,J,xe);if(Y(J)){if(Pe=Y(J),typeof Pe!="function")throw Error(r(150));return J=Pe.call(J),qe(W,U,J,xe)}if(typeof J.then=="function")return kt(W,U,Ir(J),xe);if(J.$$typeof===E)return kt(W,U,os(W,J),xe);x(W,J)}return typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint"?(J=""+J,U!==null&&U.tag===6?(s(W,U.sibling),xe=d(U,J),xe.return=W,W=xe):(s(W,U),xe=Ua(J,W.mode,xe),xe.return=W,W=xe),S(W)):s(W,U)}return function(W,U,J,xe){try{il=0;var Pe=kt(W,U,J,xe);return Zl=null,Pe}catch(Fe){if(Fe===Xl||Fe===zr)throw Fe;var ht=Jn(29,Fe,null,W.mode);return ht.lanes=xe,ht.return=W,ht}}}var L=N(!0),$=N(!1),O=!1;function pe(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ve(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ee(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function $e(e,t,s){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,(vt&2)!==0){var d=o.pending;return d===null?t.next=t:(t.next=d.next,d.next=t),o.pending=t,t=Fi(e),Rr(e,null,s),t}return Bi(e,o,t,s),Fi(e)}function Ye(e,t,s){if(t=t.updateQueue,t!==null&&(t=t.shared,(s&4194048)!==0)){var o=t.lanes;o&=e.pendingLanes,s|=o,t.lanes=s,Da(e,s)}}function Dt(e,t){var s=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,s===o)){var d=null,h=null;if(s=s.firstBaseUpdate,s!==null){do{var S={lane:s.lane,tag:s.tag,payload:s.payload,callback:null,next:null};h===null?d=h=S:h=h.next=S,s=s.next}while(s!==null);h===null?d=h=t:h=h.next=t}else d=h=t;s={baseState:o.baseState,firstBaseUpdate:d,lastBaseUpdate:h,shared:o.shared,callbacks:o.callbacks},e.updateQueue=s;return}e=s.lastBaseUpdate,e===null?s.firstBaseUpdate=t:e.next=t,s.lastBaseUpdate=t}var wn=!1;function Ln(){if(wn){var e=Ql;if(e!==null)throw e}}function oa(e,t,s,o){wn=!1;var d=e.updateQueue;O=!1;var h=d.firstBaseUpdate,S=d.lastBaseUpdate,M=d.shared.pending;if(M!==null){d.shared.pending=null;var B=M,ee=B.next;B.next=null,S===null?h=ee:S.next=ee,S=B;var he=e.alternate;he!==null&&(he=he.updateQueue,M=he.lastBaseUpdate,M!==S&&(M===null?he.firstBaseUpdate=ee:M.next=ee,he.lastBaseUpdate=B))}if(h!==null){var we=d.baseState;S=0,he=ee=B=null,M=h;do{var se=M.lane&-536870913,ce=se!==M.lane;if(ce?(ct&se)===se:(o&se)===se){se!==0&&se===nl&&(wn=!0),he!==null&&(he=he.next={lane:0,tag:M.tag,payload:M.payload,callback:null,next:null});e:{var Oe=e,qe=M;se=t;var kt=s;switch(qe.tag){case 1:if(Oe=qe.payload,typeof Oe=="function"){we=Oe.call(kt,we,se);break e}we=Oe;break e;case 3:Oe.flags=Oe.flags&-65537|128;case 0:if(Oe=qe.payload,se=typeof Oe=="function"?Oe.call(kt,we,se):Oe,se==null)break e;we=y({},we,se);break e;case 2:O=!0}}se=M.callback,se!==null&&(e.flags|=64,ce&&(e.flags|=8192),ce=d.callbacks,ce===null?d.callbacks=[se]:ce.push(se))}else ce={lane:se,tag:M.tag,payload:M.payload,callback:M.callback,next:null},he===null?(ee=he=ce,B=we):he=he.next=ce,S|=se;if(M=M.next,M===null){if(M=d.shared.pending,M===null)break;ce=M,M=ce.next,ce.next=null,d.lastBaseUpdate=ce,d.shared.pending=null}}while(!0);he===null&&(B=we),d.baseState=B,d.firstBaseUpdate=ee,d.lastBaseUpdate=he,h===null&&(d.shared.lanes=0),li|=S,e.lanes=S,e.memoizedState=we}}function Ds(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function ei(e,t){var s=e.callbacks;if(s!==null)for(e.callbacks=null,e=0;e<s.length;e++)Ds(s[e],t)}var cs=Se(null),Br=Se(0);function Wh(e,t){e=pl,Z(Br,e),Z(cs,t),pl=e|t.baseLanes}function Zd(){Z(Br,pl),Z(cs,cs.current)}function Jd(){pl=Br.current,D(cs),D(Br)}var Sa=Se(null),qa=null;function ti(e){var t=e.alternate;Z(Xt,Xt.current&1),Z(Sa,e),qa===null&&(t===null||cs.current!==null||t.memoizedState!==null)&&(qa=e)}function ef(e){Z(Xt,Xt.current),Z(Sa,e),qa===null&&(qa=e)}function Kh(e){e.tag===22?(Z(Xt,Xt.current),Z(Sa,e),qa===null&&(qa=e)):ni()}function ni(){Z(Xt,Xt.current),Z(Sa,Sa.current)}function Ca(e){D(Sa),qa===e&&(qa=null),D(Xt)}var Xt=Se(0);function iu(e){for(var t=e;t!==null;){if(t.tag===13){var s=t.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||rm(s)||om(s)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var rl=0,et=null,Ct=null,sn=null,ru=!1,Fr=!1,Yi=!1,ou=0,$o=0,Hr=null,zw=0;function Ut(){throw Error(r(321))}function tf(e,t){if(t===null)return!1;for(var s=0;s<t.length&&s<e.length;s++)if(!Zn(e[s],t[s]))return!1;return!0}function nf(e,t,s,o,d,h){return rl=h,et=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,z.H=e===null||e.memoizedState===null?Dp:xf,Yi=!1,h=s(o,d),Yi=!1,Fr&&(h=Xh(t,s,o,d)),Qh(e),h}function Qh(e){z.H=qo;var t=Ct!==null&&Ct.next!==null;if(rl=0,sn=Ct=et=null,ru=!1,$o=0,Hr=null,t)throw Error(r(300));e===null||ln||(e=e.dependencies,e!==null&&_r(e)&&(ln=!0))}function Xh(e,t,s,o){et=e;var d=0;do{if(Fr&&(Hr=null),$o=0,Fr=!1,25<=d)throw Error(r(301));if(d+=1,sn=Ct=null,e.updateQueue!=null){var h=e.updateQueue;h.lastEffect=null,h.events=null,h.stores=null,h.memoCache!=null&&(h.memoCache.index=0)}z.H=Lp,h=t(s,o)}while(Fr);return h}function Ow(){var e=z.H,t=e.useState()[0];return t=typeof t.then=="function"?Uo(t):t,e=e.useState()[0],(Ct!==null?Ct.memoizedState:null)!==e&&(et.flags|=1024),t}function af(){var e=ou!==0;return ou=0,e}function sf(e,t,s){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s}function lf(e){if(ru){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}ru=!1}rl=0,sn=Ct=et=null,Fr=!1,$o=ou=0,Hr=null}function ta(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return sn===null?et.memoizedState=sn=e:sn=sn.next=e,sn}function Zt(){if(Ct===null){var e=et.alternate;e=e!==null?e.memoizedState:null}else e=Ct.next;var t=sn===null?et.memoizedState:sn.next;if(t!==null)sn=t,Ct=e;else{if(e===null)throw et.alternate===null?Error(r(467)):Error(r(310));Ct=e,e={memoizedState:Ct.memoizedState,baseState:Ct.baseState,baseQueue:Ct.baseQueue,queue:Ct.queue,next:null},sn===null?et.memoizedState=sn=e:sn=sn.next=e}return sn}function cu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Uo(e){var t=$o;return $o+=1,Hr===null&&(Hr=[]),e=su(Hr,e,t),t=et,(sn===null?t.memoizedState:sn.next)===null&&(t=t.alternate,z.H=t===null||t.memoizedState===null?Dp:xf),e}function uu(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Uo(e);if(e.$$typeof===E)return mn(e)}throw Error(r(438,String(e)))}function rf(e){var t=null,s=et.updateQueue;if(s!==null&&(t=s.memoCache),t==null){var o=et.alternate;o!==null&&(o=o.updateQueue,o!==null&&(o=o.memoCache,o!=null&&(t={data:o.data.map(function(d){return d.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),s===null&&(s=cu(),et.updateQueue=s),s.memoCache=t,s=t.data[t.index],s===void 0)for(s=t.data[t.index]=Array(e),o=0;o<e;o++)s[o]=G;return t.index++,s}function ol(e,t){return typeof t=="function"?t(e):t}function du(e){var t=Zt();return of(t,Ct,e)}function of(e,t,s){var o=e.queue;if(o===null)throw Error(r(311));o.lastRenderedReducer=s;var d=e.baseQueue,h=o.pending;if(h!==null){if(d!==null){var S=d.next;d.next=h.next,h.next=S}t.baseQueue=d=h,o.pending=null}if(h=e.baseState,d===null)e.memoizedState=h;else{t=d.next;var M=S=null,B=null,ee=t,he=!1;do{var we=ee.lane&-536870913;if(we!==ee.lane?(ct&we)===we:(rl&we)===we){var se=ee.revertLane;if(se===0)B!==null&&(B=B.next={lane:0,revertLane:0,gesture:null,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null}),we===nl&&(he=!0);else if((rl&se)===se){ee=ee.next,se===nl&&(he=!0);continue}else we={lane:0,revertLane:ee.revertLane,gesture:null,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null},B===null?(M=B=we,S=h):B=B.next=we,et.lanes|=se,li|=se;we=ee.action,Yi&&s(h,we),h=ee.hasEagerState?ee.eagerState:s(h,we)}else se={lane:we,revertLane:ee.revertLane,gesture:ee.gesture,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null},B===null?(M=B=se,S=h):B=B.next=se,et.lanes|=we,li|=we;ee=ee.next}while(ee!==null&&ee!==t);if(B===null?S=h:B.next=M,!Zn(h,e.memoizedState)&&(ln=!0,he&&(s=Ql,s!==null)))throw s;e.memoizedState=h,e.baseState=S,e.baseQueue=B,o.lastRenderedState=h}return d===null&&(o.lanes=0),[e.memoizedState,o.dispatch]}function cf(e){var t=Zt(),s=t.queue;if(s===null)throw Error(r(311));s.lastRenderedReducer=e;var o=s.dispatch,d=s.pending,h=t.memoizedState;if(d!==null){s.pending=null;var S=d=d.next;do h=e(h,S.action),S=S.next;while(S!==d);Zn(h,t.memoizedState)||(ln=!0),t.memoizedState=h,t.baseQueue===null&&(t.baseState=h),s.lastRenderedState=h}return[h,o]}function Zh(e,t,s){var o=et,d=Zt(),h=it;if(h){if(s===void 0)throw Error(r(407));s=s()}else s=t();var S=!Zn((Ct||d).memoizedState,s);if(S&&(d.memoizedState=s,ln=!0),d=d.queue,ff(tp.bind(null,o,d,e),[e]),d.getSnapshot!==t||S||sn!==null&&sn.memoizedState.tag&1){if(o.flags|=2048,$r(9,{destroy:void 0},ep.bind(null,o,d,s,t),null),Tt===null)throw Error(r(349));h||(rl&127)!==0||Jh(o,t,s)}return s}function Jh(e,t,s){e.flags|=16384,e={getSnapshot:t,value:s},t=et.updateQueue,t===null?(t=cu(),et.updateQueue=t,t.stores=[e]):(s=t.stores,s===null?t.stores=[e]:s.push(e))}function ep(e,t,s,o){t.value=s,t.getSnapshot=o,np(t)&&ap(e)}function tp(e,t,s){return s(function(){np(t)&&ap(e)})}function np(e){var t=e.getSnapshot;e=e.value;try{var s=t();return!Zn(e,s)}catch{return!0}}function ap(e){var t=Ms(e,2);t!==null&&ma(t,e,2)}function uf(e){var t=ta();if(typeof e=="function"){var s=e;if(e=s(),Yi){Mn(!0);try{s()}finally{Mn(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ol,lastRenderedState:e},t}function sp(e,t,s,o){return e.baseState=s,of(e,Ct,typeof o=="function"?o:ol)}function Iw(e,t,s,o,d){if(hu(e))throw Error(r(485));if(e=t.action,e!==null){var h={payload:d,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(S){h.listeners.push(S)}};z.T!==null?s(!0):h.isTransition=!1,o(h),s=t.pending,s===null?(h.next=t.pending=h,lp(t,h)):(h.next=s.next,t.pending=s.next=h)}}function lp(e,t){var s=t.action,o=t.payload,d=e.state;if(t.isTransition){var h=z.T,S={};z.T=S;try{var M=s(d,o),B=z.S;B!==null&&B(S,M),ip(e,t,M)}catch(ee){df(e,t,ee)}finally{h!==null&&S.types!==null&&(h.types=S.types),z.T=h}}else try{h=s(d,o),ip(e,t,h)}catch(ee){df(e,t,ee)}}function ip(e,t,s){s!==null&&typeof s=="object"&&typeof s.then=="function"?s.then(function(o){rp(e,t,o)},function(o){return df(e,t,o)}):rp(e,t,s)}function rp(e,t,s){t.status="fulfilled",t.value=s,op(t),e.state=s,t=e.pending,t!==null&&(s=t.next,s===t?e.pending=null:(s=s.next,t.next=s,lp(e,s)))}function df(e,t,s){var o=e.pending;if(e.pending=null,o!==null){o=o.next;do t.status="rejected",t.reason=s,op(t),t=t.next;while(t!==o)}e.action=null}function op(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function cp(e,t){return t}function up(e,t){if(it){var s=Tt.formState;if(s!==null){e:{var o=et;if(it){if(Nt){t:{for(var d=Nt,h=ra;d.nodeType!==8;){if(!h){d=null;break t}if(d=Ga(d.nextSibling),d===null){d=null;break t}}h=d.data,d=h==="F!"||h==="F"?d:null}if(d){Nt=Ga(d.nextSibling),o=d.data==="F!";break e}}Rs(o)}o=!1}o&&(t=s[0])}}return s=ta(),s.memoizedState=s.baseState=t,o={pending:null,lanes:0,dispatch:null,lastRenderedReducer:cp,lastRenderedState:t},s.queue=o,s=Tp.bind(null,et,o),o.dispatch=s,o=uf(!1),h=vf.bind(null,et,!1,o.queue),o=ta(),d={state:t,dispatch:null,action:e,pending:null},o.queue=d,s=Iw.bind(null,et,d,h,s),d.dispatch=s,o.memoizedState=e,[t,s,!1]}function dp(e){var t=Zt();return fp(t,Ct,e)}function fp(e,t,s){if(t=of(e,t,cp)[0],e=du(ol)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var o=Uo(t)}catch(S){throw S===Xl?zr:S}else o=t;t=Zt();var d=t.queue,h=d.dispatch;return s!==t.memoizedState&&(et.flags|=2048,$r(9,{destroy:void 0},Bw.bind(null,d,s),null)),[o,h,e]}function Bw(e,t){e.action=t}function mp(e){var t=Zt(),s=Ct;if(s!==null)return fp(t,s,e);Zt(),t=t.memoizedState,s=Zt();var o=s.queue.dispatch;return s.memoizedState=e,[t,o,!1]}function $r(e,t,s,o){return e={tag:e,create:s,deps:o,inst:t,next:null},t=et.updateQueue,t===null&&(t=cu(),et.updateQueue=t),s=t.lastEffect,s===null?t.lastEffect=e.next=e:(o=s.next,s.next=e,e.next=o,t.lastEffect=e),e}function hp(){return Zt().memoizedState}function fu(e,t,s,o){var d=ta();et.flags|=e,d.memoizedState=$r(1|t,{destroy:void 0},s,o===void 0?null:o)}function mu(e,t,s,o){var d=Zt();o=o===void 0?null:o;var h=d.memoizedState.inst;Ct!==null&&o!==null&&tf(o,Ct.memoizedState.deps)?d.memoizedState=$r(t,h,s,o):(et.flags|=e,d.memoizedState=$r(1|t,h,s,o))}function pp(e,t){fu(8390656,8,e,t)}function ff(e,t){mu(2048,8,e,t)}function Fw(e){et.flags|=4;var t=et.updateQueue;if(t===null)t=cu(),et.updateQueue=t,t.events=[e];else{var s=t.events;s===null?t.events=[e]:s.push(e)}}function gp(e){var t=Zt().memoizedState;return Fw({ref:t,nextImpl:e}),function(){if((vt&2)!==0)throw Error(r(440));return t.impl.apply(void 0,arguments)}}function vp(e,t){return mu(4,2,e,t)}function xp(e,t){return mu(4,4,e,t)}function yp(e,t){if(typeof t=="function"){e=e();var s=t(e);return function(){typeof s=="function"?s():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function wp(e,t,s){s=s!=null?s.concat([e]):null,mu(4,4,yp.bind(null,t,e),s)}function mf(){}function bp(e,t){var s=Zt();t=t===void 0?null:t;var o=s.memoizedState;return t!==null&&tf(t,o[1])?o[0]:(s.memoizedState=[e,t],e)}function Sp(e,t){var s=Zt();t=t===void 0?null:t;var o=s.memoizedState;if(t!==null&&tf(t,o[1]))return o[0];if(o=e(),Yi){Mn(!0);try{e()}finally{Mn(!1)}}return s.memoizedState=[o,t],o}function hf(e,t,s){return s===void 0||(rl&1073741824)!==0&&(ct&261930)===0?e.memoizedState=t:(e.memoizedState=s,e=Cg(),et.lanes|=e,li|=e,s)}function Cp(e,t,s,o){return Zn(s,t)?s:cs.current!==null?(e=hf(e,s,o),Zn(e,t)||(ln=!0),e):(rl&42)===0||(rl&1073741824)!==0&&(ct&261930)===0?(ln=!0,e.memoizedState=s):(e=Cg(),et.lanes|=e,li|=e,t)}function jp(e,t,s,o,d){var h=K.p;K.p=h!==0&&8>h?h:8;var S=z.T,M={};z.T=M,vf(e,!1,t,s);try{var B=d(),ee=z.S;if(ee!==null&&ee(M,B),B!==null&&typeof B=="object"&&typeof B.then=="function"){var he=Xd(B,o);Po(e,t,he,Aa(e))}else Po(e,t,o,Aa(e))}catch(we){Po(e,t,{then:function(){},status:"rejected",reason:we},Aa())}finally{K.p=h,S!==null&&M.types!==null&&(S.types=M.types),z.T=S}}function Hw(){}function pf(e,t,s,o){if(e.tag!==5)throw Error(r(476));var d=kp(e).queue;jp(e,d,t,Q,s===null?Hw:function(){return Ap(e),s(o)})}function kp(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ol,lastRenderedState:Q},next:null};var s={};return t.next={memoizedState:s,baseState:s,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ol,lastRenderedState:s},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Ap(e){var t=kp(e);t.next===null&&(t=e.alternate.memoizedState),Po(e,t.next.queue,{},Aa())}function gf(){return mn(ic)}function Mp(){return Zt().memoizedState}function Np(){return Zt().memoizedState}function $w(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var s=Aa();e=Ee(s);var o=$e(t,e,s);o!==null&&(ma(o,t,s),Ye(o,t,s)),t={cache:Wl()},e.payload=t;return}t=t.return}}function Uw(e,t,s){var o=Aa();s={lane:o,revertLane:0,gesture:null,action:s,hasEagerState:!1,eagerState:null,next:null},hu(e)?Rp(t,s):(s=Js(e,t,s,o),s!==null&&(ma(s,e,o),Ep(s,t,o)))}function Tp(e,t,s){var o=Aa();Po(e,t,s,o)}function Po(e,t,s,o){var d={lane:o,revertLane:0,gesture:null,action:s,hasEagerState:!1,eagerState:null,next:null};if(hu(e))Rp(t,d);else{var h=e.alternate;if(e.lanes===0&&(h===null||h.lanes===0)&&(h=t.lastRenderedReducer,h!==null))try{var S=t.lastRenderedState,M=h(S,s);if(d.hasEagerState=!0,d.eagerState=M,Zn(M,S))return Bi(e,t,d,0),Tt===null&&Zs(),!1}catch{}if(s=Js(e,t,d,o),s!==null)return ma(s,e,o),Ep(s,t,o),!0}return!1}function vf(e,t,s,o){if(o={lane:2,revertLane:Kf(),gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},hu(e)){if(t)throw Error(r(479))}else t=Js(e,s,o,2),t!==null&&ma(t,e,2)}function hu(e){var t=e.alternate;return e===et||t!==null&&t===et}function Rp(e,t){Fr=ru=!0;var s=e.pending;s===null?t.next=t:(t.next=s.next,s.next=t),e.pending=t}function Ep(e,t,s){if((s&4194048)!==0){var o=t.lanes;o&=e.pendingLanes,s|=o,t.lanes=s,Da(e,s)}}var qo={readContext:mn,use:uu,useCallback:Ut,useContext:Ut,useEffect:Ut,useImperativeHandle:Ut,useLayoutEffect:Ut,useInsertionEffect:Ut,useMemo:Ut,useReducer:Ut,useRef:Ut,useState:Ut,useDebugValue:Ut,useDeferredValue:Ut,useTransition:Ut,useSyncExternalStore:Ut,useId:Ut,useHostTransitionStatus:Ut,useFormState:Ut,useActionState:Ut,useOptimistic:Ut,useMemoCache:Ut,useCacheRefresh:Ut};qo.useEffectEvent=Ut;var Dp={readContext:mn,use:uu,useCallback:function(e,t){return ta().memoizedState=[e,t===void 0?null:t],e},useContext:mn,useEffect:pp,useImperativeHandle:function(e,t,s){s=s!=null?s.concat([e]):null,fu(4194308,4,yp.bind(null,t,e),s)},useLayoutEffect:function(e,t){return fu(4194308,4,e,t)},useInsertionEffect:function(e,t){fu(4,2,e,t)},useMemo:function(e,t){var s=ta();t=t===void 0?null:t;var o=e();if(Yi){Mn(!0);try{e()}finally{Mn(!1)}}return s.memoizedState=[o,t],o},useReducer:function(e,t,s){var o=ta();if(s!==void 0){var d=s(t);if(Yi){Mn(!0);try{s(t)}finally{Mn(!1)}}}else d=t;return o.memoizedState=o.baseState=d,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:d},o.queue=e,e=e.dispatch=Uw.bind(null,et,e),[o.memoizedState,e]},useRef:function(e){var t=ta();return e={current:e},t.memoizedState=e},useState:function(e){e=uf(e);var t=e.queue,s=Tp.bind(null,et,t);return t.dispatch=s,[e.memoizedState,s]},useDebugValue:mf,useDeferredValue:function(e,t){var s=ta();return hf(s,e,t)},useTransition:function(){var e=uf(!1);return e=jp.bind(null,et,e.queue,!0,!1),ta().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,s){var o=et,d=ta();if(it){if(s===void 0)throw Error(r(407));s=s()}else{if(s=t(),Tt===null)throw Error(r(349));(ct&127)!==0||Jh(o,t,s)}d.memoizedState=s;var h={value:s,getSnapshot:t};return d.queue=h,pp(tp.bind(null,o,h,e),[e]),o.flags|=2048,$r(9,{destroy:void 0},ep.bind(null,o,h,s,t),null),s},useId:function(){var e=ta(),t=Tt.identifierPrefix;if(it){var s=St,o=ea;s=(o&~(1<<32-Me(o)-1)).toString(32)+s,t="_"+t+"R_"+s,s=ou++,0<s&&(t+="H"+s.toString(32)),t+="_"}else s=zw++,t="_"+t+"r_"+s.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:gf,useFormState:up,useActionState:up,useOptimistic:function(e){var t=ta();t.memoizedState=t.baseState=e;var s={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=s,t=vf.bind(null,et,!0,s),s.dispatch=t,[e,t]},useMemoCache:rf,useCacheRefresh:function(){return ta().memoizedState=$w.bind(null,et)},useEffectEvent:function(e){var t=ta(),s={impl:e};return t.memoizedState=s,function(){if((vt&2)!==0)throw Error(r(440));return s.impl.apply(void 0,arguments)}}},xf={readContext:mn,use:uu,useCallback:bp,useContext:mn,useEffect:ff,useImperativeHandle:wp,useInsertionEffect:vp,useLayoutEffect:xp,useMemo:Sp,useReducer:du,useRef:hp,useState:function(){return du(ol)},useDebugValue:mf,useDeferredValue:function(e,t){var s=Zt();return Cp(s,Ct.memoizedState,e,t)},useTransition:function(){var e=du(ol)[0],t=Zt().memoizedState;return[typeof e=="boolean"?e:Uo(e),t]},useSyncExternalStore:Zh,useId:Mp,useHostTransitionStatus:gf,useFormState:dp,useActionState:dp,useOptimistic:function(e,t){var s=Zt();return sp(s,Ct,e,t)},useMemoCache:rf,useCacheRefresh:Np};xf.useEffectEvent=gp;var Lp={readContext:mn,use:uu,useCallback:bp,useContext:mn,useEffect:ff,useImperativeHandle:wp,useInsertionEffect:vp,useLayoutEffect:xp,useMemo:Sp,useReducer:cf,useRef:hp,useState:function(){return cf(ol)},useDebugValue:mf,useDeferredValue:function(e,t){var s=Zt();return Ct===null?hf(s,e,t):Cp(s,Ct.memoizedState,e,t)},useTransition:function(){var e=cf(ol)[0],t=Zt().memoizedState;return[typeof e=="boolean"?e:Uo(e),t]},useSyncExternalStore:Zh,useId:Mp,useHostTransitionStatus:gf,useFormState:mp,useActionState:mp,useOptimistic:function(e,t){var s=Zt();return Ct!==null?sp(s,Ct,e,t):(s.baseState=e,[e,s.queue.dispatch])},useMemoCache:rf,useCacheRefresh:Np};Lp.useEffectEvent=gp;function yf(e,t,s,o){t=e.memoizedState,s=s(o,t),s=s==null?t:y({},t,s),e.memoizedState=s,e.lanes===0&&(e.updateQueue.baseState=s)}var wf={enqueueSetState:function(e,t,s){e=e._reactInternals;var o=Aa(),d=Ee(o);d.payload=t,s!=null&&(d.callback=s),t=$e(e,d,o),t!==null&&(ma(t,e,o),Ye(t,e,o))},enqueueReplaceState:function(e,t,s){e=e._reactInternals;var o=Aa(),d=Ee(o);d.tag=1,d.payload=t,s!=null&&(d.callback=s),t=$e(e,d,o),t!==null&&(ma(t,e,o),Ye(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var s=Aa(),o=Ee(s);o.tag=2,t!=null&&(o.callback=t),t=$e(e,o,s),t!==null&&(ma(t,e,s),Ye(t,e,s))}};function _p(e,t,s,o,d,h,S){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(o,h,S):t.prototype&&t.prototype.isPureReactComponent?!Fl(s,o)||!Fl(d,h):!0}function zp(e,t,s,o){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(s,o),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(s,o),t.state!==e&&wf.enqueueReplaceState(t,t.state,null)}function Wi(e,t){var s=t;if("ref"in t){s={};for(var o in t)o!=="ref"&&(s[o]=t[o])}if(e=e.defaultProps){s===t&&(s=y({},s));for(var d in e)s[d]===void 0&&(s[d]=e[d])}return s}function Op(e){Tr(e)}function Ip(e){console.error(e)}function Bp(e){Tr(e)}function pu(e,t){try{var s=e.onUncaughtError;s(t.value,{componentStack:t.stack})}catch(o){setTimeout(function(){throw o})}}function Fp(e,t,s){try{var o=e.onCaughtError;o(s.value,{componentStack:s.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(d){setTimeout(function(){throw d})}}function bf(e,t,s){return s=Ee(s),s.tag=3,s.payload={element:null},s.callback=function(){pu(e,t)},s}function Hp(e){return e=Ee(e),e.tag=3,e}function $p(e,t,s,o){var d=s.type.getDerivedStateFromError;if(typeof d=="function"){var h=o.value;e.payload=function(){return d(h)},e.callback=function(){Fp(t,s,o)}}var S=s.stateNode;S!==null&&typeof S.componentDidCatch=="function"&&(e.callback=function(){Fp(t,s,o),typeof d!="function"&&(ii===null?ii=new Set([this]):ii.add(this));var M=o.stack;this.componentDidCatch(o.value,{componentStack:M!==null?M:""})})}function Pw(e,t,s,o,d){if(s.flags|=32768,o!==null&&typeof o=="object"&&typeof o.then=="function"){if(t=s.alternate,t!==null&&Yl(t,s,d,!0),s=Sa.current,s!==null){switch(s.tag){case 31:case 13:return qa===null?Mu():s.alternate===null&&Pt===0&&(Pt=3),s.flags&=-257,s.flags|=65536,s.lanes=d,o===Or?s.flags|=16384:(t=s.updateQueue,t===null?s.updateQueue=new Set([o]):t.add(o),Vf(e,o,d)),!1;case 22:return s.flags|=65536,o===Or?s.flags|=16384:(t=s.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([o])},s.updateQueue=t):(s=t.retryQueue,s===null?t.retryQueue=new Set([o]):s.add(o)),Vf(e,o,d)),!1}throw Error(r(435,s.tag))}return Vf(e,o,d),Mu(),!1}if(it)return t=Sa.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=d,o!==Lo&&(e=Error(r(422),{cause:o}),Pi(Un(e,s)))):(o!==Lo&&(t=Error(r(423),{cause:o}),Pi(Un(t,s))),e=e.current.alternate,e.flags|=65536,d&=-d,e.lanes|=d,o=Un(o,s),d=bf(e.stateNode,o,d),Dt(e,d),Pt!==4&&(Pt=2)),!1;var h=Error(r(520),{cause:o});if(h=Un(h,s),Zo===null?Zo=[h]:Zo.push(h),Pt!==4&&(Pt=2),t===null)return!0;o=Un(o,s),s=t;do{switch(s.tag){case 3:return s.flags|=65536,e=d&-d,s.lanes|=e,e=bf(s.stateNode,o,e),Dt(s,e),!1;case 1:if(t=s.type,h=s.stateNode,(s.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||h!==null&&typeof h.componentDidCatch=="function"&&(ii===null||!ii.has(h))))return s.flags|=65536,d&=-d,s.lanes|=d,d=Hp(d),$p(d,e,s,o),Dt(s,d),!1}s=s.return}while(s!==null);return!1}var Sf=Error(r(461)),ln=!1;function _n(e,t,s,o){t.child=e===null?$(t,null,s,o):L(t,e.child,s,o)}function Up(e,t,s,o,d){s=s.render;var h=t.ref;if("ref"in o){var S={};for(var M in o)M!=="ref"&&(S[M]=o[M])}else S=o;return tl(t),o=nf(e,t,s,S,h,d),M=af(),e!==null&&!ln?(sf(e,t,d),cl(e,t,d)):(it&&M&&Eo(t),t.flags|=1,_n(e,t,o,d),t.child)}function Pp(e,t,s,o,d){if(e===null){var h=s.type;return typeof h=="function"&&!Er(h)&&h.defaultProps===void 0&&s.compare===null?(t.tag=15,t.type=h,qp(e,t,h,o,d)):(e=Dr(s.type,null,o,t,t.mode,d),e.ref=t.ref,e.return=t,t.child=e)}if(h=e.child,!Rf(e,d)){var S=h.memoizedProps;if(s=s.compare,s=s!==null?s:Fl,s(S,o)&&e.ref===t.ref)return cl(e,t,d)}return t.flags|=1,e=Ha(h,o),e.ref=t.ref,e.return=t,t.child=e}function qp(e,t,s,o,d){if(e!==null){var h=e.memoizedProps;if(Fl(h,o)&&e.ref===t.ref)if(ln=!1,t.pendingProps=o=h,Rf(e,d))(e.flags&131072)!==0&&(ln=!0);else return t.lanes=e.lanes,cl(e,t,d)}return Cf(e,t,s,o,d)}function Gp(e,t,s,o){var d=o.children,h=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),o.mode==="hidden"){if((t.flags&128)!==0){if(h=h!==null?h.baseLanes|s:s,e!==null){for(o=t.child=e.child,d=0;o!==null;)d=d|o.lanes|o.childLanes,o=o.sibling;o=d&~h}else o=0,t.child=null;return Vp(e,t,h,s,o)}if((s&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Vi(t,h!==null?h.cachePool:null),h!==null?Wh(t,h):Zd(),Kh(t);else return o=t.lanes=536870912,Vp(e,t,h!==null?h.baseLanes|s:s,s,o)}else h!==null?(Vi(t,h.cachePool),Wh(t,h),ni(),t.memoizedState=null):(e!==null&&Vi(t,null),Zd(),ni());return _n(e,t,d,s),t.child}function Go(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Vp(e,t,s,o,d){var h=al();return h=h===null?null:{parent:It._currentValue,pool:h},t.memoizedState={baseLanes:s,cachePool:h},e!==null&&Vi(t,null),Zd(),Kh(t),e!==null&&Yl(e,t,o,!0),t.childLanes=d,null}function gu(e,t){return t=xu({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function Yp(e,t,s){return L(t,e.child,null,s),e=gu(t,t.pendingProps),e.flags|=2,Ca(t),t.memoizedState=null,e}function qw(e,t,s){var o=t.pendingProps,d=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(it){if(o.mode==="hidden")return e=gu(t,o),t.lanes=536870912,Go(null,e);if(ef(t),(e=Nt)?(e=lv(e,ra),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Ns!==null?{id:ea,overflow:St}:null,retryLane:536870912,hydrationErrors:null},s=Hi(e),s.return=t,t.child=s,fn=t,Nt=null)):e=null,e===null)throw Rs(t);return t.lanes=536870912,null}return gu(t,o)}var h=e.memoizedState;if(h!==null){var S=h.dehydrated;if(ef(t),d)if(t.flags&256)t.flags&=-257,t=Yp(e,t,s);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(r(558));else if(ln||Yl(e,t,s,!1),d=(s&e.childLanes)!==0,ln||d){if(o=Tt,o!==null&&(S=ys(o,s),S!==0&&S!==h.retryLane))throw h.retryLane=S,Ms(e,S),ma(o,e,S),Sf;Mu(),t=Yp(e,t,s)}else e=h.treeContext,Nt=Ga(S.nextSibling),fn=t,it=!0,Ts=null,ra=!1,e!==null&&Zc(t,e),t=gu(t,o),t.flags|=4096;return t}return e=Ha(e.child,{mode:o.mode,children:o.children}),e.ref=t.ref,t.child=e,e.return=t,e}function vu(e,t){var s=t.ref;if(s===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof s!="function"&&typeof s!="object")throw Error(r(284));(e===null||e.ref!==s)&&(t.flags|=4194816)}}function Cf(e,t,s,o,d){return tl(t),s=nf(e,t,s,o,void 0,d),o=af(),e!==null&&!ln?(sf(e,t,d),cl(e,t,d)):(it&&o&&Eo(t),t.flags|=1,_n(e,t,s,d),t.child)}function Wp(e,t,s,o,d,h){return tl(t),t.updateQueue=null,s=Xh(t,o,s,d),Qh(e),o=af(),e!==null&&!ln?(sf(e,t,h),cl(e,t,h)):(it&&o&&Eo(t),t.flags|=1,_n(e,t,s,h),t.child)}function Kp(e,t,s,o,d){if(tl(t),t.stateNode===null){var h=Gl,S=s.contextType;typeof S=="object"&&S!==null&&(h=mn(S)),h=new s(o,h),t.memoizedState=h.state!==null&&h.state!==void 0?h.state:null,h.updater=wf,t.stateNode=h,h._reactInternals=t,h=t.stateNode,h.props=o,h.state=t.memoizedState,h.refs={},pe(t),S=s.contextType,h.context=typeof S=="object"&&S!==null?mn(S):Gl,h.state=t.memoizedState,S=s.getDerivedStateFromProps,typeof S=="function"&&(yf(t,s,S,o),h.state=t.memoizedState),typeof s.getDerivedStateFromProps=="function"||typeof h.getSnapshotBeforeUpdate=="function"||typeof h.UNSAFE_componentWillMount!="function"&&typeof h.componentWillMount!="function"||(S=h.state,typeof h.componentWillMount=="function"&&h.componentWillMount(),typeof h.UNSAFE_componentWillMount=="function"&&h.UNSAFE_componentWillMount(),S!==h.state&&wf.enqueueReplaceState(h,h.state,null),oa(t,o,h,d),Ln(),h.state=t.memoizedState),typeof h.componentDidMount=="function"&&(t.flags|=4194308),o=!0}else if(e===null){h=t.stateNode;var M=t.memoizedProps,B=Wi(s,M);h.props=B;var ee=h.context,he=s.contextType;S=Gl,typeof he=="object"&&he!==null&&(S=mn(he));var we=s.getDerivedStateFromProps;he=typeof we=="function"||typeof h.getSnapshotBeforeUpdate=="function",M=t.pendingProps!==M,he||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(M||ee!==S)&&zp(t,h,o,S),O=!1;var se=t.memoizedState;h.state=se,oa(t,o,h,d),Ln(),ee=t.memoizedState,M||se!==ee||O?(typeof we=="function"&&(yf(t,s,we,o),ee=t.memoizedState),(B=O||_p(t,s,B,o,se,ee,S))?(he||typeof h.UNSAFE_componentWillMount!="function"&&typeof h.componentWillMount!="function"||(typeof h.componentWillMount=="function"&&h.componentWillMount(),typeof h.UNSAFE_componentWillMount=="function"&&h.UNSAFE_componentWillMount()),typeof h.componentDidMount=="function"&&(t.flags|=4194308)):(typeof h.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=o,t.memoizedState=ee),h.props=o,h.state=ee,h.context=S,o=B):(typeof h.componentDidMount=="function"&&(t.flags|=4194308),o=!1)}else{h=t.stateNode,ve(e,t),S=t.memoizedProps,he=Wi(s,S),h.props=he,we=t.pendingProps,se=h.context,ee=s.contextType,B=Gl,typeof ee=="object"&&ee!==null&&(B=mn(ee)),M=s.getDerivedStateFromProps,(ee=typeof M=="function"||typeof h.getSnapshotBeforeUpdate=="function")||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(S!==we||se!==B)&&zp(t,h,o,B),O=!1,se=t.memoizedState,h.state=se,oa(t,o,h,d),Ln();var ce=t.memoizedState;S!==we||se!==ce||O||e!==null&&e.dependencies!==null&&_r(e.dependencies)?(typeof M=="function"&&(yf(t,s,M,o),ce=t.memoizedState),(he=O||_p(t,s,he,o,se,ce,B)||e!==null&&e.dependencies!==null&&_r(e.dependencies))?(ee||typeof h.UNSAFE_componentWillUpdate!="function"&&typeof h.componentWillUpdate!="function"||(typeof h.componentWillUpdate=="function"&&h.componentWillUpdate(o,ce,B),typeof h.UNSAFE_componentWillUpdate=="function"&&h.UNSAFE_componentWillUpdate(o,ce,B)),typeof h.componentDidUpdate=="function"&&(t.flags|=4),typeof h.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof h.componentDidUpdate!="function"||S===e.memoizedProps&&se===e.memoizedState||(t.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||S===e.memoizedProps&&se===e.memoizedState||(t.flags|=1024),t.memoizedProps=o,t.memoizedState=ce),h.props=o,h.state=ce,h.context=B,o=he):(typeof h.componentDidUpdate!="function"||S===e.memoizedProps&&se===e.memoizedState||(t.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||S===e.memoizedProps&&se===e.memoizedState||(t.flags|=1024),o=!1)}return h=o,vu(e,t),o=(t.flags&128)!==0,h||o?(h=t.stateNode,s=o&&typeof s.getDerivedStateFromError!="function"?null:h.render(),t.flags|=1,e!==null&&o?(t.child=L(t,e.child,null,d),t.child=L(t,null,s,d)):_n(e,t,s,d),t.memoizedState=h.state,e=t.child):e=cl(e,t,d),e}function Qp(e,t,s,o){return el(),t.flags|=256,_n(e,t,s,o),t.child}var jf={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function kf(e){return{baseLanes:e,cachePool:nu()}}function Af(e,t,s){return e=e!==null?e.childLanes&~s:0,t&&(e|=ka),e}function Xp(e,t,s){var o=t.pendingProps,d=!1,h=(t.flags&128)!==0,S;if((S=h)||(S=e!==null&&e.memoizedState===null?!1:(Xt.current&2)!==0),S&&(d=!0,t.flags&=-129),S=(t.flags&32)!==0,t.flags&=-33,e===null){if(it){if(d?ti(t):ni(),(e=Nt)?(e=lv(e,ra),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Ns!==null?{id:ea,overflow:St}:null,retryLane:536870912,hydrationErrors:null},s=Hi(e),s.return=t,t.child=s,fn=t,Nt=null)):e=null,e===null)throw Rs(t);return om(e)?t.lanes=32:t.lanes=536870912,null}var M=o.children;return o=o.fallback,d?(ni(),d=t.mode,M=xu({mode:"hidden",children:M},d),o=$a(o,d,s,null),M.return=t,o.return=t,M.sibling=o,t.child=M,o=t.child,o.memoizedState=kf(s),o.childLanes=Af(e,S,s),t.memoizedState=jf,Go(null,o)):(ti(t),Mf(t,M))}var B=e.memoizedState;if(B!==null&&(M=B.dehydrated,M!==null)){if(h)t.flags&256?(ti(t),t.flags&=-257,t=Nf(e,t,s)):t.memoizedState!==null?(ni(),t.child=e.child,t.flags|=128,t=null):(ni(),M=o.fallback,d=t.mode,o=xu({mode:"visible",children:o.children},d),M=$a(M,d,s,null),M.flags|=2,o.return=t,M.return=t,o.sibling=M,t.child=o,L(t,e.child,null,s),o=t.child,o.memoizedState=kf(s),o.childLanes=Af(e,S,s),t.memoizedState=jf,t=Go(null,o));else if(ti(t),om(M)){if(S=M.nextSibling&&M.nextSibling.dataset,S)var ee=S.dgst;S=ee,o=Error(r(419)),o.stack="",o.digest=S,Pi({value:o,source:null,stack:null}),t=Nf(e,t,s)}else if(ln||Yl(e,t,s,!1),S=(s&e.childLanes)!==0,ln||S){if(S=Tt,S!==null&&(o=ys(S,s),o!==0&&o!==B.retryLane))throw B.retryLane=o,Ms(e,o),ma(S,e,o),Sf;rm(M)||Mu(),t=Nf(e,t,s)}else rm(M)?(t.flags|=192,t.child=e.child,t=null):(e=B.treeContext,Nt=Ga(M.nextSibling),fn=t,it=!0,Ts=null,ra=!1,e!==null&&Zc(t,e),t=Mf(t,o.children),t.flags|=4096);return t}return d?(ni(),M=o.fallback,d=t.mode,B=e.child,ee=B.sibling,o=Ha(B,{mode:"hidden",children:o.children}),o.subtreeFlags=B.subtreeFlags&65011712,ee!==null?M=Ha(ee,M):(M=$a(M,d,s,null),M.flags|=2),M.return=t,o.return=t,o.sibling=M,t.child=o,Go(null,o),o=t.child,M=e.child.memoizedState,M===null?M=kf(s):(d=M.cachePool,d!==null?(B=It._currentValue,d=d.parent!==B?{parent:B,pool:B}:d):d=nu(),M={baseLanes:M.baseLanes|s,cachePool:d}),o.memoizedState=M,o.childLanes=Af(e,S,s),t.memoizedState=jf,Go(e.child,o)):(ti(t),s=e.child,e=s.sibling,s=Ha(s,{mode:"visible",children:o.children}),s.return=t,s.sibling=null,e!==null&&(S=t.deletions,S===null?(t.deletions=[e],t.flags|=16):S.push(e)),t.child=s,t.memoizedState=null,s)}function Mf(e,t){return t=xu({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function xu(e,t){return e=Jn(22,e,null,t),e.lanes=0,e}function Nf(e,t,s){return L(t,e.child,null,s),e=Mf(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Zp(e,t,s){e.lanes|=t;var o=e.alternate;o!==null&&(o.lanes|=t),zo(e.return,t,s)}function Tf(e,t,s,o,d,h){var S=e.memoizedState;S===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:o,tail:s,tailMode:d,treeForkCount:h}:(S.isBackwards=t,S.rendering=null,S.renderingStartTime=0,S.last=o,S.tail=s,S.tailMode=d,S.treeForkCount=h)}function Jp(e,t,s){var o=t.pendingProps,d=o.revealOrder,h=o.tail;o=o.children;var S=Xt.current,M=(S&2)!==0;if(M?(S=S&1|2,t.flags|=128):S&=1,Z(Xt,S),_n(e,t,o,s),o=it?Ui:0,!M&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Zp(e,s,t);else if(e.tag===19)Zp(e,s,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(d){case"forwards":for(s=t.child,d=null;s!==null;)e=s.alternate,e!==null&&iu(e)===null&&(d=s),s=s.sibling;s=d,s===null?(d=t.child,t.child=null):(d=s.sibling,s.sibling=null),Tf(t,!1,d,s,h,o);break;case"backwards":case"unstable_legacy-backwards":for(s=null,d=t.child,t.child=null;d!==null;){if(e=d.alternate,e!==null&&iu(e)===null){t.child=d;break}e=d.sibling,d.sibling=s,s=d,d=e}Tf(t,!0,s,null,h,o);break;case"together":Tf(t,!1,null,null,void 0,o);break;default:t.memoizedState=null}return t.child}function cl(e,t,s){if(e!==null&&(t.dependencies=e.dependencies),li|=t.lanes,(s&t.childLanes)===0)if(e!==null){if(Yl(e,t,s,!1),(s&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(r(153));if(t.child!==null){for(e=t.child,s=Ha(e,e.pendingProps),t.child=s,s.return=t;e.sibling!==null;)e=e.sibling,s=s.sibling=Ha(e,e.pendingProps),s.return=t;s.sibling=null}return t.child}function Rf(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&_r(e)))}function Gw(e,t,s){switch(t.tag){case 3:Ie(t,t.stateNode.containerInfo),Es(t,It,e.memoizedState.cache),el();break;case 27:case 5:Ke(t);break;case 4:Ie(t,t.stateNode.containerInfo);break;case 10:Es(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,ef(t),null;break;case 13:var o=t.memoizedState;if(o!==null)return o.dehydrated!==null?(ti(t),t.flags|=128,null):(s&t.child.childLanes)!==0?Xp(e,t,s):(ti(t),e=cl(e,t,s),e!==null?e.sibling:null);ti(t);break;case 19:var d=(e.flags&128)!==0;if(o=(s&t.childLanes)!==0,o||(Yl(e,t,s,!1),o=(s&t.childLanes)!==0),d){if(o)return Jp(e,t,s);t.flags|=128}if(d=t.memoizedState,d!==null&&(d.rendering=null,d.tail=null,d.lastEffect=null),Z(Xt,Xt.current),o)break;return null;case 22:return t.lanes=0,Gp(e,t,s,t.pendingProps);case 24:Es(t,It,e.memoizedState.cache)}return cl(e,t,s)}function eg(e,t,s){if(e!==null)if(e.memoizedProps!==t.pendingProps)ln=!0;else{if(!Rf(e,s)&&(t.flags&128)===0)return ln=!1,Gw(e,t,s);ln=(e.flags&131072)!==0}else ln=!1,it&&(t.flags&1048576)!==0&<(t,Ui,t.index);switch(t.lanes=0,t.tag){case 16:e:{var o=t.pendingProps;if(e=an(t.elementType),t.type=e,typeof e=="function")Er(e)?(o=Wi(e,o),t.tag=1,t=Kp(null,t,e,o,s)):(t.tag=0,t=Cf(null,t,e,o,s));else{if(e!=null){var d=e.$$typeof;if(d===H){t.tag=11,t=Up(null,t,e,o,s);break e}else if(d===I){t.tag=14,t=Pp(null,t,e,o,s);break e}}throw t=le(e)||e,Error(r(306,t,""))}}return t;case 0:return Cf(e,t,t.type,t.pendingProps,s);case 1:return o=t.type,d=Wi(o,t.pendingProps),Kp(e,t,o,d,s);case 3:e:{if(Ie(t,t.stateNode.containerInfo),e===null)throw Error(r(387));o=t.pendingProps;var h=t.memoizedState;d=h.element,ve(e,t),oa(t,o,null,s);var S=t.memoizedState;if(o=S.cache,Es(t,It,o),o!==h.cache&&Oo(t,[It],s,!0),Ln(),o=S.element,h.isDehydrated)if(h={element:o,isDehydrated:!1,cache:S.cache},t.updateQueue.baseState=h,t.memoizedState=h,t.flags&256){t=Qp(e,t,o,s);break e}else if(o!==d){d=Un(Error(r(424)),t),Pi(d),t=Qp(e,t,o,s);break e}else for(e=t.stateNode.containerInfo,e.nodeType===9?e=e.body:e=e.nodeName==="HTML"?e.ownerDocument.body:e,Nt=Ga(e.firstChild),fn=t,it=!0,Ts=null,ra=!0,s=$(t,null,o,s),t.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling;else{if(el(),o===d){t=cl(e,t,s);break e}_n(e,t,o,s)}t=t.child}return t;case 26:return vu(e,t),e===null?(s=dv(t.type,null,t.pendingProps,null))?t.memoizedState=s:it||(s=t.type,e=t.pendingProps,o=_u(de.current).createElement(s),o[X]=t,o[je]=e,zn(o,s,e),Et(o),t.stateNode=o):t.memoizedState=dv(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Ke(t),e===null&&it&&(o=t.stateNode=ov(t.type,t.pendingProps,de.current),fn=t,ra=!0,d=Nt,ui(t.type)?(cm=d,Nt=Ga(o.firstChild)):Nt=d),_n(e,t,t.pendingProps.children,s),vu(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&it&&((d=o=Nt)&&(o=bb(o,t.type,t.pendingProps,ra),o!==null?(t.stateNode=o,fn=t,Nt=Ga(o.firstChild),ra=!1,d=!0):d=!1),d||Rs(t)),Ke(t),d=t.type,h=t.pendingProps,S=e!==null?e.memoizedProps:null,o=h.children,sm(d,h)?o=null:S!==null&&sm(d,S)&&(t.flags|=32),t.memoizedState!==null&&(d=nf(e,t,Ow,null,null,s),ic._currentValue=d),vu(e,t),_n(e,t,o,s),t.child;case 6:return e===null&&it&&((e=s=Nt)&&(s=Sb(s,t.pendingProps,ra),s!==null?(t.stateNode=s,fn=t,Nt=null,e=!0):e=!1),e||Rs(t)),null;case 13:return Xp(e,t,s);case 4:return Ie(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=L(t,null,o,s):_n(e,t,o,s),t.child;case 11:return Up(e,t,t.type,t.pendingProps,s);case 7:return _n(e,t,t.pendingProps,s),t.child;case 8:return _n(e,t,t.pendingProps.children,s),t.child;case 12:return _n(e,t,t.pendingProps.children,s),t.child;case 10:return o=t.pendingProps,Es(t,t.type,o.value),_n(e,t,o.children,s),t.child;case 9:return d=t.type._context,o=t.pendingProps.children,tl(t),d=mn(d),o=o(d),t.flags|=1,_n(e,t,o,s),t.child;case 14:return Pp(e,t,t.type,t.pendingProps,s);case 15:return qp(e,t,t.type,t.pendingProps,s);case 19:return Jp(e,t,s);case 31:return qw(e,t,s);case 22:return Gp(e,t,s,t.pendingProps);case 24:return tl(t),o=mn(It),e===null?(d=al(),d===null&&(d=Tt,h=Wl(),d.pooledCache=h,h.refCount++,h!==null&&(d.pooledCacheLanes|=s),d=h),t.memoizedState={parent:o,cache:d},pe(t),Es(t,It,d)):((e.lanes&s)!==0&&(ve(e,t),oa(t,null,null,s),Ln()),d=e.memoizedState,h=t.memoizedState,d.parent!==o?(d={parent:o,cache:o},t.memoizedState=d,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=d),Es(t,It,o)):(o=h.cache,Es(t,It,o),o!==d.cache&&Oo(t,[It],s,!0))),_n(e,t,t.pendingProps.children,s),t.child;case 29:throw t.pendingProps}throw Error(r(156,t.tag))}function ul(e){e.flags|=4}function Ef(e,t,s,o,d){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(d&335544128)===d)if(e.stateNode.complete)e.flags|=8192;else if(Mg())e.flags|=8192;else throw sl=Or,Ho}else e.flags&=-16777217}function tg(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!gv(t))if(Mg())e.flags|=8192;else throw sl=Or,Ho}function yu(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?Is():536870912,e.lanes|=t,Gr|=t)}function Vo(e,t){if(!it)switch(e.tailMode){case"hidden":t=e.tail;for(var s=null;t!==null;)t.alternate!==null&&(s=t),t=t.sibling;s===null?e.tail=null:s.sibling=null;break;case"collapsed":s=e.tail;for(var o=null;s!==null;)s.alternate!==null&&(o=s),s=s.sibling;o===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:o.sibling=null}}function Lt(e){var t=e.alternate!==null&&e.alternate.child===e.child,s=0,o=0;if(t)for(var d=e.child;d!==null;)s|=d.lanes|d.childLanes,o|=d.subtreeFlags&65011712,o|=d.flags&65011712,d.return=e,d=d.sibling;else for(d=e.child;d!==null;)s|=d.lanes|d.childLanes,o|=d.subtreeFlags,o|=d.flags,d.return=e,d=d.sibling;return e.subtreeFlags|=o,e.childLanes=s,t}function Vw(e,t,s){var o=t.pendingProps;switch(Do(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Lt(t),null;case 1:return Lt(t),null;case 3:return s=t.stateNode,o=null,e!==null&&(o=e.memoizedState.cache),t.memoizedState.cache!==o&&(t.flags|=2048),rs(It),re(),s.pendingContext&&(s.context=s.pendingContext,s.pendingContext=null),(e===null||e.child===null)&&(Vl(t)?ul(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,_o())),Lt(t),null;case 26:var d=t.type,h=t.memoizedState;return e===null?(ul(t),h!==null?(Lt(t),tg(t,h)):(Lt(t),Ef(t,d,null,o,s))):h?h!==e.memoizedState?(ul(t),Lt(t),tg(t,h)):(Lt(t),t.flags&=-16777217):(e=e.memoizedProps,e!==o&&ul(t),Lt(t),Ef(t,d,e,o,s)),null;case 27:if(De(t),s=de.current,d=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==o&&ul(t);else{if(!o){if(t.stateNode===null)throw Error(r(166));return Lt(t),null}e=ye.current,Vl(t)?Jc(t):(e=ov(d,o,s),t.stateNode=e,ul(t))}return Lt(t),null;case 5:if(De(t),d=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==o&&ul(t);else{if(!o){if(t.stateNode===null)throw Error(r(166));return Lt(t),null}if(h=ye.current,Vl(t))Jc(t);else{var S=_u(de.current);switch(h){case 1:h=S.createElementNS("http://www.w3.org/2000/svg",d);break;case 2:h=S.createElementNS("http://www.w3.org/1998/Math/MathML",d);break;default:switch(d){case"svg":h=S.createElementNS("http://www.w3.org/2000/svg",d);break;case"math":h=S.createElementNS("http://www.w3.org/1998/Math/MathML",d);break;case"script":h=S.createElement("div"),h.innerHTML="<script><\/script>",h=h.removeChild(h.firstChild);break;case"select":h=typeof o.is=="string"?S.createElement("select",{is:o.is}):S.createElement("select"),o.multiple?h.multiple=!0:o.size&&(h.size=o.size);break;default:h=typeof o.is=="string"?S.createElement(d,{is:o.is}):S.createElement(d)}}h[X]=t,h[je]=o;e:for(S=t.child;S!==null;){if(S.tag===5||S.tag===6)h.appendChild(S.stateNode);else if(S.tag!==4&&S.tag!==27&&S.child!==null){S.child.return=S,S=S.child;continue}if(S===t)break e;for(;S.sibling===null;){if(S.return===null||S.return===t)break e;S=S.return}S.sibling.return=S.return,S=S.sibling}t.stateNode=h;e:switch(zn(h,d,o),d){case"button":case"input":case"select":case"textarea":o=!!o.autoFocus;break e;case"img":o=!0;break e;default:o=!1}o&&ul(t)}}return Lt(t),Ef(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,s),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==o&&ul(t);else{if(typeof o!="string"&&t.stateNode===null)throw Error(r(166));if(e=de.current,Vl(t)){if(e=t.stateNode,s=t.memoizedProps,o=null,d=fn,d!==null)switch(d.tag){case 27:case 5:o=d.memoizedProps}e[X]=t,e=!!(e.nodeValue===s||o!==null&&o.suppressHydrationWarning===!0||Xg(e.nodeValue,s)),e||Rs(t,!0)}else e=_u(e).createTextNode(o),e[X]=t,t.stateNode=e}return Lt(t),null;case 31:if(s=t.memoizedState,e===null||e.memoizedState!==null){if(o=Vl(t),s!==null){if(e===null){if(!o)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[X]=t}else el(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Lt(t),e=!1}else s=_o(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=s),e=!0;if(!e)return t.flags&256?(Ca(t),t):(Ca(t),null);if((t.flags&128)!==0)throw Error(r(558))}return Lt(t),null;case 13:if(o=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(d=Vl(t),o!==null&&o.dehydrated!==null){if(e===null){if(!d)throw Error(r(318));if(d=t.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(r(317));d[X]=t}else el(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Lt(t),d=!1}else d=_o(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=d),d=!0;if(!d)return t.flags&256?(Ca(t),t):(Ca(t),null)}return Ca(t),(t.flags&128)!==0?(t.lanes=s,t):(s=o!==null,e=e!==null&&e.memoizedState!==null,s&&(o=t.child,d=null,o.alternate!==null&&o.alternate.memoizedState!==null&&o.alternate.memoizedState.cachePool!==null&&(d=o.alternate.memoizedState.cachePool.pool),h=null,o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(h=o.memoizedState.cachePool.pool),h!==d&&(o.flags|=2048)),s!==e&&s&&(t.child.flags|=8192),yu(t,t.updateQueue),Lt(t),null);case 4:return re(),e===null&&Jf(t.stateNode.containerInfo),Lt(t),null;case 10:return rs(t.type),Lt(t),null;case 19:if(D(Xt),o=t.memoizedState,o===null)return Lt(t),null;if(d=(t.flags&128)!==0,h=o.rendering,h===null)if(d)Vo(o,!1);else{if(Pt!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(h=iu(e),h!==null){for(t.flags|=128,Vo(o,!1),e=h.updateQueue,t.updateQueue=e,yu(t,e),t.subtreeFlags=0,e=s,s=t.child;s!==null;)To(s,e),s=s.sibling;return Z(Xt,Xt.current&1|2),it&&Ot(t,o.treeForkCount),t.child}e=e.sibling}o.tail!==null&&Ge()>ju&&(t.flags|=128,d=!0,Vo(o,!1),t.lanes=4194304)}else{if(!d)if(e=iu(h),e!==null){if(t.flags|=128,d=!0,e=e.updateQueue,t.updateQueue=e,yu(t,e),Vo(o,!0),o.tail===null&&o.tailMode==="hidden"&&!h.alternate&&!it)return Lt(t),null}else 2*Ge()-o.renderingStartTime>ju&&s!==536870912&&(t.flags|=128,d=!0,Vo(o,!1),t.lanes=4194304);o.isBackwards?(h.sibling=t.child,t.child=h):(e=o.last,e!==null?e.sibling=h:t.child=h,o.last=h)}return o.tail!==null?(e=o.tail,o.rendering=e,o.tail=e.sibling,o.renderingStartTime=Ge(),e.sibling=null,s=Xt.current,Z(Xt,d?s&1|2:s&1),it&&Ot(t,o.treeForkCount),e):(Lt(t),null);case 22:case 23:return Ca(t),Jd(),o=t.memoizedState!==null,e!==null?e.memoizedState!==null!==o&&(t.flags|=8192):o&&(t.flags|=8192),o?(s&536870912)!==0&&(t.flags&128)===0&&(Lt(t),t.subtreeFlags&6&&(t.flags|=8192)):Lt(t),s=t.updateQueue,s!==null&&yu(t,s.retryQueue),s=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(s=e.memoizedState.cachePool.pool),o=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),o!==s&&(t.flags|=2048),e!==null&&D(Pa),null;case 24:return s=null,e!==null&&(s=e.memoizedState.cache),t.memoizedState.cache!==s&&(t.flags|=2048),rs(It),Lt(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}function Yw(e,t){switch(Do(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return rs(It),re(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return De(t),null;case 31:if(t.memoizedState!==null){if(Ca(t),t.alternate===null)throw Error(r(340));el()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ca(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));el()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return D(Xt),null;case 4:return re(),null;case 10:return rs(t.type),null;case 22:case 23:return Ca(t),Jd(),e!==null&&D(Pa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return rs(It),null;case 25:return null;default:return null}}function ng(e,t){switch(Do(t),t.tag){case 3:rs(It),re();break;case 26:case 27:case 5:De(t);break;case 4:re();break;case 31:t.memoizedState!==null&&Ca(t);break;case 13:Ca(t);break;case 19:D(Xt);break;case 10:rs(t.type);break;case 22:case 23:Ca(t),Jd(),e!==null&&D(Pa);break;case 24:rs(It)}}function Yo(e,t){try{var s=t.updateQueue,o=s!==null?s.lastEffect:null;if(o!==null){var d=o.next;s=d;do{if((s.tag&e)===e){o=void 0;var h=s.create,S=s.inst;o=h(),S.destroy=o}s=s.next}while(s!==d)}}catch(M){wt(t,t.return,M)}}function ai(e,t,s){try{var o=t.updateQueue,d=o!==null?o.lastEffect:null;if(d!==null){var h=d.next;o=h;do{if((o.tag&e)===e){var S=o.inst,M=S.destroy;if(M!==void 0){S.destroy=void 0,d=t;var B=s,ee=M;try{ee()}catch(he){wt(d,B,he)}}}o=o.next}while(o!==h)}}catch(he){wt(t,t.return,he)}}function ag(e){var t=e.updateQueue;if(t!==null){var s=e.stateNode;try{ei(t,s)}catch(o){wt(e,e.return,o)}}}function sg(e,t,s){s.props=Wi(e.type,e.memoizedProps),s.state=e.memoizedState;try{s.componentWillUnmount()}catch(o){wt(e,t,o)}}function Wo(e,t){try{var s=e.ref;if(s!==null){switch(e.tag){case 26:case 27:case 5:var o=e.stateNode;break;case 30:o=e.stateNode;break;default:o=e.stateNode}typeof s=="function"?e.refCleanup=s(o):s.current=o}}catch(d){wt(e,t,d)}}function Ls(e,t){var s=e.ref,o=e.refCleanup;if(s!==null)if(typeof o=="function")try{o()}catch(d){wt(e,t,d)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof s=="function")try{s(null)}catch(d){wt(e,t,d)}else s.current=null}function lg(e){var t=e.type,s=e.memoizedProps,o=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":s.autoFocus&&o.focus();break e;case"img":s.src?o.src=s.src:s.srcSet&&(o.srcset=s.srcSet)}}catch(d){wt(e,e.return,d)}}function Df(e,t,s){try{var o=e.stateNode;pb(o,e.type,s,t),o[je]=t}catch(d){wt(e,e.return,d)}}function ig(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&ui(e.type)||e.tag===4}function Lf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||ig(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&ui(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function _f(e,t,s){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?(s.nodeType===9?s.body:s.nodeName==="HTML"?s.ownerDocument.body:s).insertBefore(e,t):(t=s.nodeType===9?s.body:s.nodeName==="HTML"?s.ownerDocument.body:s,t.appendChild(e),s=s._reactRootContainer,s!=null||t.onclick!==null||(t.onclick=Xa));else if(o!==4&&(o===27&&ui(e.type)&&(s=e.stateNode,t=null),e=e.child,e!==null))for(_f(e,t,s),e=e.sibling;e!==null;)_f(e,t,s),e=e.sibling}function wu(e,t,s){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?s.insertBefore(e,t):s.appendChild(e);else if(o!==4&&(o===27&&ui(e.type)&&(s=e.stateNode),e=e.child,e!==null))for(wu(e,t,s),e=e.sibling;e!==null;)wu(e,t,s),e=e.sibling}function rg(e){var t=e.stateNode,s=e.memoizedProps;try{for(var o=e.type,d=t.attributes;d.length;)t.removeAttributeNode(d[0]);zn(t,o,s),t[X]=e,t[je]=s}catch(h){wt(e,e.return,h)}}var dl=!1,rn=!1,zf=!1,og=typeof WeakSet=="function"?WeakSet:Set,bn=null;function Ww(e,t){if(e=e.containerInfo,nm=$u,e=Kc(e),$l(e)){if("selectionStart"in e)var s={start:e.selectionStart,end:e.selectionEnd};else e:{s=(s=e.ownerDocument)&&s.defaultView||window;var o=s.getSelection&&s.getSelection();if(o&&o.rangeCount!==0){s=o.anchorNode;var d=o.anchorOffset,h=o.focusNode;o=o.focusOffset;try{s.nodeType,h.nodeType}catch{s=null;break e}var S=0,M=-1,B=-1,ee=0,he=0,we=e,se=null;t:for(;;){for(var ce;we!==s||d!==0&&we.nodeType!==3||(M=S+d),we!==h||o!==0&&we.nodeType!==3||(B=S+o),we.nodeType===3&&(S+=we.nodeValue.length),(ce=we.firstChild)!==null;)se=we,we=ce;for(;;){if(we===e)break t;if(se===s&&++ee===d&&(M=S),se===h&&++he===o&&(B=S),(ce=we.nextSibling)!==null)break;we=se,se=we.parentNode}we=ce}s=M===-1||B===-1?null:{start:M,end:B}}else s=null}s=s||{start:0,end:0}}else s=null;for(am={focusedElem:e,selectionRange:s},$u=!1,bn=t;bn!==null;)if(t=bn,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,bn=e;else for(;bn!==null;){switch(t=bn,h=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(s=0;s<e.length;s++)d=e[s],d.ref.impl=d.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&h!==null){e=void 0,s=t,d=h.memoizedProps,h=h.memoizedState,o=s.stateNode;try{var Oe=Wi(s.type,d);e=o.getSnapshotBeforeUpdate(Oe,h),o.__reactInternalSnapshotBeforeUpdate=e}catch(qe){wt(s,s.return,qe)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,s=e.nodeType,s===9)im(e);else if(s===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":im(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(r(163))}if(e=t.sibling,e!==null){e.return=t.return,bn=e;break}bn=t.return}}function cg(e,t,s){var o=s.flags;switch(s.tag){case 0:case 11:case 15:ml(e,s),o&4&&Yo(5,s);break;case 1:if(ml(e,s),o&4)if(e=s.stateNode,t===null)try{e.componentDidMount()}catch(S){wt(s,s.return,S)}else{var d=Wi(s.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(d,t,e.__reactInternalSnapshotBeforeUpdate)}catch(S){wt(s,s.return,S)}}o&64&&ag(s),o&512&&Wo(s,s.return);break;case 3:if(ml(e,s),o&64&&(e=s.updateQueue,e!==null)){if(t=null,s.child!==null)switch(s.child.tag){case 27:case 5:t=s.child.stateNode;break;case 1:t=s.child.stateNode}try{ei(e,t)}catch(S){wt(s,s.return,S)}}break;case 27:t===null&&o&4&&rg(s);case 26:case 5:ml(e,s),t===null&&o&4&&lg(s),o&512&&Wo(s,s.return);break;case 12:ml(e,s);break;case 31:ml(e,s),o&4&&fg(e,s);break;case 13:ml(e,s),o&4&&mg(e,s),o&64&&(e=s.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(s=ab.bind(null,s),Cb(e,s))));break;case 22:if(o=s.memoizedState!==null||dl,!o){t=t!==null&&t.memoizedState!==null||rn,d=dl;var h=rn;dl=o,(rn=t)&&!h?hl(e,s,(s.subtreeFlags&8772)!==0):ml(e,s),dl=d,rn=h}break;case 30:break;default:ml(e,s)}}function ug(e){var t=e.alternate;t!==null&&(e.alternate=null,ug(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&nn(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var zt=null,ca=!1;function fl(e,t,s){for(s=s.child;s!==null;)dg(e,t,s),s=s.sibling}function dg(e,t,s){if(mt&&typeof mt.onCommitFiberUnmount=="function")try{mt.onCommitFiberUnmount(gs,s)}catch{}switch(s.tag){case 26:rn||Ls(s,t),fl(e,t,s),s.memoizedState?s.memoizedState.count--:s.stateNode&&(s=s.stateNode,s.parentNode.removeChild(s));break;case 27:rn||Ls(s,t);var o=zt,d=ca;ui(s.type)&&(zt=s.stateNode,ca=!1),fl(e,t,s),ac(s.stateNode),zt=o,ca=d;break;case 5:rn||Ls(s,t);case 6:if(o=zt,d=ca,zt=null,fl(e,t,s),zt=o,ca=d,zt!==null)if(ca)try{(zt.nodeType===9?zt.body:zt.nodeName==="HTML"?zt.ownerDocument.body:zt).removeChild(s.stateNode)}catch(h){wt(s,t,h)}else try{zt.removeChild(s.stateNode)}catch(h){wt(s,t,h)}break;case 18:zt!==null&&(ca?(e=zt,av(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,s.stateNode),Jr(e)):av(zt,s.stateNode));break;case 4:o=zt,d=ca,zt=s.stateNode.containerInfo,ca=!0,fl(e,t,s),zt=o,ca=d;break;case 0:case 11:case 14:case 15:ai(2,s,t),rn||ai(4,s,t),fl(e,t,s);break;case 1:rn||(Ls(s,t),o=s.stateNode,typeof o.componentWillUnmount=="function"&&sg(s,t,o)),fl(e,t,s);break;case 21:fl(e,t,s);break;case 22:rn=(o=rn)||s.memoizedState!==null,fl(e,t,s),rn=o;break;default:fl(e,t,s)}}function fg(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Jr(e)}catch(s){wt(t,t.return,s)}}}function mg(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Jr(e)}catch(s){wt(t,t.return,s)}}function Kw(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new og),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new og),t;default:throw Error(r(435,e.tag))}}function bu(e,t){var s=Kw(e);t.forEach(function(o){if(!s.has(o)){s.add(o);var d=sb.bind(null,e,o);o.then(d,d)}})}function ua(e,t){var s=t.deletions;if(s!==null)for(var o=0;o<s.length;o++){var d=s[o],h=e,S=t,M=S;e:for(;M!==null;){switch(M.tag){case 27:if(ui(M.type)){zt=M.stateNode,ca=!1;break e}break;case 5:zt=M.stateNode,ca=!1;break e;case 3:case 4:zt=M.stateNode.containerInfo,ca=!0;break e}M=M.return}if(zt===null)throw Error(r(160));dg(h,S,d),zt=null,ca=!1,h=d.alternate,h!==null&&(h.return=null),d.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)hg(t,e),t=t.sibling}var us=null;function hg(e,t){var s=e.alternate,o=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:ua(t,e),da(e),o&4&&(ai(3,e,e.return),Yo(3,e),ai(5,e,e.return));break;case 1:ua(t,e),da(e),o&512&&(rn||s===null||Ls(s,s.return)),o&64&&dl&&(e=e.updateQueue,e!==null&&(o=e.callbacks,o!==null&&(s=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=s===null?o:s.concat(o))));break;case 26:var d=us;if(ua(t,e),da(e),o&512&&(rn||s===null||Ls(s,s.return)),o&4){var h=s!==null?s.memoizedState:null;if(o=e.memoizedState,s===null)if(o===null)if(e.stateNode===null){e:{o=e.type,s=e.memoizedProps,d=d.ownerDocument||d;t:switch(o){case"title":h=d.getElementsByTagName("title")[0],(!h||h[dt]||h[X]||h.namespaceURI==="http://www.w3.org/2000/svg"||h.hasAttribute("itemprop"))&&(h=d.createElement(o),d.head.insertBefore(h,d.querySelector("head > title"))),zn(h,o,s),h[X]=e,Et(h),o=h;break e;case"link":var S=hv("link","href",d).get(o+(s.href||""));if(S){for(var M=0;M<S.length;M++)if(h=S[M],h.getAttribute("href")===(s.href==null||s.href===""?null:s.href)&&h.getAttribute("rel")===(s.rel==null?null:s.rel)&&h.getAttribute("title")===(s.title==null?null:s.title)&&h.getAttribute("crossorigin")===(s.crossOrigin==null?null:s.crossOrigin)){S.splice(M,1);break t}}h=d.createElement(o),zn(h,o,s),d.head.appendChild(h);break;case"meta":if(S=hv("meta","content",d).get(o+(s.content||""))){for(M=0;M<S.length;M++)if(h=S[M],h.getAttribute("content")===(s.content==null?null:""+s.content)&&h.getAttribute("name")===(s.name==null?null:s.name)&&h.getAttribute("property")===(s.property==null?null:s.property)&&h.getAttribute("http-equiv")===(s.httpEquiv==null?null:s.httpEquiv)&&h.getAttribute("charset")===(s.charSet==null?null:s.charSet)){S.splice(M,1);break t}}h=d.createElement(o),zn(h,o,s),d.head.appendChild(h);break;default:throw Error(r(468,o))}h[X]=e,Et(h),o=h}e.stateNode=o}else pv(d,e.type,e.stateNode);else e.stateNode=mv(d,o,e.memoizedProps);else h!==o?(h===null?s.stateNode!==null&&(s=s.stateNode,s.parentNode.removeChild(s)):h.count--,o===null?pv(d,e.type,e.stateNode):mv(d,o,e.memoizedProps)):o===null&&e.stateNode!==null&&Df(e,e.memoizedProps,s.memoizedProps)}break;case 27:ua(t,e),da(e),o&512&&(rn||s===null||Ls(s,s.return)),s!==null&&o&4&&Df(e,e.memoizedProps,s.memoizedProps);break;case 5:if(ua(t,e),da(e),o&512&&(rn||s===null||Ls(s,s.return)),e.flags&32){d=e.stateNode;try{Cl(d,"")}catch(Oe){wt(e,e.return,Oe)}}o&4&&e.stateNode!=null&&(d=e.memoizedProps,Df(e,d,s!==null?s.memoizedProps:d)),o&1024&&(zf=!0);break;case 6:if(ua(t,e),da(e),o&4){if(e.stateNode===null)throw Error(r(162));o=e.memoizedProps,s=e.stateNode;try{s.nodeValue=o}catch(Oe){wt(e,e.return,Oe)}}break;case 3:if(Iu=null,d=us,us=zu(t.containerInfo),ua(t,e),us=d,da(e),o&4&&s!==null&&s.memoizedState.isDehydrated)try{Jr(t.containerInfo)}catch(Oe){wt(e,e.return,Oe)}zf&&(zf=!1,pg(e));break;case 4:o=us,us=zu(e.stateNode.containerInfo),ua(t,e),da(e),us=o;break;case 12:ua(t,e),da(e);break;case 31:ua(t,e),da(e),o&4&&(o=e.updateQueue,o!==null&&(e.updateQueue=null,bu(e,o)));break;case 13:ua(t,e),da(e),e.child.flags&8192&&e.memoizedState!==null!=(s!==null&&s.memoizedState!==null)&&(Cu=Ge()),o&4&&(o=e.updateQueue,o!==null&&(e.updateQueue=null,bu(e,o)));break;case 22:d=e.memoizedState!==null;var B=s!==null&&s.memoizedState!==null,ee=dl,he=rn;if(dl=ee||d,rn=he||B,ua(t,e),rn=he,dl=ee,da(e),o&8192)e:for(t=e.stateNode,t._visibility=d?t._visibility&-2:t._visibility|1,d&&(s===null||B||dl||rn||Ki(e)),s=null,t=e;;){if(t.tag===5||t.tag===26){if(s===null){B=s=t;try{if(h=B.stateNode,d)S=h.style,typeof S.setProperty=="function"?S.setProperty("display","none","important"):S.display="none";else{M=B.stateNode;var we=B.memoizedProps.style,se=we!=null&&we.hasOwnProperty("display")?we.display:null;M.style.display=se==null||typeof se=="boolean"?"":(""+se).trim()}}catch(Oe){wt(B,B.return,Oe)}}}else if(t.tag===6){if(s===null){B=t;try{B.stateNode.nodeValue=d?"":B.memoizedProps}catch(Oe){wt(B,B.return,Oe)}}}else if(t.tag===18){if(s===null){B=t;try{var ce=B.stateNode;d?sv(ce,!0):sv(B.stateNode,!1)}catch(Oe){wt(B,B.return,Oe)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;s===t&&(s=null),t=t.return}s===t&&(s=null),t.sibling.return=t.return,t=t.sibling}o&4&&(o=e.updateQueue,o!==null&&(s=o.retryQueue,s!==null&&(o.retryQueue=null,bu(e,s))));break;case 19:ua(t,e),da(e),o&4&&(o=e.updateQueue,o!==null&&(e.updateQueue=null,bu(e,o)));break;case 30:break;case 21:break;default:ua(t,e),da(e)}}function da(e){var t=e.flags;if(t&2){try{for(var s,o=e.return;o!==null;){if(ig(o)){s=o;break}o=o.return}if(s==null)throw Error(r(160));switch(s.tag){case 27:var d=s.stateNode,h=Lf(e);wu(e,h,d);break;case 5:var S=s.stateNode;s.flags&32&&(Cl(S,""),s.flags&=-33);var M=Lf(e);wu(e,M,S);break;case 3:case 4:var B=s.stateNode.containerInfo,ee=Lf(e);_f(e,ee,B);break;default:throw Error(r(161))}}catch(he){wt(e,e.return,he)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function pg(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;pg(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function ml(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)cg(e,t.alternate,t),t=t.sibling}function Ki(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ai(4,t,t.return),Ki(t);break;case 1:Ls(t,t.return);var s=t.stateNode;typeof s.componentWillUnmount=="function"&&sg(t,t.return,s),Ki(t);break;case 27:ac(t.stateNode);case 26:case 5:Ls(t,t.return),Ki(t);break;case 22:t.memoizedState===null&&Ki(t);break;case 30:Ki(t);break;default:Ki(t)}e=e.sibling}}function hl(e,t,s){for(s=s&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var o=t.alternate,d=e,h=t,S=h.flags;switch(h.tag){case 0:case 11:case 15:hl(d,h,s),Yo(4,h);break;case 1:if(hl(d,h,s),o=h,d=o.stateNode,typeof d.componentDidMount=="function")try{d.componentDidMount()}catch(ee){wt(o,o.return,ee)}if(o=h,d=o.updateQueue,d!==null){var M=o.stateNode;try{var B=d.shared.hiddenCallbacks;if(B!==null)for(d.shared.hiddenCallbacks=null,d=0;d<B.length;d++)Ds(B[d],M)}catch(ee){wt(o,o.return,ee)}}s&&S&64&&ag(h),Wo(h,h.return);break;case 27:rg(h);case 26:case 5:hl(d,h,s),s&&o===null&&S&4&&lg(h),Wo(h,h.return);break;case 12:hl(d,h,s);break;case 31:hl(d,h,s),s&&S&4&&fg(d,h);break;case 13:hl(d,h,s),s&&S&4&&mg(d,h);break;case 22:h.memoizedState===null&&hl(d,h,s),Wo(h,h.return);break;case 30:break;default:hl(d,h,s)}t=t.sibling}}function Of(e,t){var s=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(s=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==s&&(e!=null&&e.refCount++,s!=null&&Gi(s))}function If(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Gi(e))}function ds(e,t,s,o){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)gg(e,t,s,o),t=t.sibling}function gg(e,t,s,o){var d=t.flags;switch(t.tag){case 0:case 11:case 15:ds(e,t,s,o),d&2048&&Yo(9,t);break;case 1:ds(e,t,s,o);break;case 3:ds(e,t,s,o),d&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Gi(e)));break;case 12:if(d&2048){ds(e,t,s,o),e=t.stateNode;try{var h=t.memoizedProps,S=h.id,M=h.onPostCommit;typeof M=="function"&&M(S,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(B){wt(t,t.return,B)}}else ds(e,t,s,o);break;case 31:ds(e,t,s,o);break;case 13:ds(e,t,s,o);break;case 23:break;case 22:h=t.stateNode,S=t.alternate,t.memoizedState!==null?h._visibility&2?ds(e,t,s,o):Ko(e,t):h._visibility&2?ds(e,t,s,o):(h._visibility|=2,Ur(e,t,s,o,(t.subtreeFlags&10256)!==0||!1)),d&2048&&Of(S,t);break;case 24:ds(e,t,s,o),d&2048&&If(t.alternate,t);break;default:ds(e,t,s,o)}}function Ur(e,t,s,o,d){for(d=d&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var h=e,S=t,M=s,B=o,ee=S.flags;switch(S.tag){case 0:case 11:case 15:Ur(h,S,M,B,d),Yo(8,S);break;case 23:break;case 22:var he=S.stateNode;S.memoizedState!==null?he._visibility&2?Ur(h,S,M,B,d):Ko(h,S):(he._visibility|=2,Ur(h,S,M,B,d)),d&&ee&2048&&Of(S.alternate,S);break;case 24:Ur(h,S,M,B,d),d&&ee&2048&&If(S.alternate,S);break;default:Ur(h,S,M,B,d)}t=t.sibling}}function Ko(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var s=e,o=t,d=o.flags;switch(o.tag){case 22:Ko(s,o),d&2048&&Of(o.alternate,o);break;case 24:Ko(s,o),d&2048&&If(o.alternate,o);break;default:Ko(s,o)}t=t.sibling}}var Qo=8192;function Pr(e,t,s){if(e.subtreeFlags&Qo)for(e=e.child;e!==null;)vg(e,t,s),e=e.sibling}function vg(e,t,s){switch(e.tag){case 26:Pr(e,t,s),e.flags&Qo&&e.memoizedState!==null&&zb(s,us,e.memoizedState,e.memoizedProps);break;case 5:Pr(e,t,s);break;case 3:case 4:var o=us;us=zu(e.stateNode.containerInfo),Pr(e,t,s),us=o;break;case 22:e.memoizedState===null&&(o=e.alternate,o!==null&&o.memoizedState!==null?(o=Qo,Qo=16777216,Pr(e,t,s),Qo=o):Pr(e,t,s));break;default:Pr(e,t,s)}}function xg(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function Xo(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var s=0;s<t.length;s++){var o=t[s];bn=o,wg(o,e)}xg(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)yg(e),e=e.sibling}function yg(e){switch(e.tag){case 0:case 11:case 15:Xo(e),e.flags&2048&&ai(9,e,e.return);break;case 3:Xo(e);break;case 12:Xo(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Su(e)):Xo(e);break;default:Xo(e)}}function Su(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var s=0;s<t.length;s++){var o=t[s];bn=o,wg(o,e)}xg(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:ai(8,t,t.return),Su(t);break;case 22:s=t.stateNode,s._visibility&2&&(s._visibility&=-3,Su(t));break;default:Su(t)}e=e.sibling}}function wg(e,t){for(;bn!==null;){var s=bn;switch(s.tag){case 0:case 11:case 15:ai(8,s,t);break;case 23:case 22:if(s.memoizedState!==null&&s.memoizedState.cachePool!==null){var o=s.memoizedState.cachePool.pool;o!=null&&o.refCount++}break;case 24:Gi(s.memoizedState.cache)}if(o=s.child,o!==null)o.return=s,bn=o;else e:for(s=e;bn!==null;){o=bn;var d=o.sibling,h=o.return;if(ug(o),o===s){bn=null;break e}if(d!==null){d.return=h,bn=d;break e}bn=h}}}var Qw={getCacheForType:function(e){var t=mn(It),s=t.data.get(e);return s===void 0&&(s=e(),t.data.set(e,s)),s},cacheSignal:function(){return mn(It).controller.signal}},Xw=typeof WeakMap=="function"?WeakMap:Map,vt=0,Tt=null,rt=null,ct=0,yt=0,ja=null,si=!1,qr=!1,Bf=!1,pl=0,Pt=0,li=0,Qi=0,Ff=0,ka=0,Gr=0,Zo=null,fa=null,Hf=!1,Cu=0,bg=0,ju=1/0,ku=null,ii=null,hn=0,ri=null,Vr=null,gl=0,$f=0,Uf=null,Sg=null,Jo=0,Pf=null;function Aa(){return(vt&2)!==0&&ct!==0?ct&-ct:z.T!==null?Kf():tn()}function Cg(){if(ka===0)if((ct&536870912)===0||it){var e=Ra;Ra<<=1,(Ra&3932160)===0&&(Ra=262144),ka=e}else ka=536870912;return e=Sa.current,e!==null&&(e.flags|=32),ka}function ma(e,t,s){(e===Tt&&(yt===2||yt===9)||e.cancelPendingCommit!==null)&&(Yr(e,0),oi(e,ct,ka,!1)),xs(e,s),((vt&2)===0||e!==Tt)&&(e===Tt&&((vt&2)===0&&(Qi|=s),Pt===4&&oi(e,ct,ka,!1)),_s(e))}function jg(e,t,s){if((vt&6)!==0)throw Error(r(327));var o=!s&&(t&127)===0&&(t&e.expiredLanes)===0||Ea(e,t),d=o?eb(e,t):Gf(e,t,!0),h=o;do{if(d===0){qr&&!o&&oi(e,t,0,!1);break}else{if(s=e.current.alternate,h&&!Zw(s)){d=Gf(e,t,!1),h=!1;continue}if(d===2){if(h=t,e.errorRecoveryDisabledLanes&h)var S=0;else S=e.pendingLanes&-536870913,S=S!==0?S:S&536870912?536870912:0;if(S!==0){t=S;e:{var M=e;d=Zo;var B=M.current.memoizedState.isDehydrated;if(B&&(Yr(M,S).flags|=256),S=Gf(M,S,!1),S!==2){if(Bf&&!B){M.errorRecoveryDisabledLanes|=h,Qi|=h,d=4;break e}h=fa,fa=d,h!==null&&(fa===null?fa=h:fa.push.apply(fa,h))}d=S}if(h=!1,d!==2)continue}}if(d===1){Yr(e,0),oi(e,t,0,!0);break}e:{switch(o=e,h=d,h){case 0:case 1:throw Error(r(345));case 4:if((t&4194048)!==t)break;case 6:oi(o,t,ka,!si);break e;case 2:fa=null;break;case 3:case 5:break;default:throw Error(r(329))}if((t&62914560)===t&&(d=Cu+300-Ge(),10<d)){if(oi(o,t,ka,!si),ya(o,0,!0)!==0)break e;gl=t,o.timeoutHandle=tv(kg.bind(null,o,s,fa,ku,Hf,t,ka,Qi,Gr,si,h,"Throttled",-0,0),d);break e}kg(o,s,fa,ku,Hf,t,ka,Qi,Gr,si,h,null,-0,0)}}break}while(!0);_s(e)}function kg(e,t,s,o,d,h,S,M,B,ee,he,we,se,ce){if(e.timeoutHandle=-1,we=t.subtreeFlags,we&8192||(we&16785408)===16785408){we={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Xa},vg(t,h,we);var Oe=(h&62914560)===h?Cu-Ge():(h&4194048)===h?bg-Ge():0;if(Oe=Ob(we,Oe),Oe!==null){gl=h,e.cancelPendingCommit=Oe(Lg.bind(null,e,t,h,s,o,d,S,M,B,he,we,null,se,ce)),oi(e,h,S,!ee);return}}Lg(e,t,h,s,o,d,S,M,B)}function Zw(e){for(var t=e;;){var s=t.tag;if((s===0||s===11||s===15)&&t.flags&16384&&(s=t.updateQueue,s!==null&&(s=s.stores,s!==null)))for(var o=0;o<s.length;o++){var d=s[o],h=d.getSnapshot;d=d.value;try{if(!Zn(h(),d))return!1}catch{return!1}}if(s=t.child,t.subtreeFlags&16384&&s!==null)s.return=t,t=s;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function oi(e,t,s,o){t&=~Ff,t&=~Qi,e.suspendedLanes|=t,e.pingedLanes&=~t,o&&(e.warmLanes|=t),o=e.expirationTimes;for(var d=t;0<d;){var h=31-Me(d),S=1<<h;o[h]=-1,d&=~S}s!==0&&hr(e,s,t)}function Au(){return(vt&6)===0?(ec(0),!1):!0}function qf(){if(rt!==null){if(yt===0)var e=rt.return;else e=rt,is=ls=null,lf(e),Zl=null,il=0,e=rt;for(;e!==null;)ng(e.alternate,e),e=e.return;rt=null}}function Yr(e,t){var s=e.timeoutHandle;s!==-1&&(e.timeoutHandle=-1,xb(s)),s=e.cancelPendingCommit,s!==null&&(e.cancelPendingCommit=null,s()),gl=0,qf(),Tt=e,rt=s=Ha(e.current,null),ct=t,yt=0,ja=null,si=!1,qr=Ea(e,t),Bf=!1,Gr=ka=Ff=Qi=li=Pt=0,fa=Zo=null,Hf=!1,(t&8)!==0&&(t|=t&32);var o=e.entangledLanes;if(o!==0)for(e=e.entanglements,o&=t;0<o;){var d=31-Me(o),h=1<<d;t|=e[d],o&=~h}return pl=t,Zs(),s}function Ag(e,t){et=null,z.H=qo,t===Xl||t===zr?(t=lu(),yt=3):t===Ho?(t=lu(),yt=4):yt=t===Sf?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,ja=t,rt===null&&(Pt=1,pu(e,Un(t,e.current)))}function Mg(){var e=Sa.current;return e===null?!0:(ct&4194048)===ct?qa===null:(ct&62914560)===ct||(ct&536870912)!==0?e===qa:!1}function Ng(){var e=z.H;return z.H=qo,e===null?qo:e}function Tg(){var e=z.A;return z.A=Qw,e}function Mu(){Pt=4,si||(ct&4194048)!==ct&&Sa.current!==null||(qr=!0),(li&134217727)===0&&(Qi&134217727)===0||Tt===null||oi(Tt,ct,ka,!1)}function Gf(e,t,s){var o=vt;vt|=2;var d=Ng(),h=Tg();(Tt!==e||ct!==t)&&(ku=null,Yr(e,t)),t=!1;var S=Pt;e:do try{if(yt!==0&&rt!==null){var M=rt,B=ja;switch(yt){case 8:qf(),S=6;break e;case 3:case 2:case 9:case 6:Sa.current===null&&(t=!0);var ee=yt;if(yt=0,ja=null,Wr(e,M,B,ee),s&&qr){S=0;break e}break;default:ee=yt,yt=0,ja=null,Wr(e,M,B,ee)}}Jw(),S=Pt;break}catch(he){Ag(e,he)}while(!0);return t&&e.shellSuspendCounter++,is=ls=null,vt=o,z.H=d,z.A=h,rt===null&&(Tt=null,ct=0,Zs()),S}function Jw(){for(;rt!==null;)Rg(rt)}function eb(e,t){var s=vt;vt|=2;var o=Ng(),d=Tg();Tt!==e||ct!==t?(ku=null,ju=Ge()+500,Yr(e,t)):qr=Ea(e,t);e:do try{if(yt!==0&&rt!==null){t=rt;var h=ja;t:switch(yt){case 1:yt=0,ja=null,Wr(e,t,h,1);break;case 2:case 9:if(au(h)){yt=0,ja=null,Eg(t);break}t=function(){yt!==2&&yt!==9||Tt!==e||(yt=7),_s(e)},h.then(t,t);break e;case 3:yt=7;break e;case 4:yt=5;break e;case 7:au(h)?(yt=0,ja=null,Eg(t)):(yt=0,ja=null,Wr(e,t,h,7));break;case 5:var S=null;switch(rt.tag){case 26:S=rt.memoizedState;case 5:case 27:var M=rt;if(S?gv(S):M.stateNode.complete){yt=0,ja=null;var B=M.sibling;if(B!==null)rt=B;else{var ee=M.return;ee!==null?(rt=ee,Nu(ee)):rt=null}break t}}yt=0,ja=null,Wr(e,t,h,5);break;case 6:yt=0,ja=null,Wr(e,t,h,6);break;case 8:qf(),Pt=6;break e;default:throw Error(r(462))}}tb();break}catch(he){Ag(e,he)}while(!0);return is=ls=null,z.H=o,z.A=d,vt=s,rt!==null?0:(Tt=null,ct=0,Zs(),Pt)}function tb(){for(;rt!==null&&!He();)Rg(rt)}function Rg(e){var t=eg(e.alternate,e,pl);e.memoizedProps=e.pendingProps,t===null?Nu(e):rt=t}function Eg(e){var t=e,s=t.alternate;switch(t.tag){case 15:case 0:t=Wp(s,t,t.pendingProps,t.type,void 0,ct);break;case 11:t=Wp(s,t,t.pendingProps,t.type.render,t.ref,ct);break;case 5:lf(t);default:ng(s,t),t=rt=To(t,pl),t=eg(s,t,pl)}e.memoizedProps=e.pendingProps,t===null?Nu(e):rt=t}function Wr(e,t,s,o){is=ls=null,lf(t),Zl=null,il=0;var d=t.return;try{if(Pw(e,d,t,s,ct)){Pt=1,pu(e,Un(s,e.current)),rt=null;return}}catch(h){if(d!==null)throw rt=d,h;Pt=1,pu(e,Un(s,e.current)),rt=null;return}t.flags&32768?(it||o===1?e=!0:qr||(ct&536870912)!==0?e=!1:(si=e=!0,(o===2||o===9||o===3||o===6)&&(o=Sa.current,o!==null&&o.tag===13&&(o.flags|=16384))),Dg(t,e)):Nu(t)}function Nu(e){var t=e;do{if((t.flags&32768)!==0){Dg(t,si);return}e=t.return;var s=Vw(t.alternate,t,pl);if(s!==null){rt=s;return}if(t=t.sibling,t!==null){rt=t;return}rt=t=e}while(t!==null);Pt===0&&(Pt=5)}function Dg(e,t){do{var s=Yw(e.alternate,e);if(s!==null){s.flags&=32767,rt=s;return}if(s=e.return,s!==null&&(s.flags|=32768,s.subtreeFlags=0,s.deletions=null),!t&&(e=e.sibling,e!==null)){rt=e;return}rt=e=s}while(e!==null);Pt=6,rt=null}function Lg(e,t,s,o,d,h,S,M,B){e.cancelPendingCommit=null;do Tu();while(hn!==0);if((vt&6)!==0)throw Error(r(327));if(t!==null){if(t===e.current)throw Error(r(177));if(h=t.lanes|t.childLanes,h|=Mo,mr(e,s,h,S,M,B),e===Tt&&(rt=Tt=null,ct=0),Vr=t,ri=e,gl=s,$f=h,Uf=d,Sg=o,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,lb(Kn,function(){return Bg(),null})):(e.callbackNode=null,e.callbackPriority=0),o=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||o){o=z.T,z.T=null,d=K.p,K.p=2,S=vt,vt|=4;try{Ww(e,t,s)}finally{vt=S,K.p=d,z.T=o}}hn=1,_g(),zg(),Og()}}function _g(){if(hn===1){hn=0;var e=ri,t=Vr,s=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||s){s=z.T,z.T=null;var o=K.p;K.p=2;var d=vt;vt|=4;try{hg(t,e);var h=am,S=Kc(e.containerInfo),M=h.focusedElem,B=h.selectionRange;if(S!==M&&M&&M.ownerDocument&&Hl(M.ownerDocument.documentElement,M)){if(B!==null&&$l(M)){var ee=B.start,he=B.end;if(he===void 0&&(he=ee),"selectionStart"in M)M.selectionStart=ee,M.selectionEnd=Math.min(he,M.value.length);else{var we=M.ownerDocument||document,se=we&&we.defaultView||window;if(se.getSelection){var ce=se.getSelection(),Oe=M.textContent.length,qe=Math.min(B.start,Oe),kt=B.end===void 0?qe:Math.min(B.end,Oe);!ce.extend&&qe>kt&&(S=kt,kt=qe,qe=S);var W=Mr(M,qe),U=Mr(M,kt);if(W&&U&&(ce.rangeCount!==1||ce.anchorNode!==W.node||ce.anchorOffset!==W.offset||ce.focusNode!==U.node||ce.focusOffset!==U.offset)){var J=we.createRange();J.setStart(W.node,W.offset),ce.removeAllRanges(),qe>kt?(ce.addRange(J),ce.extend(U.node,U.offset)):(J.setEnd(U.node,U.offset),ce.addRange(J))}}}}for(we=[],ce=M;ce=ce.parentNode;)ce.nodeType===1&&we.push({element:ce,left:ce.scrollLeft,top:ce.scrollTop});for(typeof M.focus=="function"&&M.focus(),M=0;M<we.length;M++){var xe=we[M];xe.element.scrollLeft=xe.left,xe.element.scrollTop=xe.top}}$u=!!nm,am=nm=null}finally{vt=d,K.p=o,z.T=s}}e.current=t,hn=2}}function zg(){if(hn===2){hn=0;var e=ri,t=Vr,s=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||s){s=z.T,z.T=null;var o=K.p;K.p=2;var d=vt;vt|=4;try{cg(e,t.alternate,t)}finally{vt=d,K.p=o,z.T=s}}hn=3}}function Og(){if(hn===4||hn===3){hn=0,_e();var e=ri,t=Vr,s=gl,o=Sg;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?hn=5:(hn=0,Vr=ri=null,Ig(e,e.pendingLanes));var d=e.pendingLanes;if(d===0&&(ii=null),sa(s),t=t.stateNode,mt&&typeof mt.onCommitFiberRoot=="function")try{mt.onCommitFiberRoot(gs,t,void 0,(t.current.flags&128)===128)}catch{}if(o!==null){t=z.T,d=K.p,K.p=2,z.T=null;try{for(var h=e.onRecoverableError,S=0;S<o.length;S++){var M=o[S];h(M.value,{componentStack:M.stack})}}finally{z.T=t,K.p=d}}(gl&3)!==0&&Tu(),_s(e),d=e.pendingLanes,(s&261930)!==0&&(d&42)!==0?e===Pf?Jo++:(Jo=0,Pf=e):Jo=0,ec(0)}}function Ig(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Gi(t)))}function Tu(){return _g(),zg(),Og(),Bg()}function Bg(){if(hn!==5)return!1;var e=ri,t=$f;$f=0;var s=sa(gl),o=z.T,d=K.p;try{K.p=32>s?32:s,z.T=null,s=Uf,Uf=null;var h=ri,S=gl;if(hn=0,Vr=ri=null,gl=0,(vt&6)!==0)throw Error(r(331));var M=vt;if(vt|=4,yg(h.current),gg(h,h.current,S,s),vt=M,ec(0,!1),mt&&typeof mt.onPostCommitFiberRoot=="function")try{mt.onPostCommitFiberRoot(gs,h)}catch{}return!0}finally{K.p=d,z.T=o,Ig(e,t)}}function Fg(e,t,s){t=Un(s,t),t=bf(e.stateNode,t,2),e=$e(e,t,2),e!==null&&(xs(e,2),_s(e))}function wt(e,t,s){if(e.tag===3)Fg(e,e,s);else for(;t!==null;){if(t.tag===3){Fg(t,e,s);break}else if(t.tag===1){var o=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof o.componentDidCatch=="function"&&(ii===null||!ii.has(o))){e=Un(s,e),s=Hp(2),o=$e(t,s,2),o!==null&&($p(s,o,t,e),xs(o,2),_s(o));break}}t=t.return}}function Vf(e,t,s){var o=e.pingCache;if(o===null){o=e.pingCache=new Xw;var d=new Set;o.set(t,d)}else d=o.get(t),d===void 0&&(d=new Set,o.set(t,d));d.has(s)||(Bf=!0,d.add(s),e=nb.bind(null,e,t,s),t.then(e,e))}function nb(e,t,s){var o=e.pingCache;o!==null&&o.delete(t),e.pingedLanes|=e.suspendedLanes&s,e.warmLanes&=~s,Tt===e&&(ct&s)===s&&(Pt===4||Pt===3&&(ct&62914560)===ct&&300>Ge()-Cu?(vt&2)===0&&Yr(e,0):Ff|=s,Gr===ct&&(Gr=0)),_s(e)}function Hg(e,t){t===0&&(t=Is()),e=Ms(e,t),e!==null&&(xs(e,t),_s(e))}function ab(e){var t=e.memoizedState,s=0;t!==null&&(s=t.retryLane),Hg(e,s)}function sb(e,t){var s=0;switch(e.tag){case 31:case 13:var o=e.stateNode,d=e.memoizedState;d!==null&&(s=d.retryLane);break;case 19:o=e.stateNode;break;case 22:o=e.stateNode._retryCache;break;default:throw Error(r(314))}o!==null&&o.delete(t),Hg(e,s)}function lb(e,t){return st(e,t)}var Ru=null,Kr=null,Yf=!1,Eu=!1,Wf=!1,ci=0;function _s(e){e!==Kr&&e.next===null&&(Kr===null?Ru=Kr=e:Kr=Kr.next=e),Eu=!0,Yf||(Yf=!0,rb())}function ec(e,t){if(!Wf&&Eu){Wf=!0;do for(var s=!1,o=Ru;o!==null;){if(e!==0){var d=o.pendingLanes;if(d===0)var h=0;else{var S=o.suspendedLanes,M=o.pingedLanes;h=(1<<31-Me(42|e)+1)-1,h&=d&~(S&~M),h=h&201326741?h&201326741|1:h?h|2:0}h!==0&&(s=!0,qg(o,h))}else h=ct,h=ya(o,o===Tt?h:0,o.cancelPendingCommit!==null||o.timeoutHandle!==-1),(h&3)===0||Ea(o,h)||(s=!0,qg(o,h));o=o.next}while(s);Wf=!1}}function ib(){$g()}function $g(){Eu=Yf=!1;var e=0;ci!==0&&vb()&&(e=ci);for(var t=Ge(),s=null,o=Ru;o!==null;){var d=o.next,h=Ug(o,t);h===0?(o.next=null,s===null?Ru=d:s.next=d,d===null&&(Kr=s)):(s=o,(e!==0||(h&3)!==0)&&(Eu=!0)),o=d}hn!==0&&hn!==5||ec(e),ci!==0&&(ci=0)}function Ug(e,t){for(var s=e.suspendedLanes,o=e.pingedLanes,d=e.expirationTimes,h=e.pendingLanes&-62914561;0<h;){var S=31-Me(h),M=1<<S,B=d[S];B===-1?((M&s)===0||(M&o)!==0)&&(d[S]=Vt(M,t)):B<=t&&(e.expiredLanes|=M),h&=~M}if(t=Tt,s=ct,s=ya(e,e===t?s:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),o=e.callbackNode,s===0||e===t&&(yt===2||yt===9)||e.cancelPendingCommit!==null)return o!==null&&o!==null&&me(o),e.callbackNode=null,e.callbackPriority=0;if((s&3)===0||Ea(e,s)){if(t=s&-s,t===e.callbackPriority)return t;switch(o!==null&&me(o),sa(s)){case 2:case 8:s=An;break;case 32:s=Kn;break;case 268435456:s=Ta;break;default:s=Kn}return o=Pg.bind(null,e),s=st(s,o),e.callbackPriority=t,e.callbackNode=s,t}return o!==null&&o!==null&&me(o),e.callbackPriority=2,e.callbackNode=null,2}function Pg(e,t){if(hn!==0&&hn!==5)return e.callbackNode=null,e.callbackPriority=0,null;var s=e.callbackNode;if(Tu()&&e.callbackNode!==s)return null;var o=ct;return o=ya(e,e===Tt?o:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),o===0?null:(jg(e,o,t),Ug(e,Ge()),e.callbackNode!=null&&e.callbackNode===s?Pg.bind(null,e):null)}function qg(e,t){if(Tu())return null;jg(e,t,!0)}function rb(){yb(function(){(vt&6)!==0?st(gn,ib):$g()})}function Kf(){if(ci===0){var e=nl;e===0&&(e=At,At<<=1,(At&261888)===0&&(At=256)),ci=e}return ci}function Gg(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:mo(""+e)}function Vg(e,t){var s=t.ownerDocument.createElement("input");return s.name=t.name,s.value=t.value,e.id&&s.setAttribute("form",e.id),t.parentNode.insertBefore(s,t),e=new FormData(e),s.parentNode.removeChild(s),e}function ob(e,t,s,o,d){if(t==="submit"&&s&&s.stateNode===d){var h=Gg((d[je]||null).action),S=o.submitter;S&&(t=(t=S[je]||null)?Gg(t.formAction):S.getAttribute("formAction"),t!==null&&(h=t,S=null));var M=new Xe("action","action",null,o,d);e.push({event:M,listeners:[{instance:null,listener:function(){if(o.defaultPrevented){if(ci!==0){var B=S?Vg(d,S):new FormData(d);pf(s,{pending:!0,data:B,method:d.method,action:h},null,B)}}else typeof h=="function"&&(M.preventDefault(),B=S?Vg(d,S):new FormData(d),pf(s,{pending:!0,data:B,method:d.method,action:h},h,B))},currentTarget:d}]})}}for(var Qf=0;Qf<Ii.length;Qf++){var Xf=Ii[Qf],cb=Xf.toLowerCase(),ub=Xf[0].toUpperCase()+Xf.slice(1);$n(cb,"on"+ub)}$n(Pl,"onAnimationEnd"),$n(wa,"onAnimationIteration"),$n(jo,"onAnimationStart"),$n("dblclick","onDoubleClick"),$n("focusin","onFocus"),$n("focusout","onBlur"),$n(ko,"onTransitionRun"),$n(Xc,"onTransitionStart"),$n(Dn,"onTransitionCancel"),$n(Ao,"onTransitionEnd"),bt("onMouseEnter",["mouseout","mouseover"]),bt("onMouseLeave",["mouseout","mouseover"]),bt("onPointerEnter",["pointerout","pointerover"]),bt("onPointerLeave",["pointerout","pointerover"]),Yt("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Yt("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Yt("onBeforeInput",["compositionend","keypress","textInput","paste"]),Yt("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Yt("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Yt("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var tc="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),db=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(tc));function Yg(e,t){t=(t&4)!==0;for(var s=0;s<e.length;s++){var o=e[s],d=o.event;o=o.listeners;e:{var h=void 0;if(t)for(var S=o.length-1;0<=S;S--){var M=o[S],B=M.instance,ee=M.currentTarget;if(M=M.listener,B!==h&&d.isPropagationStopped())break e;h=M,d.currentTarget=ee;try{h(d)}catch(he){Tr(he)}d.currentTarget=null,h=B}else for(S=0;S<o.length;S++){if(M=o[S],B=M.instance,ee=M.currentTarget,M=M.listener,B!==h&&d.isPropagationStopped())break e;h=M,d.currentTarget=ee;try{h(d)}catch(he){Tr(he)}d.currentTarget=null,h=B}}}}function ot(e,t){var s=t[We];s===void 0&&(s=t[We]=new Set);var o=e+"__bubble";s.has(o)||(Wg(t,e,2,!1),s.add(o))}function Zf(e,t,s){var o=0;t&&(o|=4),Wg(s,e,o,t)}var Du="_reactListening"+Math.random().toString(36).slice(2);function Jf(e){if(!e[Du]){e[Du]=!0,ws.forEach(function(s){s!=="selectionchange"&&(db.has(s)||Zf(s,!1,e),Zf(s,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Du]||(t[Du]=!0,Zf("selectionchange",!1,t))}}function Wg(e,t,s,o){switch(Cv(t)){case 2:var d=Fb;break;case 8:d=Hb;break;default:d=hm}s=d.bind(null,t,s,e),d=void 0,!Ml||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(d=!0),o?d!==void 0?e.addEventListener(t,s,{capture:!0,passive:d}):e.addEventListener(t,s,!0):d!==void 0?e.addEventListener(t,s,{passive:d}):e.addEventListener(t,s,!1)}function em(e,t,s,o,d){var h=o;if((t&1)===0&&(t&2)===0&&o!==null)e:for(;;){if(o===null)return;var S=o.tag;if(S===3||S===4){var M=o.stateNode.containerInfo;if(M===d)break;if(S===4)for(S=o.return;S!==null;){var B=S.tag;if((B===3||B===4)&&S.stateNode.containerInfo===d)return;S=S.return}for(;M!==null;){if(S=Ht(M),S===null)return;if(B=S.tag,B===5||B===6||B===26||B===27){o=h=S;continue e}M=M.parentNode}}o=o.return}ho(function(){var ee=h,he=xr(s),we=[];e:{var se=Nr.get(e);if(se!==void 0){var ce=Xe,Oe=e;switch(e){case"keypress":if(Ve(s)===0)break e;case"keydown":case"keyup":ce=Wt;break;case"focusin":Oe="focus",ce=Te;break;case"focusout":Oe="blur",ce=Te;break;case"beforeblur":case"afterblur":ce=Te;break;case"click":if(s.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":ce=ia;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":ce=En;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":ce=ts;break;case Pl:case wa:case jo:ce=qd;break;case Ao:ce=br;break;case"scroll":case"scrollend":ce=Pd;break;case"wheel":ce=Ia;break;case"copy":case"cut":case"paste":ce=Gd;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":ce=Uc;break;case"toggle":case"beforetoggle":ce=Wd}var qe=(t&4)!==0,kt=!qe&&(e==="scroll"||e==="scrollend"),W=qe?se!==null?se+"Capture":null:se;qe=[];for(var U=ee,J;U!==null;){var xe=U;if(J=xe.stateNode,xe=xe.tag,xe!==5&&xe!==26&&xe!==27||J===null||W===null||(xe=Za(U,W),xe!=null&&qe.push(nc(U,xe,J))),kt)break;U=U.return}0<qe.length&&(se=new ce(se,Oe,null,s,he),we.push({event:se,listeners:qe}))}}if((t&7)===0){e:{if(se=e==="mouseover"||e==="pointerover",ce=e==="mouseout"||e==="pointerout",se&&s!==vr&&(Oe=s.relatedTarget||s.fromElement)&&(Ht(Oe)||Oe[Le]))break e;if((ce||se)&&(se=he.window===he?he:(se=he.ownerDocument)?se.defaultView||se.parentWindow:window,ce?(Oe=s.relatedTarget||s.toElement,ce=ee,Oe=Oe?Ht(Oe):null,Oe!==null&&(kt=u(Oe),qe=Oe.tag,Oe!==kt||qe!==5&&qe!==27&&qe!==6)&&(Oe=null)):(ce=null,Oe=ee),ce!==Oe)){if(qe=ia,xe="onMouseLeave",W="onMouseEnter",U="mouse",(e==="pointerout"||e==="pointerover")&&(qe=Uc,xe="onPointerLeave",W="onPointerEnter",U="pointer"),kt=ce==null?se:Mt(ce),J=Oe==null?se:Mt(Oe),se=new qe(xe,U+"leave",ce,s,he),se.target=kt,se.relatedTarget=J,xe=null,Ht(he)===ee&&(qe=new qe(W,U+"enter",Oe,s,he),qe.target=J,qe.relatedTarget=kt,xe=qe),kt=xe,ce&&Oe)t:{for(qe=fb,W=ce,U=Oe,J=0,xe=W;xe;xe=qe(xe))J++;xe=0;for(var Pe=U;Pe;Pe=qe(Pe))xe++;for(;0<J-xe;)W=qe(W),J--;for(;0<xe-J;)U=qe(U),xe--;for(;J--;){if(W===U||U!==null&&W===U.alternate){qe=W;break t}W=qe(W),U=qe(U)}qe=null}else qe=null;ce!==null&&Kg(we,se,ce,qe,!1),Oe!==null&&kt!==null&&Kg(we,kt,Oe,qe,!0)}}e:{if(se=ee?Mt(ee):window,ce=se.nodeName&&se.nodeName.toLowerCase(),ce==="select"||ce==="input"&&se.type==="file")var ht=xo;else if(Ys(se))if(Wc)ht=Ws;else{ht=kr;var Fe=ks}else ce=se.nodeName,!ce||ce.toLowerCase()!=="input"||se.type!=="checkbox"&&se.type!=="radio"?ee&&Ni(ee.elementType)&&(ht=xo):ht=Bl;if(ht&&(ht=ht(e,ee))){vo(we,ht,s,he);break e}Fe&&Fe(e,se,ee),e==="focusout"&&ee&&se.type==="number"&&ee.memoizedProps.value!=null&&za(se,"number",se.value)}switch(Fe=ee?Mt(ee):window,e){case"focusin":(Ys(Fe)||Fe.contentEditable==="true")&&(ns=Fe,zi=ee,Ks=null);break;case"focusout":Ks=zi=ns=null;break;case"mousedown":Ul=!0;break;case"contextmenu":case"mouseup":case"dragend":Ul=!1,Oi(we,s,he);break;case"selectionchange":if(Qc)break;case"keydown":case"keyup":Oi(we,s,he)}var at;if(Cs)e:{switch(e){case"compositionstart":var ut="onCompositionStart";break e;case"compositionend":ut="onCompositionEnd";break e;case"compositionupdate":ut="onCompositionUpdate";break e}ut=void 0}else _l?Ba(e,s)&&(ut="onCompositionEnd"):e==="keydown"&&s.keyCode===229&&(ut="onCompositionStart");ut&&(js&&s.locale!=="ko"&&(_l||ut!=="onCompositionStart"?ut==="onCompositionEnd"&&_l&&(at=po()):(Ja=he,Us="value"in Ja?Ja.value:Ja.textContent,_l=!0)),Fe=Lu(ee,ut),0<Fe.length&&(ut=new Dl(ut,e,null,s,he),we.push({event:ut,listeners:Fe}),at?ut.data=at:(at=Vc(s),at!==null&&(ut.data=at)))),(at=Kt?Sr(e,s):Cr(e,s))&&(ut=Lu(ee,"onBeforeInput"),0<ut.length&&(Fe=new Dl("onBeforeInput","beforeinput",null,s,he),we.push({event:Fe,listeners:ut}),Fe.data=at)),ob(we,e,ee,s,he)}Yg(we,t)})}function nc(e,t,s){return{instance:e,listener:t,currentTarget:s}}function Lu(e,t){for(var s=t+"Capture",o=[];e!==null;){var d=e,h=d.stateNode;if(d=d.tag,d!==5&&d!==26&&d!==27||h===null||(d=Za(e,s),d!=null&&o.unshift(nc(e,d,h)),d=Za(e,t),d!=null&&o.push(nc(e,d,h))),e.tag===3)return o;e=e.return}return[]}function fb(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Kg(e,t,s,o,d){for(var h=t._reactName,S=[];s!==null&&s!==o;){var M=s,B=M.alternate,ee=M.stateNode;if(M=M.tag,B!==null&&B===o)break;M!==5&&M!==26&&M!==27||ee===null||(B=ee,d?(ee=Za(s,h),ee!=null&&S.unshift(nc(s,ee,B))):d||(ee=Za(s,h),ee!=null&&S.push(nc(s,ee,B)))),s=s.return}S.length!==0&&e.push({event:t,listeners:S})}var mb=/\r\n?/g,hb=/\u0000|\uFFFD/g;function Qg(e){return(typeof e=="string"?e:""+e).replace(mb,`
|
|
9
|
-
`).replace(hb,"")}function Xg(e,t){return t=Qg(t),Qg(e)===t}function jt(e,t,s,o,d,h){switch(s){case"children":typeof o=="string"?t==="body"||t==="textarea"&&o===""||Cl(e,o):(typeof o=="number"||typeof o=="bigint")&&t!=="body"&&Cl(e,""+o);break;case"className":bs(e,"class",o);break;case"tabIndex":bs(e,"tabindex",o);break;case"dir":case"role":case"viewBox":case"width":case"height":bs(e,s,o);break;case"style":$s(e,o,h);break;case"data":if(t!=="object"){bs(e,"data",o);break}case"src":case"href":if(o===""&&(t!=="a"||s!=="href")){e.removeAttribute(s);break}if(o==null||typeof o=="function"||typeof o=="symbol"||typeof o=="boolean"){e.removeAttribute(s);break}o=mo(""+o),e.setAttribute(s,o);break;case"action":case"formAction":if(typeof o=="function"){e.setAttribute(s,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof h=="function"&&(s==="formAction"?(t!=="input"&&jt(e,t,"name",d.name,d,null),jt(e,t,"formEncType",d.formEncType,d,null),jt(e,t,"formMethod",d.formMethod,d,null),jt(e,t,"formTarget",d.formTarget,d,null)):(jt(e,t,"encType",d.encType,d,null),jt(e,t,"method",d.method,d,null),jt(e,t,"target",d.target,d,null)));if(o==null||typeof o=="symbol"||typeof o=="boolean"){e.removeAttribute(s);break}o=mo(""+o),e.setAttribute(s,o);break;case"onClick":o!=null&&(e.onclick=Xa);break;case"onScroll":o!=null&&ot("scroll",e);break;case"onScrollEnd":o!=null&&ot("scrollend",e);break;case"dangerouslySetInnerHTML":if(o!=null){if(typeof o!="object"||!("__html"in o))throw Error(r(61));if(s=o.__html,s!=null){if(d.children!=null)throw Error(r(60));e.innerHTML=s}}break;case"multiple":e.multiple=o&&typeof o!="function"&&typeof o!="symbol";break;case"muted":e.muted=o&&typeof o!="function"&&typeof o!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(o==null||typeof o=="function"||typeof o=="boolean"||typeof o=="symbol"){e.removeAttribute("xlink:href");break}s=mo(""+o),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":o!=null&&typeof o!="function"&&typeof o!="symbol"?e.setAttribute(s,""+o):e.removeAttribute(s);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":o&&typeof o!="function"&&typeof o!="symbol"?e.setAttribute(s,""):e.removeAttribute(s);break;case"capture":case"download":o===!0?e.setAttribute(s,""):o!==!1&&o!=null&&typeof o!="function"&&typeof o!="symbol"?e.setAttribute(s,o):e.removeAttribute(s);break;case"cols":case"rows":case"size":case"span":o!=null&&typeof o!="function"&&typeof o!="symbol"&&!isNaN(o)&&1<=o?e.setAttribute(s,o):e.removeAttribute(s);break;case"rowSpan":case"start":o==null||typeof o=="function"||typeof o=="symbol"||isNaN(o)?e.removeAttribute(s):e.setAttribute(s,o);break;case"popover":ot("beforetoggle",e),ot("toggle",e),Fs(e,"popover",o);break;case"xlinkActuate":Fn(e,"http://www.w3.org/1999/xlink","xlink:actuate",o);break;case"xlinkArcrole":Fn(e,"http://www.w3.org/1999/xlink","xlink:arcrole",o);break;case"xlinkRole":Fn(e,"http://www.w3.org/1999/xlink","xlink:role",o);break;case"xlinkShow":Fn(e,"http://www.w3.org/1999/xlink","xlink:show",o);break;case"xlinkTitle":Fn(e,"http://www.w3.org/1999/xlink","xlink:title",o);break;case"xlinkType":Fn(e,"http://www.w3.org/1999/xlink","xlink:type",o);break;case"xmlBase":Fn(e,"http://www.w3.org/XML/1998/namespace","xml:base",o);break;case"xmlLang":Fn(e,"http://www.w3.org/XML/1998/namespace","xml:lang",o);break;case"xmlSpace":Fn(e,"http://www.w3.org/XML/1998/namespace","xml:space",o);break;case"is":Fs(e,"is",o);break;case"innerText":case"textContent":break;default:(!(2<s.length)||s[0]!=="o"&&s[0]!=="O"||s[1]!=="n"&&s[1]!=="N")&&(s=Gh.get(s)||s,Fs(e,s,o))}}function tm(e,t,s,o,d,h){switch(s){case"style":$s(e,o,h);break;case"dangerouslySetInnerHTML":if(o!=null){if(typeof o!="object"||!("__html"in o))throw Error(r(61));if(s=o.__html,s!=null){if(d.children!=null)throw Error(r(60));e.innerHTML=s}}break;case"children":typeof o=="string"?Cl(e,o):(typeof o=="number"||typeof o=="bigint")&&Cl(e,""+o);break;case"onScroll":o!=null&&ot("scroll",e);break;case"onScrollEnd":o!=null&&ot("scrollend",e);break;case"onClick":o!=null&&(e.onclick=Xa);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!vn.hasOwnProperty(s))e:{if(s[0]==="o"&&s[1]==="n"&&(d=s.endsWith("Capture"),t=s.slice(2,d?s.length-7:void 0),h=e[je]||null,h=h!=null?h[s]:null,typeof h=="function"&&e.removeEventListener(t,h,d),typeof o=="function")){typeof h!="function"&&h!==null&&(s in e?e[s]=null:e.hasAttribute(s)&&e.removeAttribute(s)),e.addEventListener(t,o,d);break e}s in e?e[s]=o:o===!0?e.setAttribute(s,""):Fs(e,s,o)}}}function zn(e,t,s){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":ot("error",e),ot("load",e);var o=!1,d=!1,h;for(h in s)if(s.hasOwnProperty(h)){var S=s[h];if(S!=null)switch(h){case"src":o=!0;break;case"srcSet":d=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(r(137,t));default:jt(e,t,h,S,s,null)}}d&&jt(e,t,"srcSet",s.srcSet,s,null),o&&jt(e,t,"src",s.src,s,null);return;case"input":ot("invalid",e);var M=h=S=d=null,B=null,ee=null;for(o in s)if(s.hasOwnProperty(o)){var he=s[o];if(he!=null)switch(o){case"name":d=he;break;case"type":S=he;break;case"checked":B=he;break;case"defaultChecked":ee=he;break;case"value":h=he;break;case"defaultValue":M=he;break;case"children":case"dangerouslySetInnerHTML":if(he!=null)throw Error(r(137,t));break;default:jt(e,t,o,he,s,null)}}Ss(e,h,M,B,ee,S,d,!1);return;case"select":ot("invalid",e),o=S=h=null;for(d in s)if(s.hasOwnProperty(d)&&(M=s[d],M!=null))switch(d){case"value":h=M;break;case"defaultValue":S=M;break;case"multiple":o=M;default:jt(e,t,d,M,s,null)}t=h,s=S,e.multiple=!!o,t!=null?Sl(e,!!o,t,!1):s!=null&&Sl(e,!!o,s,!0);return;case"textarea":ot("invalid",e),h=d=o=null;for(S in s)if(s.hasOwnProperty(S)&&(M=s[S],M!=null))switch(S){case"value":o=M;break;case"defaultValue":d=M;break;case"children":h=M;break;case"dangerouslySetInnerHTML":if(M!=null)throw Error(r(91));break;default:jt(e,t,S,M,s,null)}Ud(e,o,d,h);return;case"option":for(B in s)s.hasOwnProperty(B)&&(o=s[B],o!=null)&&(B==="selected"?e.selected=o&&typeof o!="function"&&typeof o!="symbol":jt(e,t,B,o,s,null));return;case"dialog":ot("beforetoggle",e),ot("toggle",e),ot("cancel",e),ot("close",e);break;case"iframe":case"object":ot("load",e);break;case"video":case"audio":for(o=0;o<tc.length;o++)ot(tc[o],e);break;case"image":ot("error",e),ot("load",e);break;case"details":ot("toggle",e);break;case"embed":case"source":case"link":ot("error",e),ot("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(ee in s)if(s.hasOwnProperty(ee)&&(o=s[ee],o!=null))switch(ee){case"children":case"dangerouslySetInnerHTML":throw Error(r(137,t));default:jt(e,t,ee,o,s,null)}return;default:if(Ni(t)){for(he in s)s.hasOwnProperty(he)&&(o=s[he],o!==void 0&&tm(e,t,he,o,s,void 0));return}}for(M in s)s.hasOwnProperty(M)&&(o=s[M],o!=null&&jt(e,t,M,o,s,null))}function pb(e,t,s,o){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var d=null,h=null,S=null,M=null,B=null,ee=null,he=null;for(ce in s){var we=s[ce];if(s.hasOwnProperty(ce)&&we!=null)switch(ce){case"checked":break;case"value":break;case"defaultValue":B=we;default:o.hasOwnProperty(ce)||jt(e,t,ce,null,o,we)}}for(var se in o){var ce=o[se];if(we=s[se],o.hasOwnProperty(se)&&(ce!=null||we!=null))switch(se){case"type":h=ce;break;case"name":d=ce;break;case"checked":ee=ce;break;case"defaultChecked":he=ce;break;case"value":S=ce;break;case"defaultValue":M=ce;break;case"children":case"dangerouslySetInnerHTML":if(ce!=null)throw Error(r(137,t));break;default:ce!==we&&jt(e,t,se,ce,o,we)}}_a(e,S,M,B,ee,he,h,d);return;case"select":ce=S=M=se=null;for(h in s)if(B=s[h],s.hasOwnProperty(h)&&B!=null)switch(h){case"value":break;case"multiple":ce=B;default:o.hasOwnProperty(h)||jt(e,t,h,null,o,B)}for(d in o)if(h=o[d],B=s[d],o.hasOwnProperty(d)&&(h!=null||B!=null))switch(d){case"value":se=h;break;case"defaultValue":M=h;break;case"multiple":S=h;default:h!==B&&jt(e,t,d,h,o,B)}t=M,s=S,o=ce,se!=null?Sl(e,!!s,se,!1):!!o!=!!s&&(t!=null?Sl(e,!!s,t,!0):Sl(e,!!s,s?[]:"",!1));return;case"textarea":ce=se=null;for(M in s)if(d=s[M],s.hasOwnProperty(M)&&d!=null&&!o.hasOwnProperty(M))switch(M){case"value":break;case"children":break;default:jt(e,t,M,null,o,d)}for(S in o)if(d=o[S],h=s[S],o.hasOwnProperty(S)&&(d!=null||h!=null))switch(S){case"value":se=d;break;case"defaultValue":ce=d;break;case"children":break;case"dangerouslySetInnerHTML":if(d!=null)throw Error(r(91));break;default:d!==h&&jt(e,t,S,d,o,h)}gr(e,se,ce);return;case"option":for(var Oe in s)se=s[Oe],s.hasOwnProperty(Oe)&&se!=null&&!o.hasOwnProperty(Oe)&&(Oe==="selected"?e.selected=!1:jt(e,t,Oe,null,o,se));for(B in o)se=o[B],ce=s[B],o.hasOwnProperty(B)&&se!==ce&&(se!=null||ce!=null)&&(B==="selected"?e.selected=se&&typeof se!="function"&&typeof se!="symbol":jt(e,t,B,se,o,ce));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var qe in s)se=s[qe],s.hasOwnProperty(qe)&&se!=null&&!o.hasOwnProperty(qe)&&jt(e,t,qe,null,o,se);for(ee in o)if(se=o[ee],ce=s[ee],o.hasOwnProperty(ee)&&se!==ce&&(se!=null||ce!=null))switch(ee){case"children":case"dangerouslySetInnerHTML":if(se!=null)throw Error(r(137,t));break;default:jt(e,t,ee,se,o,ce)}return;default:if(Ni(t)){for(var kt in s)se=s[kt],s.hasOwnProperty(kt)&&se!==void 0&&!o.hasOwnProperty(kt)&&tm(e,t,kt,void 0,o,se);for(he in o)se=o[he],ce=s[he],!o.hasOwnProperty(he)||se===ce||se===void 0&&ce===void 0||tm(e,t,he,se,o,ce);return}}for(var W in s)se=s[W],s.hasOwnProperty(W)&&se!=null&&!o.hasOwnProperty(W)&&jt(e,t,W,null,o,se);for(we in o)se=o[we],ce=s[we],!o.hasOwnProperty(we)||se===ce||se==null&&ce==null||jt(e,t,we,se,o,ce)}function Zg(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function gb(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,s=performance.getEntriesByType("resource"),o=0;o<s.length;o++){var d=s[o],h=d.transferSize,S=d.initiatorType,M=d.duration;if(h&&M&&Zg(S)){for(S=0,M=d.responseEnd,o+=1;o<s.length;o++){var B=s[o],ee=B.startTime;if(ee>M)break;var he=B.transferSize,we=B.initiatorType;he&&Zg(we)&&(B=B.responseEnd,S+=he*(B<M?1:(M-ee)/(B-ee)))}if(--o,t+=8*(h+S)/(d.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var nm=null,am=null;function _u(e){return e.nodeType===9?e:e.ownerDocument}function Jg(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function ev(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function sm(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var lm=null;function vb(){var e=window.event;return e&&e.type==="popstate"?e===lm?!1:(lm=e,!0):(lm=null,!1)}var tv=typeof setTimeout=="function"?setTimeout:void 0,xb=typeof clearTimeout=="function"?clearTimeout:void 0,nv=typeof Promise=="function"?Promise:void 0,yb=typeof queueMicrotask=="function"?queueMicrotask:typeof nv<"u"?function(e){return nv.resolve(null).then(e).catch(wb)}:tv;function wb(e){setTimeout(function(){throw e})}function ui(e){return e==="head"}function av(e,t){var s=t,o=0;do{var d=s.nextSibling;if(e.removeChild(s),d&&d.nodeType===8)if(s=d.data,s==="/$"||s==="/&"){if(o===0){e.removeChild(d),Jr(t);return}o--}else if(s==="$"||s==="$?"||s==="$~"||s==="$!"||s==="&")o++;else if(s==="html")ac(e.ownerDocument.documentElement);else if(s==="head"){s=e.ownerDocument.head,ac(s);for(var h=s.firstChild;h;){var S=h.nextSibling,M=h.nodeName;h[dt]||M==="SCRIPT"||M==="STYLE"||M==="LINK"&&h.rel.toLowerCase()==="stylesheet"||s.removeChild(h),h=S}}else s==="body"&&ac(e.ownerDocument.body);s=d}while(s);Jr(t)}function sv(e,t){var s=e;e=0;do{var o=s.nextSibling;if(s.nodeType===1?t?(s._stashedDisplay=s.style.display,s.style.display="none"):(s.style.display=s._stashedDisplay||"",s.getAttribute("style")===""&&s.removeAttribute("style")):s.nodeType===3&&(t?(s._stashedText=s.nodeValue,s.nodeValue=""):s.nodeValue=s._stashedText||""),o&&o.nodeType===8)if(s=o.data,s==="/$"){if(e===0)break;e--}else s!=="$"&&s!=="$?"&&s!=="$~"&&s!=="$!"||e++;s=o}while(s)}function im(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var s=t;switch(t=t.nextSibling,s.nodeName){case"HTML":case"HEAD":case"BODY":im(s),nn(s);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(s.rel.toLowerCase()==="stylesheet")continue}e.removeChild(s)}}function bb(e,t,s,o){for(;e.nodeType===1;){var d=s;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!o&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(o){if(!e[dt])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(h=e.getAttribute("rel"),h==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(h!==d.rel||e.getAttribute("href")!==(d.href==null||d.href===""?null:d.href)||e.getAttribute("crossorigin")!==(d.crossOrigin==null?null:d.crossOrigin)||e.getAttribute("title")!==(d.title==null?null:d.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(h=e.getAttribute("src"),(h!==(d.src==null?null:d.src)||e.getAttribute("type")!==(d.type==null?null:d.type)||e.getAttribute("crossorigin")!==(d.crossOrigin==null?null:d.crossOrigin))&&h&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var h=d.name==null?null:""+d.name;if(d.type==="hidden"&&e.getAttribute("name")===h)return e}else return e;if(e=Ga(e.nextSibling),e===null)break}return null}function Sb(e,t,s){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!s||(e=Ga(e.nextSibling),e===null))return null;return e}function lv(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=Ga(e.nextSibling),e===null))return null;return e}function rm(e){return e.data==="$?"||e.data==="$~"}function om(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function Cb(e,t){var s=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||s.readyState!=="loading")t();else{var o=function(){t(),s.removeEventListener("DOMContentLoaded",o)};s.addEventListener("DOMContentLoaded",o),e._reactRetry=o}}function Ga(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;if(t==="/$"||t==="/&")return null}}return e}var cm=null;function iv(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var s=e.data;if(s==="/$"||s==="/&"){if(t===0)return Ga(e.nextSibling);t--}else s!=="$"&&s!=="$!"&&s!=="$?"&&s!=="$~"&&s!=="&"||t++}e=e.nextSibling}return null}function rv(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var s=e.data;if(s==="$"||s==="$!"||s==="$?"||s==="$~"||s==="&"){if(t===0)return e;t--}else s!=="/$"&&s!=="/&"||t++}e=e.previousSibling}return null}function ov(e,t,s){switch(t=_u(s),e){case"html":if(e=t.documentElement,!e)throw Error(r(452));return e;case"head":if(e=t.head,!e)throw Error(r(453));return e;case"body":if(e=t.body,!e)throw Error(r(454));return e;default:throw Error(r(451))}}function ac(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);nn(e)}var Va=new Map,cv=new Set;function zu(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var vl=K.d;K.d={f:jb,r:kb,D:Ab,C:Mb,L:Nb,m:Tb,X:Eb,S:Rb,M:Db};function jb(){var e=vl.f(),t=Au();return e||t}function kb(e){var t=Rn(e);t!==null&&t.tag===5&&t.type==="form"?Ap(t):vl.r(e)}var Qr=typeof document>"u"?null:document;function uv(e,t,s){var o=Qr;if(o&&typeof t=="string"&&t){var d=Xn(t);d='link[rel="'+e+'"][href="'+d+'"]',typeof s=="string"&&(d+='[crossorigin="'+s+'"]'),cv.has(d)||(cv.add(d),e={rel:e,crossOrigin:s,href:t},o.querySelector(d)===null&&(t=o.createElement("link"),zn(t,"link",e),Et(t),o.head.appendChild(t)))}}function Ab(e){vl.D(e),uv("dns-prefetch",e,null)}function Mb(e,t){vl.C(e,t),uv("preconnect",e,t)}function Nb(e,t,s){vl.L(e,t,s);var o=Qr;if(o&&e&&t){var d='link[rel="preload"][as="'+Xn(t)+'"]';t==="image"&&s&&s.imageSrcSet?(d+='[imagesrcset="'+Xn(s.imageSrcSet)+'"]',typeof s.imageSizes=="string"&&(d+='[imagesizes="'+Xn(s.imageSizes)+'"]')):d+='[href="'+Xn(e)+'"]';var h=d;switch(t){case"style":h=Xr(e);break;case"script":h=Zr(e)}Va.has(h)||(e=y({rel:"preload",href:t==="image"&&s&&s.imageSrcSet?void 0:e,as:t},s),Va.set(h,e),o.querySelector(d)!==null||t==="style"&&o.querySelector(sc(h))||t==="script"&&o.querySelector(lc(h))||(t=o.createElement("link"),zn(t,"link",e),Et(t),o.head.appendChild(t)))}}function Tb(e,t){vl.m(e,t);var s=Qr;if(s&&e){var o=t&&typeof t.as=="string"?t.as:"script",d='link[rel="modulepreload"][as="'+Xn(o)+'"][href="'+Xn(e)+'"]',h=d;switch(o){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":h=Zr(e)}if(!Va.has(h)&&(e=y({rel:"modulepreload",href:e},t),Va.set(h,e),s.querySelector(d)===null)){switch(o){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(s.querySelector(lc(h)))return}o=s.createElement("link"),zn(o,"link",e),Et(o),s.head.appendChild(o)}}}function Rb(e,t,s){vl.S(e,t,s);var o=Qr;if(o&&e){var d=$t(o).hoistableStyles,h=Xr(e);t=t||"default";var S=d.get(h);if(!S){var M={loading:0,preload:null};if(S=o.querySelector(sc(h)))M.loading=5;else{e=y({rel:"stylesheet",href:e,"data-precedence":t},s),(s=Va.get(h))&&um(e,s);var B=S=o.createElement("link");Et(B),zn(B,"link",e),B._p=new Promise(function(ee,he){B.onload=ee,B.onerror=he}),B.addEventListener("load",function(){M.loading|=1}),B.addEventListener("error",function(){M.loading|=2}),M.loading|=4,Ou(S,t,o)}S={type:"stylesheet",instance:S,count:1,state:M},d.set(h,S)}}}function Eb(e,t){vl.X(e,t);var s=Qr;if(s&&e){var o=$t(s).hoistableScripts,d=Zr(e),h=o.get(d);h||(h=s.querySelector(lc(d)),h||(e=y({src:e,async:!0},t),(t=Va.get(d))&&dm(e,t),h=s.createElement("script"),Et(h),zn(h,"link",e),s.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},o.set(d,h))}}function Db(e,t){vl.M(e,t);var s=Qr;if(s&&e){var o=$t(s).hoistableScripts,d=Zr(e),h=o.get(d);h||(h=s.querySelector(lc(d)),h||(e=y({src:e,async:!0,type:"module"},t),(t=Va.get(d))&&dm(e,t),h=s.createElement("script"),Et(h),zn(h,"link",e),s.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},o.set(d,h))}}function dv(e,t,s,o){var d=(d=de.current)?zu(d):null;if(!d)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof s.precedence=="string"&&typeof s.href=="string"?(t=Xr(s.href),s=$t(d).hoistableStyles,o=s.get(t),o||(o={type:"style",instance:null,count:0,state:null},s.set(t,o)),o):{type:"void",instance:null,count:0,state:null};case"link":if(s.rel==="stylesheet"&&typeof s.href=="string"&&typeof s.precedence=="string"){e=Xr(s.href);var h=$t(d).hoistableStyles,S=h.get(e);if(S||(d=d.ownerDocument||d,S={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},h.set(e,S),(h=d.querySelector(sc(e)))&&!h._p&&(S.instance=h,S.state.loading=5),Va.has(e)||(s={rel:"preload",as:"style",href:s.href,crossOrigin:s.crossOrigin,integrity:s.integrity,media:s.media,hrefLang:s.hrefLang,referrerPolicy:s.referrerPolicy},Va.set(e,s),h||Lb(d,e,s,S.state))),t&&o===null)throw Error(r(528,""));return S}if(t&&o!==null)throw Error(r(529,""));return null;case"script":return t=s.async,s=s.src,typeof s=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Zr(s),s=$t(d).hoistableScripts,o=s.get(t),o||(o={type:"script",instance:null,count:0,state:null},s.set(t,o)),o):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function Xr(e){return'href="'+Xn(e)+'"'}function sc(e){return'link[rel="stylesheet"]['+e+"]"}function fv(e){return y({},e,{"data-precedence":e.precedence,precedence:null})}function Lb(e,t,s,o){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?o.loading=1:(t=e.createElement("link"),o.preload=t,t.addEventListener("load",function(){return o.loading|=1}),t.addEventListener("error",function(){return o.loading|=2}),zn(t,"link",s),Et(t),e.head.appendChild(t))}function Zr(e){return'[src="'+Xn(e)+'"]'}function lc(e){return"script[async]"+e}function mv(e,t,s){if(t.count++,t.instance===null)switch(t.type){case"style":var o=e.querySelector('style[data-href~="'+Xn(s.href)+'"]');if(o)return t.instance=o,Et(o),o;var d=y({},s,{"data-href":s.href,"data-precedence":s.precedence,href:null,precedence:null});return o=(e.ownerDocument||e).createElement("style"),Et(o),zn(o,"style",d),Ou(o,s.precedence,e),t.instance=o;case"stylesheet":d=Xr(s.href);var h=e.querySelector(sc(d));if(h)return t.state.loading|=4,t.instance=h,Et(h),h;o=fv(s),(d=Va.get(d))&&um(o,d),h=(e.ownerDocument||e).createElement("link"),Et(h);var S=h;return S._p=new Promise(function(M,B){S.onload=M,S.onerror=B}),zn(h,"link",o),t.state.loading|=4,Ou(h,s.precedence,e),t.instance=h;case"script":return h=Zr(s.src),(d=e.querySelector(lc(h)))?(t.instance=d,Et(d),d):(o=s,(d=Va.get(h))&&(o=y({},s),dm(o,d)),e=e.ownerDocument||e,d=e.createElement("script"),Et(d),zn(d,"link",o),e.head.appendChild(d),t.instance=d);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(o=t.instance,t.state.loading|=4,Ou(o,s.precedence,e));return t.instance}function Ou(e,t,s){for(var o=s.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),d=o.length?o[o.length-1]:null,h=d,S=0;S<o.length;S++){var M=o[S];if(M.dataset.precedence===t)h=M;else if(h!==d)break}h?h.parentNode.insertBefore(e,h.nextSibling):(t=s.nodeType===9?s.head:s,t.insertBefore(e,t.firstChild))}function um(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function dm(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var Iu=null;function hv(e,t,s){if(Iu===null){var o=new Map,d=Iu=new Map;d.set(s,o)}else d=Iu,o=d.get(s),o||(o=new Map,d.set(s,o));if(o.has(e))return o;for(o.set(e,null),s=s.getElementsByTagName(e),d=0;d<s.length;d++){var h=s[d];if(!(h[dt]||h[X]||e==="link"&&h.getAttribute("rel")==="stylesheet")&&h.namespaceURI!=="http://www.w3.org/2000/svg"){var S=h.getAttribute(t)||"";S=e+S;var M=o.get(S);M?M.push(h):o.set(S,[h])}}return o}function pv(e,t,s){e=e.ownerDocument||e,e.head.insertBefore(s,t==="title"?e.querySelector("head > title"):null)}function _b(e,t,s){if(s===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(e=t.disabled,typeof t.precedence=="string"&&e==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function gv(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function zb(e,t,s,o){if(s.type==="stylesheet"&&(typeof o.media!="string"||matchMedia(o.media).matches!==!1)&&(s.state.loading&4)===0){if(s.instance===null){var d=Xr(o.href),h=t.querySelector(sc(d));if(h){t=h._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Bu.bind(e),t.then(e,e)),s.state.loading|=4,s.instance=h,Et(h);return}h=t.ownerDocument||t,o=fv(o),(d=Va.get(d))&&um(o,d),h=h.createElement("link"),Et(h);var S=h;S._p=new Promise(function(M,B){S.onload=M,S.onerror=B}),zn(h,"link",o),s.instance=h}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(s,t),(t=s.state.preload)&&(s.state.loading&3)===0&&(e.count++,s=Bu.bind(e),t.addEventListener("load",s),t.addEventListener("error",s))}}var fm=0;function Ob(e,t){return e.stylesheets&&e.count===0&&Hu(e,e.stylesheets),0<e.count||0<e.imgCount?function(s){var o=setTimeout(function(){if(e.stylesheets&&Hu(e,e.stylesheets),e.unsuspend){var h=e.unsuspend;e.unsuspend=null,h()}},6e4+t);0<e.imgBytes&&fm===0&&(fm=62500*gb());var d=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Hu(e,e.stylesheets),e.unsuspend)){var h=e.unsuspend;e.unsuspend=null,h()}},(e.imgBytes>fm?50:800)+t);return e.unsuspend=s,function(){e.unsuspend=null,clearTimeout(o),clearTimeout(d)}}:null}function Bu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Hu(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Fu=null;function Hu(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Fu=new Map,t.forEach(Ib,e),Fu=null,Bu.call(e))}function Ib(e,t){if(!(t.state.loading&4)){var s=Fu.get(e);if(s)var o=s.get(null);else{s=new Map,Fu.set(e,s);for(var d=e.querySelectorAll("link[data-precedence],style[data-precedence]"),h=0;h<d.length;h++){var S=d[h];(S.nodeName==="LINK"||S.getAttribute("media")!=="not all")&&(s.set(S.dataset.precedence,S),o=S)}o&&s.set(null,o)}d=t.instance,S=d.getAttribute("data-precedence"),h=s.get(S)||o,h===o&&s.set(null,d),s.set(S,d),this.count++,o=Bu.bind(this),d.addEventListener("load",o),d.addEventListener("error",o),h?h.parentNode.insertBefore(d,h.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(d,e.firstChild)),t.state.loading|=4}}var ic={$$typeof:E,Provider:null,Consumer:null,_currentValue:Q,_currentValue2:Q,_threadCount:0};function Bb(e,t,s,o,d,h,S,M,B){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=vs(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=vs(0),this.hiddenUpdates=vs(null),this.identifierPrefix=o,this.onUncaughtError=d,this.onCaughtError=h,this.onRecoverableError=S,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=B,this.incompleteTransitions=new Map}function vv(e,t,s,o,d,h,S,M,B,ee,he,we){return e=new Bb(e,t,s,S,B,ee,he,we,M),t=1,h===!0&&(t|=24),h=Jn(3,null,null,t),e.current=h,h.stateNode=e,t=Wl(),t.refCount++,e.pooledCache=t,t.refCount++,h.memoizedState={element:o,isDehydrated:s,cache:t},pe(h),e}function xv(e){return e?(e=Gl,e):Gl}function yv(e,t,s,o,d,h){d=xv(d),o.context===null?o.context=d:o.pendingContext=d,o=Ee(t),o.payload={element:s},h=h===void 0?null:h,h!==null&&(o.callback=h),s=$e(e,o,t),s!==null&&(ma(s,e,t),Ye(s,e,t))}function wv(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var s=e.retryLane;e.retryLane=s!==0&&s<t?s:t}}function mm(e,t){wv(e,t),(e=e.alternate)&&wv(e,t)}function bv(e){if(e.tag===13||e.tag===31){var t=Ms(e,67108864);t!==null&&ma(t,e,67108864),mm(e,67108864)}}function Sv(e){if(e.tag===13||e.tag===31){var t=Aa();t=Nn(t);var s=Ms(e,t);s!==null&&ma(s,e,t),mm(e,t)}}var $u=!0;function Fb(e,t,s,o){var d=z.T;z.T=null;var h=K.p;try{K.p=2,hm(e,t,s,o)}finally{K.p=h,z.T=d}}function Hb(e,t,s,o){var d=z.T;z.T=null;var h=K.p;try{K.p=8,hm(e,t,s,o)}finally{K.p=h,z.T=d}}function hm(e,t,s,o){if($u){var d=pm(o);if(d===null)em(e,t,o,Uu,s),jv(e,o);else if(Ub(d,e,t,s,o))o.stopPropagation();else if(jv(e,o),t&4&&-1<$b.indexOf(e)){for(;d!==null;){var h=Rn(d);if(h!==null)switch(h.tag){case 3:if(h=h.stateNode,h.current.memoizedState.isDehydrated){var S=Qn(h.pendingLanes);if(S!==0){var M=h;for(M.pendingLanes|=2,M.entangledLanes|=2;S;){var B=1<<31-Me(S);M.entanglements[1]|=B,S&=~B}_s(h),(vt&6)===0&&(ju=Ge()+500,ec(0))}}break;case 31:case 13:M=Ms(h,2),M!==null&&ma(M,h,2),Au(),mm(h,2)}if(h=pm(o),h===null&&em(e,t,o,Uu,s),h===d)break;d=h}d!==null&&o.stopPropagation()}else em(e,t,o,null,s)}}function pm(e){return e=xr(e),gm(e)}var Uu=null;function gm(e){if(Uu=null,e=Ht(e),e!==null){var t=u(e);if(t===null)e=null;else{var s=t.tag;if(s===13){if(e=m(t),e!==null)return e;e=null}else if(s===31){if(e=p(t),e!==null)return e;e=null}else if(s===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return Uu=e,null}function Cv(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(aa()){case gn:return 2;case An:return 8;case Kn:case Ci:return 32;case Ta:return 268435456;default:return 32}default:return 32}}var vm=!1,di=null,fi=null,mi=null,rc=new Map,oc=new Map,hi=[],$b="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function jv(e,t){switch(e){case"focusin":case"focusout":di=null;break;case"dragenter":case"dragleave":fi=null;break;case"mouseover":case"mouseout":mi=null;break;case"pointerover":case"pointerout":rc.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":oc.delete(t.pointerId)}}function cc(e,t,s,o,d,h){return e===null||e.nativeEvent!==h?(e={blockedOn:t,domEventName:s,eventSystemFlags:o,nativeEvent:h,targetContainers:[d]},t!==null&&(t=Rn(t),t!==null&&bv(t)),e):(e.eventSystemFlags|=o,t=e.targetContainers,d!==null&&t.indexOf(d)===-1&&t.push(d),e)}function Ub(e,t,s,o,d){switch(t){case"focusin":return di=cc(di,e,t,s,o,d),!0;case"dragenter":return fi=cc(fi,e,t,s,o,d),!0;case"mouseover":return mi=cc(mi,e,t,s,o,d),!0;case"pointerover":var h=d.pointerId;return rc.set(h,cc(rc.get(h)||null,e,t,s,o,d)),!0;case"gotpointercapture":return h=d.pointerId,oc.set(h,cc(oc.get(h)||null,e,t,s,o,d)),!0}return!1}function kv(e){var t=Ht(e.target);if(t!==null){var s=u(t);if(s!==null){if(t=s.tag,t===13){if(t=m(s),t!==null){e.blockedOn=t,Bs(e.priority,function(){Sv(s)});return}}else if(t===31){if(t=p(s),t!==null){e.blockedOn=t,Bs(e.priority,function(){Sv(s)});return}}else if(t===3&&s.stateNode.current.memoizedState.isDehydrated){e.blockedOn=s.tag===3?s.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Pu(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var s=pm(e.nativeEvent);if(s===null){s=e.nativeEvent;var o=new s.constructor(s.type,s);vr=o,s.target.dispatchEvent(o),vr=null}else return t=Rn(s),t!==null&&bv(t),e.blockedOn=s,!1;t.shift()}return!0}function Av(e,t,s){Pu(e)&&s.delete(t)}function Pb(){vm=!1,di!==null&&Pu(di)&&(di=null),fi!==null&&Pu(fi)&&(fi=null),mi!==null&&Pu(mi)&&(mi=null),rc.forEach(Av),oc.forEach(Av)}function qu(e,t){e.blockedOn===t&&(e.blockedOn=null,vm||(vm=!0,n.unstable_scheduleCallback(n.unstable_NormalPriority,Pb)))}var Gu=null;function Mv(e){Gu!==e&&(Gu=e,n.unstable_scheduleCallback(n.unstable_NormalPriority,function(){Gu===e&&(Gu=null);for(var t=0;t<e.length;t+=3){var s=e[t],o=e[t+1],d=e[t+2];if(typeof o!="function"){if(gm(o||s)===null)continue;break}var h=Rn(s);h!==null&&(e.splice(t,3),t-=3,pf(h,{pending:!0,data:d,method:s.method,action:o},o,d))}}))}function Jr(e){function t(B){return qu(B,e)}di!==null&&qu(di,e),fi!==null&&qu(fi,e),mi!==null&&qu(mi,e),rc.forEach(t),oc.forEach(t);for(var s=0;s<hi.length;s++){var o=hi[s];o.blockedOn===e&&(o.blockedOn=null)}for(;0<hi.length&&(s=hi[0],s.blockedOn===null);)kv(s),s.blockedOn===null&&hi.shift();if(s=(e.ownerDocument||e).$$reactFormReplay,s!=null)for(o=0;o<s.length;o+=3){var d=s[o],h=s[o+1],S=d[je]||null;if(typeof h=="function")S||Mv(s);else if(S){var M=null;if(h&&h.hasAttribute("formAction")){if(d=h,S=h[je]||null)M=S.formAction;else if(gm(d)!==null)continue}else M=S.action;typeof M=="function"?s[o+1]=M:(s.splice(o,3),o-=3),Mv(s)}}}function Nv(){function e(h){h.canIntercept&&h.info==="react-transition"&&h.intercept({handler:function(){return new Promise(function(S){return d=S})},focusReset:"manual",scroll:"manual"})}function t(){d!==null&&(d(),d=null),o||setTimeout(s,20)}function s(){if(!o&&!navigation.transition){var h=navigation.currentEntry;h&&h.url!=null&&navigation.navigate(h.url,{state:h.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var o=!1,d=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(s,100),function(){o=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),d!==null&&(d(),d=null)}}}function xm(e){this._internalRoot=e}Vu.prototype.render=xm.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(r(409));var s=t.current,o=Aa();yv(s,o,e,t,null,null)},Vu.prototype.unmount=xm.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;yv(e.current,2,null,e,null,null),Au(),t[Le]=null}};function Vu(e){this._internalRoot=e}Vu.prototype.unstable_scheduleHydration=function(e){if(e){var t=tn();e={blockedOn:null,target:e,priority:t};for(var s=0;s<hi.length&&t!==0&&t<hi[s].priority;s++);hi.splice(s,0,e),s===0&&kv(e)}};var Tv=a.version;if(Tv!=="19.2.7")throw Error(r(527,Tv,"19.2.7"));K.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(r(188)):(e=Object.keys(e).join(","),Error(r(268,e)));return e=g(t),e=e!==null?w(e):null,e=e===null?null:e.stateNode,e};var qb={bundleType:0,version:"19.2.7",rendererPackageName:"react-dom",currentDispatcherRef:z,reconcilerVersion:"19.2.7"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Yu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Yu.isDisabled&&Yu.supportsFiber)try{gs=Yu.inject(qb),mt=Yu}catch{}}return dc.createRoot=function(e,t){if(!c(e))throw Error(r(299));var s=!1,o="",d=Op,h=Ip,S=Bp;return t!=null&&(t.unstable_strictMode===!0&&(s=!0),t.identifierPrefix!==void 0&&(o=t.identifierPrefix),t.onUncaughtError!==void 0&&(d=t.onUncaughtError),t.onCaughtError!==void 0&&(h=t.onCaughtError),t.onRecoverableError!==void 0&&(S=t.onRecoverableError)),t=vv(e,1,!1,null,null,s,o,null,d,h,S,Nv),e[Le]=t.current,Jf(e),new xm(t)},dc.hydrateRoot=function(e,t,s){if(!c(e))throw Error(r(299));var o=!1,d="",h=Op,S=Ip,M=Bp,B=null;return s!=null&&(s.unstable_strictMode===!0&&(o=!0),s.identifierPrefix!==void 0&&(d=s.identifierPrefix),s.onUncaughtError!==void 0&&(h=s.onUncaughtError),s.onCaughtError!==void 0&&(S=s.onCaughtError),s.onRecoverableError!==void 0&&(M=s.onRecoverableError),s.formState!==void 0&&(B=s.formState)),t=vv(e,1,!0,t,s??null,o,d,B,h,S,M,Nv),t.context=xv(null),s=t.current,o=Aa(),o=Nn(o),d=Ee(o),d.callback=null,$e(s,d,o),s=o,t.current.lanes=s,xs(t,s),_s(t),e[Le]=t.current,Jf(e),new Vu(t)},dc.version="19.2.7",dc}var $v;function AS(){if($v)return bm.exports;$v=1;function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(a){console.error(a)}}return n(),bm.exports=kS(),bm.exports}var MS=AS();const th=[{path:"/computer",label:"Computer",icon:Yb},{path:"/sync-server",label:"Sync Server",icon:so},{path:"/permissions",label:"Permissions",icon:pn},{path:"/shared-files",label:"Shared Files",icon:lo},{path:"/diagnostics",label:"Diagnostics",icon:qt},{path:"/settings",label:"Settings",icon:cy}];function jm(n){const a=n.toLowerCase().replace(/\/$/,"")||"/computer";return th.some(i=>i.path===a)?a:"/computer"}function NS(){if(typeof window>"u")return"";const n=window.location.port;return n==="5198"||n==="5179"?window.location.origin:"http://127.0.0.1:5198"}function Uv(n){const a=Number(n||0);return a?`${Math.round(a/1024/1024/1024*10)/10} GB`:"-"}function Pv(n){if(!n)return"-";const a=Date.parse(n);return Number.isFinite(a)?new Date(a).toLocaleString():n}function TS({ok:n}){return n?l.jsx(In,{size:17,"aria-hidden":"true"}):l.jsx(bh,{size:17,"aria-hidden":"true"})}function _t({label:n,value:a,ok:i}){return l.jsxs("div",{className:"client-status-card",children:[l.jsx("span",{children:n}),l.jsx("strong",{children:i===void 0?a:l.jsxs(l.Fragment,{children:[l.jsx(TS,{ok:i})," ",a]})})]})}function RS(){const[n,a]=f.useState(()=>jm(window.location.pathname)),[i,r]=f.useState(null),[c,u]=f.useState(""),[m,p]=f.useState(""),[v,g]=f.useState(!1),[w,y]=f.useState(!1),b=f.useMemo(NS,[]),C=async()=>{y(!0);try{const E=await fetch(`${b}/api/client/status`,{cache:"no-store"});if(!E.ok)throw new Error(`Client runtime returned HTTP ${E.status}.`);const H=await E.json();if(String(H.role||"").toLowerCase()==="hub")throw new Error("This computer is assigned to the Hub role.");r(H),u("")}catch(E){u(E instanceof Error?E.message:String(E))}finally{y(!1)}};f.useEffect(()=>{C();const E=window.setInterval(()=>{C()},5e3);return()=>window.clearInterval(E)},[b]),f.useEffect(()=>{const E=jm(window.location.pathname);window.location.pathname!==E&&(window.history.replaceState({},"",E),a(E));const H=()=>a(jm(window.location.pathname));return window.addEventListener("popstate",H),()=>window.removeEventListener("popstate",H)},[]);const k=E=>{window.history.pushState({},"",E),a(E)},A=async()=>{if(window.confirm("Switch this computer to the Hub role? The Client runtime will stop and LiveDesk will restart as Hub.")){g(!0),p(""),u("");try{const E=await fetch(`${b}/api/client/role`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:"hub"})}),H=await E.json().catch(()=>({}));if(!E.ok||H?.ok===!1)throw new Error(H?.error||`Role change failed with HTTP ${E.status}.`);p("Hub role accepted. LiveDesk is restarting this computer as Hub.")}catch(E){u(E instanceof Error?E.message:String(E))}finally{g(!1)}}},T=!!i?.manager,j=!!i?.runtimeStarted,R=th.find(E=>E.path===n)?.label||"Computer";return l.jsxs("main",{className:"client-app-shell",children:[l.jsxs("header",{className:"client-app-header",children:[l.jsxs("div",{children:[l.jsx("p",{className:"client-eyebrow",children:"LiveDesk Client Runtime"}),l.jsx("h1",{children:i?.deviceName||"This Computer"}),l.jsx("p",{className:"client-subtitle",children:i?.message||"This computer provides its screen and control capabilities to the assigned Hub."})]}),l.jsxs("button",{className:"client-refresh-button",type:"button",onClick:()=>{C()},disabled:w,children:[l.jsx(zc,{size:16,className:w?"client-spin":""}),"Refresh"]})]}),l.jsx("nav",{className:"client-app-nav","aria-label":"Client navigation",children:th.map(E=>{const H=E.icon;return l.jsxs("button",{className:E.path===n?"active":"",type:"button",onClick:()=>k(E.path),children:[l.jsx(H,{size:17}),E.label]},E.path)})}),c&&l.jsxs("aside",{className:"client-error",role:"alert",children:[l.jsx(bh,{size:18})," ",c]}),l.jsxs("section",{className:"client-app-content",children:[l.jsxs("div",{className:"client-page-heading",children:[l.jsxs("div",{children:[l.jsx("p",{className:"client-eyebrow",children:"Client"}),l.jsx("h2",{children:R})]}),l.jsxs("span",{className:`client-runtime-pill ${j?"online":"offline"}`,children:[l.jsx("span",{className:"client-runtime-dot"}),i?.statusLabel||(j?"Starting":"Offline")]})]}),n==="/computer"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"client-card-grid",children:[l.jsx(_t,{label:"Connection",value:T?`Connected to ${i?.manager}`:"Waiting for Hub",ok:T}),l.jsx(_t,{label:"Device ID",value:i?.deviceId||"-"}),l.jsx(_t,{label:"LiveDesk version",value:i?.appVersion||"-"}),l.jsx(_t,{label:"Last connected",value:Pv(i?.connectedAt)})]}),l.jsxs("section",{className:"client-panel",children:[l.jsx("h3",{children:"Capabilities"}),l.jsxs("div",{className:"client-capability-list",children:[l.jsx(_t,{label:"Screen sharing",value:j?"Ready":"Starting",ok:j}),l.jsx(_t,{label:"Remote input",value:j?"Ready":"Waiting",ok:j}),l.jsx(_t,{label:"System audio",value:"Available when enabled"}),l.jsx(_t,{label:"File sharing",value:"Available",ok:!0})]})]})]}),n==="/sync-server"&&l.jsxs("section",{className:"client-panel",children:[l.jsx("h3",{children:"Assigned Hub"}),l.jsxs("div",{className:"client-card-grid",children:[l.jsx(_t,{label:"Hub",value:i?.manager||"Not connected",ok:T}),l.jsx(_t,{label:"Transport",value:T?"Hub connection active":"Waiting for discovery"}),l.jsx(_t,{label:"Screen streaming",value:j?"Ready":"Not started",ok:j}),l.jsx(_t,{label:"Last connected",value:Pv(i?.connectedAt)})]}),l.jsx("p",{className:"client-muted",children:"Reconnect and Hub selection remain controlled by the unified launcher and saved account assignment."})]}),n==="/permissions"&&l.jsxs("section",{className:"client-panel",children:[l.jsx("h3",{children:"Local permissions"}),l.jsxs("div",{className:"client-card-grid",children:[l.jsx(_t,{label:"Screen capture",value:j?"Checked by RemoteFast":"Not checked",ok:j}),l.jsx(_t,{label:"Remote input",value:j?"Checked by RemoteFast":"Not checked",ok:j}),l.jsx(_t,{label:"Firewall",value:"Outbound client connection"}),l.jsx(_t,{label:"Start with system",value:i?.startup?"Enabled":"Disabled",ok:i?.startup})]})]}),n==="/shared-files"&&l.jsxs("section",{className:"client-panel",children:[l.jsx("h3",{children:"Shared files"}),l.jsx("p",{className:"client-muted",children:"Files received from the assigned Hub are stored in the configured LiveDesk client folder."}),l.jsx(_t,{label:"File sharing",value:j?"Available":"Waiting for runtime",ok:j})]}),n==="/diagnostics"&&l.jsxs("section",{className:"client-panel",children:[l.jsx("h3",{children:"Runtime diagnostics"}),l.jsxs("div",{className:"client-card-grid",children:[l.jsx(_t,{label:"Platform",value:`${i?.system?.platform||"-"} ${i?.system?.release||""}`.trim()}),l.jsx(_t,{label:"Architecture",value:i?.system?.arch||"-"}),l.jsx(_t,{label:"Process ID",value:i?.system?.pid?String(i.system.pid):"-"}),l.jsx(_t,{label:"Memory",value:`${Uv(i?.system?.memory?.free)} free / ${Uv(i?.system?.memory?.total)} total`})]})]}),n==="/settings"&&l.jsxs("section",{className:"client-panel",children:[l.jsx("h3",{children:"Client settings"}),l.jsxs("div",{className:"client-card-grid",children:[l.jsx(_t,{label:"Device name",value:i?.deviceName||"-"}),l.jsx(_t,{label:"Device ID",value:i?.deviceId||"-"}),l.jsx(_t,{label:"Runtime role",value:"Client",ok:!0}),l.jsx(_t,{label:"Startup",value:i?.startup?"Enabled":"Disabled",ok:i?.startup})]}),l.jsx("p",{className:"client-muted",children:"Role changes require a safe runtime restart and are handled by the unified LiveDesk launcher."}),m&&l.jsx("p",{className:"client-success",children:m}),l.jsx("button",{className:"client-danger-button",type:"button",onClick:()=>{A()},disabled:v,children:v?"Switching role…":"Switch this computer to Hub"})]})]})]})}const ES="https://otbyfkjxrkngvjziawki.supabase.co",DS="sb_publishable_NpUs0RDJH2YnllsqTKO6TQ_1jTdSsNQ",ms=wS(ES,DS,{auth:{autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"pkce",storageKey:"livedesk.mindexec.supabase.auth"}});function vi(n,a,i){if(i<0||a<0||a+i>n.length)throw new Error("Invalid LZO1X block: input overrun.")}function km(n,a,i){let r=0;for(;vi(n,a.inputIndex,1),n[a.inputIndex]===0;)r+=1,a.inputIndex+=1;const c=r*255+i+n[a.inputIndex];return a.inputIndex+=1,c}function Wu(n,a,i,r){if(vi(n,a.inputIndex,r),a.outputIndex+r>i.length)throw new Error("Invalid LZO1X block: output overrun.");i.set(n.subarray(a.inputIndex,a.inputIndex+r),a.outputIndex),a.inputIndex+=r,a.outputIndex+=r}function LS(n,a,i,r){const c=a-i;if(c<=0||r<=0)throw new Error("Invalid LZO1X block: invalid match distance.");let u=Math.min(c,r);for(n.set(n.subarray(i,i+u),a);u<r;){const m=Math.min(u,r-u);n.copyWithin(a+u,a,a+m),u+=m}return a+r}function xy(n,a){if(!(n instanceof Uint8Array)||n.length<3||a<0)throw new Error("Invalid LZO1X block.");const i=new Uint8Array(a),r={inputIndex:0,outputIndex:0};let c=0,u=0;if(n[r.inputIndex]>=22){const m=n[r.inputIndex]-17;r.inputIndex+=1,Wu(n,r,i,m),c=4}else n[r.inputIndex]>=18&&(c=n[r.inputIndex]-17,r.inputIndex+=1,Wu(n,r,i,c));for(;;){vi(n,r.inputIndex,1);const m=n[r.inputIndex];r.inputIndex+=1;let p,v;if((m&192)!==0)vi(n,r.inputIndex,1),v=r.outputIndex-((n[r.inputIndex]<<3)+(m>>2&7)+1),r.inputIndex+=1,u=(m>>5)+1,p=m&3;else if((m&32)!==0){u=(m&31)+2,u===2&&(u+=km(n,r,31)),vi(n,r.inputIndex,2);const g=n[r.inputIndex]|n[r.inputIndex+1]<<8;r.inputIndex+=2,v=r.outputIndex-((g>>2)+1),p=g&3}else if((m&16)!==0){u=(m&7)+2,u===2&&(u+=km(n,r,7)),vi(n,r.inputIndex,2);const g=n[r.inputIndex]|n[r.inputIndex+1]<<8;if(r.inputIndex+=2,v=r.outputIndex-(((m&8)<<11)+(g>>2)),p=g&3,v===r.outputIndex)break;v-=16384}else if(c===0){let g=m+3;g===3&&(g+=km(n,r,15)),Wu(n,r,i,g),c=4;continue}else c!==4?(vi(n,r.inputIndex,1),p=m&3,v=r.outputIndex-((m>>2)+(n[r.inputIndex]<<2)+1),r.inputIndex+=1,u=2):(vi(n,r.inputIndex,1),p=m&3,v=r.outputIndex-((m>>2)+(n[r.inputIndex]<<2)+2049),r.inputIndex+=1,u=3);if(v<0||r.outputIndex+u+p>i.length)throw new Error("Invalid LZO1X block: lookbehind overrun.");r.outputIndex=LS(i,r.outputIndex,v,u),c=p,Wu(n,r,i,p)}if(u!==3||r.inputIndex!==n.length||r.outputIndex!==i.length)throw new Error("Invalid LZO1X block: incomplete output.");return i}const qv=16,Gv=8,_S=24*1024*1024,yy=new Uint8Array(new Uint32Array([16909060]).buffer)[0]===4,nh=new Uint32Array(65536);for(let n=0;n<nh.length;n+=1){const a=Math.round((n>>11&31)*255/31),i=Math.round((n>>5&63)*255/63),r=Math.round((n&31)*255/31);nh[n]=yy?(a|i<<8|r<<16|4278190080)>>>0:(a<<24|i<<16|r<<8|255)>>>0}function gi(n,a){return n[a]|n[a+1]<<8}function zS(n,a){const i=Number(a);if(!Number.isSafeInteger(i)||i<qv||i>_S)throw new Error(`Invalid Mode 5 packet length: ${a}.`);const r=xy(new Uint8Array(n),i);if(r[0]!==76||r[1]!==68||r[2]!==53||r[3]!==68)throw new Error("Invalid Mode 5 packet magic.");if(r[4]!==1)throw new Error(`Unsupported Mode 5 packet version: ${r[4]}.`);const c=(r[5]&1)!==0,u=gi(r,6),m=gi(r,8),p=gi(r,10),v=gi(r,12);if(u<=0||m<=0||u>3840||m>2160)throw new Error(`Invalid Mode 5 frame size: ${u}x${m}.`);if(p<=0||p>256||v>8192)throw new Error(`Invalid Mode 5 tile header: ${p}/${v}.`);const g=[];let w=qv;for(let y=0;y<v;y+=1){if(w+Gv>r.length)throw new Error("Mode 5 tile header is truncated.");const b=gi(r,w),C=gi(r,w+2),k=gi(r,w+4),A=gi(r,w+6);w+=Gv;const T=k*A*2;if(k<=0||A<=0||k>p||A>p||b+k>u||C+A>m||w+T>r.length)throw new Error(`Invalid Mode 5 tile ${y}.`);g.push({x:b,y:C,width:k,height:A,pixels:r.subarray(w,w+T)}),w+=T}if(w!==r.length)throw new Error(`Mode 5 packet has ${r.length-w} trailing bytes.`);return{keyFrame:c,width:u,height:m,tileSize:p,tiles:g}}function OS(n,a,i,r){if(!(n instanceof Uint8ClampedArray)||n.length!==a*i*4||r.width!==a||r.height!==i)throw new Error("Mode 5 canvas state does not match the packet dimensions.");let c=a,u=i,m=0,p=0;const v=new Uint32Array(n.buffer,n.byteOffset,n.byteLength>>>2);for(const g of r.tiles){const w=yy&&(g.pixels.byteOffset&1)===0?new Uint16Array(g.pixels.buffer,g.pixels.byteOffset,g.pixels.byteLength>>>1):null;let y=0;for(let b=0;b<g.height;b+=1){let C=(g.y+b)*a+g.x;for(let k=0;k<g.width;k+=1){const A=y<<1,T=w?w[y]:g.pixels[A]|g.pixels[A+1]<<8;v[C]=nh[T],y+=1,C+=1}}c=Math.min(c,g.x),u=Math.min(u,g.y),m=Math.max(m,g.x+g.width),p=Math.max(p,g.y+g.height)}return r.tiles.length>0?{x:c,y:u,width:m-c,height:p-u}:null}const va=new WeakMap,Ec=new WeakMap,ah=new WeakMap,Dc=new Set,sr=new Set,jd=new WeakMap,sh=new WeakMap,lh=new WeakMap,kd=new WeakMap,Ah=32,IS=2,BS=2,FS=2,HS=18,$S=40,US=0,PS=750,wy=80,Vv=5,qS=150,GS=24,VS=180,YS=1200,WS=18,KS=.65,QS=2e3,XS=500,by=250;let Ad=!1;function ZS(){return typeof navigator>"u"?!1:/mac/i.test(`${navigator.platform||""} ${navigator.userAgent||""}`)}function JS(){const n=Math.max(1,Number(navigator.hardwareConcurrency||8));return Math.max(4,Math.min(16,Math.round(n/2)))}let or={h264DecodeAcceleration:"prefer-hardware",h264HardwareDecoderBudget:JS()};function e0(n){n.h264DecodeAcceleration&&(or={...or,h264DecodeAcceleration:n.h264DecodeAcceleration}),Number.isFinite(Number(n.h264HardwareDecoderBudget))&&(or.h264HardwareDecoderBudget=Math.max(1,Math.min(64,Math.round(Number(n.h264HardwareDecoderBudget)))))}function Sy(n,a=or.h264DecodeAcceleration){const i=jd.get(n);return i?.requested===a?(i.actual!=="prefer-hardware"&&sr.delete(n),i.actual):(i&&jd.delete(n),a!=="prefer-hardware"?(sr.delete(n),a):sr.has(n)?"prefer-hardware":sr.size<or.h264HardwareDecoderBudget?(sr.add(n),"prefer-hardware"):"prefer-software")}function _d(n,a){return a!=="prefer-hardware"?!1:(jd.set(n,{requested:a,actual:"prefer-software"}),sr.delete(n),!0)}function t0(n,a,i,r=64){try{let c=sh.get(n);c||(c={canvas:document.createElement("canvas"),lastHash:"",initialized:!1},sh.set(n,c));const u=Math.max(8,Math.min(64,Math.round(r))),m=Math.max(1,Math.round(u*Math.max(1,i)/Math.max(1,a)));(c.canvas.width!==u||c.canvas.height!==m)&&(c.canvas.width=u,c.canvas.height=m);const p=c.canvas.getContext("2d",{willReadFrequently:!0});if(!p)return{visualHash:"",visualChanged:!0};p.drawImage(n,0,0,Math.max(1,a),Math.max(1,i),0,0,u,m);const v=p.getImageData(0,0,u,m).data;let g=2166136261;for(let b=0;b<v.length;b+=4)g^=v[b],g=Math.imul(g,16777619),g^=v[b+1],g=Math.imul(g,16777619),g^=v[b+2],g=Math.imul(g,16777619);const w=(g>>>0).toString(16).padStart(8,"0"),y=!c.initialized||w!==c.lastHash;return c.initialized=!0,c.lastHash=w,{visualHash:w,visualChanged:y}}catch{return{visualHash:"",visualChanged:!0}}}function ih(n,a,i,r=by,c=64){let u=lh.get(n);u||(u={lastHash:"",initialized:!1,lastCanvasSampleAt:0},lh.set(n,u));const m=performance.now();if(u.initialized&&r>0&&m-u.lastCanvasSampleAt<r)return{visualHash:u.lastHash,visualChanged:!1};const p=t0(n,a,i,c);return u.initialized=!0,u.lastHash=p.visualHash,u.lastCanvasSampleAt=m,p}function n0(n,a){let i=kd.get(n);i||(i={lastHash:"",initialized:!1},kd.set(n,i));const r=String(a.contentHash||""),c=!i.initialized||!r||r!==i.lastHash;return i.initialized=!0,i.lastHash=r,{visualHash:r,visualChanged:c}}function Cy(n,a){const i=ah.get(n);if(i)return i;const r=n.getContext("2d",{alpha:!1,desynchronized:a==="interactive"});if(r){const c=r.getContextAttributes?.(),u={context:r,presentation:c?.desynchronized?"desync":"sync"};return ah.set(n,u),u}return null}function a0(n){const a=String(n.frameMode||n.mode||"").toLowerCase(),i=String(n.compression||"").toLowerCase(),r=String(n.mimeType||"").toLowerCase();return a==="mode2-lzo"||i==="lzo1x"||r==="application/vnd.livedesk.lzo-rgb565"||a==="mode2-lz4"||String(n.compression||"").toLowerCase()==="lz4"||r==="application/vnd.livedesk.lz4-raw"}function s0(n){return String(n.frameMode||n.mode||"").toLowerCase()==="mode3-h264-hw"||String(n.codec||"").toLowerCase()==="h264"||String(n.mimeType||"").toLowerCase()==="video/h264"}function l0(n){const a=String(n.frameMode||n.mode||"").toLowerCase(),i=String(n.mimeType||"").toLowerCase();return a==="mode5-lzo-delta"||i==="application/vnd.livedesk.lzo-rgb565-delta"}function Yv(n,a,i){let r=i,c=a;if(r===15){let u=255;for(;u===255;){if(c>=n.length)throw new Error("Invalid LZ4 block: length overrun.");u=n[c],c+=1,r+=u}}return{length:r,cursor:c}}function i0(n,a){const i=new Uint8Array(a);let r=0,c=0;for(;r<n.length;){const u=n[r];r+=1;const m=Yv(n,r,u>>4);r=m.cursor;const p=m.length;if(r+p>n.length||c+p>i.length)throw new Error("Invalid LZ4 block: literal overrun.");if(i.set(n.subarray(r,r+p),c),r+=p,c+=p,r>=n.length)break;if(r+2>n.length)throw new Error("Invalid LZ4 block: missing offset.");const v=n[r]|n[r+1]<<8;if(r+=2,v<=0||v>c)throw new Error("Invalid LZ4 block: bad match offset.");const g=Yv(n,r,u&15);r=g.cursor;const w=g.length+4;if(c+w>i.length)throw new Error("Invalid LZ4 block: match overrun.");let y=c-v;for(let b=0;b<w;b+=1)i[c]=i[y],c+=1,y+=1}if(c!==i.length)throw new Error("Invalid LZ4 block: incomplete output.");return i}function r0(n){const a=Math.max(1,Math.floor(n.width||0)),i=Math.max(1,Math.floor(n.height||0)),r=String(n.compression||"").toLowerCase(),c=String(n.pixelFormat||n.codec||"").toLowerCase();if(r==="lzo1x"||String(n.frameMode||n.mode||"").toLowerCase()==="mode2-lzo"||String(n.mimeType||"").toLowerCase()==="application/vnd.livedesk.lzo-rgb565"){const w=Math.max(1,Math.floor(n.bytesPerPixel||2)),y=a*i*2,b=Math.floor(n.uncompressedByteLength||y);if(w!==2||b!==y)throw new Error(`Invalid mode2 RGB565 frame size: ${b} for ${a}x${i}.`);if(c&&c!=="rgb565le"&&c!=="rgb565")throw new Error(`Unsupported mode2 pixel format: ${c}`);const C=xy(new Uint8Array(n.payload),y),k=new Uint8ClampedArray(a*i*4);for(let A=0,T=0;A<C.length;A+=2,T+=4){const j=C[A]|C[A+1]<<8,R=j>>11&31,E=j>>5&63,H=j&31;k[T]=R<<3|R>>2,k[T+1]=E<<2|E>>4,k[T+2]=H<<3|H>>2,k[T+3]=255}return new ImageData(k,a,i)}const m=Math.max(1,Math.floor(n.bytesPerPixel||4)),p=Math.max(a*i*m,Math.floor(n.uncompressedByteLength||0)),v=i0(new Uint8Array(n.payload),p);if(m!==4)throw new Error(`Unsupported mode2 pixel size: ${m}`);const g=new Uint8ClampedArray(a*i*4);if(c==="rgba32"||c==="rgba")g.set(v.subarray(0,g.length));else for(let w=0,y=0;y<g.length;w+=4,y+=4)g[y]=v[w+2],g[y+1]=v[w+1],g[y+2]=v[w],g[y+3]=v[w+3];return new ImageData(g,a,i)}function Wv(n,a="smooth"){const i=window.VideoDecoder;if(!i||!window.EncodedVideoChunk)throw new Error("WebCodecs H.264 decode is not supported in this browser.");const r=va.get(n);if(r&&r.decoder.state!=="closed"&&r.latencyMode===a)return r;r&&hs(n);let c;return c={decoder:new i({output:m=>{if(va.get(n)!==c){m.close();return}const p=Number(m.timestamp||0);c.outputSerial+=1;let v=c.pendingFrames.get(p);if(v)c.pendingFrames.delete(p);else if(c.pendingFrames.size>0){const k=c.pendingFrames.entries().next().value;k&&(c.pendingFrames.delete(k[0]),v=k[1],c.timestampFallbacks+=1)}const g=m.displayWidth||m.codedWidth||n.width||960,w=m.displayHeight||m.codedHeight||n.height||540,y=Number(v?.frame.durationUs||0),b=Number(m.duration||0),C=Math.max(16,Math.min(250,(y>0?y:b||83333)/1e3));for(c.targetPaintIntervalMs=C,c.decodedFrames.push({videoFrame:m,pending:v,decodedAt:performance.now(),width:g,height:w,durationMs:C}),c.lastOutputAt=performance.now();c.decodedFrames.length>jy(c);)Md(c,c.decodedFrames.shift());ky(c),c.renderTimer!==null&&c.renderScheduledAt>0&&performance.now()-c.renderScheduledAt>XS&&(typeof document>"u"||document.visibilityState==="visible")&&(window.cancelAnimationFrame(c.renderTimer),c.renderTimer=null,c.renderScheduledAt=0),c.renderTimer!==null&&c.decodedFrames.length>=Ah&&(window.cancelAnimationFrame(c.renderTimer),c.renderTimer=null,c.renderScheduledAt=0),Nd(n,c)},error:()=>{va.get(n)===c&&(_d(n,c.hardwareAcceleration),Mh(c),Dc.delete(n),va.delete(n))}}),configured:!1,configKey:"",codec:"",hardwareAcceleration:Sy(n),latencyMode:a,keyFrameSeen:!1,droppedForLatency:0,pendingFrames:new Map,decodedFrames:[],renderTimer:null,renderScheduledAt:0,flushTimer:null,flushInFlight:!1,flushCount:0,timestampFallbacks:0,inputSerial:0,outputSerial:0,lastFlushInputSerial:0,lastOutputAt:0,lastPaintAt:0,lastInputAt:0,interactiveBufferPrimed:!1,interactiveBufferStartedAt:0,interactiveBufferWaitCount:0,interactiveBufferWaitMs:0,interactiveQueueDrainCount:0,lastInputFrameSeq:void 0,targetPaintIntervalMs:1e3/12,nextChunkTimestampUs:0,healthSampleStartedAt:performance.now(),healthInputSerial:0,healthOutputSerial:0},va.set(n,c),Dc.add(n),c}function Mh(n){n.renderTimer!==null&&(window.cancelAnimationFrame(n.renderTimer),n.renderTimer=null),n.renderScheduledAt=0,n.flushTimer!==null&&(window.clearTimeout(n.flushTimer),n.flushTimer=null),n.flushInFlight=!1;for(const a of n.decodedFrames)a.videoFrame.close();n.decodedFrames=[],n.interactiveBufferPrimed=!1,n.interactiveBufferStartedAt=0}function Md(n,a){a&&(a.videoFrame.close(),n.droppedForLatency+=1)}function jy(n){return n.latencyMode==="interactive"?BS:String(n.decodedFrames[0]?.pending?.frame.frameMode||n.decodedFrames[0]?.pending?.frame.mode||"").toLowerCase()==="mode4-h264-atlas"?IS:Ah}function ky(n,a=performance.now()){const i=jy(n);for(;n.decodedFrames.length>i;)Md(n,n.decodedFrames.shift());const r=n.latencyMode==="interactive"?wy:PS;let c=n.decodedFrames[0];for(;n.decodedFrames.length>1&&c?.pending&&a-c.pending.queuedAt>r;)Md(n,n.decodedFrames.shift()),c=n.decodedFrames[0]}function Ay(n,a){if(a.hardwareAcceleration!=="prefer-hardware"||a.flushTimer!==null||a.flushInFlight)return;const i=a.latencyMode==="interactive"?GS:qS,r=a.latencyMode==="interactive";a.flushTimer=window.setTimeout(async()=>{a.flushTimer=null;const c=performance.now();for(const[p,v]of a.pendingFrames.entries())c-v.queuedAt>QS&&a.pendingFrames.delete(p);if(va.get(n)!==a||a.decoder.state!=="configured"||a.pendingFrames.size===0||a.inputSerial<=a.lastFlushInputSerial||!r&&a.lastOutputAt>0&&c-a.lastOutputAt<i)return;const u=a.inputSerial,m=performance.now();a.flushInFlight=!0,a.flushCount+=1;try{await a.decoder.flush(),a.lastFlushInputSerial=Math.max(a.lastFlushInputSerial,u)}catch{va.get(n)===a&&pd(a)}finally{a.flushInFlight=!1;const p=performance.now()-m;if(r&&p>=VS&&a.hardwareAcceleration==="prefer-hardware"){Ad=!0,_d(n,a.hardwareAcceleration),hs(n);return}va.get(n)===a&&a.inputSerial>u&&a.pendingFrames.size>0&&(r||performance.now()-a.lastOutputAt>=i)&&Ay(n,a)}},i)}function Kv(n,a,i){const r=performance.now();try{(n.width!==i.width||n.height!==i.height)&&(n.width=i.width,n.height=i.height);const c=Cy(n,a.latencyMode);if(c?.context.drawImage(i.videoFrame,0,0,i.width,i.height),i.pending){const u=performance.now(),p=a.latencyMode==="interactive"?n0(n,i.pending.frame):ih(n,i.width,i.height,by,64);try{a.onPaint?.(i.pending.frame,{deviceId:i.pending.frame.deviceId,frameSeq:i.pending.frame.frameSeq,mode:i.pending.frame.frameMode||i.pending.frame.mode||i.pending.frame.codec||i.pending.frame.mimeType,width:i.width,height:i.height,byteLength:i.pending.frame.byteLength,queuedForMs:Math.max(0,r-i.pending.queuedAt),decodedForMs:Math.max(0,i.decodedAt-i.pending.queuedAt),scheduledForMs:Math.max(0,r-i.decodedAt),drawMs:Math.max(0,u-r),queueSize:i.pending.queueSize,renderQueueSize:a.decodedFrames.length,droppedForLatency:a.droppedForLatency,h264DecodeAcceleration:a.hardwareAcceleration,decoderLabel:a.hardwareAcceleration,decoderFlushCount:a.flushCount,decoderTimestampFallbacks:a.timestampFallbacks,decoderInputCount:a.inputSerial,decoderOutputCount:a.outputSerial,targetPaintIntervalMs:a.targetPaintIntervalMs,canvasPresentation:c?.presentation||"sync",interactiveBufferWaitCount:a.interactiveBufferWaitCount,interactiveBufferWaitMs:a.interactiveBufferWaitMs,interactiveQueueDrainCount:a.interactiveQueueDrainCount,visualHash:p.visualHash,visualChanged:p.visualChanged,paintedAt:u})}catch{}}a.lastPaintAt=performance.now()}finally{i.videoFrame.close()}}function Nd(n,a){if(a.renderTimer!==null||a.decodedFrames.length===0)return;const i=Math.max(16,Math.min(250,a.targetPaintIntervalMs||1e3/12)),r=()=>{if(a.renderTimer=null,a.renderScheduledAt=0,a.decodedFrames.length===0)return;const c=performance.now();if(ky(a,c),a.decodedFrames.length===0)return;if(a.latencyMode==="interactive"){const v=a.targetPaintIntervalMs<=$S,g=a.targetPaintIntervalMs<=20;if(g&&!a.interactiveBufferPrimed){a.interactiveBufferStartedAt<=0&&(a.interactiveBufferStartedAt=c,a.interactiveBufferWaitCount+=1);const A=a.decodedFrames.length>=FS,T=c-a.interactiveBufferStartedAt>=HS;if(!A&&!T){a.renderScheduledAt=performance.now(),a.renderTimer=window.requestAnimationFrame(r);return}a.interactiveBufferWaitMs+=Math.max(0,c-a.interactiveBufferStartedAt),a.interactiveBufferPrimed=!0}else g||(a.interactiveBufferPrimed=!0);const w=a.decodedFrames[0],y=w?.pending?Math.max(0,c-w.pending.queuedAt):0,b=a.lastPaintAt>0?a.lastPaintAt+i:c;if(!(!v||c+Vv>=b||y>=wy)){a.renderScheduledAt=performance.now(),a.renderTimer=window.requestAnimationFrame(r);return}const k=a.decodedFrames.shift();if(k)try{Kv(n,a,k)}catch{}a.decodedFrames.length===0&&(a.interactiveQueueDrainCount+=1,a.interactiveBufferPrimed=!1,a.interactiveBufferStartedAt=0),Nd(n,a);return}const u=a.lastPaintAt>0?a.lastPaintAt+i:c+US;if(!(c+Vv>=u||a.decodedFrames.length>=Ah-1)){a.renderScheduledAt=performance.now(),a.renderTimer=window.requestAnimationFrame(r);return}const p=a.decodedFrames.shift();if(p)try{Kv(n,a,p)}catch{}Nd(n,a)};a.renderScheduledAt=performance.now(),a.renderTimer=window.requestAnimationFrame(r)}function My(n,a){if(va.get(n)!==a||a.decoder.state==="closed")return!1;for(a.renderTimer!==null&&(window.cancelAnimationFrame(a.renderTimer),a.renderTimer=null),a.renderScheduledAt=0;a.decodedFrames.length>1;)Md(a,a.decodedFrames.shift());return a.lastPaintAt=0,a.interactiveBufferPrimed=!1,a.interactiveBufferStartedAt=0,Nd(n,a),!0}function Am(){if(!(typeof document>"u"||document.visibilityState!=="visible"))for(const n of Dc){const a=va.get(n);if(!a||a.decoder.state==="closed"){Dc.delete(n);continue}My(n,a)}}typeof document<"u"&&typeof window<"u"&&(document.addEventListener("visibilitychange",Am),window.addEventListener("focus",Am),window.addEventListener("pageshow",Am));function hs(n){sr.delete(n),Dc.delete(n),kd.delete(n);const a=va.get(n);if(a){va.delete(n);try{Mh(a),a.decoder.state!=="closed"&&a.decoder.close()}catch{}}}function fc(n){n&&(jd.delete(n),ah.delete(n),lh.delete(n),sh.delete(n),kd.delete(n),Ec.delete(n),hs(n))}function pd(n,a=1){try{n.decoder.state!=="closed"&&n.decoder.reset()}catch{}n.configured=!1,n.configKey="",n.keyFrameSeen=!1,n.pendingFrames.clear(),Mh(n),n.lastPaintAt=0,n.lastOutputAt=0,n.lastInputAt=0,n.interactiveBufferPrimed=!1,n.interactiveBufferStartedAt=0,n.lastInputFrameSeq=void 0,n.nextChunkTimestampUs=0,n.healthSampleStartedAt=performance.now(),n.healthInputSerial=n.inputSerial,n.healthOutputSerial=n.outputSerial,n.droppedForLatency+=Math.max(1,Math.min(1e4,Math.floor(a)))}function Ku(n,a,i,r){n.decoder.configure(a),n.configured=!0,n.configKey=i,n.codec=a.codec,n.hardwareAcceleration=r,n.keyFrameSeen=!1,n.nextChunkTimestampUs=0,n.lastInputFrameSeq=void 0}function o0(n,a){if(a.latencyMode!=="interactive"||a.hardwareAcceleration!=="prefer-hardware")return!1;const i=performance.now();if(i-a.healthSampleStartedAt<YS)return!1;const r=a.inputSerial-a.healthInputSerial,c=a.outputSerial-a.healthOutputSerial;return a.healthSampleStartedAt=i,a.healthInputSerial=a.inputSerial,a.healthOutputSerial=a.outputSerial,r<WS||c/Math.max(1,r)>=KS?!1:(Ad=!0,_d(n,a.hardwareAcceleration),hs(n),!0)}function Mm(n,a=1){if(!n)return!1;const i=va.get(n);return i?(i.droppedForLatency+=Math.max(1,Math.min(1e4,Math.floor(a))),hs(n),!0):!1}function c0(n){if(!n)return!1;const a=va.get(n);return a?My(n,a):!1}function u0(n,a,i,r="interactive"){hs(n);const c=performance.now(),u=zS(a.payload,a.uncompressedByteLength||0),m=String(a.streamId||"mode5");let p=Ec.get(n);if(!p||p.streamId!==m||p.width!==u.width||p.height!==u.height){const A=new Uint8ClampedArray(u.width*u.height*4);for(let T=3;T<A.length;T+=4)A[T]=255;p={streamId:m,width:u.width,height:u.height,rgba:A,imageData:new ImageData(A,u.width,u.height),keyFrameSeen:!1,inputSerial:0,outputSerial:0},Ec.set(n,p)}if(!p)throw new Error("Mode 5 canvas state could not be initialized.");p.inputSerial+=1;const g=Number(a.streamFrameSeq||0);if(g>0&&(p.lastStreamFrameSeq=g),!u.keyFrame&&!p.keyFrameSeen)return;u.keyFrame&&(p.keyFrameSeen=!0);const w=OS(p.rgba,p.width,p.height,u),y=performance.now();(n.width!==p.width||n.height!==p.height)&&(n.width=p.width,n.height=p.height);const b=Cy(n,r),C=performance.now();w&&b?.context.putImageData(p.imageData,0,0,w.x,w.y,w.width,w.height);const k=performance.now();p.outputSerial+=1,i?.(a,{deviceId:a.deviceId,frameSeq:a.frameSeq,mode:a.frameMode||a.mode||a.mimeType,width:p.width,height:p.height,byteLength:a.byteLength,queuedForMs:Math.max(0,k-c),decodedForMs:Math.max(0,y-c),scheduledForMs:0,drawMs:Math.max(0,k-C),queueSize:0,renderQueueSize:0,droppedForLatency:0,h264DecodeAcceleration:"prefer-software",decoderLabel:"lzo-rgb565-delta",decoderFlushCount:0,decoderTimestampFallbacks:0,decoderInputCount:p.inputSerial,decoderOutputCount:p.outputSerial,targetPaintIntervalMs:Math.max(1,Number(a.durationUs||0)/1e3||1e3/30),canvasPresentation:b?.presentation||"sync",interactiveBufferWaitCount:0,interactiveBufferWaitMs:0,interactiveQueueDrainCount:0,visualHash:String(a.contentHash||""),visualChanged:Number(a.deltaVisualTileCount||0)>0,paintedAt:k})}const Nm=[{code:30,maxFrameSize:1620,maxMacroblocksPerSecond:40500},{code:31,maxFrameSize:3600,maxMacroblocksPerSecond:108e3},{code:32,maxFrameSize:5120,maxMacroblocksPerSecond:216e3},{code:40,maxFrameSize:8192,maxMacroblocksPerSecond:245760},{code:41,maxFrameSize:8192,maxMacroblocksPerSecond:245760},{code:42,maxFrameSize:8704,maxMacroblocksPerSecond:522240},{code:50,maxFrameSize:22080,maxMacroblocksPerSecond:589824},{code:51,maxFrameSize:36864,maxMacroblocksPerSecond:983040},{code:52,maxFrameSize:36864,maxMacroblocksPerSecond:2073600}];function Qv(n,a){for(let i=Math.max(0,a);i+3<n.length;i+=1)if(!(n[i]!==0||n[i+1]!==0)){if(n[i+2]===1)return{index:i,length:3};if(n[i+2]===0&&n[i+3]===1)return{index:i,length:4}}return null}function d0(n){const a=new Uint8Array(n);let i=0;for(;i<a.length;){const r=Qv(a,i);if(!r)break;const c=r.index+r.length,u=Qv(a,c),m=u?.index??a.length;if(c<m&&(a[c]&31)===7){const p=[];let v=0;for(let g=c+1;g<m;g+=1){const w=a[g];if(v>=2&&w===3){v=0;continue}p.push(w),v=w===0?v+1:0}if(p.length>=3)return`avc1.${p.slice(0,3).map(g=>g.toString(16).toUpperCase().padStart(2,"0")).join("")}`}i=u?u.index:a.length}return""}function f0(n,a,i,r,c=""){const u=Math.ceil(n/16)*Math.ceil(a/16),m=i>0?1e6/i:30,p=u*m,v=Nm.find(g=>u<=g.maxFrameSize&&p<=g.maxMacroblocksPerSecond)||Nm[Nm.length-1];return d0(r)||c||`avc1.42E0${v.code.toString(16).toUpperCase().padStart(2,"0")}`}function m0(n,a,i,r,c="smooth"){Ec.delete(n);const u=String(a.h264Format||"").toLowerCase()==="avc"?"avc":"annexb",m=Math.max(1,Math.floor(a.width||960)),p=Math.max(1,Math.floor(a.height||540)),v=Math.max(1,Math.floor(a.durationUs||1e6/12));let g=Wv(n,c);const w=f0(m,p,v,a.payload,g.codec),y=String(a.frameMode||a.mode||"").toLowerCase(),b=c==="interactive"&&r==="prefer-hardware"&&ZS(),k=y==="mode4-h264-atlas"?"prefer-software":Sy(n,c==="interactive"&&(Ad||b)?"prefer-software":r),A=[a.streamId||"",a.commandId||"",m,p,w,u,k,c].join("|");g.onPaint=i,g.configured&&g.decoder.state!=="configured"&&(g.configured=!1,g.configKey=""),g.configured&&g.configKey!==A&&(hs(n),g=Wv(n,c),g.onPaint=i);const T={codec:w,codedWidth:m,codedHeight:p,hardwareAcceleration:k,optimizeForLatency:!0,avc:{format:u}};g.configured||Ku(g,T,A,k);const j=a.isKeyFrame===!0||String(a.chunkType||"").toLowerCase()==="key";Number(a.frameSeq||0);const R=Number(a.streamFrameSeq||0);if(R>0&&g.lastInputFrameSeq!==void 0){if(R<=g.lastInputFrameSeq){if(!j||R===g.lastInputFrameSeq)return;pd(g,g.lastInputFrameSeq-R+1),Ku(g,T,A,k)}if(R>g.lastInputFrameSeq+1){if(pd(g,R-g.lastInputFrameSeq-1),!j)return;Ku(g,T,A,k)}}if(R>0&&(g.lastInputFrameSeq=R),!j&&!g.keyFrameSeen)return;j&&(g.keyFrameSeen=!0);const E=Number(g.decoder.decodeQueueSize||0);if(E>8){if(g.latencyMode==="interactive"&&g.hardwareAcceleration==="prefer-hardware"){Ad=!0,_d(n,g.hardwareAcceleration),hs(n);return}if(pd(g),!j)return;Ku(g,T,A,k),g.keyFrameSeen=!0}const H=g.nextChunkTimestampUs;g.nextChunkTimestampUs+=v,g.pendingFrames.set(H,{frame:a,queuedAt:performance.now(),queueSize:E}),g.inputSerial+=1,g.lastInputAt=performance.now();const F=new EncodedVideoChunk({type:j?"key":"delta",timestamp:H,duration:v,data:a.payload});try{g.decoder.decode(F)}catch(q){throw hs(n),q}Ay(n,g),o0(n,g)}async function Tm(n,a,i,r,c,u="smooth"){if(l0(a)){i()||u0(n,a,r,u);return}if(s0(a)){i()||m0(n,a,r,c,u);return}if(Ec.delete(n),a0(a)){hs(n);const y=r0(a);if(i())return;(n.width!==y.width||n.height!==y.height)&&(n.width=y.width,n.height=y.height);const b=n.getContext("2d"),C=performance.now();b?.putImageData(y,0,0);const k=performance.now(),A=ih(n,y.width,y.height);r?.(a,{deviceId:a.deviceId,frameSeq:a.frameSeq,mode:a.frameMode||a.mode||a.codec||a.mimeType,width:y.width,height:y.height,byteLength:a.byteLength,queuedForMs:0,decodedForMs:0,scheduledForMs:0,drawMs:Math.max(0,k-C),queueSize:0,renderQueueSize:0,droppedForLatency:0,h264DecodeAcceleration:or.h264DecodeAcceleration,decoderLabel:"lzo-rgb565",decoderFlushCount:0,decoderTimestampFallbacks:0,decoderInputCount:0,decoderOutputCount:0,targetPaintIntervalMs:0,canvasPresentation:"sync",interactiveBufferWaitCount:0,interactiveBufferWaitMs:0,interactiveQueueDrainCount:0,visualHash:A.visualHash,visualChanged:A.visualChanged,paintedAt:k});return}hs(n);const m=new Blob([a.payload],{type:a.mimeType}),p=await createImageBitmap(m);if(i()){p.close();return}const v=a.width||p.width||960,g=a.height||p.height||540;(n.width!==v||n.height!==g)&&(n.width=v,n.height=g);const w=n.getContext("2d");if(w){const y=performance.now();w.clearRect(0,0,v,g),w.drawImage(p,0,0,v,g);const b=performance.now(),C=ih(n,v,g);r?.(a,{deviceId:a.deviceId,frameSeq:a.frameSeq,mode:a.frameMode||a.mode||a.codec||a.mimeType,width:v,height:g,byteLength:a.byteLength,queuedForMs:0,decodedForMs:0,scheduledForMs:0,drawMs:Math.max(0,b-y),queueSize:0,renderQueueSize:0,droppedForLatency:0,h264DecodeAcceleration:or.h264DecodeAcceleration,decoderLabel:"image",decoderFlushCount:0,decoderTimestampFallbacks:0,decoderInputCount:0,decoderOutputCount:0,targetPaintIntervalMs:0,canvasPresentation:"sync",interactiveBufferWaitCount:0,interactiveBufferWaitMs:0,interactiveQueueDrainCount:0,visualHash:C.visualHash,visualChanged:C.visualChanged,paintedAt:b})}p.close()}const Cc=5179,Sn=Si(`http://127.0.0.1:${Cc}`);function h0(n){const a=n.split(".").map(i=>Number(i));return a.length===4&&a.every(i=>Number.isInteger(i)&&i>=0&&i<=255)?a:[]}function p0(n){const a=n.trim().toLowerCase();return a==="localhost"||a==="127.0.0.1"||a==="::1"||a==="[::1]"}function g0(n){const a=n.trim().toLowerCase();return!a||a==="0.0.0.0"||a==="::"||a==="[::]"}function v0(n){const a=h0(n);return a.length===0?!1:a[0]===10||a[0]===172&&a[1]>=16&&a[1]<=31||a[0]===192&&a[1]===168}function x0(n){return n.includes(":")&&!n.startsWith("[")?`[${n}]`:n}function y0(n){const a=String(n||"").trim();if(!a)return null;const i=/^[a-z][a-z\d+.-]*:\/\//i.test(a)?a:`tcp://${a}`;try{const r=new URL(i),c=r.hostname.replace(/^\[|\]$/g,""),u=Number(r.port);return!c||!Number.isInteger(u)||u<1||u>65535||g0(c)?null:{host:c,port:u}}catch{return null}}function Si(n){const a=String(n||"").trim()||`http://127.0.0.1:${Cc}`,i=/^[a-z][a-z\d+.-]*:\/\//i.test(a)?a:`http://${a}`;try{const r=new URL(i);return r.port||(r.port=String(Cc)),r.hash="",r.search="",r.toString().replace(/\/+$/,"")}catch{return`http://127.0.0.1:${Cc}`}}function w0(n){const a=y0(n);return a?Si(`http://${x0(a.host)}:${Cc}`):""}function Xv(n){const i=[n?.endpoint,...Array.isArray(n?.endpoint_candidates)?n.endpoint_candidates:[]].map(r=>w0(String(r||""))).filter(Boolean);return[...new Set(i)]}function jc(n=Sn){if(!(typeof window>"u"||window.location.protocol!=="https:"))try{const a=new URL(n);if(a.protocol!=="http:")return;if(p0(a.hostname))return"loopback";if(v0(a.hostname))return"local"}catch{return}}function zd(n,a=Sn){const i=new URL(n,Si(a));return i.protocol=i.protocol==="https:"?"wss:":"ws:",i.toString()}async function Be(n,a,i=Sn){const r=Si(i),c={...a,headers:{"Content-Type":"application/json",...a?.headers||{}},cache:"no-store"},u=jc(r);u&&(c.targetAddressSpace=u);let m;try{m=await fetch(`${r}${n}`,c)}catch(v){throw u?new Error("LiveDesk Hub is not reachable at this local network address. If Chrome shows a local network prompt, allow it; otherwise restart the Hub so port 5179 is open on the network."):v}let p=null;try{p=await m.json()}catch{p=null}if(!m.ok){const v=p&&typeof p=="object"&&"error"in p?String(p.error||""):"";throw new Error(`${m.status} ${v||m.statusText}`)}return p}function rh(n){if(!n)return"-";const a=Date.now()-Date.parse(n);return Number.isFinite(a)?a<1e3?"now":a<6e4?`${Math.round(a/1e3)}s`:a<36e5?`${Math.round(a/6e4)}m`:`${Math.round(a/36e5)}h`:"-"}async function ar(n){await navigator.clipboard.writeText(n)}const Zv="livedesk_remote_host_targets",b0="livedesk_entitlements";function S0(n){const i=(Array.isArray(n)?n:[n||Sn]).map(r=>Si(r||Sn));return[...new Set(i.filter(Boolean))]}function C0(){const[n,a]=f.useState(null),[i,r]=f.useState(!0);return f.useEffect(()=>{let c=!0;ms.auth.getSession().then(({data:m})=>{c&&(a(m.session??null),r(!1))});const{data:{subscription:u}}=ms.auth.onAuthStateChange((m,p)=>{a(p),r(!1)});return()=>{c=!1,u.unsubscribe()}},[]),{session:n,loading:i}}function j0(n,a=!0){const[i,r]=f.useState(null),[c,u]=f.useState([]),[m,p]=f.useState(""),[v,g]=f.useState(""),[w,y]=f.useState(0),b=f.useRef(new Map),C=Array.isArray(n)?n.join(`
|
|
10
|
-
`):String(n||""),k=f.useMemo(()=>S0(n),[C]),A=f.useMemo(()=>k.find(R=>jc(R)==="loopback")||k[0]||Sn,[k]),T=f.useCallback(async()=>{if(!a){r(null),u([]),g(""),p("");return}let R=null;const E=Date.now(),H=k.filter(F=>(b.current.get(F)||0)<=E);if(H.length===0)throw new Error("No LiveDesk Hub endpoint is reachable. Retrying shortly.");for(const F of H)try{const[q,I]=await Promise.all([Be("/api/remote/status",void 0,F),Be("/api/remote/devices",void 0,F)]);if(!Array.isArray(I.devices))throw new Error("Invalid Hub devices response.");b.current.delete(F),r(q),u(I.devices),g(F),p("");return}catch(q){R=q,b.current.set(F,Date.now()+1e4)}throw g(""),R||new Error("No LiveDesk Hub endpoint is reachable.")},[a,k]),j=f.useCallback(()=>{b.current.clear(),T().catch(R=>{p(R instanceof Error?R.message:String(R))}),y(R=>R+1)},[T]);return f.useEffect(()=>{if(!a){r(null),u([]),g(""),p("");return}let R=!0;const E=async()=>{try{await T()}catch(F){R&&p(F instanceof Error?F.message:String(F))}};E();const H=window.setInterval(E,2500);return()=>{R=!1,window.clearInterval(H)}},[a,T,w]),{status:i,devices:c,error:m,refresh:j,hubBaseUrl:v||A,hubCandidates:k}}function k0(n){const[a,i]=f.useState(null),[r,c]=f.useState(""),u=n?.user?.id||"",m=f.useCallback(async()=>{if(!u){i(null);return}const{data:p,error:v}=await ms.from(Zv).select("*").eq("user_id",u).maybeSingle();if(v){c(v.message);return}i(p),c("")},[u]);return f.useEffect(()=>{m()},[m]),f.useEffect(()=>{if(!u)return;const p=ms.channel(`livedesk-remote-host-targets-${u.replace(/[^a-zA-Z0-9]/g,"")}`).on("postgres_changes",{event:"*",schema:"public",table:Zv,filter:`user_id=eq.${u}`},v=>i(v.new)).subscribe();return()=>{ms.removeChannel(p)}},[u]),{target:a,error:r,refresh:m}}function A0(n){const[a,i]=f.useState(null),[r,c]=f.useState(!1),[u,m]=f.useState(""),p=n?.user?.id||"",v=f.useCallback(async()=>{if(!p){i(null),m(""),c(!1);return}c(!0);const{data:w,error:y}=await ms.from(b0).select("*").eq("user_id",p).eq("product_key","livedesk").maybeSingle();if(y){m(y.message),c(!1);return}i(w),m(""),c(!1)},[p]);f.useEffect(()=>{v()},[v]);const g=f.useMemo(()=>!a||a.status!=="active"?!1:a.expires_at?new Date(a.expires_at).getTime()>Date.now():!0,[a]);return{entitlement:a,licensed:g,loading:r,error:u,refresh:v}}const kc={totalFrames:0,totalBytes:0,framesPerSecond:0,bytesPerSecond:0,sampleMs:0,lastUpdatedAt:0},M0=2500,N0=3e4,T0=64*1024,R0=6,E0=R0,Ny=new Map;function D0(n){return Ny.get(n)}const Jv={totalSent:0,totalDropped:0,sentPerSecond:0,droppedPerSecond:0,bufferedAmount:0,lastInputType:"",lastInputSeq:0,lastRoundTripMs:0,lastAgentApplyMs:0,lastUpdatedAt:0};function ex(n){const a=Date.parse(String(n||""));if(!Number.isFinite(a))return 0;const i=Date.now()-a;return i>0&&i<=N0?i:0}function tx(n,a,i=Sn,r={}){const[c,u]=f.useState(new Map),[m,p]=f.useState("idle"),[v,g]=f.useState(""),[w,y]=f.useState(kc),b=f.useRef(new Map),C=f.useRef(new Map),k=f.useRef(0),A=f.useRef(new Map),T=f.useRef({enabled:!1,token:"",reason:""}),j=f.useRef(new Set),[R,E]=f.useState(0),H=f.useRef(r.onFrame),F=f.useRef({totalFrames:0,totalBytes:0,sampleFrames:0,sampleBytes:0,sampleStartedAt:0}),q=f.useMemo(()=>[...n].sort().join(","),[n]),I=Number.isFinite(r.fps)?Number(r.fps):2,_=Number.isFinite(r.maxWidth)?Number(r.maxWidth):640,fe=Number.isFinite(r.maxHeight)?Number(r.maxHeight):360,G=Number.isFinite(r.quality)?Number(r.quality):45,ue=String(r.frameMode||r.mode||"mode3-h264-hw").trim()||"mode3-h264-hw",Y=r.streamPurpose==="control"?"control":"wall",ae=r.forceRestart===!0,le=String(r.forceRestartToken||"").trim(),V=String(r.restartReason||"").trim();T.current={enabled:ae,token:le,reason:V};const z=f.useMemo(()=>{const Z=Object.entries(r.monitorSelections||{}).filter(([ye])=>!!ye).sort(([ye],[be])=>ye.localeCompare(be));return JSON.stringify(Object.fromEntries(Z))},[r.monitorSelections]);f.useEffect(()=>{H.current=r.onFrame},[r.onFrame]);const K=f.useCallback((Z,ye="livedesk-frame-socket-release")=>{Z.disposed=!0;try{Z.socket.readyState===WebSocket.CONNECTING||Z.socket.readyState===WebSocket.OPEN?Z.socket.close(1e3,ye):Z.socket.close()}catch{}},[]),Q=f.useCallback(()=>{const Z=[...C.current.values()].map(ye=>ye.socket);if(Z.length===0){p("idle");return}if(Z.some(ye=>ye.readyState===WebSocket.OPEN)){p("open");return}if(Z.some(ye=>ye.readyState===WebSocket.CONNECTING)){p("connecting");return}p("closed")},[]),P=f.useCallback((Z,ye,be,de)=>{if(ye.disposed||ye.socket.readyState!==WebSocket.OPEN)return!1;try{return ye.socket.send(JSON.stringify({...ye.payload,type:"restart-live",deviceIds:[Z],forceRestart:!0,restartReason:be,restartToken:de})),!0}catch{return!1}},[]),ie=f.useCallback((Z,ye)=>{if(!Z||Z.byteLength<5)return;const be=Date.now(),Ne=new DataView(Z).getUint32(0,!1);if(Ne<=0||Ne+4>Z.byteLength)return;const Ie=new Uint8Array(Z.slice(4,4+Ne)),re=JSON.parse(new TextDecoder().decode(Ie));if(Math.max(ex(re.receivedAt),ex(re.capturedAt))>M0)return;const De=Z.slice(4+Ne),Qe={deviceId:String(re.deviceId||""),kind:re.kind==="thumbnail"?"thumbnail":"live",frameSeq:Number(re.frameSeq||0),streamFrameSeq:Number(re.streamFrameSeq||0)||void 0,streamId:String(re.streamId||""),commandId:re.commandId?String(re.commandId):void 0,width:Number(re.width||0),height:Number(re.height||0),sourceWidth:Number(re.sourceWidth||0)||void 0,sourceHeight:Number(re.sourceHeight||0)||void 0,mimeType:String(re.mimeType||"image/jpeg"),mode:re.mode?String(re.mode):void 0,frameMode:re.frameMode?String(re.frameMode):void 0,frameProfile:re.frameProfile?String(re.frameProfile):void 0,encoding:re.encoding?String(re.encoding):void 0,codec:re.codec?String(re.codec):void 0,compression:re.compression?String(re.compression):void 0,pixelFormat:re.pixelFormat?String(re.pixelFormat):void 0,bytesPerPixel:Number(re.bytesPerPixel||0)||0,uncompressedByteLength:Number(re.uncompressedByteLength||0)||0,h264Format:re.h264Format?String(re.h264Format):void 0,isKeyFrame:re.isKeyFrame===!0,chunkType:re.chunkType?String(re.chunkType):void 0,timestampUs:Number(re.timestampUs||0)||0,durationUs:Number(re.durationUs||0)||0,sourceGapMs:Number(re.sourceGapMs||0)||0,agentSendGapMs:Number(re.agentSendGapMs||0)||0,agentSendDurationMs:Number(re.agentSendDurationMs||0)||0,agentSendDurationFrameSeq:Number(re.agentSendDurationFrameSeq||0)||0,agentPaceMs:Number(re.agentPaceMs||0)||0,agentQueueBeforePaceMs:Number(re.agentQueueBeforePaceMs||0)||0,agentFrameAgeMs:Number(re.agentFrameAgeMs||0)||0,droppedByAgent:Number(re.droppedByAgent||0)||0,hubIngressDropped:Number(re.hubIngressDropped||0)||0,hubClientDropped:Number(re.hubClientDropped||0)||0,hardwareEncoder:re.hardwareEncoder?String(re.hardwareEncoder):void 0,platformProfile:re.platformProfile?String(re.platformProfile):void 0,monitorIndex:Number.isFinite(Number(re.monitorIndex))?Number(re.monitorIndex):void 0,monitorCount:Number.isFinite(Number(re.monitorCount))?Number(re.monitorCount):void 0,requestedFps:Number(re.requestedFps||0)||0,effectiveFps:Number(re.effectiveFps||0)||0,captureAverageMs:Number(re.captureAverageMs||0)||0,captureP95Ms:Number(re.captureP95Ms||0)||0,slowFrameCount:Number(re.slowFrameCount||0)||0,captureHelperRestarts:Number(re.captureHelperRestarts||0)||0,capturedAt:String(re.capturedAt||""),receivedAt:String(re.receivedAt||""),hubPacketAt:re.hubPacketAt?String(re.hubPacketAt):void 0,hubPacketEpochMs:Number.isFinite(Number(re.hubPacketEpochMs))?Number(re.hubPacketEpochMs):void 0,browserReceivedEpochMs:be,byteLength:Number(re.byteLength||De.byteLength),contentHash:re.contentHash?String(re.contentHash):void 0,captureMs:Number(re.captureMs||0)||0,captureStageMs:Number(re.captureStageMs||0)||0,convertMs:Number(re.convertMs||0)||0,compressMs:Number(re.compressMs||0)||0,captureSourceSerial:Number(re.captureSourceSerial||0)||0,captureSourceSkipped:Number(re.captureSourceSkipped||0)||0,deltaTileSize:Number(re.deltaTileSize||0)||0,deltaTileCount:Number(re.deltaTileCount||0)||0,deltaVisualTileCount:Number(re.deltaVisualTileCount||0)||0,deltaRefreshTileCount:Number(re.deltaRefreshTileCount||0)||0,deltaTotalTiles:Number(re.deltaTotalTiles||0)||0,payload:De};if(!Qe.deviceId)return;const ne={streamId:ye.lastFrameStreamId,commandId:ye.lastFrameCommandId,order:ye.lastFrameOrder},ge=Number(Qe.streamFrameSeq||Qe.frameSeq||0),Re=!!ne.commandId&&!!Qe.commandId,te=ne.streamId===Qe.streamId&&(!Re||ne.commandId===Qe.commandId),oe=ne.order;if(te&&oe>=ge&&(oe===ge||Re))return;ye.lastFrameStreamId=Qe.streamId,ye.lastFrameCommandId=Qe.commandId||"",ye.lastFrameOrder=ge;const Ae=F.current;Ae.totalFrames+=1,Ae.totalBytes+=De.byteLength,Ae.sampleFrames+=1,Ae.sampleBytes+=De.byteLength;const Ce=!b.current.has(Qe.deviceId);b.current.set(Qe.deviceId,Qe),Ce&&u(new Map(b.current)),H.current?.(Qe)},[]);f.useEffect(()=>{const Z=window.setInterval(()=>{const ye=performance.now(),be=F.current,de=Math.max(1,ye-be.sampleStartedAt);y({totalFrames:be.totalFrames,totalBytes:be.totalBytes,framesPerSecond:be.sampleFrames*1e3/de,bytesPerSecond:be.sampleBytes*1e3/de,sampleMs:de,lastUpdatedAt:Date.now()}),u(new Map(b.current)),be.sampleFrames=0,be.sampleBytes=0,be.sampleStartedAt=ye},2e3);return()=>{window.clearInterval(Z)}},[]),f.useEffect(()=>{const Z=q?q.split(",").filter(Boolean):[],ye=new Set(Z),be=performance.now();for(const[de,Ne]of C.current.entries())ye.has(de)||(K(Ne,"livedesk-device-unsubscribed"),C.current.delete(de),A.current.delete(de),b.current.delete(de));if(Z.length===0){for(const de of C.current.values())K(de,"livedesk-no-devices");C.current.clear(),A.current.clear(),b.current=new Map,u(new Map),g(""),F.current={totalFrames:0,totalBytes:0,sampleFrames:0,sampleBytes:0,sampleStartedAt:0},y(kc),Q();return}F.current.sampleStartedAt<=0&&(F.current.sampleStartedAt=be,y({...kc,lastUpdatedAt:Date.now()}));for(const de of Z){const Ne=r.monitorSelections?.[de],Ie=Number.isFinite(Number(Ne))?{[de]:Number(Ne)}:{},re={type:"subscribe",deviceIds:[de],autoStartLive:a,fps:I,maxWidth:_,maxHeight:fe,quality:G,mode:ue,frameMode:ue,streamPurpose:Y,monitorSelections:Ie},Ke=JSON.stringify(re),De=C.current.get(de);if(De){const Re=De.socket.readyState===WebSocket.CONNECTING||De.socket.readyState===WebSocket.OPEN;if(De.payloadKey===Ke&&Re&&!De.disposed)continue}const Qe=De&&(De.socket.readyState===WebSocket.CONNECTING||De.socket.readyState===WebSocket.OPEN)&&!De.disposed?De.handoffFrom&&!De.handoffCompleted?De.handoffFrom:De:void 0;De&&De!==Qe&&K(De,"livedesk-subscription-superseded");const ne=new WebSocket(zd(`/api/remote/frames/ws?devices=${encodeURIComponent(de)}`,i));ne.binaryType="arraybuffer";const ge={socket:ne,payload:re,payloadKey:Ke,generation:k.current+1,disposed:!1,handoffFrom:Qe,handoffCompleted:!1,lastFrameStreamId:"",lastFrameCommandId:"",lastFrameOrder:-1};k.current=ge.generation,C.current.set(de,ge),ne.addEventListener("open",()=>{if(ge.disposed||C.current.get(de)!==ge){K(ge,"livedesk-stale-frame-socket");return}g("");const Re=T.current,te=Re.enabled&&(!Re.token||A.current.get(de)!==Re.token);ne.send(JSON.stringify({...ge.payload,forceRestart:te,restartReason:te?Re.reason:"",restartToken:te?Re.token:""})),te&&Re.token&&A.current.set(de,Re.token);const oe=ge.handoffFrom;ge.handoffFrom=void 0,ge.handoffCompleted=!0,oe&&!oe.disposed&&K(oe,"livedesk-subscription-replaced"),Q()}),ne.addEventListener("message",Re=>{if(ge.disposed||C.current.get(de)!==ge)return;if(typeof Re.data=="string"){try{const oe=JSON.parse(Re.data);if(oe?.type==="RemoteFrameSubscriptionError")g(String(oe.error||"control-stream-start-failed"));else if(oe?.type==="RemoteFrameLiveAutoStart"){const Ce=(Array.isArray(oe.skipped)?oe.skipped:[]).find(st=>st?.deviceId===de);Ce?g(String(Ce.reason||"control-stream-start-failed")):Array.isArray(oe.started)&&oe.started.some(st=>st?.deviceId===de)&&g("")}}catch{}return}const te=Re.data instanceof ArrayBuffer?Re.data:null;te&&(g(""),ie(te,ge))}),ne.addEventListener("error",()=>{ge.disposed||C.current.get(de)!==ge||(g("frame-socket-error"),p("error"))}),ne.addEventListener("close",()=>{const Re=!ge.disposed;ge.disposed=!0;const te=C.current.get(de);let oe=!1;if(te===ge){const Ae=ge.handoffFrom;ge.handoffFrom=void 0,Ae&&!Ae.disposed&&(Ae.socket.readyState===WebSocket.CONNECTING||Ae.socket.readyState===WebSocket.OPEN)?(C.current.set(de,Ae),oe=!0):C.current.delete(de)}if(Q(),Re&&te===ge&&!oe){const Ae=window.setTimeout(()=>{j.current.delete(Ae),E(Ce=>Ce+1)},750);j.current.add(Ae)}})}Q()},[a,K,q,I,ue,ie,i,fe,_,z,r.monitorSelections,G,R,Y,Q]),f.useEffect(()=>{if(!ae||!le)return;const Z=q?q.split(",").filter(Boolean):[];for(const ye of Z){if(A.current.get(ye)===le)continue;const be=C.current.get(ye);!be||!P(ye,be,V,le)||A.current.set(ye,le)}},[q,ae,le,V,P]),f.useEffect(()=>()=>{for(const Z of C.current.values())K(Z,"livedesk-hook-unmount");C.current.clear();for(const Z of j.current)window.clearTimeout(Z);j.current.clear()},[K]);const Se=f.useCallback((Z,ye="browser-stale")=>{const be=Array.isArray(Z)&&Z.length>0?Z:q.split(",").filter(Boolean);if(be.length===0)return!1;let de=!1;for(const Ne of be){const Ie=C.current.get(Ne);!Ie||Ie.socket.readyState!==WebSocket.OPEN||(de=P(Ne,Ie,ye,`${Date.now()}-${Math.random().toString(36).slice(2)}`)||de)}return de},[q,P]),D=f.useCallback((Z,ye="browser-reconnect")=>{const be=Array.isArray(Z)&&Z.length>0?Z:q.split(",").filter(Boolean);if(be.length===0)return!1;let de=!1;for(const Ne of be){const Ie=C.current.get(Ne);Ie&&(K(Ie,`livedesk-${ye}`),C.current.delete(Ne),A.current.delete(Ne),b.current.delete(Ne),de=!0)}return de&&u(new Map(b.current)),E(Ne=>Ne+1),Q(),!0},[K,q,Q]);return{frames:c,state:m,error:v,stats:w,restartLive:Se,reconnectLive:D}}function L0(n,a,i=Sn,r={}){const[c,u]=f.useState(null),[m,p]=f.useState(null),[v,g]=f.useState("idle"),[w,y]=f.useState(kc),b=f.useRef(null),C=f.useRef(r.onFrame),k=f.useRef(null),A=f.useRef(0),T=f.useRef({totalFrames:0,totalBytes:0,sampleFrames:0,sampleBytes:0,sampleStartedAt:0}),j=f.useMemo(()=>[...new Set(n.filter(Boolean))].join(","),[n]),R=f.useMemo(()=>[...new Set((r.captureDeviceIds||n).filter(Boolean))].join(","),[n,r.captureDeviceIds]),E=f.useMemo(()=>JSON.stringify(r.monitorSelections||{}),[r.monitorSelections]),H=f.useMemo(()=>({deviceIds:j.split(",").filter(Boolean),captureDeviceIds:R.split(",").filter(Boolean),fps:Number(r.fps||20),width:Number(r.width||1920),height:Number(r.height||1080),tileWidth:Number(r.tileWidth||320),tileHeight:Number(r.tileHeight||180),monitorSelections:r.monitorSelections||{}}),[R,j,E,r.fps,r.height,r.monitorSelections,r.tileHeight,r.tileWidth,r.width]),F=f.useMemo(()=>JSON.stringify(H),[H]),q=f.useRef(H);q.current=H;const I=a&&H.deviceIds.length>0,_=f.useCallback(G=>G.readyState!==WebSocket.OPEN?!1:(G.send(JSON.stringify({type:"configure",...q.current})),!0),[]);f.useEffect(()=>{C.current=r.onFrame},[r.onFrame]),f.useEffect(()=>{const G=window.setInterval(()=>{const ue=T.current,Y=performance.now(),ae=Math.max(1,Y-ue.sampleStartedAt);y({totalFrames:ue.totalFrames,totalBytes:ue.totalBytes,framesPerSecond:ue.sampleFrames*1e3/ae,bytesPerSecond:ue.sampleBytes*1e3/ae,sampleMs:ae,lastUpdatedAt:Date.now()});const le=k.current;le&&le.frameSeq!==A.current&&(A.current=le.frameSeq,u(le)),ue.sampleFrames=0,ue.sampleBytes=0,ue.sampleStartedAt=Y},1e3);return()=>window.clearInterval(G)},[]),f.useEffect(()=>{if(!I){b.current?.close(),b.current=null,u(null),k.current=null,A.current=0,p(null),g("idle"),y(kc);return}let G=!1,ue=0;const Y=()=>{if(G)return;const ae=new WebSocket(zd("/api/remote/atlas/ws",i));ae.binaryType="arraybuffer",b.current=ae,g("connecting"),ae.addEventListener("open",()=>{T.current.sampleStartedAt=performance.now(),g("open"),_(ae)}),ae.addEventListener("message",le=>{if(typeof le.data=="string"){try{const z=JSON.parse(le.data);z?.type==="Mode4AtlasLayout"&&p({layoutVersion:Number(z.layoutVersion||0),width:Number(z.width||1920),height:Number(z.height||1080),columns:Number(z.columns||1),rows:Number(z.rows||1),tiles:Array.isArray(z.tiles)?z.tiles:[]})}catch{}return}const V=le.data instanceof ArrayBuffer?le.data:null;if(!(!V||V.byteLength<5))try{const z=Date.now(),Q=new DataView(V).getUint32(0,!1);if(Q<=0||Q+4>V.byteLength)return;const P=JSON.parse(new TextDecoder().decode(new Uint8Array(V,4,Q))),ie=V.slice(4+Q),Se={deviceId:String(P.deviceId||"__livedesk_mode4_atlas__"),kind:"live",frameSeq:Number(P.frameSeq||0),streamFrameSeq:Number(P.streamFrameSeq||0)||void 0,streamId:String(P.streamId||"mode4-atlas"),commandId:P.commandId?String(P.commandId):void 0,width:Number(P.width||1920),height:Number(P.height||1080),sourceWidth:Number(P.sourceWidth||P.width||1920),sourceHeight:Number(P.sourceHeight||P.height||1080),mimeType:String(P.mimeType||"video/h264"),mode:String(P.mode||"mode4-h264-atlas"),frameMode:String(P.frameMode||"mode4-h264-atlas"),frameProfile:String(P.frameProfile||"mode4-h264-atlas-v1"),encoding:String(P.encoding||"video-atlas"),codec:String(P.codec||"h264"),compression:String(P.compression||"video/h264"),h264Format:String(P.h264Format||"annexb"),isKeyFrame:P.isKeyFrame===!0,chunkType:String(P.chunkType||""),timestampUs:Number(P.timestampUs||0),durationUs:Number(P.durationUs||0),hardwareEncoder:P.hardwareEncoder?String(P.hardwareEncoder):void 0,platformProfile:P.platformProfile?String(P.platformProfile):void 0,capturedAt:String(P.capturedAt||""),receivedAt:String(P.receivedAt||""),hubPacketAt:P.hubPacketAt?String(P.hubPacketAt):void 0,hubPacketEpochMs:Number(P.hubPacketEpochMs||0)||void 0,browserReceivedEpochMs:z,byteLength:ie.byteLength,layoutVersion:Number(P.layoutVersion||0),atlasComposeMs:Number(P.atlasComposeMs||0),atlasPoolStarved:Number(P.atlasPoolStarved||0),atlasReadyTiles:Number(P.atlasReadyTiles||0),atlasTileCount:Number(P.atlasTileCount||0),payload:ie},D=T.current;D.totalFrames+=1,D.totalBytes+=ie.byteLength,D.sampleFrames+=1,D.sampleBytes+=ie.byteLength,k.current=Se,A.current===0&&(A.current=Se.frameSeq,u(Se)),C.current?.(Se)}catch{}}),ae.addEventListener("error",()=>g("error")),ae.addEventListener("close",()=>{b.current===ae&&(b.current=null),!G&&(g("closed"),ue=window.setTimeout(Y,1200))})};return Y(),()=>{G=!0,window.clearTimeout(ue),b.current?.close(),b.current=null}},[I,i,_]),f.useEffect(()=>{if(!I)return;const G=b.current;G&&_(G)},[F,I,_]);const fe=f.useCallback(()=>{const G=b.current;return G?_(G):!1},[_]);return{frame:c,layout:m,state:v,stats:w,refreshInputs:fe}}function _0(n,a=Sn){const i=f.useRef(null),r=f.useRef(0),c=f.useRef(0),u=f.useRef(new Map),[m,p]=f.useState("idle"),[v,g]=f.useState(""),[w,y]=f.useState(Jv),b=f.useRef({totalSent:0,totalDropped:0,sampleSent:0,sampleDropped:0,sampleStartedAt:0,lastInputType:"",lastInputSeq:0,lastRoundTripMs:0,lastAgentApplyMs:0});f.useEffect(()=>{if(!n){i.current?.close(),i.current=null,c.current=0,p("idle"),g(""),y(Jv);return}const k=new WebSocket(zd("/api/remote/input/ws",a));return i.current=k,b.current.sampleStartedAt=performance.now(),p("connecting"),g(""),k.addEventListener("open",()=>{g(""),p("open")}),k.addEventListener("message",A=>{if(typeof A.data=="string")try{const T=JSON.parse(A.data);if(T?.type==="RemoteInputError"){g(String(T.error||T.result?.error||"Remote input failed.")),p("error");return}if(T?.type!=="RemoteInputApplied")return;const j=Number(T.inputSeq||0),R=u.current.get(j);R!==void 0&&(b.current.lastRoundTripMs=Math.max(0,performance.now()-R),u.current.delete(j)),b.current.lastInputSeq=j,b.current.lastAgentApplyMs=Math.max(0,Number(T.agentApplyMs||0))}catch{}}),k.addEventListener("close",()=>p("closed")),k.addEventListener("error",()=>p("error")),()=>{k.close(),u.current.clear(),i.current===k&&(i.current=null)}},[n,a]),f.useEffect(()=>{if(!n)return;const k=window.setInterval(()=>{const A=performance.now(),T=b.current,j=Math.max(1,A-T.sampleStartedAt);y({totalSent:T.totalSent,totalDropped:T.totalDropped,sentPerSecond:T.sampleSent*1e3/j,droppedPerSecond:T.sampleDropped*1e3/j,bufferedAmount:i.current?.bufferedAmount||0,lastInputType:T.lastInputType,lastInputSeq:T.lastInputSeq,lastRoundTripMs:T.lastRoundTripMs,lastAgentApplyMs:T.lastAgentApplyMs,lastUpdatedAt:Date.now()}),T.sampleSent=0,T.sampleDropped=0,T.sampleStartedAt=A},1e3);return()=>window.clearInterval(k)},[n]);const C=f.useCallback((k,A)=>{const T=i.current;if(!T||T.readyState!==WebSocket.OPEN||!k)return!1;const j=String(A.type||"").toLowerCase(),R=j==="pointermove",H=R||j==="wheel",F=b.current;if(R&&T.bufferedAmount>T0)return F.totalDropped+=1,F.sampleDropped+=1,F.lastInputType="pointermove-drop",!1;const q=r.current+1;r.current=q;const I=Date.now(),_=!H||q-c.current>=E0;for(_&&(u.current.set(q,performance.now()),H&&(c.current=q)),R||Ny.set(k,{inputSeq:q,inputType:j||"input",sentAt:performance.now()});u.current.size>256;){const fe=u.current.keys().next().value;if(fe===void 0)break;u.current.delete(fe)}return T.send(JSON.stringify({type:"input",requestId:H?"":crypto.randomUUID(),fireAndForget:H,deviceId:k,input:{...A,inputSeq:q,requestAck:_,issuedAtEpochMs:I,issuedAt:new Date(I).toISOString()}})),F.totalSent+=1,F.sampleSent+=1,F.lastInputType=j||"input",!0},[]);return{state:m,sendInput:C,stats:w,error:v}}function z0(n){const a=String(n||"").toLowerCase();return a.includes("audio/pcm")||a.includes("audio/l16")||a.includes("f32le")||a.includes("s16le")}const Qu={queuedMs:0,browserAgeMs:0,captureAgeMs:0,captureStatusAgeMs:0,silentForMs:0,captureAlive:!1,helperAlive:!1,captureRestartCount:0,localProcessingAgeMs:0,lastPacketAgeMs:0,lastAcceptedAgeMs:0,framesReceived:0,drops:0,resyncs:0,pendingDecodes:0,lastFrameSeq:0,audioContextState:"closed",stalledCount:0,automaticRestarts:0,lastUpdatedAt:0},O0=.08,I0=.25,B0=.02,nx=300,F0=4,Xu=1500,Rm=5e3,H0=2e3,$0=1e4,Zu=[0,1e3,3e3];function ax(n){const a=Date.parse(String(n||""));return Number.isFinite(a)?Math.max(0,Date.now()-a):0}function U0(n,a,i){const r=Math.max(1,Math.min(8,Math.floor(a.channels||2))),c=Math.max(8e3,Math.min(192e3,Math.floor(a.sampleRate||48e3))),u=String(a.mimeType||"").toLowerCase(),m=u.includes("s16le")||u.includes("audio/l16"),p=m?2:4,v=Math.floor(i.byteLength/p),g=Math.floor(v/r),w=n.createBuffer(r,g,c),y=new DataView(i);for(let b=0;b<r;b+=1){const C=w.getChannelData(b);for(let k=0;k<g;k+=1){const T=(k*r+b)*p;C[k]=m?Math.max(-1,Math.min(1,y.getInt16(T,!0)/32768)):Math.max(-1,Math.min(1,y.getFloat32(T,!0)))}}return w}function P0(n,a,i=Sn){const r=f.useRef(null),c=f.useRef(0),[u,m]=f.useState("idle"),[p,v]=f.useState(null),[g,w]=f.useState(Qu),[y,b]=f.useState("");return f.useEffect(()=>{if(!a||!n){m("idle"),v(null),w(Qu),b("");return}m("connecting"),v(null),w(Qu),b("");const C=window.AudioContext||window.webkitAudioContext;if(!C){m("unsupported"),w(Qu),b("Audio playback is not supported in this browser.");return}const k=new C;r.current=k,c.current=k.currentTime;const A=new WebSocket(zd("/api/remote/audio/ws?devices="+encodeURIComponent(n),i));A.binaryType="arraybuffer";const T=new Set,j={browserAgeMs:0,captureAgeMs:0,captureStatusAgeMs:0,silentForMs:0,captureAlive:!1,helperAlive:!1,captureRestartCount:0,localProcessingAgeMs:0,lastPacketAt:0,lastAcceptedAt:0,framesReceived:0,drops:0,resyncs:0,pendingDecodes:0,lastFrameSeq:0,audioContextState:String(k.state),stalledCount:0,automaticRestarts:0,activeStreamId:"",lastCaptureStatusAt:0,lastPcmAtEpochMs:0};let R=!1,E=0,H=!1,F=0,q=0;const I=(z=!0)=>{for(const K of T)try{K.stop()}catch{}T.clear(),z&&(c.current=k.currentTime+O0)},_=()=>{j.audioContextState=String(k.state),!R&&(j.audioContextState==="suspended"||j.audioContextState==="interrupted"?m("suspended"):j.audioContextState==="closed"&&(m("error"),b("The browser audio context is closed. Toggle Remote Audio off and on to recover.")))},fe=async()=>{if(R||String(k.state)==="closed")return!1;try{if(String(k.state)!=="running"&&await k.resume(),j.audioContextState=String(k.state),!R&&!H&&j.audioContextState==="running"){const z=j.lastAcceptedAt>0&&performance.now()-j.lastAcceptedAt<=Xu,K=j.lastCaptureStatusAt>0&&performance.now()-j.lastCaptureStatusAt<=Rm&&j.captureAlive&&j.helperAlive;m(z?"playing":K?"silent":"open")}return j.audioContextState==="running"}catch(z){return R||(m("suspended"),b(z instanceof Error?"Audio playback is suspended: "+z.message:"Audio playback is suspended.")),!1}},G=async()=>{if(R||H||A.readyState!==WebSocket.OPEN)return;if(F>=Zu.length){m("error"),b("Remote audio stopped sending frames. Toggle Audio off and on to retry.");return}const z=F;F+=1,H=!0,j.stalledCount+=1,j.automaticRestarts+=1,m("reconnecting");try{const K=await Be("/api/remote/devices/"+encodeURIComponent(n)+"/audio/stop",{method:"POST",body:JSON.stringify({})},i);if(K.ok===!1)throw new Error(K.error||"Remote audio stop failed.");if(R)return;const Q=await Be("/api/remote/devices/"+encodeURIComponent(n)+"/audio/start",{method:"POST",body:JSON.stringify({streamId:"audio-restart-"+Date.now(),mimeType:"audio/pcm;format=f32le",sampleRate:48e3,channels:2})},i);if(Q.ok===!1)throw new Error(Q.error||"Remote audio start failed.");const P=performance.now();E=P,j.lastPacketAt=P,j.lastAcceptedAt=0,j.lastCaptureStatusAt=0,j.lastPcmAtEpochMs=0,j.captureAlive=!1,j.helperAlive=!1,j.silentForMs=0,q=P+(Zu[z+1]??3e3),b(""),R||m("open")}catch(K){R||(q=performance.now()+(Zu[z+1]??3e3),m("error"),b(K instanceof Error?"Remote audio restart failed: "+K.message:"Remote audio restart failed."))}finally{H=!1}},ue=()=>{j.drops+=1},Y=window.setInterval(()=>{if(R)return;const z=performance.now(),K=j.lastPacketAt>0?Math.max(0,z-j.lastPacketAt):E>0?Math.max(0,z-E):0,Q=j.lastAcceptedAt>0?Math.max(0,z-j.lastAcceptedAt):0,P=j.lastCaptureStatusAt>0?Math.max(0,z-j.lastCaptureStatusAt):0,ie=A.readyState===WebSocket.OPEN,Se=j.lastCaptureStatusAt>0,D=Se&&P<=Rm,Z=Se&&(!j.captureAlive||!j.helperAlive)&&P>H0,ye=Se&&P>Rm,be=!Se&&E>0&&z-E>$0,de=E>0&&(j.lastAcceptedAt<=0?z-E>Xu:Q>Xu);ie&&E>0&&(Z||ye||be)?F>=Zu.length&&!H?(m("error"),b("Remote audio capture heartbeat stopped. Toggle Audio off and on to retry.")):!H&&z>=q?G():H||m("stalled"):ie&&de&&!H&&j.audioContextState!=="suspended"&&j.audioContextState!=="interrupted"&&m(D?"silent":"open"),w({queuedMs:Math.max(0,(c.current-k.currentTime)*1e3),browserAgeMs:j.browserAgeMs,captureAgeMs:j.captureAgeMs,captureStatusAgeMs:P,silentForMs:j.silentForMs,captureAlive:j.captureAlive,helperAlive:j.helperAlive,captureRestartCount:j.captureRestartCount,localProcessingAgeMs:j.localProcessingAgeMs,lastPacketAgeMs:K,lastAcceptedAgeMs:Q,framesReceived:j.framesReceived,drops:j.drops,resyncs:j.resyncs,pendingDecodes:j.pendingDecodes,lastFrameSeq:j.lastFrameSeq,audioContextState:j.audioContextState,stalledCount:j.stalledCount,automaticRestarts:j.automaticRestarts,lastUpdatedAt:Date.now()})},250),ae=()=>{_(),(String(k.state)==="suspended"||String(k.state)==="interrupted")&&fe()},le=()=>{document.visibilityState==="visible"&&fe()},V=()=>{fe()};return k.addEventListener("statechange",ae),document.addEventListener("visibilitychange",le),window.addEventListener("pageshow",V),window.addEventListener("pointerdown",V),window.addEventListener("keydown",V),m("connecting"),b(""),_(),A.addEventListener("open",()=>{R||(E=performance.now(),j.lastPacketAt=E,j.lastAcceptedAt=0,j.lastCaptureStatusAt=0,j.lastPcmAtEpochMs=0,j.captureAlive=!1,j.helperAlive=!1,j.silentForMs=0,m("open"),A.send(JSON.stringify({type:"subscribe",deviceIds:[n]})),fe())}),A.addEventListener("message",z=>{if(typeof z.data=="string")return;const K=z.data instanceof ArrayBuffer?z.data:null;if(!K||K.byteLength<5)return;const Q=performance.now();j.lastPacketAt=Q,(async()=>{try{const ie=new DataView(K).getUint32(0,!1);if(ie<=0||ie+4>K.byteLength){ue();return}const Se=new Uint8Array(K.slice(4,4+ie)),D=JSON.parse(new TextDecoder().decode(Se)),Z=K.slice(4+ie),ye=String(D.frameKind||D.kind||"").toLowerCase();if(D.type==="remote.audio.status"||ye==="audio-status"){if(j.lastCaptureStatusAt=Q,j.captureAlive=D.captureAlive===!0,j.helperAlive=D.helperAlive===!0,j.captureRestartCount=Math.max(0,Number(D.restartCount||0)||0),j.lastPcmAtEpochMs=Math.max(0,Number(D.lastPcmAtEpochMs||0)||0),j.silentForMs=Math.max(0,Number(D.silentForMs||0)||0),j.captureAgeMs=j.lastPcmAtEpochMs>0?Math.max(0,Date.now()-j.lastPcmAtEpochMs):j.silentForMs,j.captureAlive&&j.helperAlive){if(F=0,q=0,!H){b("");const de=String(k.state)==="running",Ne=j.lastAcceptedAt>0&&performance.now()-j.lastAcceptedAt<=Xu;m(de?Ne?"playing":"silent":"suspended")}}else H||m("stalled");return}const be={deviceId:String(D.deviceId||""),frameSeq:Number(D.frameSeq||0),streamId:String(D.streamId||""),mimeType:String(D.mimeType||"audio/webm;codecs=opus"),sampleRate:Number(D.sampleRate||48e3),channels:Number(D.channels||2),capturedAt:String(D.capturedAt||""),receivedAt:String(D.receivedAt||""),byteLength:Number(D.byteLength||Z.byteLength),payload:Z};if(!be.deviceId||R)return;if(performance.now()-Q>nx){ue();return}if(j.pendingDecodes>=F0){ue();return}j.pendingDecodes+=1;try{const de=z0(be.mimeType)?U0(k,be,Z):await k.decodeAudioData(Z.slice(0));if(j.localProcessingAgeMs=Math.max(0,performance.now()-Q),R)return;if(j.localProcessingAgeMs>nx){ue();return}if(be.frameSeq>0&&be.frameSeq<=j.lastFrameSeq){ue();return}if(j.activeStreamId&&be.streamId!==j.activeStreamId&&be.frameSeq<=j.lastFrameSeq){ue();return}be.streamId&&be.streamId!==j.activeStreamId&&(j.activeStreamId=be.streamId,j.lastFrameSeq=0,I());const Ne=k.currentTime;Math.max(0,c.current-Ne)>I0&&(I(),j.resyncs+=1);const re=k.createBufferSource();re.buffer=de,re.connect(k.destination),T.add(re),re.onended=()=>{T.delete(re),re.onended=null};const Ke=Math.max(k.currentTime+B0,c.current);re.start(Ke),c.current=Ke+de.duration,j.browserAgeMs=ax(be.receivedAt),j.captureAgeMs=ax(be.capturedAt),j.lastAcceptedAt=performance.now(),j.framesReceived+=1,j.lastFrameSeq=be.frameSeq,F=0,q=0,v(be),fe();const De=String(k.state)==="running";De&&b(""),m(De?"playing":"suspended")}finally{j.pendingDecodes=Math.max(0,j.pendingDecodes-1)}}catch(P){R||(m("error"),b(P instanceof Error?P.message:String(P)))}})()}),A.addEventListener("error",()=>{R||(m("error"),b("Remote audio WebSocket error."))}),A.addEventListener("close",()=>{R||m("closed")}),()=>{R=!0,window.clearInterval(Y),k.removeEventListener("statechange",ae),document.removeEventListener("visibilitychange",le),window.removeEventListener("pageshow",V),window.removeEventListener("pointerdown",V),window.removeEventListener("keydown",V),I(!1),A.close(),k.close().catch(()=>{}),r.current===k&&(r.current=null)}},[n,a,i]),{state:u,lastFrame:p,stats:g,error:y}}const oh={revision:0,settings:{connection:{usePinToAddDevices:!0,pinValidityMinutes:30,rotatePinAfterPairing:!0,allowNewDevices:!0,approveNewDevices:!0,startWithComputer:!0,keepRunningInTray:!0,showConnectionNotifications:!0},security:{accessMode:"trusted-only",requireEncryptedConnections:!0,allowInternetConnections:!1,allowLanConnections:!0,allowUnencryptedLanFallback:!1,requireNewDeviceApproval:!0,requireAdministratorForSecurityChanges:!0,visibleControlIndicator:!0,lockOnControlEnd:!0,disconnectIdleControlSessions:!0,idleControlMinutes:30,keepSessionHistory:!0,sessionHistoryDays:30},control:{allowKeyboardMouse:!0,allowSystemShortcuts:!0,allowClipboardText:!0,allowRemoteRestart:!1,reconnectAfterRemoteRestart:!0,allowSwitchingMonitors:!0,showConnectionToolbar:!0,showRemoteCursor:!0,openControlOnDoubleClick:!0,startRemoteAudioWithControl:!1,fitRemoteScreen:!0,rememberLastMonitor:!0,keepControlReadyBetweenPages:!0},wall:{performanceMode:"auto",autoStart:!0,connectedOnly:!1,keepEmptySlots:!0,showDeviceStatus:!0,showPerformanceDetails:!1,pauseHiddenTiles:!0,reduceWhenHidden:!0,autoAdjustTileQuality:!0,rememberDevicePositions:!0},filesAudio:{allowFileTransfer:!0,allowFolderSync:!1,askBeforeReceivingFiles:!0,openReceivedFolder:!1,notifyTransferComplete:!0,allowOverwrite:!1,defaultReceiveFolder:"Desktop/LiveDeskFiles",maxFileSizeBytes:1073741824,allowRemoteAudio:!0,startAudioMuted:!1,rememberVolume:!0,automaticallyRecoverAudio:!0,showAudioTroubleshooting:!1,rollingBufferEnabled:!1,recordingQuality:"standard",timelapseIntervalSeconds:10,includeRemoteCursor:!0,captureSaveLocation:"LiveDesk Captures",captureAutoDelete:"never"},agent:{enabled:!1,defaultPermissionMode:"safe-auto",askBeforeDestructive:!0,allowProcessManagement:!0,allowServiceManagement:!0,allowFileChanges:!0,allowCommandExecution:!1,allowSoftwareInstallation:!1,allowPowerActions:!1,keepAuditHistory:!0,timeoutMinutes:10},advanced:{wallFrameMode:"auto",wallFps:20,wallMaxWidth:960,wallMaxHeight:540,wallQuality:55,controlFrameMode:"mode3-h264-hw",controlFps:30,controlMaxWidth:1920,controlMaxHeight:1080,controlQuality:60,transport:"auto",allowPlainLanFallback:!1,verboseLogs:!1,frameStatistics:!1}}},q0=[{id:"connection",label:"Connection",icon:so},{id:"security",label:"Security",icon:pn},{id:"control",label:"Control",icon:en},{id:"wall",label:"Wall",icon:Tc},{id:"files-audio",label:"Files & Audio",icon:ao},{id:"agent",label:"Agent",icon:ir},{id:"advanced",label:"Advanced",icon:bd}];function Zi(n,a){return n?.settings?.[a]||oh.settings[a]}function tt({icon:n,title:a,description:i,children:r,disabled:c=!1,recommended:u=!1}){return l.jsxs("div",{className:`product-setting-row ${c?"disabled":""}`,children:[l.jsx("div",{className:"product-setting-control",children:r}),n&&l.jsx("span",{className:"product-setting-icon",children:l.jsx(n,{size:17})}),l.jsxs("div",{className:"product-setting-copy",children:[l.jsx("strong",{children:a}),u&&l.jsx("em",{children:"Recommended"}),l.jsx("small",{children:i})]})]})}function ft({checked:n,onChange:a,disabled:i=!1,label:r}){return l.jsxs("label",{className:"product-switch",children:[l.jsx("input",{"aria-label":r,type:"checkbox",checked:n,disabled:i,onChange:c=>a(c.target.checked)}),l.jsx("span",{})]})}function xl({value:n,onChange:a,options:i,disabled:r=!1,label:c}){return l.jsx("select",{"aria-label":c,value:String(n),disabled:r,onChange:u=>a(u.target.value),children:i.map(([u,m])=>l.jsx("option",{value:u,children:m},u))})}function G0({hubUrl:n="",runtimeRole:a="hub",runtimeDeviceId:i="",sessionAccessToken:r="",initialTab:c="connection",pin:u,wall:m,control:p,agent:v,advancedExtras:g,captureGallery:w}){const[y,b]=f.useState(c),[C,k]=f.useState(null),[A,T]=f.useState("loading"),[j,R]=f.useState(""),[E,H]=f.useState("idle"),[F,q]=f.useState("");f.useEffect(()=>{let de=!0;return T("loading"),Be("/api/settings",void 0,n).then(Ne=>{de&&(k({revision:Number(Ne.revision||0),updatedAt:Ne.updatedAt,settings:Ne.settings}),T("saved"))}).catch(Ne=>{de&&(R(Ne instanceof Error?Ne.message:String(Ne)),k(oh),T("failed"))}),()=>{de=!1}},[n]);const I=async(de,Ne,Ie)=>{const re=C||oh,Ke=re,De={...re,settings:{...re.settings,[de]:{...Zi(re,de),[Ne]:Ie}}};k(De),T("saving"),R("");try{const Qe=await Be("/api/settings",{method:"PATCH",body:JSON.stringify({revision:re.revision,[de]:{[Ne]:Ie}})},n);k({revision:Qe.revision,updatedAt:Qe.updatedAt,settings:Qe.settings}),T("saved")}catch(Qe){k(Ke),T("failed"),R(Qe instanceof Error?Qe.message:String(Qe))}},_=(de,Ne)=>Ie=>{I(de,Ne,Ie)},fe=async()=>{if(a!=="hub"||!i||!r){H("failed"),q("Sign in to this Hub before changing its runtime role.");return}if(window.confirm("Switch this computer to the Client role? The Hub will stop and LiveDesk will restart as Client.")){H("changing"),q("");try{await Be("/api/runtime/role",{method:"POST",headers:{Authorization:`Bearer ${r}`},body:JSON.stringify({role:"client"})},n),H("accepted")}catch(de){H("failed"),q(de instanceof Error?de.message:String(de))}}},G=Zi(C,"security"),ue=Zi(C,"connection"),Y=Zi(C,"control"),ae=Zi(C,"wall"),le=Zi(C,"filesAudio"),V=Zi(C,"agent"),z=f.useMemo(()=>G.allowInternetConnections===!1?{label:"Local only",tone:"local",detail:"Internet connections are disabled."}:G.requireEncryptedConnections&&G.requireNewDeviceApproval&&G.accessMode==="trusted-only"?{label:"Protected",tone:"protected",detail:"Encrypted connections and trusted-device approval are active."}:{label:"Needs attention",tone:"attention",detail:"Review access and encryption settings before sharing this Hub."},[G]),K=`settings-panel-${y}`,Q=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"product-settings-hero",children:[l.jsxs("div",{children:[l.jsxs("span",{className:"settings-eyebrow",children:[l.jsx(so,{size:14})," Connection"]}),l.jsx("h2",{children:"Connect a device"}),l.jsx("p",{children:"Use the short PIN on the computer you want to add. The PIN is temporary and can be replaced at any time."})]}),l.jsxs("div",{className:"product-save-state",role:"status",children:[l.jsx(uy,{size:14})," ",A==="saving"?"Saving":A==="failed"?"Failed":A==="loading"?"Loading":"Saved"]})]}),u,l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Connection behavior"}),l.jsx("h3",{children:"New device access"})]}),l.jsx(bc,{size:20})]}),l.jsx(tt,{icon:bc,title:"Use PIN to add new devices",description:"Allow temporary PIN pairing from the client.",recommended:!0,children:l.jsx(ft,{checked:!!ue.usePinToAddDevices,onChange:_("connection","usePinToAddDevices"),label:"Use PIN to add new devices"})}),l.jsx(tt,{icon:pn,title:"Approve new devices on this Hub",description:"Ask for approval before an unfamiliar computer becomes trusted.",children:l.jsx(ft,{checked:!!ue.approveNewDevices,onChange:_("connection","approveNewDevices"),label:"Approve new devices"})}),l.jsx(tt,{icon:qt,title:"Show connection notifications",description:"Show a short notice when a computer connects or leaves.",children:l.jsx(ft,{checked:!!ue.showConnectionNotifications,onChange:_("connection","showConnectionNotifications"),label:"Show connection notifications"})})]}),l.jsxs("section",{className:"settings-section-card runtime-role-settings",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Runtime role"}),l.jsx("h3",{children:"Use this computer as a Client"})]}),l.jsx(bd,{size:20})]}),l.jsx("p",{className:"settings-help",children:"This stops the Hub listener, saves the Client role in Supabase, and restarts LiveDesk through the unified launcher."}),E==="accepted"?l.jsx("p",{className:"settings-help runtime-role-success",children:"Role change accepted. LiveDesk is restarting as Client."}):F?l.jsx("p",{className:"settings-help runtime-role-error",role:"alert",children:F}):null,l.jsx("button",{className:"settings-reset",onClick:()=>{fe()},disabled:E==="changing"||a!=="hub",type:"button",children:E==="changing"?"Switching role…":"Switch this computer to Client"})]})]}),P=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:`security-status-card ${z.tone}`,children:[l.jsxs("div",{children:[l.jsx("span",{children:"Security status"}),l.jsx("strong",{children:z.label}),l.jsx("small",{children:z.detail})]}),l.jsx(pn,{size:28})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Access mode"}),l.jsx("h3",{children:"Who may use this Hub?"})]}),l.jsx(Nc,{size:20})]}),l.jsx(tt,{icon:pn,title:"Access mode",description:"Choose the default boundary for remote sessions.",recommended:!0,children:l.jsx(xl,{value:String(G.accessMode),onChange:_("security","accessMode"),label:"Access mode",options:[["trusted-only","Trusted devices only"],["ask-every-time","Ask every time"],["view-only","View only"],["block-remote-access","Block remote access"]]})}),l.jsx(tt,{icon:so,title:"Require encrypted connections",description:"External connections cannot disable this protection.",recommended:!0,children:l.jsx(ft,{checked:!!G.requireEncryptedConnections,onChange:_("security","requireEncryptedConnections"),label:"Require encrypted connections"})}),l.jsx(tt,{icon:so,title:"Allow internet connections",description:"Keep off unless you intentionally expose this Hub beyond the LAN.",children:l.jsx(ft,{checked:!!G.allowInternetConnections,onChange:_("security","allowInternetConnections"),label:"Allow internet connections"})}),l.jsx(tt,{icon:en,title:"Allow LAN connections",description:"Permit connections from the local network.",children:l.jsx(ft,{checked:!!G.allowLanConnections,onChange:_("security","allowLanConnections"),label:"Allow LAN connections"})}),l.jsx(tt,{icon:pn,title:"Require approval for new devices",description:"New computers must be approved before remote access is granted.",children:l.jsx(ft,{checked:!!G.requireNewDeviceApproval,onChange:_("security","requireNewDeviceApproval"),label:"Require approval for new devices"})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Session protection"}),l.jsx("h3",{children:"End sessions safely"})]}),l.jsx(qt,{size:20})]}),l.jsx(tt,{icon:en,title:"Show an indicator while Control is active",description:"Make active remote control visible on the local computer.",children:l.jsx(ft,{checked:!!G.visibleControlIndicator,onChange:_("security","visibleControlIndicator"),label:"Show Control indicator"})}),l.jsx(tt,{icon:Nc,title:"Lock the remote computer when Control ends",description:"Protect the local screen after a Control session.",children:l.jsx(ft,{checked:!!G.lockOnControlEnd,onChange:_("security","lockOnControlEnd"),label:"Lock after Control ends"})}),l.jsx(tt,{icon:qt,title:"Disconnect idle Control sessions",description:"Automatically close inactive Control sessions.",children:l.jsx(ft,{checked:!!G.disconnectIdleControlSessions,onChange:_("security","disconnectIdleControlSessions"),label:"Disconnect idle sessions"})}),l.jsx(tt,{icon:qt,title:"Idle timeout",description:"Time before an inactive Control session closes.",disabled:!G.disconnectIdleControlSessions,children:l.jsx(xl,{value:Number(G.idleControlMinutes),onChange:de=>_("security","idleControlMinutes")(Number(de)),disabled:!G.disconnectIdleControlSessions,label:"Idle timeout",options:[["5","5 minutes"],["15","15 minutes"],["30","30 minutes"],["60","1 hour"],["1440","Never"]]})})]})]}),ie=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Remote use"}),l.jsx("h3",{children:"What can a connected user do?"})]}),l.jsx(en,{size:20})]}),l.jsx(tt,{icon:en,title:"Keyboard and mouse control",description:"Allow the Hub to send keyboard and pointer input.",recommended:!0,children:l.jsx(ft,{checked:!!Y.allowKeyboardMouse,onChange:_("control","allowKeyboardMouse"),label:"Keyboard and mouse control"})}),l.jsx(tt,{icon:Wb,title:"System shortcuts",description:"Allow shortcut keys such as Alt-Tab and the system key.",children:l.jsx(ft,{checked:!!Y.allowSystemShortcuts,onChange:_("control","allowSystemShortcuts"),label:"System shortcuts"})}),l.jsx(tt,{icon:bc,title:"Clipboard text sharing",description:"Share plain text through the remote session.",children:l.jsx(ft,{checked:!!Y.allowClipboardText,onChange:_("control","allowClipboardText"),label:"Clipboard text sharing"})}),l.jsx(tt,{icon:qt,title:"Remote restart",description:"Allow restart requests from Control.",disabled:!Y.allowKeyboardMouse,children:l.jsx(ft,{checked:!!Y.allowRemoteRestart,onChange:_("control","allowRemoteRestart"),disabled:!Y.allowKeyboardMouse,label:"Remote restart"})}),l.jsx(tt,{icon:en,title:"Switching monitors",description:"Allow the viewer to select another connected display.",children:l.jsx(ft,{checked:!!Y.allowSwitchingMonitors,onChange:_("control","allowSwitchingMonitors"),label:"Switching monitors"})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Session behavior"}),l.jsx("h3",{children:"Make Control predictable"})]}),l.jsx(In,{size:20})]}),l.jsx(tt,{icon:en,title:"Open Control on double-click",description:"Double-clicking a Wall tile opens its Control view.",children:l.jsx(ft,{checked:!!Y.openControlOnDoubleClick,onChange:_("control","openControlOnDoubleClick"),label:"Open Control on double-click"})}),l.jsx(tt,{icon:qt,title:"Start audio with Control",description:"Keep audio muted by default for new sessions.",children:l.jsx(ft,{checked:!!Y.startRemoteAudioWithControl,onChange:_("control","startRemoteAudioWithControl"),label:"Start audio with Control"})}),l.jsx(tt,{icon:en,title:"Fit remote screen to window",description:"Scale the remote display to the available Control area.",children:l.jsx(ft,{checked:!!Y.fitRemoteScreen,onChange:_("control","fitRemoteScreen"),label:"Fit remote screen"})}),l.jsx(tt,{icon:qt,title:"Keep Control ready between pages",description:"Faster reconnection for 1 minute.",recommended:!0,children:l.jsx(ft,{checked:!!Y.keepControlReadyBetweenPages,onChange:_("control","keepControlReadyBetweenPages"),label:"Keep Control ready between pages"})})]})]}),Se=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Performance mode"}),l.jsx("h3",{children:"Let LiveDesk choose the best path"})]}),l.jsx(Tc,{size:20})]}),l.jsx(tt,{icon:ir,title:"Performance mode",description:"Automatic mode balances responsiveness and image quality.",recommended:!0,children:l.jsx(xl,{value:String(ae.performanceMode),onChange:_("wall","performanceMode"),label:"Performance mode",options:[["auto","Auto"],["responsive","Prioritize responsiveness"],["quality","Prioritize image quality"],["custom","Custom"]]})}),l.jsx("p",{className:"settings-help",children:"Streaming details are available under Advanced for diagnostics and development."})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Wall behavior"}),l.jsx("h3",{children:"What should the Wall show?"})]}),l.jsx(qt,{size:20})]}),[["autoStart","Start Wall automatically","Start a live view when a computer connects."],["connectedOnly","Show only connected devices","Hide disconnected slots."],["keepEmptySlots","Keep empty slots visible","Preserve the layout when a device leaves."],["showDeviceStatus","Show device status on tiles","Display compact machine status."],["showPerformanceDetails","Show performance details","Show advanced frame diagnostics on tiles."],["pauseHiddenTiles","Pause hidden tiles","Reduce capture work for tiles outside the visible area."],["reduceWhenHidden","Reduce activity when the window is hidden","Lower background work when the browser is not visible."],["autoAdjustTileQuality","Automatically adjust tile quality","Adapt tile quality to Wall size and load."]].map(([de,Ne,Ie])=>l.jsx(tt,{icon:en,title:Ne,description:Ie,children:l.jsx(ft,{checked:!!ae[de],onChange:_("wall",de),label:Ne})},de))]})]}),D=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"File permissions"}),l.jsx("h3",{children:"Move files deliberately"})]}),l.jsx(ao,{size:20})]}),l.jsx(tt,{icon:ao,title:"Allow file transfer",description:"Permit Hub-to-device file delivery.",recommended:!0,children:l.jsx(ft,{checked:!!le.allowFileTransfer,onChange:_("filesAudio","allowFileTransfer"),label:"Allow file transfer"})}),l.jsx(tt,{icon:Tc,title:"Allow folder sync",description:"Enable recurring folder synchronization.",disabled:!le.allowFileTransfer,children:l.jsx(ft,{checked:!!le.allowFolderSync,onChange:_("filesAudio","allowFolderSync"),disabled:!le.allowFileTransfer,label:"Allow folder sync"})}),l.jsx(tt,{icon:pn,title:"Ask before receiving files",description:"Require local confirmation before a transfer is written.",children:l.jsx(ft,{checked:!!le.askBeforeReceivingFiles,onChange:_("filesAudio","askBeforeReceivingFiles"),label:"Ask before receiving files"})}),l.jsx(tt,{icon:ao,title:"Allow overwrite",description:"Permit replacing an existing destination file.",children:l.jsx(ft,{checked:!!le.allowOverwrite,onChange:_("filesAudio","allowOverwrite"),label:"Allow overwrite"})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Audio permissions"}),l.jsx("h3",{children:"Remote sound"})]}),l.jsx(qt,{size:20})]}),l.jsx(tt,{icon:qt,title:"Allow remote audio",description:"Permit audio capture from connected computers.",recommended:!0,children:l.jsx(ft,{checked:!!le.allowRemoteAudio,onChange:_("filesAudio","allowRemoteAudio"),label:"Allow remote audio"})}),l.jsx(tt,{icon:qt,title:"Start audio muted",description:"New audio sessions begin silent.",children:l.jsx(ft,{checked:!!le.startAudioMuted,onChange:_("filesAudio","startAudioMuted"),label:"Start audio muted"})}),l.jsx(tt,{icon:qt,title:"Automatically recover audio",description:"Recover from temporary capture or transport stalls.",children:l.jsx(ft,{checked:!!le.automaticallyRecoverAudio,onChange:_("filesAudio","automaticallyRecoverAudio"),label:"Automatically recover audio"})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Capture defaults"}),l.jsx("h3",{children:"Screen recording"})]}),l.jsx(en,{size:20})]}),l.jsx(tt,{icon:qt,title:"Keep a Last 30s buffer",description:"Keep recent video in memory only until you explicitly save it.",children:l.jsx(ft,{checked:!!le.rollingBufferEnabled,onChange:_("filesAudio","rollingBufferEnabled"),label:"Keep a Last 30s buffer"})}),l.jsx(tt,{icon:qt,title:"Recording quality",description:"Choose the WebM bitrate profile.",children:l.jsx(xl,{value:String(le.recordingQuality),onChange:_("filesAudio","recordingQuality"),label:"Recording quality",options:[["standard","Standard"],["high","High"]]})}),l.jsx(tt,{icon:qt,title:"Timelapse interval",description:"Capture one frame at the selected interval.",children:l.jsx(xl,{value:Number(le.timelapseIntervalSeconds),onChange:de=>_("filesAudio","timelapseIntervalSeconds")(Number(de)),label:"Timelapse interval",options:[["5","5 seconds"],["10","10 seconds"],["30","30 seconds"],["60","60 seconds"]]})}),l.jsx(tt,{icon:en,title:"Include remote cursor",description:"Include the cursor indicator when the source provides it.",children:l.jsx(ft,{checked:!!le.includeRemoteCursor,onChange:_("filesAudio","includeRemoteCursor"),label:"Include remote cursor"})}),l.jsx(tt,{icon:ao,title:"Capture save location",description:"Captures are stored inside the Hub capture library.",children:l.jsx(xl,{value:String(le.captureSaveLocation),onChange:_("filesAudio","captureSaveLocation"),label:"Capture save location",options:[[String(le.captureSaveLocation||"LiveDesk Captures"),"LiveDesk Captures"]]})}),l.jsx(tt,{icon:ao,title:"Automatic deletion",description:"Keep saved captures until you delete them.",children:l.jsx(xl,{value:String(le.captureAutoDelete),onChange:_("filesAudio","captureAutoDelete"),label:"Automatic deletion",options:[["never","Never"],["7-days","After 7 days"],["30-days","After 30 days"]]})})]}),w]}),Z=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Agent safety"}),l.jsx("h3",{children:"AI workstation operations"})]}),l.jsx(ir,{size:20})]}),l.jsx(tt,{icon:ir,title:"Enable AI Agent on devices",description:"Allow Agent runs to reach connected workstations.",recommended:!0,children:l.jsx(ft,{checked:!!V.enabled,onChange:_("agent","enabled"),label:"Enable AI Agent"})}),l.jsx(tt,{icon:pn,title:"Default permission mode",description:"Safe Auto keeps destructive operations behind approval.",children:l.jsx(xl,{value:String(V.defaultPermissionMode),onChange:_("agent","defaultPermissionMode"),label:"Default Agent permission mode",options:[["ask","Ask"],["safe-auto","Safe Auto"],["full-access","Full Access"],["custom","Custom"]]})}),l.jsx(tt,{icon:pn,title:"Ask before destructive operations",description:"Locked on for Safe Auto and destructive actions.",disabled:!V.enabled,children:l.jsx(ft,{checked:!!V.askBeforeDestructive,onChange:_("agent","askBeforeDestructive"),disabled:!V.enabled,label:"Ask before destructive operations"})}),l.jsx(tt,{icon:qt,title:"Keep Agent audit history",description:"Retain an inspectable record of Agent runs.",children:l.jsx(ft,{checked:!!V.keepAuditHistory,onChange:_("agent","keepAuditHistory"),label:"Keep Agent audit history"})}),l.jsx(tt,{icon:qt,title:"Stop Agent tasks after timeout",description:"Maximum runtime for one task.",children:l.jsx(xl,{value:Number(V.timeoutMinutes),onChange:de=>_("agent","timeoutMinutes")(Number(de)),label:"Agent task timeout",options:[["1","1 minute"],["5","5 minutes"],["10","10 minutes"],["30","30 minutes"],["60","1 hour"]]})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Detailed permissions"}),l.jsx("h3",{children:"Capabilities"})]}),l.jsx(pn,{size:20})]}),[["allowProcessManagement","Allow process management"],["allowServiceManagement","Allow service management"],["allowFileChanges","Allow file changes"],["allowCommandExecution","Allow command execution"],["allowSoftwareInstallation","Allow software installation"],["allowPowerActions","Allow power actions"]].map(([de,Ne])=>l.jsx(tt,{icon:pn,title:Ne,description:de.includes("allowCommand")||de.includes("Installation")||de.includes("Power")?"Disabled by default for safety.":"Applied by the Hub and checked again by the Client.",children:l.jsx(ft,{checked:!!V[de],onChange:_("agent",de),label:Ne})},de))]}),l.jsx("p",{className:"settings-help",children:"The existing Codex runtime and audit controls remain available below in Advanced and the Agent diagnostics panel."})]}),be=y==="connection"?Q:y==="security"?P:y==="control"?ie:y==="wall"?Se:y==="files-audio"?D:y==="agent"?l.jsxs(l.Fragment,{children:[Z,v]}):l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[g,l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Developer controls"}),l.jsx("h3",{children:"Streaming and diagnostics"})]}),l.jsx(bd,{size:20})]}),l.jsx("p",{className:"settings-help",children:"Codec, frame rate, resolution, quality, Atlas layout, and decoder preferences are intentionally kept here."}),m,p]})]});return l.jsxs("section",{className:"settings-page",children:[l.jsx("div",{className:"settings-page-tabs",role:"tablist","aria-label":"LiveDesk settings",children:q0.map(({id:de,label:Ne,icon:Ie})=>l.jsxs("button",{className:y===de?"active":"",id:`settings-tab-${de}`,role:"tab","aria-selected":y===de,"aria-controls":`settings-panel-${de}`,tabIndex:y===de?0:-1,onClick:()=>b(de),type:"button",children:[l.jsx(Ie,{size:16}),Ne]},de))}),j&&l.jsx("div",{className:"agent-settings-alert error",role:"alert",children:j}),l.jsx("section",{className:"settings-page-panel",id:K,role:"tabpanel","aria-labelledby":`settings-tab-${y}`,tabIndex:0,children:be})]})}function V0({children:n}){return l.jsx("div",{className:"settings-tab-content",children:n})}function Y0({children:n}){return l.jsx("div",{className:"settings-tab-content",children:n})}function W0({children:n}){return l.jsx("div",{className:"settings-tab-content",children:n})}const Ty={enabled:!0,provider:"codex",codexModelId:"",codexReasoningEffort:"medium",codexTaskTimeoutMs:6e5,codexMaxToolCalls:20,codexWorkingDirectory:"",codexResumeSessions:!0,codexShowDetailedEvents:!0,deterministicParserFirst:!0,generateSummary:!0,fallbackSummary:!0,includeRawDeviceDetails:!1,baseUrl:"https://opencode.ai/zen/go/v1",defaultModelId:"deepseek-v4-flash"};function sx(n){return{...Ty,...n||{}}}function K0({hubUrl:n}){const[a,i]=f.useState(Ty),[r,c]=f.useState(null),[u,m]=f.useState(""),[p,v]=f.useState(""),[g,w]=f.useState(""),[y,b]=f.useState("");f.useEffect(()=>{let _=!0;return Be("/api/settings/agent",void 0,n).then(fe=>{_&&(c(fe.settings),i(sx(fe.settings)))}).catch(fe=>{_&&b(fe instanceof Error?fe.message:String(fe))}),()=>{_=!1}},[n]);const C=(_,fe)=>i(G=>({...G,[_]:fe})),k=_=>{c(_),i(sx(_))},A=async()=>{v("save"),b(""),w("");try{const _={...a};u.trim()&&(_.apiKey=u.trim());const fe=await Be("/api/settings/agent",{method:"PUT",body:JSON.stringify(_)},n);k(fe.settings),m(""),w("Agent settings saved.")}catch(_){b(_ instanceof Error?_.message:String(_))}finally{v("")}},T=async()=>{v("reset"),b("");try{const _=await Be("/api/settings/agent/reset",{method:"POST",body:JSON.stringify({})},n);k(_.settings),w("Codex defaults restored.")}catch(_){b(_ instanceof Error?_.message:String(_))}finally{v("")}},j=async()=>{v("test"),b(""),w("");try{const _=await Be("/api/settings/agent/test",{method:"POST",body:JSON.stringify({})},n),fe=await Be("/api/settings/agent",void 0,n);k(fe.settings),w(`Codex connection verified with ${_.connection?.modelName||"the configured model"}${_.connection?.latencyMs?` in ${_.connection.latencyMs} ms.`:"."}`)}catch(_){b(_ instanceof Error?_.message:String(_))}finally{v("")}},R=async()=>{v("clear-key"),b("");try{const _=await Be("/api/settings/agent/api-key",{method:"DELETE"},n);k(_.settings),m(""),w("The optional OpenCode Go key was removed.")}catch(_){b(_ instanceof Error?_.message:String(_))}finally{v("")}},E=r?.codexInstallation==="installed"&&r.codexAuth==="signed-in",H=r?.securityStatus,F=H?.state||"unavailable",q=F==="verified"?"Verified":F==="configured"?"Configured":"Unavailable",I=[["Codex home",H?.isolatedCodexHome],["Environment variables",H?.restrictedEnvironment],["LiveDesk MCP only",H?.livedeskMcpOnly],["Selected-device scope",H?.selectedDeviceScopeEnforced],["Fail-closed execution",H?.failClosed]];return l.jsxs("div",{className:"settings-tab-content agent-settings-content",children:[l.jsxs("header",{className:"agent-settings-header",children:[l.jsxs("div",{children:[l.jsxs("span",{className:"settings-eyebrow",children:[l.jsx(Rv,{size:14})," Agent AI"]}),l.jsx("h2",{children:"Codex SDK"}),l.jsx("p",{children:"Codex owns the agent reasoning loop. LiveDesk keeps the existing task manager and exposes only safe, read-only workstation tools."})]}),l.jsxs("label",{className:"settings-toggle agent-enable-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.enabled,onChange:_=>C("enabled",_.target.checked)}),l.jsx("span",{children:"Enable Agent AI"})]})]}),y&&l.jsx("div",{className:"agent-settings-alert error",role:"alert",children:y}),g&&l.jsx("div",{className:"agent-settings-alert success",role:"status",children:g}),l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Provider"}),l.jsx("h3",{children:"Codex is the default"})]}),l.jsx(bc,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Agent provider"}),l.jsxs("select",{value:a.provider,onChange:_=>C("provider",_.target.value),children:[l.jsx("option",{value:"codex",children:"Codex SDK"}),l.jsx("option",{value:"opencode-go",children:"OpenCode Go (optional legacy)"})]})]}),l.jsxs("div",{className:"agent-connection-row",children:[l.jsx("span",{className:`agent-connection-dot ${E?"connected":r?.codexAuth==="not-signed-in"?"unavailable":""}`}),l.jsx("span",{children:r?.codexInstallation==="not-installed"?"Codex SDK not installed":r?.codexAuth==="signed-in"?"Codex CLI signed in":r?.codexAuth==="not-signed-in"?"Codex CLI sign-in required":"Codex status not tested"}),l.jsxs("button",{className:"settings-reset",onClick:()=>{j()},disabled:p!==""||a.provider!=="codex",type:"button",children:[l.jsx(Kb,{size:15})," ",p==="test"?"Testing":"Test connection"]})]}),l.jsxs("p",{className:"settings-help",children:[l.jsx(Qb,{size:12})," Authentication is owned by the installed Codex CLI. LiveDesk never asks for or stores a ChatGPT token."]}),r?.codexPath&&l.jsxs("p",{className:"settings-help",children:["CLI: ",r.codexPath]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Codex runtime"}),l.jsx("h3",{children:"Model and reasoning"})]}),l.jsx(Rv,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Model"}),l.jsx("input",{value:a.codexModelId,onChange:_=>C("codexModelId",_.target.value),placeholder:"Codex default",disabled:a.provider!=="codex"})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Reasoning effort"}),l.jsxs("select",{value:a.codexReasoningEffort,onChange:_=>C("codexReasoningEffort",_.target.value),disabled:a.provider!=="codex",children:[l.jsx("option",{value:"minimal",children:"Minimal"}),l.jsx("option",{value:"low",children:"Low"}),l.jsx("option",{value:"medium",children:"Medium"}),l.jsx("option",{value:"high",children:"High"}),l.jsx("option",{value:"xhigh",children:"Extra high"})]})]}),l.jsxs("div",{className:"settings-field-grid",children:[l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Task timeout (ms)"}),l.jsx("input",{type:"number",min:"30000",max:"1800000",step:"10000",value:a.codexTaskTimeoutMs,onChange:_=>C("codexTaskTimeoutMs",Number(_.target.value)),disabled:a.provider!=="codex"})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Max tool calls"}),l.jsx("input",{type:"number",min:"1",max:"100",value:a.codexMaxToolCalls,onChange:_=>C("codexMaxToolCalls",Number(_.target.value)),disabled:a.provider!=="codex"})]})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Workspace"}),l.jsx("h3",{children:"Restricted execution context"})]}),l.jsx(pn,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Working directory"}),l.jsx("input",{value:r?.agentWorkspacePath||a.codexWorkingDirectory,readOnly:!0})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.codexResumeSessions,onChange:_=>C("codexResumeSessions",_.target.checked),disabled:a.provider!=="codex"}),l.jsx("span",{children:"Allow session resume"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.codexShowDetailedEvents,onChange:_=>C("codexShowDetailedEvents",_.target.checked),disabled:a.provider!=="codex"}),l.jsx("span",{children:"Show detailed Codex events"})]}),l.jsx("p",{className:"settings-help",children:"The agent receives no project path or arbitrary filesystem directory. It can call LiveDesk MCP tools only."})]})]}),a.provider==="opencode-go"&&l.jsxs("section",{className:"settings-section-card agent-legacy-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Developer fallback"}),l.jsx("h3",{children:"OpenCode Go"})]}),l.jsx(bc,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Base URL"}),l.jsx("input",{value:a.baseUrl,onChange:_=>C("baseUrl",_.target.value)})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"API key"}),l.jsx("input",{type:"password",value:u,onChange:_=>m(_.target.value),placeholder:r?.hasApiKey?r.apiKeyPreview:"Stored only in the Hub",autoComplete:"new-password"})]}),l.jsxs("div",{className:"settings-action-row",children:[l.jsxs("button",{className:"settings-reset",onClick:()=>{R()},disabled:p!==""||!r?.hasApiKey,type:"button",children:[l.jsx(Sh,{size:15})," Clear key"]}),l.jsx("span",{className:"settings-help",children:"This provider does not run the Codex MCP tool loop."})]})]}),l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Agent behavior"}),l.jsx("h3",{children:"Predictable operation"})]}),l.jsx(In,{size:20})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.deterministicParserFirst,onChange:_=>C("deterministicParserFirst",_.target.checked)}),l.jsx("span",{children:"Use deterministic parser before Codex"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.generateSummary,onChange:_=>C("generateSummary",_.target.checked)}),l.jsx("span",{children:"Generate task summaries"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.fallbackSummary,onChange:_=>C("fallbackSummary",_.target.checked)}),l.jsx("span",{children:"Fallback to deterministic summaries"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.includeRawDeviceDetails,onChange:_=>C("includeRawDeviceDetails",_.target.checked)}),l.jsx("span",{children:"Include raw device details in summaries"})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Safety"}),l.jsx("h3",{children:"Locked execution boundary"})]}),l.jsx(pn,{size:20})]}),["Arbitrary shell commands","PowerShell and Bash","Filesystem writes, deletes, and installs","Reboot, shutdown, and process termination","Network access and web search"].map(_=>l.jsxs("div",{className:"agent-safety-row",children:[l.jsx(bh,{size:15}),l.jsx("span",{children:_}),l.jsx("strong",{children:"Blocked"})]},_)),I.map(([_])=>l.jsxs("div",{className:"agent-safety-row",children:[l.jsx(pn,{size:15}),l.jsx("span",{children:_}),l.jsx("strong",{className:F==="unavailable"?"agent-safety-failed":F==="configured"?"agent-safety-configured":"agent-safety-verified",children:q})]},_)),l.jsx("p",{className:"settings-help",children:"Configured means the boundary is present but has not completed runtime verification. Test the connection or start an Agent run to verify it."})]})]}),l.jsxs("div",{className:"settings-action-row agent-settings-actions",children:[l.jsxs("button",{className:"settings-reset",onClick:()=>{T()},disabled:p!=="",type:"button",children:[l.jsx(Sc,{size:15})," Reset defaults"]}),l.jsxs("button",{className:"text-button primary",onClick:()=>{A()},disabled:p!=="",type:"button",children:[l.jsx(uy,{size:15})," ",p==="save"?"Saving":"Save Agent settings"]})]})]})}new Date().valueOf();function zs(n){const[a,i]=f.useState(n),r=f.useRef(n);return f.useEffect(()=>{if(r.current!==n){if(Array.isArray(r.current)&&Array.isArray(n)&&r.current.length===0&&n.length===0)return;r.current=n,i(n)}},[n]),[a,i]}function Nh(n,a){return typeof n=="function"?typeof a=="object"?n(a):n():n}function co(n,a="data-id"){let i=n;for(!i.tagName&&n.target&&(i=n.target);i;){if(i.getAttribute&&i.getAttribute(a))return i;i=i.parentNode}return null}function Q0(n,a="data-id"){const i=co(n,a);return i?i.getAttribute(a):null}function Lc(n,a="data-id"){const i=co(n,a);return i?Od(i,a):null}function Od(n,a="data-id"){const i=n.getAttribute(a);return i?X0(i):null}function Cn(n){return typeof n=="string"?":"+n:n}function X0(n){if(n.startsWith(":"))return n.substring(1);const a=n*1;return isNaN(a)?n:a}function Z0(){return{detect:()=>!0,addEvent:function(n,a,i){return n.addEventListener(a,i),()=>n.removeEventListener(a,i)},addGlobalEvent:function(n,a){return document.addEventListener(n,a),()=>document.removeEventListener(n,a)},getTopNode:function(){return window.document.body}}}var xa=Z0();function Th(n){Object.assign(xa,n)}function lx(n,a,i){function r(c){const u=co(c);if(!u)return;const m=Od(u);if(typeof a=="function")return a(m,c);let p,v=c.target;for(;v!=u;){if(p=v.dataset?v.dataset.action:null,p&&a[p]){a[p](m,c);return}v=v.parentNode}a[i]&&a[i](m,c)}xa.addEvent(n,i,r)}function uo(n,a){lx(n,a,"click"),a.dblclick&&lx(n,a.dblclick,"dblclick")}function J0(n,a){for(let i=n.length-1;i>=0;i--)if(n[i]===a){n.splice(i,1);break}}function e1(n,a,i){for(let r=0;r<wl.length;r++){if(r===i)continue;const c=wl[r],u=c.props.parent?.();if(u&&n.contains(u)&&c.node.contains(a))return!0}return!1}var Ry=new Date,Td=!1,Ju=[],wl=[],ix=n=>{const a=n.target;if(Td||!a.isConnected){Td=!1;return}for(let i=wl.length-1;i>=0;i--){const{node:r,date:c,props:u}=wl[i];if(!(c>Ry)&&!r.contains(a)&&r!==a&&(e1(r,a,i)||(u.callback&&u.callback(n),u.modal||n.defaultPrevented)))break}},t1=n=>{Ry=new Date,Td=!0;for(let a=wl.length-1;a>=0;a--){const{node:i}=wl[a];if(!i.contains(n.target)&&i!==n.target){Td=!1;break}}};function Os(n,a){Ju.length||(Ju=[xa.addGlobalEvent("click",ix,n),xa.addGlobalEvent("contextmenu",ix,n),xa.addGlobalEvent("mousedown",t1,n)]),typeof a!="object"&&(a={callback:a});const i={node:n,date:new Date,props:a};return wl.push(i),{destroy(){J0(wl,i),wl.length||(Ju.forEach(r=>r()),Ju=[])}}}var ed=n=>n.indexOf("bottom")!==-1,td=n=>n.indexOf("left")!==-1,nd=n=>n.indexOf("right")!==-1,Em=n=>n.indexOf("top")!==-1,rx=n=>n.indexOf("fit")!==-1,mc=n=>n.indexOf("overlap")!==-1,n1=n=>n.split("-").every(a=>["center","fit"].indexOf(a)>-1),a1=n=>{const a=n.match(/(start|center|end)/);return a?a[0]:null};function s1(n,a){let i=0;const r=xa.getTopNode(n);for(;n&&n!==r;){const c=getComputedStyle(n).position;if((c==="absolute"||c==="relative"||c==="fixed")&&(i=parseInt(getComputedStyle(n).zIndex)||0),n=n.parentNode,n===a)break}return i}var on,qn,hc,On;function Ey(n,a,i="bottom",r=0,c=0){if(!n)return null;on=r,qn=c,hc="auto";let u=0,m=0,p=i;const v=Dy(n),g=mc(i)?xa.getTopNode(n):v;if(!v)return null;const w=v.getBoundingClientRect(),y=n.getBoundingClientRect(),b=g.getBoundingClientRect(),C=window.getComputedStyle(g),k={left:0,top:0,bottom:0,right:0};for(const H in k){const F=`border-${H}-width`;k[H]=parseFloat(C.getPropertyValue(F))}if(a){const H=s1(a,v);u=Math.max(H+1,20)}if(a){if(On=a.getBoundingClientRect(),rx(i)&&(hc=On.width+"px"),i!=="point")if(n1(i))rx(i)?on=0:(on=b.width/2,m=1),qn=(b.height-y.height)/2;else{const H=mc(i)?0:1;on=nd(i)?On.right+H:On.left-H,qn=ed(i)?On.bottom+1:On.top;const F=a1(i);F&&(nd(i)||td(i)?F==="center"?qn-=(y.height-On.height)/2:F==="end"&&(qn-=y.height-On.height):(ed(i)||Em(i))&&(F==="center"?on-=(y.width-On.width)/2:F==="end"&&(on-=y.width-On.width),mc(i)||(on+=1)))}}else On={left:r,right:r,top:c,bottom:c};const A=(td(i)||nd(i))&&(ed(i)||Em(i));td(i)&&(m=2);const T=on-y.width-b.left;a&&td(i)&&!A&&T<0&&(on=On.right,m=0,p=p.replace("left","right"));const j=on+y.width*(1-m/2)-b.right;if(j>0)if(!nd(i))on=b.right-k.right-y.width;else{const H=On.left-b.x-y.width;a&&!A&&H>=0?(on=On.left-y.width,p=p.replace("right","left")):on-=j+k.right}m&&(on=Math.round(on-y.width*m/2));const R=T<0||j>0||!A;Em(i)&&(qn=On.top-y.height,a&&qn<b.y&&R&&(qn=On.bottom,p=p.replace("top","bottom")));const E=qn+y.height-b.bottom;return E>0&&(a&&ed(i)&&R?(qn-=y.height+On.height+1,p=p.replace("bottom","top")):qn-=E+k.bottom),on-=w.left+k.left,qn-=w.top+k.top,on=(mc(i)?on:Math.max(on,0))+g.scrollLeft,qn=(mc(i)?qn:Math.max(qn,0))+g.scrollTop,hc=hc||"auto",{at:p,x:on,y:qn,z:u,width:hc}}function Dy(n){const a=xa.getTopNode(n);for(n&&(n=n.parentElement);n;){const i=getComputedStyle(n).position;if(n===a||i==="relative"||i==="absolute"||i==="fixed")return n;n=n.parentNode}return null}function l1(n){const a=[];let i=n;const r=xa.getTopNode(n);for(;i&&i!==r&&!i.getAttribute("data-wx-portal-root");)getComputedStyle(i).position==="absolute"&&a.push(i),i=i.parentNode;return a}var ox=new Date().valueOf();function Rh(){return ox+=1,ox}function Vn(n){return n<10?"0"+n:n.toString()}function i1(n){const a=Vn(n);return a.length==2?"0"+a:a}function Ly(n){const a=Math.floor(n/11)*11;return{start:a,end:a+11}}function Dm(n){const a=(n.getDay()+6)%7,i=new Date(n.valueOf());i.setDate(n.getDate()+(3-a)),i.setHours(0,0,0,0);const r=new Date(i.getFullYear(),0,1),c=Math.round((i.getTime()-r.getTime())/864e5);return 1+Math.floor(c/7)}var cx=["",""];function r1(n,a,i){switch(n){case"%d":return Vn(a.getDate());case"%m":return Vn(a.getMonth()+1);case"%j":return a.getDate();case"%n":return a.getMonth()+1;case"%y":return Vn(a.getFullYear()%100);case"%Y":return a.getFullYear();case"%D":return i.dayShort[a.getDay()];case"%l":return i.dayFull[a.getDay()];case"%M":return i.monthShort[a.getMonth()];case"%F":return i.monthFull[a.getMonth()];case"%h":return Vn((a.getHours()+11)%12+1);case"%g":return(a.getHours()+11)%12+1;case"%G":return a.getHours();case"%H":return Vn(a.getHours());case"%i":return Vn(a.getMinutes());case"%a":return((a.getHours()>11?i.pm:i.am)||cx)[0];case"%A":return((a.getHours()>11?i.pm:i.am)||cx)[1];case"%s":return Vn(a.getSeconds());case"%S":return i1(a.getMilliseconds());case"%W":return Vn(Dm(a));case"%w":{const r=i.weekStart??1;if(r===1)return Vn(Dm(a));const c=(a.getDay()-r+7)%7,u=(1-r+7)%7,m=new Date(a.valueOf());return m.setDate(a.getDate()+(u-c)),Vn(Dm(m))}case"%c":{let r=a.getFullYear()+"";return r+="-"+Vn(a.getMonth()+1),r+="-"+Vn(a.getDate()),r+="T",r+=Vn(a.getHours()),r+=":"+Vn(a.getMinutes()),r+=":"+Vn(a.getSeconds()),r}case"%Q":return Math.floor(a.getMonth()/3)+1;default:return n}}var o1=/%[a-zA-Z]/g;function io(n,a){return typeof n=="function"?n:function(i){return i?(i.getMonth||(i=new Date(i)),n.replace(o1,r=>r1(r,i,a))):""}}function ux(n){return n&&typeof n=="object"&&!Array.isArray(n)}function ch(n,a){for(const i in a){const r=a[i];ux(n[i])&&ux(r)?n[i]=ch({...n[i]},a[i]):n[i]=a[i]}return n}function Oc(n){return{getGroup(a){const i=n[a];return r=>i&&i[r]||r},getRaw(){return n},extend(a,i){if(!a)return this;let r;return i?r=ch({...a},n):r=ch({...n},a),Oc(r)}}}var c1=vy();const u1="en-US",d1={monthFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],hours:"Hours",minutes:"Minutes",done:"Done",clear:"Clear",today:"Today",am:["am","AM"],pm:["pm","PM"],weekStart:0,clockFormat:24},f1={ok:"OK",cancel:"Cancel",select:"Select","No data":"No data","Rows per page":"Rows per page","Total pages":"Total pages"},m1={timeFormat:"%H:%i",dateFormat:"%m/%d/%Y",monthYearFormat:"%F %Y",yearFormat:"%Y"},_y={core:f1,calendar:d1,formats:m1,lang:u1},Eh=f.createContext(""),zy=f.createContext({}),ps=f.createContext(null),Oy=f.createContext(null),kn=Object.freeze(Object.defineProperty({__proto__:null,fieldId:Oy,helpers:zy,i18n:ps,theme:Eh},Symbol.toStringTag,{value:"Module"}));function Iy(n){const a=f.useContext(Oy),[i]=f.useState(()=>n||a||Rh());return i}function Ac({type:n="",css:a="",icon:i="",disabled:r=!1,title:c="",tooltip:u,text:m="",children:p,onClick:v}){const g=f.useMemo(()=>{let y=n?n.split(" ").filter(b=>b!=="").map(b=>"wx-"+b).join(" "):"";return a+(a?" ":"")+y},[n,a]),w=y=>{v&&v(y)};return l.jsxs("button",{title:c,className:`wx-2ZWgb4 wx-button ${g} ${i&&!p?"wx-icon":""}`,disabled:r,onClick:w,"data-tooltip-text":u,children:[i&&l.jsx("i",{className:"wx-2ZWgb4 "+i}),p||m||" "]})}function h1({id:n,label:a="",inputValue:i="",value:r=!1,onChange:c,disabled:u=!1,css:m=""}){const p=Iy(n),[v,g]=zs(r),w=({target:y})=>{const b=y.checked;g(b),c&&c({value:b,inputValue:i})};return l.jsxs("div",{className:`wx-2IvefP wx-checkbox ${m}`,children:[l.jsx("input",{type:"checkbox",id:p,disabled:u,className:"wx-2IvefP wx-check",checked:v,value:i,onChange:w}),l.jsxs("label",{htmlFor:p,className:"wx-2IvefP wx-label",children:[l.jsx("span",{className:"wx-2IvefP wx-before"}),a&&l.jsx("span",{className:"wx-2IvefP wx-after",children:a})]})]})}function Dh({theme:n="",target:a,children:i}){const r=f.useRef(null),c=f.useRef(null),[u,m]=f.useState(null);r.current||(r.current=document.createElement("div"));const p=f.useContext(Eh);return f.useEffect(()=>{m(a||p1(c.current)||xa.getTopNode(c.current))},[c.current]),l.jsxs(l.Fragment,{children:[l.jsx("span",{ref:c,style:{display:"none"}}),c.current&&u?c1.createPortal(l.jsx("div",{className:`wx-3ZWsT0 wx-${n||p}-theme`,children:i}),u):null]})}function p1(n){const a=xa.getTopNode(n);for(;n&&n!==a&&!n.getAttribute("data-wx-portal-root");)n=n.parentNode;return n}function g1({left:n=0,top:a=0,at:i="bottom",parent:r=null,width:c="auto",css:u="",onCancel:m,children:p,trackScroll:v=!1}){const[g,w]=f.useState(0),[y,b]=f.useState(0),[C,k]=f.useState("auto"),[A,T]=f.useState(!1),j=f.useRef(null),R=f.useRef(null),E=f.useRef(m);f.useEffect(()=>{E.current=m},[m]);function H(q){return r&&(c+"").indexOf("%")>-1?c.replace(/(\d+)%/,(I,_)=>(_=_*r.offsetWidth/100+"px",c.replace(I,_))):c&&c!=="auto"?c:q}const F=f.useCallback(()=>{if(!j.current)return;const q=Ey(j.current,r,i,n,a);q&&(w(q.x),b(q.y),k(H(q.width)))},[j,r,i,n,a,c]);return f.useLayoutEffect(()=>{const q=_=>{E.current&&_.target!==R.current&&j.current&&!j.current.contains(_.target)&&E.current(_)};let I;return requestAnimationFrame(()=>{F(),T(!0),v&&j.current&&(R.current=Dy(j.current),R.current&&R.current.addEventListener("scroll",q,!0)),r&&(I=new ResizeObserver(F),I.observe(r))}),()=>{v&&R.current&&R.current.removeEventListener("scroll",q,!0),I?.disconnect()}},[]),f.useLayoutEffect(()=>{F()},[r,i,n,a]),f.useEffect(()=>{const q=I=>{E.current&&E.current(I)};if(j.current)return Os(j.current,{callback:q,parent:()=>r}).destroy},[r]),l.jsx("div",{ref:j,className:["wx-37M6Fj","wx-popup",u].filter(Boolean).join(" "),style:{position:"absolute",visibility:A?"visible":"hidden",top:y+"px",left:g+"px",width:C},children:p})}function v1({position:n="bottom",align:a="start",autoFit:i=!0,onCancel:r=null,width:c="100%",css:u="",children:m}){const p=f.useRef(null),[v,g]=f.useState(n),[w,y]=f.useState(a),b=f.useRef(r);return f.useEffect(()=>{b.current=r},[r]),f.useEffect(()=>{if(i){const C=p.current;if(C){const k=C.getBoundingClientRect(),A=document.body.getBoundingClientRect();k.right>=A.right&&y("end"),k.bottom>=A.bottom&&g("top")}}},[]),f.useEffect(()=>{if(p.current){const C=k=>{b.current&&b.current(k)};return Os(p.current,C).destroy}},[]),l.jsx("div",{ref:p,className:["wx-dropdown",`wx-${v}-${w}`,u||"","wx-aaaVytZW"].filter(Boolean).join(" "),style:{width:c},children:m})}function Lh({position:n="bottom",align:a="start",autoFit:i=!0,inline:r=!1,onCancel:c,width:u="100%",children:m,...p}){const[v,g]=f.useState(void 0),w=f.useRef(null),y=f.useMemo(()=>`${n}-${a}`,[n,a]);return f.useLayoutEffect(()=>{w.current&&g(w.current.parentNode)},[]),l.jsxs(l.Fragment,{children:[v&&(r?l.jsx(v1,{onCancel:c,position:n,align:a,autoFit:i,width:u,...p,children:m}):l.jsx(Dh,{children:l.jsx(g1,{parent:v,at:y,onCancel:c,width:u,...p,children:m})})),l.jsx("span",{ref:w,className:"wx-portal-node wx-32GZ52"})]})}function Id(){return Oc(_y)}function x1(){let n=null,a=!1,i=!1,r,c,u,m;const p=(y,b,C,k,A)=>{r=y,c=b,u=C,m=k,i=A},v=y=>{n=y,a=n!==null,u(n)},g=(y,b)=>{if(!i&&y!==null&&r){const C=r.querySelectorAll(".wx-list > .wx-item")[y];C&&(C.scrollIntoView({block:"nearest"}),b&&b.preventDefault())}},w=(y,b)=>{const C=y===null?null:Math.max(0,Math.min(n+y,c.length-1));C!==n&&(v(C),r?g(C,b):requestAnimationFrame(()=>g(C,b)))};return{move:y=>{const b=Lc(y),C=c.findIndex(k=>k.id===b);C!==n&&v(C)},keydown:(y,b)=>{switch(y.code){case"Enter":a?m():v(0);break;case"Space":a||v(0);break;case"Escape":u(n=null);break;case"Tab":u(n=null);break;case"ArrowDown":w(a?1:b||0,y);break;case"ArrowUp":w(a?-1:b||0,y);break}},init:p,navigate:w}}const dx=10,y1=f.memo(function({data:n,checkboxes:a,itemTemplate:i,value:r}){return l.jsxs(l.Fragment,{children:[a&&l.jsx(h1,{id:n.id,css:"wx-list-checkbox",value:r&&r.includes(n.id)}),i?Nh(i,{option:n}):n.label]})});function fx({visibleItems:n,visibleRange:a,navIndex:i,checkboxes:r,itemTemplate:c,value:u,measureRefCallback:m}){return n.map((p,v)=>{const g=a.start+v;return l.jsx("div",{ref:v===0?m:void 0,className:`wx-233fr7 wx-item ${g===i?"wx-focus":""}`,"data-id":p.id,children:l.jsx(y1,{data:p,checkboxes:r,itemTemplate:c,value:u})},p.id)})}function Bd({items:n=[],children:a,onSelect:i,onReady:r,virtualized:c=!1,checkboxes:u,multiselect:m,value:p,...v}){const g=f.useRef(),w=f.useRef(!1),y=f.useRef(x1()),[b,C]=f.useState(null),k=f.useRef(b),[A,T]=f.useState(0),[j,R]=f.useState(24),E=f.useRef(!1),H=(f.useContext(ps)||Id()).getGroup("core"),F=f.useRef(n);f.useEffect(()=>{F.current=n},[n]);const q=f.useRef(p);f.useEffect(()=>{q.current=p},[p]);const I=f.useRef(0);f.useEffect(()=>{I.current=j},[j]);const _=f.useCallback(D=>{D&&D.stopPropagation();const Z=F.current,ye=q.current,be=k.current;let de;const Ne=Z[be]?.id;m?ye&&ye.includes(Ne)?de=ye.filter(Ie=>Ie!==Ne):de=[...ye||[],Ne]:de=Ne,i&&i({id:de})},[m,i]),fe=f.useRef(_);f.useEffect(()=>{fe.current=_},[_]);const G=f.useCallback(D=>{if(g.current){let Z=D*I.current-g.current.clientHeight+I.current;T(Z),g.current.scrollTop=Z}},[I.current]),ue=f.useCallback(D=>{g.current=D,c&&(D&&!w.current&&k.current!==null&&requestAnimationFrame(()=>{g.current&&(G(k.current),w.current=!0)}),D||(w.current=!1))},[G]),Y=f.useCallback(D=>{if(!D||E.current)return;const Z=D.getBoundingClientRect().height;Z&&(R(Z),I.current=Z,E.current=!0)},[]);f.useEffect(()=>{y.current.init(g.current,n,D=>{C(D),k.current=D},D=>fe.current(D),c)},[n,g.current,c]),f.useEffect(()=>{const D=(ye,be)=>{y.current.navigate(ye,be),G(k.current)},Z=(ye,be)=>{const de=k.current,Ne=F.current;if(de!==0&&de!==Ne.length-1&&(ye.key==="ArrowDown"||ye.key==="ArrowUp")&&ye.preventDefault(),y.current.keydown(ye,be),g.current){const Ie=g.current.scrollTop<=k.current*I.current,re=g.current.scrollTop+g.current.clientHeight>=k.current*I.current+I.current;Ie?re||G(k.current):(g.current.scrollTop=k.current*I.current,T(g.current.scrollTop))}};r&&r({navigate:c?D:y.current.navigate,keydown:c?Z:y.current.keydown,move:y.current.move})},[]);const ae=f.useRef(0),le=f.useRef(n);le.current!==n&&(le.current=n,ae.current+=1);const V=f.useCallback(()=>{y.current.navigate(null)},[y]),z=f.useCallback(D=>{c&&T(D.target.scrollTop)},[c]),K=f.useMemo(()=>Math.ceil((g.current?.clientHeight||0)/j),[j,A]),Q=f.useMemo(()=>{if(!c)return{start:0,end:n.length};if(!n.length)return{start:0,end:0};const D=Math.floor(A/j),Z=D+K;return{start:Math.max(0,D-dx),end:Math.min(n.length,Z+dx)}},[c,n,A,j,K]),P=f.useMemo(()=>{if(!c)return n;const{start:D,end:Z}=Q;return n.slice(D,Z).map(ye=>({...ye}))},[c,n,Q]),ie=Q.start*j,Se=n.length*j;return f.useEffect(()=>{c&&T(0)},[n,c]),f.useEffect(()=>{b===null&&(w.current=!1)},[b]),b===null?null:l.jsx(Lh,{onCancel:V,...v,children:l.jsx("div",{className:"wx-233fr7 wx-list",ref:ue,onClick:_,onMouseMove:y.current.move,onScroll:z,children:n.length?c?l.jsx("div",{className:"wx-233fr7 wx-list-wrapper",style:{height:`${Se}px`},children:l.jsx("div",{className:"wx-233fr7 wx-list-content",style:{transform:`translateY(${ie}px)`},children:l.jsx(fx,{visibleRange:Q,visibleItems:P,navIndex:b,measureRefCallback:Y,checkboxes:u,itemTemplate:a,value:p})})}):l.jsx(fx,{visibleRange:Q,visibleItems:P,navIndex:b,measureRefCallback:Y,checkboxes:u,itemTemplate:a,value:p}):l.jsx("div",{className:"wx-233fr7 wx-no-data",children:H("No data")})})},ae.current)}function _h({value:n="",id:a,readonly:i=!1,focus:r=!1,select:c=!1,type:u="text",placeholder:m="",disabled:p=!1,error:v=!1,title:g="",tooltip:w,css:y="",icon:b="",clear:C=!1,onChange:k}){const A=Iy(a),[T,j]=zs(n),R=f.useRef(null),E=f.useMemo(()=>b&&y.indexOf("wx-icon-left")===-1?"wx-icon-right "+y:y,[b,y]),H=f.useMemo(()=>b&&y.indexOf("wx-icon-left")!==-1,[b,y]);f.useEffect(()=>{const fe=setTimeout(()=>{r&&R.current&&R.current.focus(),c&&R.current&&R.current.select()},1);return()=>clearTimeout(fe)},[r,c]);const F=f.useCallback(fe=>{const G=fe.target.value;j(G),k&&k({value:G,input:!0})},[k]),q=f.useCallback(fe=>k&&k({value:fe.target.value}),[k]);function I(fe){fe.stopPropagation(),j(""),k&&k({value:""})}let _=u;return u!=="password"&&u!=="number"&&(_="text"),f.useEffect(()=>{const fe=q,G=R.current;return G.addEventListener("change",fe),()=>{G&&G.removeEventListener("change",fe)}},[q]),l.jsxs("div",{className:`wx-hQ64J4 wx-text ${E} ${v?"wx-error":""} ${p?"wx-disabled":""} ${C?"wx-clear":""}`,"data-tooltip-text":w,children:[l.jsx("input",{className:"wx-hQ64J4 wx-input",ref:R,id:A,readOnly:i,disabled:p,placeholder:m,type:_,title:g,value:T,onInput:F}),C&&!p&&T?l.jsxs(l.Fragment,{children:[l.jsx("i",{className:"wx-hQ64J4 wx-icon wxi-close",onClick:I}),H&&l.jsx("i",{className:`wx-hQ64J4 wx-icon ${b}`})]}):b?l.jsx("i",{className:`wx-hQ64J4 wx-icon ${b}`}):null]})}function w1({date:n,type:a,part:i,onShift:r}){const{calendar:c,formats:u}=f.useContext(ps).getRaw(),m=n.getFullYear(),p=f.useMemo(()=>{switch(a){case"month":return io(u.monthYearFormat,c)(n);case"year":return io(u.yearFormat,c)(n);case"duodecade":{const{start:g,end:w}=Ly(m),y=io(u.yearFormat,c);return`${y(new Date(g,0,1))} - ${y(new Date(w,11,31))}`}default:return""}},[n,a,m,c,u]);function v(){r&&r({diff:0,type:a})}return l.jsxs("div",{className:"wx-8HQVQV wx-header",children:[i!=="right"?l.jsx("i",{className:"wx-8HQVQV wx-pager wxi-angle-left",onClick:()=>r&&r({diff:-1,type:a})}):l.jsx("span",{className:"wx-8HQVQV wx-spacer"}),l.jsx("span",{className:"wx-8HQVQV wx-label",onClick:v,children:p}),i!=="left"?l.jsx("i",{className:"wx-8HQVQV wx-pager wxi-angle-right",onClick:()=>r&&r({diff:1,type:a})}):l.jsx("span",{className:"wx-8HQVQV wx-spacer"})]})}function zh({onClick:n,children:a}){return l.jsx("button",{className:"wx-3s8W4d wx-button",onClick:n,children:a})}function b1({value:n,current:a,part:i="",markers:r=null,css:c="",onCancel:u,onChange:m}){const p=(f.useContext(ps)||Id()).getRaw().calendar,v=(p.weekStart||7)%7,g=p.dayShort.slice(v).concat(p.dayShort.slice(0,v)),w=(F,q,I)=>new Date(F.getFullYear(),F.getMonth()+(q||0),F.getDate()+(I||0));let y=i!=="normal";function b(F){const q=F.getDay();return q===0||q===6}function C(){const F=w(a,0,1-a.getDate());return F.setDate(F.getDate()-(F.getDay()-(v-7))%7),F}function k(){const F=w(a,1,-a.getDate());return F.setDate(F.getDate()+(6-F.getDay()+v)%7),F}const A=f.useRef(0);function T(F,q){q.timeStamp!==A.current&&(A.current=q.timeStamp,q.stopPropagation(),m&&m(new Date(F)),u&&u())}const j=f.useMemo(()=>i=="normal"?[n?w(n).valueOf():0]:n?[n.start?w(n.start).valueOf():0,n.end?w(n.end).valueOf():0]:[0,0],[i,n]),R=f.useMemo(()=>{const F=C(),q=k(),I=a.getMonth();let _=[];for(let fe=F;fe<=q;fe.setDate(fe.getDate()+1)){const G={day:fe.getDate(),in:fe.getMonth()===I,date:fe.valueOf()};let ue="";if(ue+=G.in?"":" wx-inactive",ue+=j.indexOf(G.date)>-1?" wx-selected":"",y){const Y=G.date==j[0],ae=G.date==j[1];Y&&!ae?ue+=" wx-left":ae&&!Y&&(ue+=" wx-right"),G.date>j[0]&&G.date<j[1]&&(ue+=" wx-inrange")}if(ue+=b(fe)?" wx-weekend":"",r){const Y=r(fe);Y&&(ue+=" "+Y)}_.push({...G,css:ue})}return _},[a,j,y,r]),E=f.useRef(null);let H=f.useRef({});return H.current.click=T,f.useEffect(()=>{uo(E.current,H.current)},[]),l.jsxs("div",{className:`wx-398RBS wx-month ${c}`,children:[l.jsx("div",{className:"wx-398RBS wx-weekdays",children:g.map(F=>l.jsx("div",{className:"wx-398RBS wx-weekday",children:F},F))}),l.jsx("div",{className:"wx-398RBS wx-days",ref:E,children:R.map(F=>l.jsx("div",{className:`wx-398RBS wx-day ${F.css} ${F.in?"":"wx-out"}`,"data-id":F.date,children:F.day},F.date))})]})}function S1({value:n,current:a,part:i,onCancel:r,onChange:c,onShift:u}){const m=f.useRef(new Date),[p,v]=zs(n||m.current),[g,w]=zs(a||m.current),y=f.useContext(ps).getRaw().calendar,b=y.monthShort||[],C=f.useMemo(()=>g.getMonth(),[g]),k=f.useCallback((j,R)=>{if(j!=null){R.stopPropagation();const E=new Date(g);E.setMonth(j),w(E),u&&u({current:E})}i==="normal"&&v(new Date(g)),r&&r()},[g,i,u,r]),A=f.useCallback(()=>{const j=new Date(By(p,i)||g);j.setMonth(g.getMonth()),j.setFullYear(g.getFullYear()),c&&c(j)},[p,g,i,c]),T=f.useCallback(j=>{const R=j.target.closest("[data-id]");if(R){const E=parseInt(R.getAttribute("data-id"),10);k(E,j)}},[k]);return l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"wx-34U8T8 wx-months",onClick:T,children:b.map((j,R)=>l.jsx("div",{className:"wx-34U8T8 wx-month"+(C===R?" wx-current":""),"data-id":R,children:j},R))}),l.jsx("div",{className:"wx-34U8T8 wx-buttons",children:l.jsx(zh,{onClick:A,children:y.done})})]})}const Lm="wx-1XEF33",C1=({value:n,current:a,onCancel:i,onChange:r,onShift:c,part:u})=>{const m=f.useContext(ps).getRaw().calendar,[p,v]=zs(a),[g,w]=zs(n),y=f.useMemo(()=>p.getFullYear(),[p]),b=f.useMemo(()=>{const{start:j,end:R}=Ly(y),E=[];for(let H=j;H<=R;++H)E.push(H);return E},[y]),C={click:k};function k(j,R){if(j){R.stopPropagation();const E=new Date(p);E.setFullYear(j),v(E),c&&c({current:E})}u==="normal"&&w(new Date(p)),i&&i()}function A(){const j=new Date(By(g,u)||p);j.setFullYear(p.getFullYear()),r&&r(j)}const T=f.useRef(null);return f.useEffect(()=>{T.current&&uo(T.current,C)},[]),l.jsxs(l.Fragment,{children:[l.jsx("div",{className:Lm+" wx-years",ref:T,children:b.map((j,R)=>l.jsx("div",{className:Lm+` wx-year ${y==j?"wx-current":""} ${R===0?"wx-prev-decade":""} ${R===11?"wx-next-decade":""}`,"data-id":j,children:j},R))}),l.jsx("div",{className:Lm+" wx-buttons",children:l.jsx(zh,{onClick:A,children:m.done})})]})},mx={month:{component:b1,next:k1,prev:j1},year:{component:S1,next:M1,prev:A1},duodecade:{component:C1,next:T1,prev:N1}};function j1(n){return n=new Date(n),n.setMonth(n.getMonth()-1),n}function k1(n){return n=new Date(n),n.setMonth(n.getMonth()+1),n}function A1(n){return n=new Date(n),n.setFullYear(n.getFullYear()-1),n}function M1(n){return n=new Date(n),n.setFullYear(n.getFullYear()+1),n}function N1(n){return n=new Date(n),n.setFullYear(n.getFullYear()-10),n}function T1(n){return n=new Date(n),n.setFullYear(n.getFullYear()+10),n}function By(n,a){let i;if(a==="normal")i=n;else{const{start:r,end:c}=n;a==="left"?i=r:a=="right"?i=c:i=r&&c}return i}const R1=["clear","today"];function E1(n){if(n==="done")return-1;if(n==="clear")return null;if(n==="today")return new Date}function D1({value:n,current:a,onCurrentChange:i,part:r="normal",markers:c=null,buttons:u,css:m="",onShift:p,onChange:v}){const g=f.useContext(ps).getGroup("calendar"),[w,y]=f.useState("month"),b=Array.isArray(u)?u:u?R1:[],C=(R,E)=>{R.preventDefault(),v&&v({value:E})},k=()=>{w==="duodecade"?y("year"):w==="year"&&y("month")},A=R=>{const{diff:E,current:H}=R;if(E===0){w==="month"?y("year"):w==="year"&&y("duodecade");return}if(E){const F=mx[w];i(E>0?F.next(a):F.prev(a))}else H&&i(H);p&&p()},T=R=>{y("month"),v&&v({select:!0,value:R})},j=f.useMemo(()=>mx[w].component,[w]);return l.jsx("div",{className:`wx-2Gr4AS wx-calendar ${r!=="normal"&&r!=="both"?"wx-part":""} ${m}`,children:l.jsxs("div",{className:"wx-2Gr4AS wx-wrap",children:[l.jsx(w1,{date:a,part:r,type:w,onShift:A}),l.jsxs("div",{children:[l.jsx(j,{value:n,current:a,onCurrentChange:i,part:r,markers:c,onCancel:k,onChange:T,onShift:A}),w==="month"&&b.length>0&&l.jsx("div",{className:"wx-2Gr4AS wx-buttons",children:b.map(R=>l.jsx("div",{className:"wx-2Gr4AS wx-button-item",children:l.jsx(zh,{onClick:E=>C(E,E1(R)),children:g(R)})},R))})]})]})})}function Oh(n){let{words:a=null,optional:i=!1,children:r}=n,c=f.useContext(ps);const u=f.useMemo(()=>{let m=c;return(!m||!m.extend)&&(m=Oc(_y)),a!==null&&(m=m.extend(a,i)),m},[a,i,c]);return l.jsx(ps.Provider,{value:u,children:r})}function hx(n,a,i,r){if(!n||r){const c=a?new Date(a):new Date;c.setDate(1),i(c)}else if(n.getDate()!==1){const c=new Date(n);c.setDate(1),i(c)}}const L1=["clear","today"];function Fy({value:n,current:a,markers:i=null,buttons:r=L1,css:c="",onChange:u}){const[m,p]=zs(n),[v,g]=zs(a);f.useEffect(()=>{hx(v,m,g,!1)},[m,v]);const w=f.useCallback(b=>{const C=b.value;C?(p(new Date(C)),hx(v,new Date(C),g,!0)):p(null),u&&u({value:C?new Date(C):null})},[u,v]),y=f.useCallback(b=>{g(b)},[g]);return v?l.jsx(Oh,{children:l.jsx(D1,{value:m,current:v,markers:i,buttons:r,css:c,onChange:w,onCurrentChange:y})}):null}function _1(n){return n||(n={}),n.width||(n.width="unset"),n}const z1=["clear","today"];function O1({value:n,id:a,disabled:i=!1,error:r=!1,placeholder:c="",format:u="",buttons:m=z1,css:p="",title:v="",tooltip:g,editable:w=!1,clear:y=!1,onChange:b,dropdown:C={}}){const{calendar:k,formats:A}=(f.useContext(ps)||Id()).getRaw(),T=u||A?.dateFormat;let j=typeof T=="function"?T:io(T,k);const[R,E]=f.useState(n),[H,F]=f.useState(!1);f.useEffect(()=>{E(n)},[n]);function q(){F(!1)}function I(G){const ue=G===R||G&&R&&G.valueOf()===R.valueOf()||!G&&!R;E(G),ue||b&&b({value:G}),setTimeout(q,1)}const _=f.useMemo(()=>R?j(R):"",[R,j]);function fe({value:G,input:ue}){if(!w&&!y||ue)return;let Y=typeof w=="function"?w(G):G?new Date(G):null;Y=isNaN(Y)?R||null:Y||null,I(Y)}return f.useEffect(()=>{const G=q;return window.addEventListener("scroll",G),()=>window.removeEventListener("scroll",G)},[]),l.jsxs("div",{className:"wx-1lKOFG wx-datepicker",onClick:()=>F(!0),children:[l.jsx(_h,{css:`wx-date-input ${p}`,title:v,tooltip:g,value:_,id:a,readonly:!w,disabled:i,error:r,placeholder:c,onInput:q,onChange:fe,icon:"wxi-calendar",clear:y}),H&&!i&&l.jsx(Lh,{onCancel:q,..._1(C),children:l.jsx(Fy,{buttons:m,value:R,onChange:G=>I(G.value)})})]})}function I1({value:n="",options:a=[],textOptions:i=null,placeholder:r="",disabled:c=!1,error:u=!1,title:m="",tooltip:p,textField:v="label",clear:g=!1,css:w="",children:y,onChange:b,dropdown:C={}}){const k=f.useRef(null),A=f.useRef(null);let[T,j]=zs(n);function R(I){k.current=I.navigate,A.current=I.keydown}const E=f.useMemo(()=>T||T===0?(i||a).find(I=>I.id===T):null,[T,i,a]),H=f.useCallback(({id:I})=>{(I||I===0)&&(j(I),k.current(null),b&&b({value:I}))},[j,b]),F=f.useCallback(I=>{I.stopPropagation(),j(""),b&&b({value:""})},[j,b]),q=f.useCallback(()=>a.findIndex(I=>I.id===T),[a,T]);return l.jsxs("div",{className:`wx-2YgblL wx-richselect ${w} ${u?"wx-2YgblL wx-error":""} ${c?"wx-2YgblL wx-disabled":""} ${y?"":"wx-2YgblL wx-nowrap"}`,title:m,onClick:()=>k.current(q()),onKeyDown:I=>A.current(I,q()),tabIndex:0,"data-tooltip-text":p,children:[l.jsx("div",{className:"wx-2YgblL wx-label",children:E?y?y(E):E[v]:r?l.jsx("span",{className:"wx-2YgblL wx-placeholder",children:r}):" "}),g&&!c&&T?l.jsx("i",{className:"wx-2YgblL wx-icon wxi-close",onClick:F}):l.jsx("i",{className:"wx-2YgblL wx-icon wxi-angle-down"}),!c&&l.jsx(Bd,{items:a,onReady:R,onSelect:H,...C,children:({option:I})=>y?y(I):I[v]})]})}const B1=({options:n=[],value:a="",css:i="",children:r,onChange:c})=>{const[u,m]=f.useState(a),p=v=>{m(v),c&&c({value:v})};return f.useEffect(()=>{m(a)},[a]),l.jsx("div",{className:`wx-0hMO7P wx-segmented ${i}`,children:n.map(v=>l.jsx("button",{className:`wx-0hMO7P wx-segment ${v.css} ${v.id===u?"wx-selected":""}`,title:v.title,onClick:()=>p(v.id),"data-tooltip-text":v.tooltip,children:r?Nh(r,{option:v}):l.jsxs(l.Fragment,{children:[v.icon&&l.jsx("i",{className:`wx-0hMO7P wx-icon ${v.icon} ${v.label?"":"wx-only"}`}),v.label&&l.jsx("span",{className:"wx-0hMO7P wx-label",children:v.label})]})},v.id))})};function F1({notice:n={}}){function a(){n.remove&&n.remove()}return l.jsxs("div",{className:`wx-11sNg5 wx-notice wx-${n.type?n.type:""}`,role:"status","aria-live":"polite",children:[l.jsx("div",{className:"wx-11sNg5 wx-text",children:n.text}),l.jsx("div",{className:"wx-11sNg5 wx-button",children:l.jsx("i",{className:"wx-11sNg5 wxi-close",onClick:a})})]})}function H1({data:n=[]}){return l.jsx("div",{className:"wx-3nwoO9 wx-notices",children:n.map(a=>l.jsx(F1,{notice:a},a.id))})}function uh({title:n="",buttons:a=["cancel","ok"],header:i,children:r,footer:c,css:u="",onConfirm:m,onCancel:p}){const v=(f.useContext(ps)||Id()).getGroup("core"),g=f.useRef(null);f.useEffect(()=>{g.current?.focus()},[]);function w(b){switch(b.code){case"Enter":{const C=b.target.tagName;if(C==="TEXTAREA"||C==="BUTTON")return;m&&m({event:b});break}case"Escape":p&&p({event:b});break}}function y(b,C){const k={event:b,button:C};C==="cancel"?p&&p(k):m&&m(k)}return l.jsx("div",{className:`wx-1FxkZa wx-modal ${u}`,ref:g,tabIndex:0,onKeyDown:w,children:l.jsxs("div",{className:"wx-1FxkZa wx-window",children:[i||(n?l.jsx("div",{className:"wx-1FxkZa wx-header",children:n}):null),l.jsx("div",{children:r}),c||a&&l.jsx("div",{className:"wx-1FxkZa wx-buttons",children:a.map(b=>l.jsx("div",{className:"wx-1FxkZa wx-button",children:l.jsx(Ac,{type:`block ${b==="ok"?"primary":"secondary"}`,onClick:C=>y(C,b),children:v(b)})},b))})]})})}function $1({children:n},a){const[i,r]=f.useState(null),[c,u]=f.useState([]);return f.useImperativeHandle(a,()=>({showModal:m=>{const p={...m};return r(p),new Promise((v,g)=>{p.resolve=w=>{r(null),v(w)},p.reject=w=>{r(null),g(w)}})},showNotice:m=>{m={...m},m.id=m.id||Rh(),m.remove=()=>u(p=>p.filter(v=>v.id!==m.id)),m.expire!=-1&&setTimeout(m.remove,m.expire||5100),u(p=>[...p,m])}}),[]),l.jsxs(l.Fragment,{children:[n,i&&l.jsx(uh,{title:i.title,buttons:i.buttons,onConfirm:i.resolve,onCancel:i.reject,children:i.message}),l.jsx(H1,{data:c})]})}const U1=f.forwardRef($1);function P1(n){let{children:a}=n,i=f.useRef();const r=f.useMemo(()=>({showNotice:c=>i.current.showNotice(c),showModal:c=>i.current.showModal(c)}),[]);return l.jsx(zy.Provider,{value:r,children:l.jsx(U1,{ref:i,children:a})})}const q1=({value:n=!1,type:a="",icon:i="",disabled:r=!1,iconActive:c="",onClick:u,title:m="",tooltip:p,css:v="",text:g="",textActive:w="",children:y,active:b,onChange:C})=>{const[k,A]=zs(n),T=f.useMemo(()=>(k?"pressed":"")+(a?" "+a:""),[k,a]),j=f.useCallback(R=>{let E=!k;u&&u(R),R.defaultPrevented||(A(E),C&&C({value:E}))},[k,u,C]);return k&&b?l.jsx(Ac,{title:m,tooltip:p,text:k&&w||g,css:v,type:T,icon:k&&c||i,onClick:j,disabled:r,children:Nh(b,{value:k})}):y?l.jsx(Ac,{title:m,tooltip:p,text:k&&w||g,css:v,type:T,icon:k&&c||i,onClick:j,disabled:r,children:y}):l.jsx(Ac,{title:m,tooltip:p,text:k&&w||g,css:v,type:T,icon:k&&c||i,onClick:j,disabled:r})};function G1(){return l.jsx(l.Fragment,{})}function px(n){const{fonts:a=!0,children:i}=n;return l.jsx(Eh.Provider,{value:"willow",children:l.jsxs(l.Fragment,{children:[i&&i&&l.jsx("div",{className:"wx-theme wx-willow-theme",children:i}),a&&l.jsxs(l.Fragment,{children:[l.jsx("link",{rel:"preconnect",href:"https://cdn.svar.dev",crossOrigin:"true"}),l.jsx(G1,{}),l.jsx("link",{rel:"stylesheet",href:"https://cdn.svar.dev/fonts/wxi/wx-icons.css"})]})]})})}Th(xa);const Ih={grid:{"Add before":"Add before","Add after":"Add after",Copy:"Copy",Cut:"Cut",Paste:"Paste",Delete:"Delete","New row":"New row","Move up":"Move up","Move down":"Move down",Undo:"Undo",Redo:"Redo",selected:"selected"}};new Date().valueOf();var Hy=class{constructor(n){this._nextHandler=null,this._dispatch=n,this.exec=this.exec.bind(this)}async exec(n,a){return this._dispatch(n,a),this._nextHandler&&await this._nextHandler.exec(n,a),a}setNext(n){return this._nextHandler=n}};new Date().valueOf();var V1=class{constructor(n){const a={id:0,$level:0,data:[],parent:null},i=new Map;i.set(0,a),this._pool=i,n&&n.length&&this.parse(n,0)}parse(n,a){const i=this._pool;for(let c=0;c<n.length;c++){const u=n[c];u.parent=u.parent||a,u.data=null,i.set(u.id,u)}for(let c=0;c<n.length;c++){const u=n[c],m=i.get(u.parent);m&&(m.data||(m.data=[]),m.data.push(u))}const r=i.get(a);this.setLevel(r,r.$level+1,!1)}add(n,a){const i=this._pool.get(n.parent||0);n.$level=i.$level+1,this._pool.set(n.id,n),i.data?a===-1?i.data=[...i.data,n]:gx(i,a,n):i.data=[n]}addAfter(n,a){if(!a)return this.add(n,-1);const i=this.byId(a),r=this.byId(i.parent),c=ad(r,i.id)+1;n.parent=r.id,n.$level=r.$level+1,this.add(n,c)}remove(n){const a=this._pool.get(n);this._remove(a);const i=this._pool.get(a.parent);i.data=i.data.filter(r=>r.id!=n),this._clearBranch(i)}_remove(n){n.data&&n.data.forEach(a=>this._remove(a)),this._pool.delete(n.id)}update(n,a){let i=this._pool.get(n);const r=this._pool.get(i.parent),c=ad(r,i.id);i={...i,...a},r&&c>=0&&(r.data[c]=i,r.data=[...r.data]),this._pool.set(i.id,i)}move(n,a,i){const r=this._pool.get(n),c=a==="child",u=this._pool.get(i),m=u.$level+(c?1:0);if(!r||!u)return;const p=this._pool.get(r.parent),v=c?u:this._pool.get(u.parent);v.data||(v.data=[]);const g=ad(p,r.id);Y1(p,g);const w=c?v.data.length:ad(v,u.id)+(a==="after"?1:0);if(gx(v,w,r),p.id===v.id&&g===w)return null;r.parent=v.id,r.$level!==m&&(r.$level=m,this.setLevel(r,m+1,!0)),this.update(r.id,r),this._clearBranch(p)}_clearBranch(n){n.data&&!n.data.length&&(n.open&&delete n.open,this.update(n.id,{data:null}))}toArray(){const n=[],a=this._pool.get(0).data;return a&&$y(a,n),n}byId(n){return this._pool.get(n)}getBranch(n){return this._pool.get(n).data}forEach(n){this._pool.forEach((a,i)=>{i!==0&&n(a)})}eachChild(n,a){const i=this.byId(a);!i||!i.data||i.data.forEach((r,c)=>{n(this.byId(r.id),c),this.eachChild(n,r.id)})}setLevel(n,a,i){n.data&&(n.data=n.data.map(r=>(i&&(r={...r},this._pool.set(r.id,r)),r.$level=a,r.data&&this.setLevel(r,a+1,i),r)))}};function $y(n,a){n.forEach(i=>{a.push(i),i.open===!0&&$y(i.data,a)})}function Y1(n,a){const i=[...n.data];i.splice(a,1),n.data=i}function gx(n,a,i){const r=[...n.data];r.splice(a,0,i),n.data=r}function ad(n,a){return n?.data.findIndex(i=>i.id===a)}var Uy=2,W1=class{constructor(a){a&&(this._writable=a.writable,this._async=a.async),this._values={},this._state={}}setState(a,i=0){const r={};return this._wrapProperties(a,this._state,this._values,"",r,i),r}getState(){return this._values}getReactive(){return this._state}_wrapProperties(a,i,r,c,u,m){for(const p in a){const v=i[p],g=r[p],w=a[p];if(v&&(g===w&&typeof w!="object"||w instanceof Date&&g instanceof Date&&g.getTime()===w.getTime()))continue;const y=c+(c?".":"")+p;v?(v.__parse(w,y,u,m)&&(r[p]=w),m&Uy?u[y]=v.__trigger:v.__trigger()):(w&&w.__reactive?i[p]=this._wrapNested(w,w,y,u):i[p]=this._wrapWritable(w),r[p]=w),u[y]=u[y]||null}}_wrapNested(a,i,r,c){const u=this._wrapWritable(a);return this._wrapProperties(a,u,i,r,c,0),u.__parse=(m,p,v,g)=>(this._wrapProperties(m,u,i,p,v,g),!1),u}_wrapWritable(a){const i=[],r=function(){for(let c=0;c<i.length;c++)i[c](a)};return{subscribe:c=>(i.push(c),this._async?setTimeout(c,1,a):c(a),()=>{const u=i.indexOf(c);u>=0&&i.splice(u,1)}),__trigger:()=>{i.length&&(this._async?setTimeout(r,1):r())},__parse:function(c){return a=c,!0}}}};function vx(n,a){return Object.defineProperty(n,"__reactive",{value:!0,enumerable:!1,writable:!1}),n}var K1=class{constructor(a,i,r,c){typeof a=="function"?this._setter=a:this._setter=a.setState.bind(a),this._routes=i,this._parsers=r,this._prev={},this._triggers=new Map,this._sources=new Map,this._routes.forEach(u=>{u.in.forEach(m=>{const p=this._triggers.get(m)||[];p.push(u),this._triggers.set(m,p)}),u.out.forEach(m=>{const p=this._sources.get(m)||{};u.in.forEach(v=>p[v]=!0),this._sources.set(m,p)})}),this._routes.forEach(u=>{u.length=Math.max(...u.in.map(m=>Py(m,this._sources,1)))}),this._bus=c}init(a){const i={};for(const r in a)if(this._prev[r]!==a[r]){const c=this._parsers[r];i[r]=c?c(a[r]):a[r]}this._prev=this._prev?{...this._prev,...a}:{...a},this.setState(i),this._bus&&this._bus.exec("init-state",i)}setStateAsync(a){const i=this._setter(a,Uy);return this._async?Object.assign(this._async.signals,i):this._async={signals:i,timer:setTimeout(this._applyState.bind(this),1)},i}_applyState(){const a=this._async;if(a){this._async=null,this._triggerUpdates(a.signals,[]);for(const i in a.signals){const r=a.signals[i];r&&r()}}}setState(a,i=[]){const r=this._setter(a);return this._triggerUpdates(r,i),r}_triggerUpdates(a,i){const r=Object.keys(a),c=!i.length;i=i||[];for(let u=0;u<r.length;u++){const m=r[u],p=this._triggers.get(m);p&&p.forEach(v=>{i.indexOf(v)==-1&&i.push(v)})}c&&this._execNext(i)}_execNext(a){for(;a.length;){a.sort((r,c)=>r.length<c.length?1:-1);const i=a[a.length-1];a.splice(a.length-1),i.exec(a)}}};function Py(n,a,i){const r=a.get(n);if(!r)return i;const c=Object.keys(r).map(u=>Py(u,a,i+1));return Math.max(...c)}var Q1=class{constructor(){this._nextHandler=null,this._handlers={},this._tag=new WeakMap,this.exec=this.exec.bind(this)}on(a,i,r){let c=this._handlers[a];c?r&&r.intercept?c.unshift(i):c.push(i):c=this._handlers[a]=[i],r&&r.tag&&this._tag.set(i,r.tag)}intercept(a,i,r){this.on(a,i,{...r,intercept:!0})}detach(a){for(const i in this._handlers){const r=this._handlers[i];for(let c=r.length-1;c>=0;c--)this._tag.get(r[c])===a&&r.splice(c,1)}}async exec(a,i){const r=this._handlers[a];if(r)for(let c=0;c<r.length;c++){const u=r[c](i);if(u===!1||u&&u.then&&await u===!1)return}return this._nextHandler&&await this._nextHandler.exec(a,i),i}setNext(a){return this._nextHandler=a}};const eo=1024;function _c(n){return n<eo?`${n} B`:n<eo**2?`${(n/eo).toFixed(1)} KB`:n<eo**3?`${(n/eo**2).toFixed(1)} MB`:`${(n/eo**3).toFixed(1)} GB`}function xx(n,a){a||(a={key:"name",order:"asc"});const i=n.filter(m=>m.type==="folder"),r=n.filter(m=>m.type!=="folder"),c=i.sort(yx(a)),u=r.sort(yx(a));return[...c,...u]}function X1(n,a){return typeof n=="string"?n.localeCompare(a,void 0,{numeric:!0}):typeof n=="object"?n.getTime()-a.getTime():(n??0)-(a??0)}function Z1(n,a){return typeof n=="string"?-n.localeCompare(a,void 0,{numeric:!0}):typeof a=="object"?a.getTime()-n.getTime():(a??0)-(n??0)}function yx({key:n,order:a}){const i=a==="asc"?X1:Z1;return(r,c)=>i(r[n],c[n])}function Bh(n,a){const i=n==="/"?1:n.split("/").length;return i>=a.length?null:a[i].id}function J1(n){return n.length>1?n[n.length-2].id:null}let eC=class extends V1{constructor(a){const i={id:"/",name:"My files",open:!0,$level:1,parent:0,ext:"",type:"folder"};super([i]),this.parse(a,"/")}parse(a,i,r){!a||!a.length||(a.forEach(c=>this.parseId(c,r?i:void 0)),super.parse(a,i))}parseId(a,i){if(a.parent===0)return;const r=a.id,c=r.lastIndexOf("/");if(a.parent=i??(c===0?"/":r.slice(0,c)),a.name=r.slice(c+1),a.type=a.type||"file",a.type!=="folder"){const u=a.name.lastIndexOf("."),m=u!==-1?a.name.slice(u+1):"";a.ext=m!=="new"?m?.toLocaleLowerCase():""}}getParents(a){const i=[];let r=this.byId(a);if(!r)return i;for(;r.id!==0;)i.push(r),r=this.byId(r.parent);return i.reverse()}findFiles(a,i="/"){const r=[],c=a.toLocaleLowerCase();return this.eachChild(u=>{u.name.toLowerCase().indexOf(c)!==-1&&r.push(u)},i),r}add(a,i){const r=this.byId(a.parent||"/"),c=a.data?[...a.data]:null;a.data=null,super.add(a,i??r.data?r.data.length:0),c&&c.forEach(u=>this.add(u))}renameFiles(a,i,r){const c=this.byId(a),u=this.normalizeFile(c,i),m=[];return u.data?.forEach(p=>m.push(this.renameFiles(p.id,u.id,r))),m.length&&(u.data=m),r[a]=u.id,u}copyFiles(a,i,r){const c={};return a.forEach(u=>{const m=this.renameFiles(u,i,c);this.add(m),r&&this.remove(u),c[u]=m.id}),c}moveFiles(a,i){if(this.byId(a[0]).parent!==i)return this.copyFiles(a,i,!0)}serialize(a="/"){const i=[],r=this.byId(a);return r?(r.data?.forEach(c=>{const{id:u,date:m,type:p,size:v,lazy:g}=c,w={id:u,date:m,type:p??"file"};g&&(w.lazy=g),v&&(w.size=v),i.push(w);const y=this.serialize(u);y.length&&i.push(...y)}),i):null}normalizeFile(a,i){const r=a.name,c=r.lastIndexOf("."),u=c!==-1?r.slice(c+1):"",m=u?`.${u}`:"";let p=c!==-1?r.slice(0,c):r,v=i+(i==="/"?"":"/")+p;for(;this.byId(v+m);){const g=".new";v+=g,p+=g}return{...a,id:v+m,name:p+m,parent:i,ext:u.toLocaleLowerCase()}}},tC=class extends W1{in;_router;constructor(a){super({writable:a,async:!1});const i=[];for(let u=0;u<2;u++)i.push({in:["data",`panels.${u}.path`],out:[`panels.${u}._crumbs`],exec:m=>{const{data:p,panels:v}=this.getState(),g=[];g[u]={_crumbs:p.getParents(v[u].path)},this.setState({panels:g},m)}}),i.push({in:["data",`panels.${u}.path`,`panels.${u}._sorts`,"search"],out:[`panels.${u}._files`],exec:m=>{const{data:p,panels:v,search:g}=this.getState();let w;g?w=p.findFiles(g,v[u].path):w=p.byId(v[u].path)?.data||[];const{path:y,_sorts:b}=v[u];w=xx(w,b[y]);const C=[];C[u]={_files:w},this.setState({panels:C},m)}}),i.push({in:["data",`panels.${u}.selected`,`panels.${u}._sorts`],out:[`panels.${u}._selected`],exec:m=>{const{data:p,panels:v}=this.getState(),g=[];v[u].selected.forEach(k=>{const A=p.byId(k);A&&g.push(A)});const{path:w,_sorts:y}=v[u],b=xx(g,y[w]),C=[];C[u]={_selected:b},this.setState({panels:C},m)}});this._router=new K1(super.setState.bind(this),i,{data:u=>new eC(u)});const r=this.in=new Q1;r.on("select-file",({id:u,toggle:m,range:p,panel:v,type:g})=>{const{panels:w,activePanel:y}=this.getState();typeof v>"u"&&(v=y),u||(m=p=!1);let b=[...w[v].selected];if(m){const k=b.indexOf(u);k===-1?b.push(u):b.splice(k,1)}else if(p&&w[v]._lastSelected){const k=w[v]._files;let A=k.findIndex(R=>R.id==w[v]._lastSelected),T=k.findIndex(R=>R.id==u);T<A&&([A,T]=[T,A]);const j=k.slice(A,T+1).map(R=>R.id);b=[...new Set([...b,...j])]}else b=u?[u]:[];const C=[];C[v]={selected:b,_lastSelected:u,_selectNavigation:g==="navigation"},this.setState({panels:C})}),r.on("set-path",({id:u,panel:m,selected:p})=>{const{data:v,activePanel:g}=this.getState(),w=v.byId(u);if(w){const y=[];typeof m>"u"&&(m=g),y[m]={path:u},this.setState({panels:y}),r.exec("select-file",{panel:m}),p&&p.forEach(b=>r.exec("select-file",{id:b,panel:m,toggle:!0})),w.lazy&&r.exec("request-data",{id:u})}}),r.on("provide-data",({id:u,data:m})=>{const{mode:p,data:v}=this.getState(),g=v.byId(u);g&&(g.lazy||(g.data=[]),g.lazy=!1,v.parse(m,u,p==="search"),this.setState({data:v}))}),r.on("open-tree-folder",({id:u,mode:m})=>{const{data:p}=this.getState();p.update(u,{open:m}),this.setState({data:p})}),r.on("show-preview",({mode:u})=>{this.setState({preview:u})}),r.on("rename-file",u=>{const{id:m,name:p}=u,{data:v,panels:g}=this.getState(),w=v.byId(m);if(w.name!==p){w.name=p;const y=v.normalizeFile(w,w.parent);u.newId=y.id,y.data=null,v.add(y);let b={[m]:y.id};w.data?.forEach(k=>b={...v.moveFiles([k.id],y.id),...b});const C=g.map(k=>({selected:k.selected,_crumbs:k._crumbs,_lastSelected:k._lastSelected,_sorts:k._sorts}));v.remove(m),this._updatePanels(C,b),this.setState({data:v,panels:C})}}),r.on("create-file",u=>{const{file:m,parent:p}=u,{data:v}=this.getState(),g=v.normalizeFile(m,p);g.type=m.type||"file",u.newId=g.id,v.add(g),this.setState({data:v}),r.exec("select-file",{id:g.id})}),r.on("delete-files",({ids:u})=>{const{data:m,panels:p}=this.getState(),v=p.map(g=>({selected:g.selected,_crumbs:g._crumbs,_lastSelected:g._lastSelected,_sorts:g._sorts}));u.forEach(g=>m.remove(g)),this._updatePanels(v,{}),this.setState({data:m,panels:v})}),r.on("copy-files",u=>{const{ids:m,target:p}=u;if(this._isPlacedIntoSelf(m,p)){console.error("You cannot copy a folder into itself"),u.skipProvider=!0;return}const{data:v,panels:g,activePanel:w}=this.getState(),y=v.copyFiles(m,p);u.newIds=m.map(b=>y[b]),this.setState({data:v}),g[w].path==p&&(r.exec("select-file",{}),m.forEach(b=>{r.exec("select-file",{id:y[b],toggle:!0})}))}),r.on("move-files",u=>{const{ids:m,target:p}=u;if(this._isPlacedIntoSelf(m,p)){console.error("You cannot move a folder into itself"),u.skipProvider=!0;return}const{data:v,panels:g,activePanel:w}=this.getState(),y=v.moveFiles(m,p);if(y){u.newIds=m.map(C=>y[C]);const b=g.map(C=>({selected:C.selected,_crumbs:C._crumbs,_lastSelected:C._lastSelected,_sorts:C._sorts}));this._updatePanels(b,y,!0),this.setState({data:v,panels:b}),g[w].path==p&&(r.exec("select-file",{}),m.forEach(C=>{r.exec("select-file",{id:y[C],toggle:!0})}))}});let c=null;r.on("filter-files",({text:u})=>{if(!u){c&&this.setState({...c});return}r.exec("select-file",{});const{panels:m,mode:p}=this.getState();c||(c={panels:m,mode:p,search:""}),this.setState({mode:"search",search:u})}),r.on("set-mode",({mode:u})=>{const{activePanel:m}=this.getState(),p=[];p[m]={_selectNavigation:!1};const v={mode:u,search:"",panels:p};c=null,this.setState(v)}),r.on("set-active-panel",({panel:u})=>{this.setState({activePanel:u})}),r.on("sort-files",({key:u,order:m,panel:p,path:v})=>{const{activePanel:g,panels:w}=this.getState();p=p??g,v=v??w[p].path;const y=[];y[p]={_sorts:{...w[p]._sorts,[v]:{key:u,order:m}}},this.setState({panels:y})}),this.initOnce()}initOnce(){const a=[];for(let r=0;r<2;r++)a[r]=vx({_crumbs:[],_files:[],_selected:[],_sorts:{},path:"/",selected:[],...a[r]});const i={panels:vx(a),data:[],search:""};this._router.init(i)}init(a){const i={...a};this._router.init(i)}setState(a,i){return this._router.setState(a,i)}getFile(a){const{data:i}=this.getState();return i.byId(a)||null}serialize(a){const{data:i}=this.getState();return i.serialize(a)}_updatePanels(a,i,r){const{data:c}=this.getState();a.forEach(u=>{const m=[];u.selected.forEach(g=>{c.byId(g)?m.push(g):!r&&i[g]&&m.push(i[g])}),u.selected=m,c.byId(u._lastSelected)||(u._lastSelected=r?null:i[u._lastSelected]||null);const p={};Object.keys(u._sorts).forEach(g=>{c.byId(g)?p[g]=u._sorts[g]:i[g]&&!r&&(p[i[g]]=u._sorts[g])}),u._sorts=p;const v=u._crumbs[u._crumbs.length-1];v?.id!=="/"&&(i[v.id]?u.path=i[v.id]:c.byId(v.id)||(u.path="/"))})}_isPlacedIntoSelf(a,i){return a.some(r=>r===i||this.getState().data.getParents(i).some(c=>c.id===r))}};function nC(n){switch(n){case"body":return[{icon:"wxi-content-paste",text:"Paste",hotkey:"Ctrl+V",id:"paste"}];case"add":return[{icon:"mdi mdi-folder-plus-outline",text:"Add new file",id:"add-file"},{icon:"mdi mdi-file-plus-outline",text:"Add new folder",id:"add-folder"},{icon:"mdi mdi-file-upload-outline",text:"Upload file",id:"upload",comp:"upload"}];case"multiselect":return[{icon:"wxi-content-copy",text:"Copy",hotkey:"Ctrl+C",id:"copy"},{icon:"wxi-content-cut",text:"Cut",hotkey:"Ctrl+X",id:"move"},{comp:"separator"},{icon:"wxi-close",text:"Delete",hotkey:"Delete",id:"delete"}];default:return[n==="folder"?null:{icon:"wxi-download",text:"Download",hotkey:"Ctrl+D",id:"download"},{icon:"wxi-content-copy",text:"Copy",hotkey:"Ctrl+C",id:"copy"},{icon:"wxi-content-cut",text:"Cut",hotkey:"Ctrl+X",id:"move"},{icon:"wxi-content-paste",text:"Paste",hotkey:"Ctrl+V",id:"paste"},{comp:"separator"},{icon:"wxi-edit",text:"Rename",hotkey:"Ctrl+R",id:"rename"},{icon:"wxi-close",text:"Delete",hotkey:"Delete",id:"delete"}].filter(a=>a!==null)}}function aC(n,a="data-id"){let i=n;for(!i.tagName&&n.target&&(i=n.target);i;){if(i.getAttribute&&i.getAttribute(a))return i;i=i.parentNode}return null}function sC(n,a="data-id"){const i=aC(n,a);return i?i.getAttribute(a):null}new Date().valueOf();function lC(n,a){const{api:i}=a;function r(u,m){const p=a.getPanel(),v=p.selected,g=m.ctrlKey||m.metaKey,w=m.shiftKey;let y;const b=v?.[0]?i.getFile(v[0]):null;v?.length?v.length>1?y=a.menuOptions("multiselect"):y=a.menuOptions(b.type,b):y=a.menuOptions("body");const C=`${g?"ctrl+":""}${w?"shift+":""}${u}`,k=y?y.find(T=>T.hotkey?.toLowerCase()===C):!1,A=a.performAction;if(k)switch(C){case"ctrl+c":A("copy");break;case"ctrl+x":A("move");break;case"ctrl+v":A("paste",b);break;case"delete":A("delete");break;case"ctrl+r":m.preventDefault(),A("rename",b);break;case"ctrl+d":m.preventDefault(),A("download",b);break;default:k.handler?.({context:b})}switch(u){case"enter":{if(g||w)break;const{_crumbs:T,_selectNavigation:j}=p;if(j){const R=J1(T);if(R){const E=Bh(R,T);i.exec("set-path",{id:R,selected:[E]})}}else if(v.length===1){const R=i.getFile(v[0]);R&&i.exec(R.type==="folder"?"set-path":"open-file",{id:R.id})}break}case"arrowup":case"arrowleft":{const{_files:T,_selected:j,path:R,_selectNavigation:E}=p;let H;if(j.length){const F=j.at(0).id,q=T.findIndex(I=>I.id===F);if(q!==-1){const I=q-1;T[I]?H=T[I].id:R!=="/"&&!(g||w)&&i.exec("select-file",{type:"navigation"})}}else{if(E)break;if(R!=="/"){i.exec("select-file",{type:"navigation"});break}H=T.at(0)?.id}H&&i.exec("select-file",{id:H,toggle:g,range:w});break}case"arrowdown":case"arrowright":{const{_files:T,_selected:j,path:R,_selectNavigation:E}=p;let H;if(j.length){const F=j.at(-1).id,q=T.findIndex(I=>I.id===F);if(q!==-1){const I=q+1;T[I]&&(H=T[I].id)}}else{if(R!=="/"&&!E){i.exec("select-file",{type:"navigation"});break}H=T.at(0)?.id}H&&i.exec("select-file",{id:H,toggle:g,range:w});break}}}function c(u){const m=u.code.replace("Key","").toLowerCase();r(m,u),m=="tab"&&setTimeout(()=>{const p=document.activeElement;p.className.indexOf("table")!=-1&&i.exec("set-active-panel",{panel:+sC(p,"data-panel")})})}return n.addEventListener("keydown",c),{destroy:()=>{n.removeEventListener("keydown",c)}}}function iC(n,a="data-id"){let i=n;for(!i.tagName&&n.target&&(i=n.target);i;){if(i.getAttribute&&i.getAttribute(a))return i;i=i.parentNode}return null}function rC(n,a="data-id"){const i=n.getAttribute(a);return i?oC(i):null}function oC(n){if(n.startsWith(":"))return n.substring(1);const a=n*1;return isNaN(a)?n:a}function cC(){return{detect:()=>!0,addEvent:function(n,a,i){return n.addEventListener(a,i),()=>n.removeEventListener(a,i)},addGlobalEvent:function(n,a){return document.addEventListener(n,a),()=>document.removeEventListener(n,a)},getTopNode:function(){return window.document.body}}}var uC=cC();new Date().valueOf();function qy(n){const[a,i]=f.useState(n),r=f.useRef(n);return f.useEffect(()=>{if(r.current!==n){if(Array.isArray(r.current)&&Array.isArray(n)&&r.current.length===0&&n.length===0)return;r.current=n,i(n)}},[n]),[a,i]}function dC(n,a,i){const[r,c]=f.useState(()=>a);return n||console.warn(`Writable ${i} is not defined`),f.useEffect(()=>n?n.subscribe(m=>{c(()=>m)}):void 0,[n]),r}function Ze(n,a){const i=n.getState(),r=n.getReactiveState();return dC(r[a],i[a],a)}function fC(n,a){const i=f.useRef(a);i.current=a;const[r,c]=f.useState(1);return f.useEffect(()=>n.subscribe(m=>{i.current=m,c(p=>p+1)}),[n]),[i.current,r]}function Wa(n,a){const i=n.getState(),r=n.getReactiveState();return fC(r[a],i[a])}function Gy(n){const a={};return n.split(";").forEach(i=>{const[r,c]=i.split(":");if(c){let u=r.trim();u.indexOf("-")&&(u=u.replace(/-([a-z])/g,(m,p)=>p.toUpperCase())),a[u]=c.trim()}}),a}function Vy(n){let a=n,i=[];return{subscribe:p=>{i.push(p),p(a)},unsubscribe:p=>{i=i.filter(v=>v!==p)},set:p=>{a=p,i.forEach(v=>v(a))},update:p=>{a=p(a),i.forEach(v=>v(a))}}}function wx(n,a,i){function r(c){const u=iC(c);if(!u)return;const m=rC(u);if(typeof a=="function")return a(m,c);let p,v=c.target;for(;v!=u;){if(p=v.dataset?v.dataset.action:null,p&&a[p]){a[p](m,c);return}v=v.parentNode}a[i]&&a[i](m,c)}return uC.addEvent(n,i,r)}function mC(n,a){const i=[wx(n,a,"click")];return a.dblclick&&i.push(wx(n,a.dblclick,"dblclick")),()=>{i.forEach(r=>r())}}function Yy(n,a){return n.map((i,r)=>{const c=a(i,r);return i.data&&i.data.length&&(c.data=Yy(i.data,a)),c}).filter(Boolean)}function Wy(n,a){const i=[];return n.forEach(r=>{if(r.data){const c=Wy(r.data,a);c.length&&i.push({...r,data:c})}else a(r)&&i.push(r)}),i}function hC(n){return Yy(n,(a,i)=>{const r={...a,id:a.id||Rh()};return r.type&&(r.comp=r.type),r.comp==="separator"&&n[i-1]?.comp==="separator"?null:r})}const Ky={};function pC(n){return Ky[n]||n}function gC(n,a){Ky[n]=a}function vC({onClick:n,onShow:a,option:i}){const r=f.useRef(null),c=f.useCallback(()=>{a(i.data?i.id:!1,r.current)},[a,i]),u=f.useCallback(p=>{if(i.data){p.stopPropagation(),a(i.id,r.current);return}n(p)},[n,a,i]),m=f.useMemo(()=>i&&i.comp?pC(i.comp):null,[i]);return l.jsxs("div",{ref:r,className:`wx-cDCz9rZQ wx-option ${i.css||""} ${i.disabled?"wx-disabled":""}`,"data-id":Cn(i.id),onMouseEnter:c,onClick:u,children:[i.icon?l.jsx("i",{className:`wx-cDCz9rZQ wx-icon ${i.icon}`}):null,i.comp?m?l.jsx(m,{item:i,option:i}):null:l.jsxs("span",{className:"wx-cDCz9rZQ wx-value",children:[" ",i.text," "]}),i.subtext?l.jsx("span",{className:"wx-cDCz9rZQ wx-subtext",children:i.subtext}):null,i.data?l.jsx("i",{className:"wx-cDCz9rZQ wx-sub-icon wxi-angle-right"}):null]})}function Fh({options:n,left:a=0,top:i=0,at:r="bottom",parent:c=null,mount:u=null,context:m=null,css:p="",onClick:v,onCancel:g}){const[w,y]=f.useState(-1e4),[b,C]=f.useState(-1e4),[k,A]=f.useState(20),[T,j]=f.useState(),R=f.useRef(null),[E,H]=f.useState(!1),[F,q]=f.useState(null),I=f.useCallback(()=>{const le=Ey(R.current,c,r,a,i);le&&(y(le.x),C(le.y),j(le.width));let V=le?.z??20;const z=c?l1(c):[];let K=0;for(const Q of z){const P=parseInt(getComputedStyle(Q).zIndex,10);P>K&&(K=P)}K>=V&&(V=K+1),A(V)},[c,r,a,i]);f.useEffect(()=>{u&&u(I)},[]);const _=f.useCallback(()=>{H(!1)},[]),fe=f.useCallback((le,V)=>{H(le),q(V)},[]),G=f.useMemo(()=>hC(n),[n]);f.useEffect(()=>{I()},[c,I]);const ue=f.useRef(v),Y=f.useRef(g),ae=f.useRef(c);return f.useEffect(()=>{ue.current=v},[v]),f.useEffect(()=>{Y.current=g},[g]),f.useEffect(()=>{ae.current=c},[c]),f.useEffect(()=>{if(!R.current)return;function le(V){Y.current?Y.current(V):ue.current&&ue.current({action:null,option:null})}return Os(R.current,{callback:le,modal:!0,parent:()=>ae.current}).destroy},[]),l.jsx("div",{ref:R,"data-wx-menu":"true",className:`wx-XMmAGqVx wx-menu ${p}`,style:{position:"absolute",top:b+"px",left:w+"px",width:T,zIndex:k},onMouseLeave:_,children:G.map(le=>l.jsxs(f.Fragment,{children:[le.comp==="separator"?l.jsx("div",{className:"wx-XMmAGqVx wx-separator"}):l.jsx(vC,{option:le,onShow:fe,onClick:V=>{if(!le.data&&!V.defaultPrevented){const z={context:m,action:le,option:le,event:V};le.handler&&le.handler(z),v&&v(z),V.stopPropagation()}}}),le.data&&E===le.id?l.jsx(Fh,{css:p,options:le.data,at:"right-overlap",parent:F,context:m,onClick:v,onCancel:g}):null]},le.id))})}const Qy=f.forwardRef(function(n,a){const{options:i,at:r="bottom",resolver:c=null,dataKey:u="contextId",filter:m=null,css:p="",children:v,onClick:g}=n,[w,y]=f.useState(null),[b,C]=f.useState(null),[k,A]=f.useState(0),[T,j]=f.useState(0),R=f.useRef(null),E=f.useMemo(()=>`data-${u.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,[u]),H=f.useMemo(()=>w!==null&&m?Wy(i,_=>m(_,w)):i,[w,m,i]);function F(_){C(null),g&&g(_)}function q(_){if(R.current===_){R.current=null;return}C(null),g&&g({action:null,option:null})}const I=f.useCallback((_,fe)=>{if(!_){C(null);return}if(_.defaultPrevented)return;const G=_.target;if(G&&G.dataset&&G.dataset.menuIgnore)return;if(b&&b===G){C(null),_.preventDefault();return}A(_.clientX+1),j(_.clientY+1);let ue=typeof fe<"u"?fe:Lc(G,E);c&&(ue=c(ue,_),!ue)||(y(ue),C(G),R.current=_.nativeEvent||_,_.preventDefault())},[b,E,c]);return f.useImperativeHandle(a,()=>({show:I}),[I]),l.jsxs(l.Fragment,{children:[v?l.jsx("span",{onClick:I,"data-menu-ignore":"true",children:typeof v=="function"?v():v}):null,b?l.jsx(Dh,{children:l.jsx(Fh,{css:p,at:r,top:T,left:k,parent:b,context:w,onClick:F,onCancel:q,options:H},b)}):null]})}),xC=f.forwardRef(function(n,a){const{options:i,at:r="bottom",css:c="",children:u,onClick:m}=n,[p,v]=f.useState(null),g=f.useRef(null);function w(k){v(null),m&&m(k)}function y(k){if(g.current===k){g.current=null;return}v(null),m&&m({action:null,option:null})}const b=f.useCallback(k=>{v(k.target),g.current=k.nativeEvent||k,k.preventDefault()},[]);f.useImperativeHandle(a,()=>({show:b}),[b]);function C(k){let A=k.target;for(;!A.dataset.menuIgnore;)v(A),A=A.parentNode}return l.jsxs(l.Fragment,{children:[l.jsx("span",{onClick:C,"data-menu-ignore":"true",children:u}),p?l.jsx(Dh,{children:l.jsx(Fh,{css:c,at:r,parent:p,options:i,onClick:w,onCancel:y})}):null]})}),yC=f.forwardRef(function(n,a){const{options:i,at:r="bottom",resolver:c=null,dataKey:u="contextId",filter:m=null,css:p="",children:v,onClick:g}=n,w=f.useRef(null),y=f.useCallback((b,C)=>{w.current.show(b,C)},[]);return f.useImperativeHandle(a,()=>({show:y}),[y]),l.jsxs(l.Fragment,{children:[v?l.jsx("span",{onContextMenu:y,"data-menu-ignore":"true",children:v}):null,l.jsx(Qy,{css:p,at:r,options:i,resolver:c,dataKey:u,filter:m,ref:w,onClick:g})]})}),wC={uploader:{B:"B",KB:"KB",MB:"MB",GB:"GB",TB:"TB",PB:"PB",EB:"EB","Drop files here or":"Drop files here or","select files":"select files"}};let bC=class{constructor(a,i,r,c,u){this.setFiles=a,this.setReady=i,this.setSignal=r,this.setDrag=c,u&&u.length&&this.setFiles(u)}open(a){this.setSignal(["click",a||{}])}getState(){let a="server";const i=this.files;for(let r=0;r<i.length;r++){if(i[r].status==="client")return"client";i[r].status==="error"&&(a="error")}return a}droparea(a,i){i=i||{};const r=()=>{i.dragEnter&&i.dragEnter(),this.setDrag(!0)},c=()=>{i.dragLeave&&i.dragLeave(),this.setDrag(!1)},u=p=>{p.preventDefault()},m=p=>{p.preventDefault(),this.setDrag(!1),this.setSignal(["drop",i,p]),i.dragLeave&&i.dragLeave(),i.drop&&i.drop()};return a.addEventListener("dragenter",r),a.addEventListener("dragleave",c),a.addEventListener("dragover",u,!0),a.addEventListener("drop",m,!0),()=>{a.removeEventListener("dragenter",r),a.removeEventListener("dragleave",c),a.removeEventListener("dragover",u,!0),a.removeEventListener("drop",m,!0)}}updateFile(a,i){const r=this.files.findIndex(u=>u.id===a);if(r===-1)return;const c=[...this.files];return c[r]={...c[r],...i},this.files=c,this.setFiles(this.files),this.files[r]}deleteFile(a){this.files=this.files.filter(i=>i.id!==a),this.setFiles(this.files)}addFile(a,i){i?this.files=[...this.files,a]:this.files=[a],this.setFiles(this.files)}deleteAll(){this.files=[],this.setFiles(this.files)}};function Xy(n){const[a,i]=f.useState([]),[r,c]=f.useState(Promise.resolve(null)),[u,m]=f.useState(null),[p,v]=f.useState(!1),g=f.useRef();return g.current||(g.current=new bC(i,c,m,v,n)),g.current.files=a,g.current.ready=r,g.current.signal=u,g.current.drag=p,g.current}function SC(n,a){{if(n){const i=n.getGroup(a);if(i)return i}return Oc(wC).getGroup(a)}}const CC=()=>Math.random().toString(36).substr(2,9),jC=({data:n,accept:a="",multiple:i=!0,folder:r=!1,uploadURL:c="",apiOnly:u=!1,disabled:m=!1,children:p,onChange:v,onUpload:g})=>{const w=f.useRef(null),y=f.useRef(null),[b,C]=f.useState({}),k=Xy(),A=n||k,T=f.useContext(kn.i18n),j=SC(T,"uploader");f.useEffect(()=>{w.current&&r&&(w.current.webkitdirectory=!0)},[r]),f.useEffect(()=>{if(!u&&y.current&&!m)return A.droparea(y.current)},[u,m,y]);const R=G=>{const ue=new FormData;return ue.append("upload",G.file),fetch(c,{method:"POST",body:ue}).then(Y=>Y.json()).then(Y=>({id:G.id,...Y}),()=>({id:G.id,status:"error"})).catch(Y=>(console.log(Y),{id:G.id,status:"error"}))},E=(G,ue)=>{const Y=A.updateFile(G,ue),ae={...Y,status:A.getState()};Y&&Y.uploaded&&Y.uploaded(ae),g&&g(ae),Y.temp&&A.deleteFile(Y.id)},H=G=>{if(!G)return;const ue=typeof c=="function"?c(G):R(G);A.setReady(ue.then(Y=>{Y.status=Y.status||"server",E(G.id,Y)}).catch(Y=>{E(G.id,{status:"error",error:Y})}))},F=(G,ue)=>{const Y={...ue||b,id:CC(),status:"client",name:G.name,file:G};Y.selected&&Y.selected(Y),v&&v(Y),A.addFile(Y,i),H(Y),w.current&&(w.current.value="")},q=(G,ue,Y)=>{G.isFile?G.file(ae=>{F(ae,Y)}):G.isDirectory&&G.createReader().readEntries(ae=>{ae.forEach(le=>{q(le,ue+le.name+"/",Y)})})},I=G=>{Array.from(G.target.files).forEach(ue=>F(ue))},_=(G,ue)=>{Array.from(G.dataTransfer.items).forEach(Y=>{const ae=Y.webkitGetAsEntry();ae&&q(ae,"",ue)})},fe=()=>{w.current&&w.current.click()};return f.useEffect(()=>{if(A.signal){const[G,ue,Y]=A.signal;C(ue),G==="click"?fe():G==="drop"&&_(Y,ue),A.setSignal(null)}},[A.signal]),u?l.jsxs(l.Fragment,{children:[l.jsx("input",{type:"file",className:"wx-at1A8tb8 wx-input",ref:w,onChange:I,accept:a,multiple:i,disabled:m}),p]}):l.jsxs("div",{className:`wx-at1A8tb8 wx-label ${A.drag?"wx-active":""} ${m?"wx-disabled":""}`,ref:y,children:[l.jsx("input",{type:"file",className:"wx-at1A8tb8 wx-input",ref:w,onChange:I,accept:a,multiple:i,disabled:m}),p||l.jsx("div",{className:"wx-at1A8tb8 wx-dropzone",children:l.jsxs("span",{children:[j("Drop files here or")," ",l.jsx("span",{className:"wx-at1A8tb8 wx-action",onClick:fe,children:j("select files")})]})})]})};new Date().valueOf();function kC(n,a){if(Object.keys(n).length!==Object.keys(a).length)return!1;for(const i in a){const r=n[i],c=a[i];if(!Fd(r,c))return!1}return!0}function Fd(n,a){if(typeof n=="number"||typeof n=="string"||typeof n=="boolean"||n===null)return n===a;if(typeof n!=typeof a||(n===null||a===null)&&n!==a||n instanceof Date&&a instanceof Date&&n.getTime()!==a.getTime())return!1;if(typeof n=="object")if(Array.isArray(n)&&Array.isArray(a)){if(n.length!==a.length)return!1;for(let i=n.length-1;i>=0;i--)if(!Fd(n[i],a[i]))return!1;return!0}else return kC(n,a);return n===a}function dh(n){if(typeof n!="object"||n===null)return n;if(n instanceof Date)return new Date(n);if(n instanceof Array)return n.map(dh);const a={};for(const i in n)a[i]=dh(n[i]);return a}var Zy=2,AC=class{constructor(n){n&&(this._writable=n.writable,this._async=n.async),this._values={},this._state={}}setState(n,a=0){const i={};return this._wrapProperties(n,this._state,this._values,"",i,a),i}getState(){return this._values}getReactive(){return this._state}_wrapProperties(n,a,i,r,c,u){for(const m in n){const p=a[m],v=i[m],g=n[m];if(p&&(v===g&&typeof g!="object"||g instanceof Date&&v instanceof Date&&v.getTime()===g.getTime()))continue;const w=r+(r?".":"")+m;p?(p.__parse(g,w,c,u)&&(i[m]=g),u&Zy?c[w]=p.__trigger:p.__trigger()):(g&&g.__reactive?a[m]=this._wrapNested(g,g,w,c):a[m]=this._wrapWritable(g),i[m]=g),c[w]=c[w]||null}}_wrapNested(n,a,i,r){const c=this._wrapWritable(n);return this._wrapProperties(n,c,a,i,r,0),c.__parse=(u,m,p,v)=>(this._wrapProperties(u,c,a,m,p,v),!1),c}_wrapWritable(n){const a=[],i=function(){for(let r=0;r<a.length;r++)a[r](n)};return{subscribe:r=>(a.push(r),this._async?setTimeout(r,1,n):r(n),()=>{const c=a.indexOf(r);c>=0&&a.splice(c,1)}),__trigger:()=>{a.length&&(this._async?setTimeout(i,1):i())},__parse:function(r){return n=r,!0}}}},MC=class{constructor(n,a,i,r){typeof n=="function"?this._setter=n:this._setter=n.setState.bind(n),this._routes=a,this._parsers=i,this._prev={},this._triggers=new Map,this._sources=new Map,this._routes.forEach(c=>{c.in.forEach(u=>{const m=this._triggers.get(u)||[];m.push(c),this._triggers.set(u,m)}),c.out.forEach(u=>{const m=this._sources.get(u)||{};c.in.forEach(p=>m[p]=!0),this._sources.set(u,m)})}),this._routes.forEach(c=>{c.length=Math.max(...c.in.map(u=>Jy(u,this._sources,1)))}),this._bus=r}init(n){const a={};for(const i in n)if(this._prev[i]!==n[i]){const r=this._parsers[i];a[i]=r?r(n[i]):n[i]}this._prev=this._prev?{...this._prev,...n}:{...n},this.setState(a),this._bus&&this._bus.exec("init-state",a)}setStateAsync(n){const a=this._setter(n,Zy);return this._async?Object.assign(this._async.signals,a):this._async={signals:a,timer:setTimeout(this._applyState.bind(this),1)},a}_applyState(){const n=this._async;if(n){this._async=null,this._triggerUpdates(n.signals,[]);for(const a in n.signals){const i=n.signals[a];i&&i()}}}setState(n,a=[]){const i=this._setter(n);return this._triggerUpdates(i,a),i}_triggerUpdates(n,a){const i=Object.keys(n),r=!a.length;a=a||[];for(let c=0;c<i.length;c++){const u=i[c],m=this._triggers.get(u);m&&m.forEach(p=>{a.indexOf(p)==-1&&a.push(p)})}r&&this._execNext(a)}_execNext(n){for(;n.length;){n.sort((i,r)=>i.length<r.length?1:-1);const a=n[n.length-1];n.splice(n.length-1),a.exec(n)}}};function Jy(n,a,i){const r=a.get(n);if(!r)return i;const c=Object.keys(r).map(u=>Jy(u,a,i+1));return Math.max(...c)}var NC=class{constructor(){this._nextHandler=null,this._handlers={},this._tag=new WeakMap,this.exec=this.exec.bind(this)}on(n,a,i){let r=this._handlers[n];r?i&&i.intercept?r.unshift(a):r.push(a):r=this._handlers[n]=[a],i&&i.tag&&this._tag.set(a,i.tag)}intercept(n,a,i){this.on(n,a,{...i,intercept:!0})}detach(n){for(const a in this._handlers){const i=this._handlers[a];for(let r=i.length-1;r>=0;r--)this._tag.get(i[r])===n&&i.splice(r,1)}}async exec(n,a){const i=this._handlers[n];if(i)for(let r=0;r<i.length;r++){const c=i[r](a);if(c===!1||c&&c.then&&await c===!1)return}return this._nextHandler&&await this._nextHandler.exec(n,a),a}setNext(n){return this._nextHandler=n}};function TC(n){return a=>a[n]}function RC(n){return(a,i)=>a[n]=i}function bi(n,a){return(a.getter||TC(a.id))(n)}function _m(n,a,i){return(a.setter||RC(a.id))(n,i)}function EC(n,a){const i=document.createElement("a");i.href=URL.createObjectURL(n),i.download=a,document.body.appendChild(i),i.click(),document.body.removeChild(i)}function wi(n,a){let i=bi(n,a)??"";return a.template?i=a.template(i,n,a):a.optionsMap&&(Array.isArray(i)?i=i.map(r=>a.optionsMap.get(r)).join(", "):i=a.optionsMap.get(i)),typeof i>"u"?"":i+""}function DC(n,a){const i=/\n|"|;|,/;let r="";const c=a.rows||`
|
|
11
|
-
`,u=a.cols||" ",m=n._columns,p=n.flatData;a.header!==!1&&m[0].header&&(r=bx("header",m,r,u,c));for(let v=0;v<p.length;v++){const g=[];for(let w=0;w<m.length;w++){let y=wi(p[v],m[w]);i.test(y)&&(y='"'+y.replace(/"/g,'""')+'"'),g.push(y)}r+=(r?c:"")+g.join(u)}return a.footer!==!1&&m[0].footer&&(r=bx("footer",m,r,u,c)),r}function bx(n,a,i,r,c){const u=/\n|"|;|,/;for(let m=0;m<a[0][n].length;m++){const p=[];for(let v=0;v<a.length;v++){let g=(a[v][n][m].text||"")+"";u.test(g)&&(g='"'+g.replace(/"/g,'""')+'"'),p.push(g)}i+=(i?c:"")+p.join(r)}return i}const LC="portrait",_C=100,zC="a4",OC={a3:{width:11.7,height:16.5},a4:{width:8.27,height:11.7},letter:{width:8.5,height:11}};function IC(n,a){const i=[];let r=[],c=0;const u=n.filter(p=>!p.hidden),m=BC(a);return u.forEach((p,v)=>{c+p.width<=m?(c+=p.width,r.push(p)):(r.length&&i.push(r),r=[p],c=p.width),v===u.length-1&&r.length&&i.push(r)}),i}function Sx(n,a,i){const r=[];return n.forEach((c,u)=>{const m=c[a];for(let p=0;p<i.length;p++){r[p]||(r[p]=[]);const v={...m[p]};if(r[p][u]!==null){if(!u&&!v.rowspan&&!v.colspan){let g=1,w=n[u+g][a][p],y=v.width;for(;!w.rowspan&&!w.colspan;)g++,w=n[u+g][a][p],y+=w.width;v.colspan=g,v.width=y,v.height=i[p]}if(r[p].push(v),!v.collapsed&&v.colspan>1){let g=v.colspan-1;if(v.colspan+u>n.length){const w=v.colspan-(v.colspan+u-n.length);v.colspan=w,v.width=n.slice(u,u+g+1).reduce((y,b)=>y+b.width,0),w>1&&(g=w-1)}for(let w=0;w<g;w++)r[p].push(null)}if(v.rowspan>1){const g=v.rowspan;for(let w=1;w<g;w++)r[p+w]||(r[p+w]=[]),r[p+w].push(null)}}}if(c.collapsed)for(let p=0;p<r.length;p++){const v=r[p],g=v[u];if(g&&g.collapsed){if(v[u]=null,!p)break}else{const w=g||v.findLast(y=>y?.colspan>=1);w&&(w.colspan=w.colspan-1,w.width=w.width-c.width)}}}),r.map(c=>c.filter(u=>u&&u.colspan!==0))}function BC(n){const{mode:a,ppi:i,paper:r}=n,{width:c,height:u}=OC[r];return FC(a==="portrait"?c:u,i)}function FC(n,a){return n*a}function HC(n={}){const{mode:a,ppi:i,paper:r}=n;return{mode:a||LC,ppi:i||_C,paper:r||zC}}function ew(n,a){return n.flexgrow?`min-width:${a}px;width:auto`:`width:${n.width}px; max-width:${n.width}px; height:${n.height}px`}function $C(n,a,i){let r=n[i.id];if(i.filter.type==="richselect"&&r){const c=i.filter.config?.options||a.find(({id:u})=>u==i.id).options;c&&(r=c.find(({id:u})=>u==r).label)}return r??""}const Cx=["resize-column","hide-column","update-cell"],UC=["delete-row","update-row","update-cell"],PC=["move-item"],qC=["resize-column","move-item"];class GC{undo=[];redo=[];progress={};in;getState;setState;_previousValues={};constructor(a,i,r){this.in=a,this.getState=i,this.setState=r,this.setHandlers(),this.resetStateHistory()}getHandlers(){return{"add-row":{handler:a=>({action:"delete-row",data:{id:a.id},source:{action:"add-row",data:a}})},"delete-row":{handler:a=>{const{id:i}=a,{data:r}=this.getPrev(),c=r.findIndex(u=>u.id===i);return{action:"add-row",data:{id:i,row:r[c],before:c<r.length-1?r[c+1].id:void 0},source:{action:"delete-row",data:a}}}},"update-cell":{handler:a=>{const{id:i,column:r}=a,c=this.getRow(i),u=this.getColumn(r),m=bi(c,u);return Fd(m,a.value)?null:{action:"update-cell",data:{id:i,column:r,value:m},source:{action:"update-cell",data:a}}}},"update-row":{handler:a=>{const{id:i,row:r}=a,c=this.getRow(i);for(const u in r)Object.keys(c).includes(u)||(c[u]=void 0);return{action:"update-row",data:{id:i,row:c},source:{action:"update-row",data:a}}}},"copy-row":{handler:a=>{const{id:i}=a,{data:r}=this.getState(),c=r.findIndex(m=>m.id===i),u=r[c];return{action:"delete-row",data:{id:i},source:{action:"add-row",data:{id:i,row:u,before:c<r.length-1?r[c+1].id:void 0}}}}},"resize-column":{handler:a=>{const{id:i,width:r}=a,c=this.getColumn(i),{_sizes:u}=this.getState();return{action:"resize-column",data:{id:i,width:c.width??u.columnWidth},source:{action:"resize-column",data:{id:i,width:r}}}}},"hide-column":{handler:a=>{const{id:i}=a,r=this.getColumn(i);return{action:"hide-column",data:{id:i,mode:r.hidden},source:{action:"hide-column",data:a}}}},"collapse-column":{handler:a=>{const{id:i,row:r,mode:c}=a;return{action:"collapse-column",data:{id:i,row:r,mode:typeof c=="boolean"?!c:c},source:{action:"collapse-column",data:a}}}},"move-item":{handler:a=>{const{id:i,target:r,mode:c}=a,{flatData:u}=this.getPrev(),m=u.findIndex(p=>p.id===i);return{action:"move-item",data:{id:i,target:u[m+(m?-1:1)].id,mode:m?"after":"before"},source:{action:"move-item",data:{id:i,target:r,mode:c}}}}},"open-row":{handler:a=>{const{id:i,nested:r}=a;return{action:"close-row",data:{id:i,nested:r},source:{action:"open-row",data:a}}}},"close-row":{handler:a=>{const{id:i,nested:r}=a;return{action:"open-row",data:{id:i,nested:r},source:{action:"close-row",data:a}}}}}}resetHistory(){this.undo=[],this.redo=[],this.progress={},this.resetStateHistory()}getPrev(){return this._previousValues}setHandlers(){const a=this.getHandlers();for(const i in a)this.in.intercept(i,r=>{if(!(r.eventSource==="undo"||r.eventSource==="redo"||r.skipUndo)){if(qC.includes(i)){(r.inProgress&&!this.progress[i]||typeof r.inProgress!="boolean")&&(PC.includes(i)&&this.setPrev("flatData"),Cx.includes(i)&&this.setPrev("columns")),this.progress[i]=r.inProgress;return}UC.includes(i)&&this.setPrev("data"),Cx.includes(i)&&this.setPrev("columns")}}),this.in.on(i,r=>{if(r.eventSource==="undo"||r.eventSource==="redo"||r.skipUndo||r.inProgress)return;const c=a[i].handler(r);c&&this.addToHistory(c)})}setPrev(a){this._previousValues[a]=dh(this.getState()[a])}addToHistory(a){this.undo.push(a),this.redo=[],this.setStateHistory()}handleUndo(){if(!this.undo.length)return;const a=this.undo.pop();this.redo.push({...a.source,source:a}),this.in.exec(a.action,{...a.data,eventSource:"undo"}),this.setStateHistory()}handleRedo(){if(!this.redo.length)return;const a=this.redo.pop();this.undo.push({...a.source,source:a}),this.in.exec(a.action,{...a.data,eventSource:"redo"}),this.setStateHistory()}resetStateHistory(){this.setState({history:{undo:0,redo:0}})}setStateHistory(){this.setState({history:{undo:this.undo.length,redo:this.redo.length}})}getRow(a){const{data:i}=this.getPrev();return this.getState().tree?this.getTreeRow(i,a):i.find(r=>r.id===a)}getTreeRow(a,i){for(let r=0;r<a.length;r++){if(a[r].id===i)return a[r];if(a[r].data){const c=this.getTreeRow(a[r].data,i);if(c)return c}}return null}getColumn(a){const{columns:i}=this.getPrev();return i.find(r=>r.id===a)}}function tw(n,a){return typeof n>"u"||n===null?-1:typeof a>"u"||a===null?1:n===a?0:n>a?1:-1}function VC(n,a){return-tw(n,a)}function YC(n,a){if(typeof a.sort=="function")return function(r,c){const u=a.sort(r,c);return n==="asc"?u:-u};const i=n==="asc"?tw:VC;return function(r,c){return i(bi(r,a),bi(c,a))}}function WC(n,a){if(!n||!n.length)return;const i=n.map(r=>{const c=a.find(u=>u.id==r.key);return YC(r.order,c)});return n.length===1?i[0]:function(r,c){for(let u=0;u<i.length;u++){const m=i[u](r,c);if(m!==0)return m}return 0}}const sd=28,KC=20;function QC(){if(typeof document>"u")return"willow";const n=document.querySelector('[class^="wx"][class$="theme"]');return n?n.className.substring(3,n.className.length-6):"willow"}function Rd(n,a,i,r,c){const u=document.createElement("div"),m=document.createElement("div"),p=document.body;c=c?`${c}px`:"auto";let v,g;m.className=a,u.classList.add(`wx-${i}-theme`),u.style.cssText=`height:auto;position:absolute;top:0px;left:100px;overflow:hidden;width=${c};white-space:nowrap;`,u.appendChild(m),p.appendChild(u),typeof n!="object"&&(n=[n]);for(let w=0;w<n.length;w++){m.innerText=n[w]+"";const y=u.getBoundingClientRect(),b=Math.ceil(y.width)+(r&&r.length?r[w]:0),C=Math.ceil(y.height);v=Math.max(v||0,b),g=Math.max(g||0,C)}return u.remove(),{width:v,height:g}}function jx(n,a,i,r,c){const u=[];for(let m=0;m<n.length;m++){const p=n[m][a],v=p.length;for(let g=0;g<v;g++){const{text:w,vertical:y,collapsed:b,rowspan:C,css:k}=p[g];if(!w){u[g]=Math.max(u[g]||0,r);continue}let A=0;if(y&&!b){let T=`wx-measure-cell-${a}`;if(T+=k?` ${k}`:"",A=Rd(w,T,c).width,(C>1||!p[g+1])&&i>g+1){const j=C||i-g,R=u.slice(g,g+j).reduce((E,H)=>E+H,0);if(R<A){const E=Math.ceil((A-R)/j);for(let H=g;H<g+j;H++)u[H]=(u[H]||r)+E}continue}}u[g]=Math.max(u[g]||r,A)}}return u}function XC(n,a,i){const r=[],c=[];let u="wx-measure-cell-body";u+=n.css?` ${n.css}`:"";for(let m=0;m<a.length;m++){const p=a[m],v=wi(p,n);v&&(r.push(v),n.treetoggle?c.push(a[m].$level*sd+(a[m].$count?sd:0)+(n.draggable?sd:0)):n.draggable&&c.push(sd))}return Rd(r,u,i,c).width}function ZC(n,a){const i="wx-measure-cell-header",r=n.sort?KC:0;let c=n.header;if(typeof c=="string")return Rd(c,i,a).width+r;let u;Array.isArray(c)||(c=[c]);for(let m=0;m<c.length;m++){const p=c[m],v=typeof p=="string"?p:p.text,g=i+(typeof p=="string"?"":` ${p.css}`);let w=Rd(v,g,a).width;m===c.length-1&&(w+=r),u=Math.max(u||0,w)}return u}const JC={text:(n,a)=>n?n.toString().toLowerCase().indexOf(a.toLowerCase())!==-1:!a,richselect:(n,a)=>typeof a!="number"&&!a?!0:n==a,datepicker:(n,a)=>a?n&&tj(n,a):!0,multiselect:(n,a)=>!a||a?.length===0?!0:Array.isArray(n)?n?.some(i=>a.includes(i)):n&&a.includes(n)};function nw(n){return JC[n]}function ej(n,a){const i=[];for(const r in n){const c=a.find(v=>v.id==r),{config:u,type:m}=c.header.find(v=>v.filter).filter,p=n[r];i.push(v=>{const g=bi(v,c);return u?.handler?u.handler(g,p):nw(m)(g,p)})}return r=>{for(let c=0;c<i.length;c++)if(!i[c](r))return!1;return!0}}function tj(n,a){return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()}let nj=class extends AC{in;_router;_branches;_xlsxWorker;_historyManager;constructor(a){super({writable:a,async:!1});const i={rowHeight:37,columnWidth:160,headerHeight:36,footerHeight:36};this._router=new MC(super.setState.bind(this),[{in:["columns","sizes","_skin"],out:["_columns","_sizes"],exec:c=>{const{columns:u,sizes:m,_skin:p}=this.getState(),v=this.copyColumns(u),g=v.reduce((b,C)=>Math.max(C.header.length,b),0),w=v.reduce((b,C)=>Math.max(C.footer.length,b),0);v.forEach(this.setCollapsibleColumns);const y=this.normalizeSizes(v,m,g,w,p);for(let b=0;b<v.length;b++)this.normalizeColumns(v,b,"header",g,y),this.normalizeColumns(v,b,"footer",w,y);this.setState({_columns:v,_sizes:y},c)}},{in:["data","tree","_filterIds"],out:["flatData","_rowHeightFromData"],exec:c=>{const{data:u,tree:m,dynamic:p,_filterIds:v}=this.getState(),g=v&&new Set(v),w=m?this.flattenRows(u,[],v):g?u.filter(b=>g.has(b.id)):u,y=!p&&w.some(b=>b.rowHeight);this.setState({flatData:w,_rowHeightFromData:y},c)}}],{sizes:c=>({...i,...c})});const r=this.in=new NC;r.on("close-editor",({ignore:c})=>{const{editor:u}=this.getState();u&&(c||r.exec("update-cell",u),this.setState({editor:null}))}),r.on("open-editor",({id:c,column:u})=>{let m=this.getState().editor;m&&r.exec("close-editor",{});const p=this.getRow(c),v=u?this.getColumn(u):this.getNextEditor(p);if(v?.editor){let g=v.editor;if(typeof g=="function"&&(g=g(p,v)),!g)return;m={column:v.id,id:c,value:bi(p,v)??"",renderedValue:wi(p,v),type:g.type||g},typeof g=="object"&&g.config&&(m.config=g.config,g.config.options&&(m.options=g.config.options)),v.options&&!m.options&&(m.options=v.options),this.setState({editor:m})}}),r.on("editor",({value:c})=>{let u=this.getState().editor;if(u){u={...u},u.value=c;const m=this.getColumn(u.column),p={...this.getRow(u.id)};_m(p,m,c),u.renderedValue=wi(p,m),this.setState({editor:u})}}),r.on("add-row",c=>{const u=this.getState();let{data:m}=u;const{select:p,_filterIds:v}=u,{row:g,before:w,after:y,select:b}=c;if(c.id=g.id=c.id||g.id||ld(),w||y){const k=w||y,A=m.findIndex(T=>T.id===k);m=[...m],m.splice(A+(y?1:0),0,c.row)}else m=[...m,c.row];const C={data:m};v&&(C._filterIds=[...v,c.id]),this.setState(C),!(typeof b=="boolean"&&!b)&&(b||p)&&r.exec("select-row",{id:g.id,show:!0})}),r.on("delete-row",c=>{const{data:u,selectedRows:m,focusCell:p,editor:v}=this.getState(),{id:g}=c,w={data:u.filter(y=>y.id!==g)};this.isSelected(g)&&(w.selectedRows=m.filter(y=>y!==g)),v?.id===g&&(w.editor=null),this.setState(w),p?.row===g&&this.in.exec("focus-cell",{eventSource:"delete-row"})}),r.on("update-cell",c=>{const u=this.getState();let{data:m}=u;m=[...m];const{tree:p}=u,{id:v,column:g,value:w}=c,y=this.getColumn(g);if(p){const b={...this._branches[v]};_m(b,y,w);const C=this.updateTreeRow(b);b.$parent===0&&(m=C)}else{const b=m.findIndex(k=>k.id===v),C={...m[b]};_m(C,y,w),m[b]=C}this.setState({data:m})}),r.on("update-row",c=>{let{data:u}=this.getState();const{id:m,row:p}=c,v=u.findIndex(g=>g.id===m);u=[...u],u[v]={...u[v],...p},this.setState({data:u})}),r.on("select-row",({id:c,toggle:u,range:m,mode:p,show:v,column:g})=>{const w=this.getState(),{focusCell:y}=w;let{selectedRows:b}=w;if(b.length||(m=u=!1),m){const{data:C}=this.getState();let k=C.findIndex(T=>T.id===b[b.length-1]),A=C.findIndex(T=>T.id===c);k>A&&([k,A]=[A,k]),C.slice(k,A+1).forEach(T=>{this.isSelected(T.id)||b.push(T.id)})}else if(u&&this.isSelected(c)){if(p===!0)return;b=b.filter(C=>C!==c)}else if(u){if(p===!1)return;b.push(c)}else b=[c];this.setState({selectedRows:[...b]}),y?.row!==c&&this.in.exec("focus-cell",{eventSource:"select-row"}),v&&this.in.exec("scroll",{row:c,column:g})}),this.in.on("focus-cell",c=>{const{row:u,column:m,eventSource:p}=c,{_columns:v,split:g}=this.getState();u&&m?(this.setState({focusCell:{row:u,column:m}}),p!=="click"&&((!g.left||v.findIndex(w=>w.id===c.column)>=g.left)&&(!g.right||v.findIndex(w=>w.id===c.column)<v.length-g.right)?this.in.exec("scroll",{row:u,column:m}):this.in.exec("scroll",{row:u}))):this.setState({focusCell:null})}),r.on("resize-column",c=>{const{id:u,auto:m,maxRows:p,inProgress:v}=c;if(v===!1)return;let g=c.width||0;const w=[...this.getState().columns],y=this.getColumn(u);if(m){if(m==="data"||m===!0){const{flatData:b,_skin:C}=this.getState();let k=b.length;p&&(k=Math.min(p,k));const A=b.slice(0,k);g=XC(y,A,C)}if(m==="header"||m===!0){const{_skin:b}=this.getState();g=Math.max(ZC(y,b),g)}}y.width=Math.max(17,g),delete y.flexgrow,this.setState({columns:w})}),r.on("hide-column",c=>{const{id:u,mode:m}=c,p=[...this.getState().columns],v=this.getColumn(u),g=p.reduce((w,y)=>w+(y.hidden?0:1),0);!m||g>1?(v.hidden=!v.hidden,this.setState({columns:p})):c.skipUndo=!0}),r.on("sort-rows",c=>{const{key:u,add:m,sort:p}=c,v=this.getState(),{columns:g,data:w,tree:y}=v;if(p){const R=[...w];R.sort(p),this.setState({data:R});return}const{order:b="asc"}=c;let C=v.sortMarks;const k=Object.keys(C),A=k.length;!m||!A||A===1&&C[u]?C={[u]:{order:b}}:(A===1&&(C[k[0]]={...C[k[0]],index:0}),C={...C,[u]:{order:b,index:typeof m=="number"?m:C[u]?.index??A}});const T=Object.keys(C).sort((R,E)=>C[R].index-C[E].index).map(R=>({key:R,order:C[R].order}));this.setState({sortMarks:C});const j=WC(T,g);if(j){const R=[...w];y?this.sortTree(R,j):R.sort(j),this.setState({data:R})}}),r.on("filter-rows",c=>{const{value:u,key:m,filter:p}=c;if(!Object.keys(c).length){this.setState({filterValues:{},_filterIds:null});return}const v=this.getState(),{data:g,tree:w,_columns:y}=v;let b=v.filterValues;const C={};m&&(b={...b,[m]:u},C.filterValues=b);const k=p??ej(b,y);let A=[];w?A=this.filterTree(g,k,A):g.forEach(T=>{k(T)&&A.push(T.id)}),C._filterIds=A,this.setState(C)}),r.on("collapse-column",c=>{const{id:u,row:m,mode:p}=c,v=[...this.getState().columns],g=this.getColumn(u).header,w=Array.isArray(g)?g[m]:g;typeof w=="object"&&(w.collapsed=p??!w.collapsed,this.setState({columns:v}))}),r.on("move-item",c=>{const{id:u,inProgress:m}=c;let{target:p,mode:v="after"}=c;const{data:g,flatData:w,tree:y}=this.getState(),b=w.findIndex(A=>A.id===u);let C;if(v==="up"||v==="down"){if(v==="up"){if(b===0)return;C=b-1,v="before"}else if(v==="down"){if(b===w.length-1)return;C=b+1,v="after"}p=w[C]&&w[C].id}else C=w.findIndex(A=>A.id===p);if(b===-1||C===-1||m===!1)return;let k;y||(k=this.moveItem(u,p,g,v)),this.setState({data:y?this.normalizeTreeRows(k):k})}),r.on("copy-row",c=>{const{id:u,target:m,mode:p="after"}=c,v=this.getState(),{flatData:g,_filterIds:w}=v;let{data:y}=v;const b=this.getRow(u);if(!b)return;const C={...b,id:ld()};c.id=C.id;const k=g.findIndex(T=>T.id===m);if(k===-1)return;y.splice(k+(p==="after"?1:0),0,C),y=[...y];const A={data:y};w&&(A._filterIds=[...w,C.id]),this.setState(A)}),r.on("open-row",c=>{const{id:u,nested:m}=c;this.toggleBranch(u,!0,m)}),r.on("close-row",c=>{const{id:u,nested:m}=c;this.toggleBranch(u,!1,m)}),r.on("export-data",c=>new Promise((u,m)=>{const p=c.format||"csv",v=`${c.fileName||"data"}.${p}`;if(p==="csv"){const g=DC(this.getState(),c.csv||{});c.download!==!1?EC(new Blob(["\uFEFF"+g],{type:"text/csv"}),v):c.result=g,u(!0)}else m()})),r.on("hotkey",({key:c,event:u,isInput:m})=>{switch(c){case"arrowup":{const{flatData:p,focusCell:v,select:g}=this.getState();if(u.preventDefault(),m)return;const w=v?v.column:this._getFirstVisibleColumn()?.id,y=v?this.getPrevRow(v.row)?.id:p[p.length-1]?.id;w&&y&&(this.in.exec("focus-cell",{row:y,column:w,eventSource:"key"}),g&&this.in.exec("select-row",{id:y}));break}case"arrowdown":{const{flatData:p,focusCell:v,select:g}=this.getState();if(u.preventDefault(),m)return;const w=v?v.column:this._getFirstVisibleColumn()?.id,y=v?this.getNextRow(v.row)?.id:p[0]?.id;w&&y&&(this.in.exec("focus-cell",{row:y,column:w,eventSource:"key"}),g&&this.in.exec("select-row",{id:y}));break}case"arrowright":{const{focusCell:p}=this.getState();if(m)return;if(u.preventDefault(),p){const v=this.getNextColumn(p.column,!0)?.id;v&&this.in.exec("focus-cell",{row:p.row,column:v,eventSource:"key"})}break}case"arrowleft":{const{focusCell:p}=this.getState();if(m)return;if(u.preventDefault(),p){const v=this.getPrevColumn(p.column,!0)?.id;v&&this.in.exec("focus-cell",{row:p.row,column:v,eventSource:"key"})}break}case"tab":{const{editor:p,focusCell:v,select:g}=this.getState();if(p){u.preventDefault();const w=p.column;let y=p.id,b=this.getNextEditor(this.getRow(y),this.getColumn(w));if(!b){const C=this.getNextRow(y);C&&(y=C.id,b=this.getNextEditor(C))}b&&(this.in.exec("open-editor",{id:y,column:b.id}),this.in.exec("focus-cell",{row:y,column:b.id,eventSource:"key"}),g&&!this.isSelected(y)&&this.in.exec("select-row",{id:y}))}else v&&this.in.exec("focus-cell",{eventSource:"key"});break}case"shift+tab":{const{editor:p,focusCell:v,select:g}=this.getState();if(p){u.preventDefault();const w=p.column;let y=p.id,b=this.getPrevEditor(this.getRow(y),this.getColumn(w));if(!b){const C=this.getPrevRow(y);C&&(y=C.id,b=this.getPrevEditor(C))}b&&(this.in.exec("open-editor",{id:y,column:b.id}),this.in.exec("focus-cell",{row:y,column:b.id,eventSource:"key"}),g&&!this.isSelected(y)&&this.in.exec("select-row",{id:y}))}else v&&this.in.exec("focus-cell",{eventSource:"key"});break}case"escape":{const{editor:p}=this.getState();p&&(this.in.exec("close-editor",{ignore:p.type!="multiselect"}),this.in.exec("focus-cell",{row:p.id,column:p.column,eventSource:"key"}));break}case"f2":{const{editor:p,focusCell:v}=this.getState();!p&&v&&this.in.exec("open-editor",{id:v.row,column:v.column});break}case"enter":{const{focusCell:p,tree:v}=this.getState();if(!m&&v&&p&&this.getColumn(p.column).treetoggle){const g=this.getRow(p.row);if(!g.data)return;this.in.exec(g.open?"close-row":"open-row",{id:p.row,nested:!0})}break}case"home":{const{editor:p,focusCell:v}=this.getState();if(!p&&v){u.preventDefault();const g=this._getFirstVisibleColumn()?.id;this.in.exec("focus-cell",{row:v.row,column:g,eventSource:"key"})}break}case"ctrl+home":{const{editor:p,focusCell:v,flatData:g,select:w}=this.getState();if(!p&&v){u.preventDefault();const y=g[0]?.id,b=this._getFirstVisibleColumn()?.id;y&&b&&(this.in.exec("focus-cell",{row:y,column:b,eventSource:"key"}),w&&!this.isSelected(y)&&this.in.exec("select-row",{id:y}))}break}case"end":{const{editor:p,focusCell:v}=this.getState();if(!p&&v){u.preventDefault();const g=this._getLastVisibleColumn()?.id,w=v.row;this.in.exec("focus-cell",{row:w,column:g,eventSource:"key"})}break}case"ctrl+end":{const{editor:p,focusCell:v,flatData:g,select:w}=this.getState();if(!p&&v){u.preventDefault();const y=g.at(-1).id,b=this._getLastVisibleColumn()?.id;y&&b&&(this.in.exec("focus-cell",{row:y,column:b,eventSource:"key"}),w&&!this.isSelected(y)&&this.in.exec("select-row",{id:y}))}break}case"ctrl+z":{this.in.exec("undo",{});break}case"ctrl+y":{this.in.exec("redo",{});break}}}),r.on("scroll",c=>{const{_columns:u,split:m,_sizes:p,flatData:v,dynamic:g,_rowHeightFromData:w}=this.getState();let y=-1,b=-1,C=0,k=0;if(c.column){y=0;const A=u.findIndex(T=>T.id===c.column);C=u[A].width;for(let T=m.left??0;T<A;T++){const j=u[T];j.hidden||(y+=j.width)}}if(c.row&&!g){const A=v.findIndex(T=>T.id===c.row);A>=0&&(w?(b=v.slice(0,A).reduce((T,j)=>T+(j.rowHeight||p.rowHeight),0),k=v[A].rowHeight):b=p.rowHeight*A)}this.setState({scroll:{top:b,left:y,width:C,height:k||p.rowHeight}})}),r.on("scroll-to",c=>{const u={};c.top!==void 0&&(u.scrollTop=c.top),c.left!==void 0&&(u.scrollLeft=c.left),Object.keys(u).length&&this.setState(u)}),r.on("print",c=>{const u=HC(c);this.setState({_print:u}),this.setStateAsync({_print:null})}),r.on("undo",()=>{this._historyManager?.handleUndo()}),r.on("redo",()=>{this._historyManager?.handleRedo()}),this.initOnce()}getXlsxWorker(a){if(!this._xlsxWorker){const i=window.URL.createObjectURL(new Blob([`importScripts('${a}');`],{type:"text/javascript"}));this._xlsxWorker=new Promise(r=>{const c=new Worker(i);c.addEventListener("message",u=>{u.data.type==="init"&&r(c)})})}return this._xlsxWorker}initOnce(){const a={sortMarks:{},_filterIds:null,data:[],filterValues:{},scroll:null,scrollLeft:0,scrollTop:0,editor:null,focusCell:null,_print:null,history:{undo:0,redo:0},search:null};this._router.init(a)}init(a){a.hasOwnProperty("_skin")&&!a._skin&&(a._skin=QC()),a.columns&&a.columns.forEach(i=>{i.options&&(i.optionsMap=new Map(i.options.map(r=>[r.id,r.label])))}),Fd(this.getState().data,a.data)||(a.tree?a.data=this.normalizeTreeRows(a.data):a.data=this.normalizeRows(a.data),this.setState({_filterIds:null,filterValues:{},sortMarks:{},search:null}),this._historyManager&&this._historyManager.resetHistory()),a.tree&&(a.undo=!1,a.reorder=!1),a.split?.right&&(a.split.right=0),a.undo&&!this._historyManager&&(this._historyManager=new GC(this.in,this.getState.bind(this),this.setState.bind(this))),this._router.init({...a})}setState(a,i){return this._router.setState(a,i)}setStateAsync(a){this._router.setStateAsync(a)}getRow(a){const{tree:i}=this.getState();return i?this._branches[a]:this.getState().data.find(r=>r.id===a)}getRowIndex(a,i){return i||(i=this.getState().flatData),i.findIndex(r=>r.id===a)}getNextRow(a){const i=this.getState().flatData,r=this.getRowIndex(a,i);return i[r+1]}getPrevRow(a){const i=this.getState().flatData,r=this.getRowIndex(a,i);return i[r-1]}getColumn(a){return this.getState().columns.find(i=>i.id===a)}getNextColumn(a,i){const r=this.getState()._columns,c=r.findIndex(u=>u.id===a);return i?this._getFirstVisibleColumn(c+1):r[c+1]}getPrevColumn(a,i){const r=this.getState()._columns,c=r.findIndex(u=>u.id===a);return i?this._getLastVisibleColumn(c-1):r[c-1]}_getFirstVisibleColumn(a){const i=this.getState()._columns;let r=a??0;for(;r<i.length&&(i[r]?.hidden||i[r]?.collapsed);)r++;return i[r]}_getLastVisibleColumn(a){const i=this.getState()._columns;let r=a??i.length-1;for(;r<i.length&&(i[r]?.hidden||i[r]?.collapsed);)r--;return i[r]}isCellEditable(a,i){const{editor:r,hidden:c}=i;return!r||c?!1:typeof r=="function"?r(a,i):!0}getNextEditor(a,i){let r=this.getState().columns;if(i){const c=r.findIndex(u=>u.id===i.id);r=r.slice(c+1)}return r.find(c=>this.isCellEditable(a,c))}getPrevEditor(a,i){let r=this.getState().columns;if(i){const c=r.findLastIndex(u=>u.id===i.id);r=r.slice(0,c)}return r.findLast(c=>this.isCellEditable(a,c))}toggleBranch(a,i,r){let c=this._branches[a],{data:u}=this.getState();if(u=[...u],a!==0){c={...c,open:i};const m=this.updateTreeRow(c);c.$parent===0&&(u=m)}r&&c.data?.length&&c.data.forEach(m=>{const p=this.toggleKids(m,i,r);a===0&&(u=p)}),this.setState({data:u})}toggleKids(a,i,r){a={...a,open:i};const c=this.updateTreeRow(a);return r&&a.data?.length&&a.data.forEach(u=>{this.toggleKids(u,i,r)}),c}updateTreeRow(a){const i=a.id;this._branches[i]=a;const r=this._branches[a.$parent],c=r.data.findIndex(u=>u.id===i);return r.data=[...r.data],r.data[c]=a,r.data}isSelected(a){return this.getState().selectedRows.indexOf(a)!==-1}findAndRemove(a,i){for(let r=0;r<a.length;r++){if(a[r].id===i)return a.splice(r,1)[0];if(a[r].data){const c=[...a[r].data],u=this.findAndRemove(c,i);if(u)return a[r]={...a[r],data:c},u}}return null}insertItem(a,i,r,c){for(let u=0;u<a.length;u++){if(a[u].id===i){const m=a[u],p=c==="before"?u:u+1;if(m.data){if(c==="before"){const v=u>0?a[u-1]:null;return v?.data&&v.open?a[u-1]={...v,data:[...v.data,r]}:a.splice(p,0,r),!0}else if(m.open)return a[u]={...m,data:[r,...m.data]},!0}return a.splice(p,0,r),!0}if(a[u].data&&(a[u]={...a[u],data:[...a[u].data]},this.insertItem(a[u].data,i,r,c)))return!0}return!1}moveItem(a,i,r,c){const u=[...r],m=this.findAndRemove(u,a);return this.insertItem(u,i,m,c),u}copyColumns(a){const i=[];for(let r=0;r<a.length;r++){const c={...a[r]};this.copyHeaderFooter(c,"header"),this.copyHeaderFooter(c,"footer"),i[r]=c}return i}copyHeaderFooter(a,i){let r=a[i];r=Array.isArray(r)?[...r]:[r],r.forEach((c,u)=>{r[u]=typeof c=="string"?{text:c}:{...c}}),a[i]=r}setCollapsibleColumns(a,i,r){let c=a.header;for(let u=0;u<c.length;u++){const m=c[u];if(m.collapsible&&m.collapsed){if(m.collapsible!=="first"){a.collapsed=!0,a.width=36,m.vertical=!0;const v=c.length-u;c=c.slice(0,u+1),c[u].rowspan=v}const p=m.colspan;if(p){const v=c[u+1];let g=1;v&&v.colspan&&!v.collapsed&&(g=v.colspan);for(let w=g;w<p;w++){const y=r[i+w];y&&(y.hidden=!0)}}}}}normalizeColumns(a,i,r,c,u){const m=a[i];m.width||(m.width=m.flexgrow?17:u.columnWidth),m._colindex=i+1;const p=m[r],v=u[`${r}RowHeights`];for(let g=0;g<c;g++){const w=p[g];w.id=m.id,g===p.length-1&&(w.rowspan=w.rowspan?Math.min(w.rowspan,c-g):c-g);for(let y=1;y<w.rowspan;y++){p.splice(g+y,0,{_hidden:!0});for(let b=1;b<w.colspan;b++)a[i+b][r].splice(g+y,0,{})}if(w.rowspan){const y=(w.rowspan===c?v:v.slice(g,w.rowspan+g)).reduce((b,C)=>b+C,0);w.height=y,g+w.rowspan!=c&&w.height--}if(w.colspan){let y=m.width,b=m.flexgrow||0;const C=w.colspan;for(let k=1;k<C;k++){const A=a[i+k];A&&(A.hidden?w.colspan-=1:A.flexgrow?b+=A.flexgrow:y+=A.width||u.columnWidth),b?w.flexgrow=b:w.width=y}}else w.width=m.width,w.flexgrow=m.flexgrow;r==="header"&&w.filter&&typeof w.filter=="string"&&(w.filter={type:w.filter})}p.length>c&&(p.length=c),m[r]=p}normalizeRows(a){for(let i=0;i<a.length;i++)a[i].id||(a[i].id=ld());return a}normalizeTreeRows(a,i,r){return!i&&!r&&(this._branches={0:{data:a}}),a.forEach(c=>{c.id||(c.id=ld()),c.$level=i||0,c.$parent=r||0,this._branches[c.id]=c,c.data&&(c.data.length?(c.$count=c.data.length,this.normalizeTreeRows(c.data,c.$level+1,c.id)):(delete c.data,delete c.$count,delete c.open))}),a}sortTree(a,i){a.sort(i),a.forEach(r=>{r.data&&this.sortTree(r.data,i)})}filterTree(a,i,r){return a.forEach(c=>{i(c)&&r.push(c.id),c.data&&this.filterTree(c.data,i,r)}),r}flattenRows(a,i,r){const c=i;return a.forEach(u=>{(!r||r.includes(u.id))&&c.push(u),u.data?.length&&u.open!==!1&&this.flattenRows(u.data,c,r)}),c}createFilter(a){const{_columns:i}=this.getState(),r=[];for(const c in a){const u=i.find(g=>g.id==c),{config:m,type:p}=u.header.find(g=>g.filter).filter,v=a[c];r.push(g=>{const w=bi(g,u);return m?.handler?m.handler(w,v):nw(p)(w,v)})}return c=>{for(let u=0;u<r.length;u++)if(!r[u](c))return!1;return!0}}searchRows(a,i){a=a.trim().toLowerCase();const r={};if(!a)return r;const{flatData:c,columns:u}=this.getState(),m=i?u.filter(p=>i[p.id]):u;return c.forEach(p=>{const v={};m.forEach(g=>{const w=wi(p,g);String(w).toLowerCase().includes(a)&&(v[g.id]=!0)}),Object.keys(v).length&&(r[p.id]=v)}),r}normalizeSizes(a,i,r,c,u){const m=jx(a,"header",r,i.headerHeight,u),p=jx(a,"footer",c,i.footerHeight,u),v=m.reduce((w,y)=>w+y,0),g=p.reduce((w,y)=>w+y,0);return{...i,headerRowHeights:m,footerRowHeights:p,headerHeight:v,footerHeight:g}}},aj=new Date().valueOf();function ld(){return"temp://"+aj++}function sj(n,a="data-id"){let i=n;for(!i.tagName&&n.target&&(i=n.target);i;){if(i.getAttribute&&i.getAttribute(a))return i;i=i.parentNode}return null}new Date().valueOf();var lj=class{constructor(){this.store=new Map}configure(n,a){this.node=a;for(const i in n)if(n[i]){const r=i.toLowerCase().replace(/[ ]/g,""),c=n[i];this.store.set(r,c)}}},ro=[],ij={subscribe:n=>{rj();const a=new lj;return ro.push(a),n(a),()=>{const i=ro.findIndex(r=>r===a);i>=0&&ro.splice(i,1)}}},kx=!1;function rj(){kx||(kx=!0,document.addEventListener("keydown",n=>{if(ro.length&&(n.ctrlKey||n.altKey||n.metaKey||n.shiftKey||n.key.length>1||n.key===" ")){const a=[];n.ctrlKey&&a.push("ctrl"),n.altKey&&a.push("alt"),n.metaKey&&a.push("meta"),n.shiftKey&&a.push("shift");let i=n.code.replace("Key","").toLocaleLowerCase();n.key===" "&&(i="space"),a.push(i);const r=a.join("+");for(let c=ro.length-1;c>=0;c--){const u=ro[c],m=u.store.get(r)||u.store.get(i);m&&u.node.contains(n.target)&&m(n,{key:r,evKey:i})}}}))}const oj={tab:!0,"shift+tab":!0,arrowup:!0,arrowdown:!0,arrowright:!0,arrowleft:!0,enter:!0,escape:!0,f2:!0,home:!0,end:!0,"ctrl+home":!0,"ctrl+end":!0,"ctrl+z":!0,"ctrl+y":!0};function cj(n,{keys:a,exec:i}){if(!a)return;function r(m){const p=m.target;return p.tagName==="INPUT"||p.tagName==="TEXTAREA"||sj(p,"data-header-id")?.classList.contains("wx-filter")||!!p.closest(".wx-cell.wx-editor")}const c={};for(const m in a){const p=a[m];typeof p<"u"&&(typeof p=="function"?c[m]=p:p&&(c[m]=v=>{const g=r(v);i({key:m,event:v,isInput:g})}))}const u=ij.subscribe(m=>{m.configure(c,n)});return{destroy:()=>{u()}}}function uj(n,a){let i=null;a.scroll.subscribe(r=>{if(!r||r===i)return;i=r;const{left:c,top:u,height:m,width:p}=r,v=a.getHeight(),g=a.getWidth(),w=a.getScrollMargin();if(u>=0){const y=n.scrollTop;u<y?n.scrollTop=u:u+m>y+v&&(n.scrollTop=u-v+m)}if(c>=0){const y=n.scrollLeft;c<y?n.scrollLeft=c:c+p>y+g-w&&(n.scrollLeft=c-g+p+w)}}),a.scrollLeft?.subscribe?.(r=>{requestAnimationFrame(()=>{Math.abs(n.scrollLeft-r)>1&&(n.scrollLeft=r)})}),a.scrollTop?.subscribe?.(r=>{requestAnimationFrame(()=>{Math.abs(n.scrollTop-r)>1&&(n.scrollTop=r)})})}const Na=f.createContext(null);function dj(n,a){const i=new ResizeObserver(r=>{requestAnimationFrame(()=>a(r[0].contentRect))});return i.observe(n.parentNode),{destroy(){i.disconnect()}}}const Ax=5,fj=700;function gd(n){const a=n.getBoundingClientRect(),i=document.body,r=a.top+i.scrollTop-i.clientTop||0,c=a.left+i.scrollLeft-i.clientLeft||0;return{y:Math.round(r),x:Math.round(c),width:n.offsetWidth,height:n.offsetHeight}}function fh(n,a){const i=gd(a);return{x:n.clientX-i.x,y:n.clientY-i.y}}function mj(n,a){const i=a.current;let r=null,c,u,m=!1,p=!1;const v=document.createElement("DIV");v.className="wx-drag-zone",v.setAttribute("tabindex",-1);function g(){clearTimeout(c),c=null}function w(I){const _=co(I);_&&(r={container:v,sourceNode:I.target,from:Od(_),pos:fh(I,n)},u=r.pos,y(I))}function y(I){if(!r)return;const _=r.pos=fh(I,n);if(!m){if(!p&&!I?.target?.getAttribute("draggable-data")&&Math.abs(u.x-_.x)<Ax&&Math.abs(u.y-_.y)<Ax)return;if(F(I)===!1)return q()}if(p){const fe=window.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft,G=window.scrollY||document.documentElement.scrollTop||document.body.scrollTop;r.targetNode=document.elementFromPoint(I.pageX-fe,I.pageY-G)}else r.targetNode=I.target;i.move&&i.move(I,r),v.style.left=-(r.offset?r.offset.x:0)+"px",v.style.top=r.pos.y+(r.offset?r.offset.y:0)+"px"}function b(I){v.parentNode&&v.parentNode.removeChild(v),v.innerHTML="",m&&i.end&&i.end(I,r),r=u=null,q()}function C(I){i.getReorder&&!i.getReorder()||I.button===0&&(H(I),window.addEventListener("mousemove",k),window.addEventListener("mouseup",A),w(I))}function k(I){y(I)}function A(I){b(I)}function T(I){if(i.getReorder&&!i.getReorder())return;c=setTimeout(()=>{p=!0,w(I.touches[0])},fj),H(I);function _(){c&&g(),I.target.removeEventListener("touchmove",j),I.target.removeEventListener("touchend",_),b(I)}I.target.addEventListener("touchmove",j),I.target.addEventListener("touchend",_),n.addEventListener("contextmenu",R)}function j(I){m?(I.preventDefault(),y(I.touches[0])):c&&g()}function R(I){if(m||c)return I.preventDefault(),!1}function E(I){I.preventDefault()}function H(I){if(!i.getDraggableInfo)return;const{hasDraggable:_}=i.getDraggableInfo();(!_||I.target.getAttribute("draggable-data"))&&(document.body.style.userSelect="none",document.body.style.webkitUserSelect="none")}function F(I){if(m=!0,i.start){if(i.start(I,r)===!1)return!1;n.appendChild(v),document.body.style.cursor="move"}}function q(I){m=p=!1,document.body.style.cursor="",document.body.style.userSelect="",document.body.style.webkitUserSelect="",window.removeEventListener("mousemove",k),window.removeEventListener("mouseup",A),I&&(n.removeEventListener("mousedown",C),n.removeEventListener("touchstart",T),n.removeEventListener("dragstart",E))}return n.addEventListener("mousedown",C),n.addEventListener("touchstart",T),n.addEventListener("dragstart",E),{destroy(){q(!0)}}}const hj=.004;function pj(){return{dirX:0,dirY:0,scrollSpeedFactor:1}}function gj(n,a,i,r){const{node:c,left:u,top:m,bottom:p,sense:v,xScroll:g,yScroll:w}=r,y=fh(n,c);i.scrollState||(i.scrollState=pj());let b=0,C=0;y.x<u+v?b=-1:y.x>a.width-v&&(b=1),y.y<m+Math.round(v/2)?C=-1:y.y>a.height-p-Math.round(v/2)&&(C=1),(i.scrollState.dirX!==b||i.scrollState.dirY!==C)&&(aw(i),i.scrollState.dirX=b,i.scrollState.dirY=C),(g&&i.scrollState.dirX!==0||w&&i.scrollState.dirY!==0)&&vj(i,r,{x:i.scrollState.dirX,y:i.scrollState.dirY})}function vj(n,a,i){n.autoScrollTimer||(n.autoScrollTimer=setTimeout(()=>{n.activeAutoScroll=setInterval(xj,15,n,a,i)},250))}function aw(n){n.scrollSpeedFactor=1,n.autoScrollTimer&&(n.autoScrollTimer=clearTimeout(n.autoScrollTimer),n.activeAutoScroll=clearInterval(n.activeAutoScroll))}function xj(n,a,i){const{x:r,y:c}=i;n.scrollSpeedFactor+=hj,r!==0&&wj(n,a,r),c!==0&&yj(n,a,c)}function yj(n,a,i){const r=a.node.scrollTop;sw(r+Math.round(a.sense/3)*n.scrollSpeedFactor*i,"scrollTop",a)}function wj(n,a,i){const r=a.node.scrollLeft;sw(r+Math.round(a.sense/3)*n.scrollSpeedFactor*i,"scrollLeft",a)}function sw(n,a,i){i.node[a]=n}function Hd(n,a,i,r,c,u){const m={};return n&&(m.width=`${n}px`,m.minWidth=`${n}px`),a&&(m.flexGrow=a),u&&(m.height=`${u}px`),i&&(m.position="sticky",i.left&&(m.left=`${r}px`),i.right&&(m.right=`${c}px`)),m}function lw(n,a,i){let r="";if(n.fixed)for(const c in n.fixed){let u=n.fixed[c]===-1;!u&&n.fixed.leftSize&&a.colspan&&(u=a.colspan+n._colindex-1===n.fixed.leftSize),r+=u?"wx-shadow ":"wx-fixed "}return r+=a.rowspan>1?"wx-rowspan ":"",r+=a.colspan>1?"wx-colspan ":"",r+=a.vertical?"wx-vertical ":"",r+=i?i(n)+" ":"",r}function bj(n){const{row:a,column:i,cellStyle:r=null,columnStyle:c=null,children:u,focusable:m}=n,p=f.useContext(Na),v=Ze(p,"focusCell"),g=Ze(p,"search"),w=Ze(p,"reorder"),y=f.useMemo(()=>g?.rows[a.id]&&g.rows[a.id][i.id],[g,a.id,i.id]),b=f.useMemo(()=>Hd(i.width,i.flexgrow,i.fixed,i.left,i.right),[i.width,i.flexgrow,i.fixed,i.left,i.right]);function C(F,q){let I="wx-cell";return I+=i.fixed?" "+(i.fixed===-1?"wx-shadow":"wx-fixed"):"",I+=F?" "+F(i):"",I+=q?" "+q(a,i):"",I+=i.treetoggle?" wx-tree-cell":"",I}const k=f.useMemo(()=>C(c,r),[c,r,i,a]),A=f.useMemo(()=>typeof i.draggable=="function"?i.draggable(a,i)!==!1:i.draggable,[i,a]),T=f.useRef(null);f.useEffect(()=>{T.current&&m&&v?.row===a.id&&v?.column===i.id&&T.current.focus()},[v,m,a.id,i.id]);const j=f.useCallback(()=>{m&&!v&&p.exec("focus-cell",{row:a.id,column:i.id,eventSource:"focus"})},[p,m,v,a.id,i.id]);function R(F){const q=new RegExp(`(${g.value.trim()})`,"gi");return String(F).split(q).map(I=>({text:I,highlight:q.test(I)}))}const E=f.useMemo(()=>{const F=i.fixed&&i.fixed.left===-1||i.fixed.right===-1,q=i.fixed&&i.fixed.right;return[k,F?"wx-shadow":"",q?"wx-fixed-right":""].filter(Boolean).join(" ")},[k,i]),H=i.cell;return l.jsxs("div",{className:"wx-TSCaXsGV "+E,ref:T,onFocus:j,style:b,"data-row-id":Cn(a.id),"data-col-id":Cn(i.id),tabIndex:m?"0":"-1",role:"gridcell","aria-colindex":i._colindex,"aria-readonly":i.editor?void 0:!0,children:[w&&i.draggable?A?l.jsx("i",{"draggable-data":"true",className:"wx-TSCaXsGV wx-draggable wxi-drag"}):l.jsx("i",{className:"wx-TSCaXsGV wx-draggable-stub"}):null,i.treetoggle?l.jsxs(l.Fragment,{children:[l.jsx("span",{style:{marginLeft:`${a.$level*28}px`}}),a.$count?l.jsx("i",{"data-action":"toggle-row",className:`wx-TSCaXsGV wx-table-tree-toggle wxi-menu-${a.open!==!1?"down":"right"}`}):null]}):null,H?l.jsx(H,{api:p,row:a,column:i,onAction:({action:F,data:q})=>p.exec(F,q)}):u?u():y?l.jsx("span",{children:R(wi(a,i)).map(({highlight:F,text:q},I)=>F?l.jsx("mark",{className:"wx-TSCaXsGV wx-search",children:q},I):l.jsx("span",{children:q},I))}):wi(a,i)]})}function Mx(n,a){let i,r;function c(p){i=p.clientX,n.style.opacity=1,document.body.style.cursor="ew-resize",document.body.style.userSelect="none",window.addEventListener("mousemove",u),window.addEventListener("mouseup",m),a&&a.down&&a.down(n)}function u(p){r=p.clientX-i,a&&a.move&&a.move(r)}function m(){n.style.opacity="",document.body.style.cursor="",document.body.style.userSelect="",a&&a.up&&a.up(r),window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",m)}return n.addEventListener("mousedown",c),{destroy(){n.removeEventListener("mousedown",c)}}}function Sj({filter:n,column:a,action:i,filterValue:r}){function c({value:u}){i({value:u,key:a.id})}return l.jsx(_h,{...n.config??{},value:r,onChange:c})}function Cj({filter:n,column:a,action:i,filterValue:r}){const c=f.useContext(Na),u=Ze(c,"flatData"),m=f.useMemo(()=>n?.config?.options||a?.options||v(),[n,a,u]),p=f.useMemo(()=>n?.config?.template,[n]);function v(){const y=[];return u.forEach(b=>{const C=bi(b,a);y.includes(C)||y.push(C)}),y.map(b=>({id:b,label:b}))}function g({value:y}){i({value:y,key:a.id})}function w(y){y.key!=="Tab"&&y.preventDefault()}return l.jsx("div",{style:{width:"100%"},onKeyDown:w,children:l.jsx(I1,{placeholder:"",clear:!0,...n?.config??{},options:m,value:r,onChange:g,children:y=>p?p(y):y.label})})}function jj({filter:n,column:a,action:i,filterValue:r}){function c({value:u}){i({value:u,key:a.id})}return l.jsx("div",{className:"wx-aaaK5VYO",style:{width:"100%"},children:l.jsx(O1,{placeholder:"",clear:!0,...n?.config??{},value:r,onChange:c})})}function iw(n){const{value:a,options:i=[],placeholder:r="",clear:c=!1,text:u=null,template:m=null,cell:p=null,dropdown:v={},autoOpen:g=!1,onChange:w,onAction:y}=n,[b,C]=qy(a||[]),k=f.useMemo(()=>(b||[]).map(G=>i.find(ue=>ue.id===G)).filter(Boolean),[b,i]),A=f.useRef(null),T=f.useRef(null),[j,R]=f.useState(null),E=()=>{const G=b||[];if(!G.length)return 0;const ue=i.find(Y=>G.includes(Y.id));return ue?i.indexOf(ue):0};function H(G){T.current=G.navigate,R(()=>G.keydown),g&&G.navigate(E())}f.useEffect(()=>{g&&(A.current?.focus(),typeof window<"u"&&window.getSelection&&window.getSelection().removeAllRanges())},[]);function F({id:G}){C(G),w&&w({value:G})}function q(G){G.stopPropagation(),C([]),w&&w({value:[]})}function I(){T.current?.(E())}function _(){T.current?.(null)}function fe(G){j?.(G,E())}return l.jsxs("div",{ref:A,className:"wx-multiselect wx-aadNNOwy",onClick:I,onKeyDown:fe,tabIndex:0,children:[l.jsx("div",{className:"wx-label wx-aadNNOwy",children:m?m(k):p?l.jsx(p,{data:k,onAction:y}):u?l.jsx("span",{className:"wx-text wx-aadNNOwy",children:u}):k.length?l.jsx("span",{className:"wx-text wx-aadNNOwy",children:k.map(G=>G.label).join(", ")}):r?l.jsx("span",{className:"wx-placeholder wx-aadNNOwy",children:r}):" "}),c&&b?.length?l.jsx("i",{className:"wx-icon wxi-close wx-aadNNOwy",onClick:q}):l.jsx("i",{className:"wx-icon wxi-angle-down wx-aadNNOwy"}),l.jsx(Bd,{items:i,onReady:H,onSelect:F,multiselect:!0,checkboxes:!0,value:b||[],onCancel:_,...v,children:({option:G})=>l.jsx("div",{className:"wx-option wx-aadNNOwy",children:m?m(G):p?l.jsx(p,{data:G,onAction:y}):G.label})})]})}function kj({filter:n,column:a,action:i,filterValue:r}){const c=f.useContext(kn.i18n)?.getGroup("grid")||Oc(Ih).getGroup("grid"),u=f.useMemo(()=>({clear:!0,...n?.config||{}}),[n]),m=f.useMemo(()=>u.options||a.options,[u,a]),p=f.useMemo(()=>{const w=r?.length;return w?w<3?r.map(y=>a.optionsMap.get(y)).join(", "):w+" "+c("selected"):""},[r,a,c]);function v({value:w}){i({value:w,key:a.id})}function g(w){w.key!=="Tab"&&w.preventDefault()}return l.jsx("div",{style:{width:"100%"},onKeyDown:g,children:l.jsx(iw,{placeholder:"",...u,options:m,value:r||[],text:p,onChange:v})})}const Aj={text:Sj,richselect:Cj,datepicker:jj,multiselect:kj};function Mj({filter:n,column:a}){const i=f.useContext(Na),r=Ze(i,"filterValues");function c(m){i.exec("filter-rows",m)}const u=f.useMemo(()=>Aj[n.type],[n.type]);return l.jsx(u,{filter:n,column:a,action:c,filterValue:r[a.id]})}function Nj(n){const{cell:a,column:i,row:r,lastRow:c,sortRow:u,columnStyle:m,bodyHeight:p,hasSplit:v}=n,g=f.useContext(Na),w=Ze(g,"sortMarks"),y=f.useMemo(()=>w?w[i.id]:void 0,[w,i.id]),b=f.useRef(),C=f.useCallback(le=>{b.current=a.flexgrow?le.parentNode.clientWidth:a.width},[a.flexgrow,a.width]),k=f.useCallback((le,V)=>{g.exec("resize-column",{id:a.id,width:Math.max(1,(b.current||0)+le),inProgress:V})},[g,a.id]),A=f.useCallback(le=>k(le,!0),[k]),T=f.useCallback(le=>k(le,!1),[k]),j=f.useCallback(le=>{if(!i.sort||a.filter)return;let V=y?.order;V&&(V=V==="asc"?"desc":"asc"),g.exec("sort-rows",{key:a.id,add:le.ctrlKey||le.metaKey,order:V})},[g,a.id,a.filter,i.sort,y?.order]),R=f.useCallback(le=>{le&&le.stopPropagation(),g.exec("collapse-column",{id:a.id,row:r})},[g,a.id,r]),E=f.useCallback(le=>{le.key==="Enter"&&R()},[R]),H=f.useCallback(le=>{le.key==="Enter"&&!a.filter&&j(le)},[j,a.filter]),F=f.useMemo(()=>a.collapsed&&i.collapsed,[a.collapsed,i.collapsed]),q=f.useMemo(()=>F&&!v&&a.collapsible!=="header",[F,v,a.collapsible]),I=f.useMemo(()=>q?{top:-p/2,position:"absolute"}:{},[q,p]),_=f.useMemo(()=>Hd(a.width,a.flexgrow,i.fixed,i.left,a.right??i.right,a.height+(F&&q?p:0)),[a.width,a.flexgrow,i.fixed,i.left,a.right,i.right,a.height,F,q,p]),fe=f.useMemo(()=>lw(i,a,m),[i,a,m]),G=f.useCallback(()=>Object.fromEntries(Object.entries(a).filter(([le])=>le!=="cell")),[a]),ue=`wx-cell ${fe} ${a.css||""} wx-collapsed`,Y=["wx-cell",fe,a.css||"",a.filter?"wx-filter":"",i.fixed&&i.fixed.right?"wx-fixed-right":""].filter(Boolean).join(" "),ae=f.useRef(null);return f.useEffect(()=>{const le=ae.current;if(!le)return;const V=Mx(le,{down:C,move:A,up:T});return()=>{typeof V=="function"&&V()}},[C,A,T,Mx]),F?l.jsx("div",{className:"wx-RsQD74qC "+ue,style:_,role:"button","aria-label":`Expand column ${a.text||""}`,"aria-expanded":!a.collapsed,tabIndex:0,onKeyDown:E,onClick:R,"data-header-id":Cn(i.id),children:l.jsx("div",{className:"wx-RsQD74qC wx-text",style:I,children:a.text||""})}):l.jsxs("div",{className:"wx-RsQD74qC "+Y,style:_,onClick:j,"data-header-id":Cn(i.id),tabIndex:!a._hidden&&i.sort&&!a.filter?0:void 0,role:"columnheader","aria-colindex":i._colindex,"aria-colspan":a.colspan>1?a.colspan:void 0,"aria-rowspan":a.rowspan>1?a.rowspan:void 0,"aria-sort":!y?.order||a.filter?"none":y?.order==="asc"?"ascending":"descending",onKeyDown:H,children:[a.collapsible?l.jsx("div",{className:"wx-RsQD74qC wx-collapse",role:"button","aria-label":a.collapsed?"Expand column":"Collapse column","aria-expanded":!a.collapsed,tabIndex:0,onKeyDown:E,onClick:R,children:l.jsx("i",{className:`wx-RsQD74qC wxi-angle-${a.collapsed?"down":"right"}`})}):null,a.cell?(()=>{const le=a.cell;return l.jsx(le,{api:g,cell:G(),column:i,row:r,onAction:({action:V,data:z})=>g.exec(V,z)})})():a.filter?l.jsx(Mj,{filter:a.filter,column:i}):l.jsx("div",{className:"wx-RsQD74qC wx-text",children:a.text||""}),i.resize&&c&&!a._hidden?l.jsx("div",{className:"wx-RsQD74qC wx-grip",role:"presentation","aria-label":"Resize column",ref:ae,onClick:le=>le.stopPropagation(),children:l.jsx("div",{})}):null,u?l.jsx("div",{className:"wx-RsQD74qC wx-sort",children:y?l.jsxs(l.Fragment,{children:[typeof y.index<"u"?l.jsx("div",{className:"wx-RsQD74qC wx-order",children:y.index+1}):null,l.jsx("i",{className:`wx-RsQD74qC wxi-arrow-${y.order==="asc"?"up":"down"}`})]}):null}):null]})}function Tj({cell:n,column:a,row:i,columnStyle:r}){const c=f.useContext(Na),u=f.useMemo(()=>Hd(n?.width,n?.flexgrow,a?.fixed,a?.left,n?.right??a?.right,n?.height),[n?.width,n?.flexgrow,a?.fixed,a?.left,n?.right,a?.right,n?.height]),m=f.useMemo(()=>lw(a,n,r),[a,n,r]),p=f.useCallback(()=>Object.fromEntries(Object.entries(n||{}).filter(([g])=>g!=="cell")),[n]),v=`wx-6Sdi3Dfd wx-cell ${m||""} ${n?.css||""}`+(a?.fixed&&a?.fixed.right?" wx-fixed-right":"");return l.jsx("div",{className:v,style:u,children:!a?.collapsed&&!n?.collapsed?n?.cell?Ch.createElement(n.cell,{api:c,cell:p(),column:a,row:i,onAction:({action:g,data:w})=>c.exec(g,w)}):l.jsx("div",{className:"wx-6Sdi3Dfd wx-text",children:n?.text||""}):null})}function Nx({deltaLeft:n,contentWidth:a,columns:i,type:r="header",columnStyle:c,bodyHeight:u}){const m=f.useContext(Na),p=Ze(m,"_sizes"),v=Ze(m,"split"),g=f.useMemo(()=>p?.[`${r}RowHeights`],[p,r]),w=f.useMemo(()=>{let A=[];if(i&&i.length){const T=i[0][r].length;for(let j=0;j<T;j++){let R=0;A.push([]),i.forEach((E,H)=>{const F={...E[r][j]};R||A[j].push(F),F.colspan>1?R=F.colspan-1:R&&R--})}}return A},[i,r]),y=f.useMemo(()=>v?.left||v?.right,[v]);function b(A){return i.find(T=>T.id===A)}function C(A,T){let j=T;return A.rowspan&&(j+=A.rowspan-1),j===w.length-1}function k(A,T,j){if(!j.sort)return!1;for(let R=w.length-1;R>=0;R--){const E=j.header[R];if(!E.filter&&!E._hidden)return T===R}return C(A,T)}return l.jsx("div",{className:`wx-sAsPVaUK wx-${r}`,style:{paddingLeft:`${n}px`,width:`${a}px`},role:"rowgroup",children:w.map((A,T)=>l.jsx("div",{className:r==="header"?"wx-sAsPVaUK wx-h-row":"wx-sAsPVaUK wx-f-row",style:{height:`${g?.[T]}px`,display:"flex"},role:"row",children:A.map(j=>{const R=b(j.id);return r==="header"?l.jsx(Nj,{cell:j,columnStyle:c,column:R,row:T,lastRow:C(j,T),bodyHeight:u,sortRow:k(j,T,R),hasSplit:y},j.id):l.jsx(Tj,{cell:j,columnStyle:c,column:b(j.id),row:T},j.id)})},T))})}function Rj({overlay:n}){const a=f.useContext(Na);function i(c){return typeof c=="function"}const r=n;return l.jsx("div",{className:"wx-1ty666CQ wx-overlay",children:i(n)?l.jsx(r,{onAction:({action:c,data:u})=>a.exec(c,u)}):n})}function Ej(n){const{editor:a,onSave:i,onApply:r}=n,[c,u]=f.useState(a?.value||""),{type:m="text"}=f.useMemo(()=>a?.config||{},[a]),p=f.useRef(null);f.useEffect(()=>{p.current&&p.current.focus()},[]),f.useEffect(()=>{if(!p.current)return;const w=Os(p.current,()=>i(!0));return()=>w.destroy()},[i]);function v(){p.current&&(u(p.current.value),r(p.current.value))}function g({key:w}){w==="Enter"&&i()}return l.jsx("input",{className:"wx-e7Ao5ejY wx-text",onInput:v,onKeyDown:g,ref:p,type:m,value:c})}function Dj({editor:n,onAction:a,onSave:i,onApply:r,onCancel:c}){const[u,m]=f.useState(n?.value),[p,v]=f.useState(n?.renderedValue),[g,w]=f.useState(n?.options||[]),y=f.useMemo(()=>n?.config?.template,[n]),b=f.useMemo(()=>n?.config?.cell,[n]),C=f.useMemo(()=>n?.config?.dropdown||{},[n]),k=f.useMemo(()=>({trackScroll:!0,...C}),[C]),A=f.useMemo(()=>(g||[]).findIndex(I=>I.id===u),[g,u]),T=f.useRef(null),j=f.useRef(null),R=f.useCallback(I=>{T.current=I.navigate,j.current=I.keydown,T.current(A)},[A,T]),E=f.useCallback(I=>{const _=I?.target?.value??"";v(_);const fe=_?(n?.options||[]).filter(G=>(G.label||"").toLowerCase().includes(_.toLowerCase())):n?.options||[];w(fe),fe.length?T.current(-1/0):T.current(null)},[n]),H=f.useRef(null);f.useEffect(()=>{H.current&&H.current.focus()},[]);const F=f.useRef(i);f.useEffect(()=>{F.current=i},[i]),f.useEffect(()=>{if(!H.current)return;const I=Os(H.current,()=>F.current(!0));return()=>I.destroy()},[]),f.useEffect(()=>{m(n?.value),v(n?.renderedValue),w(n?.options||[])},[n]);const q=f.useCallback(({id:I})=>{r(I),i()},[r,i]);return l.jsxs(l.Fragment,{children:[l.jsx("input",{className:"wx-0UYfSd1x wx-input",ref:H,value:p??"",onChange:E,onKeyDown:I=>j.current?j.current(I,A):void 0}),l.jsx(Bd,{items:g,onReady:R,onSelect:q,...k,onCancel:c,children:({option:I})=>y?y(I):b?l.jsx(b,{data:I,onAction:a}):I.label})]})}function Lj({editor:n,onAction:a,onSave:i,onApply:r,onCancel:c}){const[u]=f.useState(()=>n.value||new Date),{template:m,cell:p,dropdown:v={}}=n?.config||{},g=f.useMemo(()=>({trackScroll:!0,width:"auto",...v}),[v]);function w({value:k}){r(k),i()}const y=f.useRef(null),[b,C]=f.useState(null);return f.useEffect(()=>{y.current&&y.current.focus(),typeof window<"u"&&window.getSelection&&window.getSelection().removeAllRanges()},[]),f.useEffect(()=>{if(!b)return;const k=Os(b,()=>i(!0));return()=>k.destroy()},[b,i]),l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"wx-lNWNYUb6 wx-value",ref:y,tabIndex:0,onClick:c,onKeyDown:k=>k.preventDefault(),children:m?m(u):p?l.jsx(p,{data:n.value,onAction:a}):l.jsx("span",{className:"wx-lNWNYUb6 wx-text",children:n.renderedValue})}),l.jsx(Lh,{...g,onCancel:c,children:l.jsx("div",{ref:C,className:"wx-lNWNYUb6",children:l.jsx(Fy,{value:u,onChange:w,buttons:n.config?.buttons})})})]})}function _j(n){const{editor:a}=n,i=n.onAction??n.onaction,r=n.onSave??n.onsave,c=n.onApply??n.onapply,u=n.onCancel??n.oncancel,m=a.config||{},{dropdown:p={}}=m,v=f.useMemo(()=>({trackScroll:!0,...p}),[p]),[g]=f.useState(a.options.find(E=>E.id===a.value)),[w]=f.useState(a.value),[y]=f.useState(a.options),b=f.useMemo(()=>y.findIndex(E=>E.id===w),[y,w]);function C({id:E}){c(E),r()}let k;const[A,T]=f.useState();function j(E){k=E.navigate,T(()=>E.keydown),k(b)}const R=f.useRef(null);return f.useEffect(()=>{R.current&&R.current.focus(),typeof window<"u"&&window.getSelection&&window.getSelection().removeAllRanges()},[]),f.useEffect(()=>{if(!R.current)return;const E=Os(R.current,()=>r(!0));return()=>E.destroy()},[r]),l.jsxs(l.Fragment,{children:[l.jsx("div",{ref:R,className:"wx-ywGRk611 wx-value",tabIndex:0,onClick:u,onKeyDown:E=>{A(E,b),E.preventDefault()},children:m.template?m.template(g):m.cell?(()=>{const E=m.cell;return l.jsx(E,{data:g,onAction:i})})():l.jsx("span",{className:"wx-ywGRk611 wx-text",children:a.renderedValue})}),l.jsx(Bd,{items:y,onReady:j,onSelect:C,...v,onCancel:u,children:({option:E})=>m.template?m.template(E):m.cell?(()=>{const H=m.cell;return l.jsx(H,{data:E,onAction:i})})():E.label})]})}function zj(n){const{editor:a,onAction:i,onSave:r,onApply:c}=n,u=a?.config||{},m=a?.options??[],p=a?.value||[],v=a?.renderedValue,g=f.useMemo(()=>({trackScroll:!0,...u.dropdown||{}}),[u]);function w({value:b}){c(b)}const y=f.useRef(null);return f.useEffect(()=>{if(!y.current)return;const b=Os(y.current,()=>r(!0));return()=>b.destroy()},[r]),l.jsx("div",{ref:y,className:"wx-value wx-aacZ4gNU",onClick:()=>r(!0),children:l.jsx(iw,{value:p,options:m,text:v,template:u.template,cell:u.cell,clear:u.clear,dropdown:g,autoOpen:!0,onChange:w,onAction:i})})}const Oj={text:Ej,combo:Dj,datepicker:Lj,richselect:_j,multiselect:zj};function Ij({column:n,row:a}){const i=f.useContext(Na),r=Ze(i,"editor"),c=f.useCallback((k,A)=>{i.exec("close-editor",{ignore:k}),A&&i.exec("focus-cell",{...A,eventSource:"click"})},[i]),u=f.useCallback(k=>{const A=k?null:{row:r?.id,column:r?.column};c(!1,A)},[r,c]),m=f.useCallback(()=>{c(!0,{row:r?.id,column:r?.column})},[r,c]),p=f.useCallback(k=>{i.exec("editor",{value:k})},[i]),v=f.useCallback(k=>{k.key==="Enter"&&r&&(n.editor.type==="multiselect"?p(r.value):m())},[r,n.editor,m,p]),g=f.useMemo(()=>Hd(n.width,n.flexgrow,n.fixed,n.left,n.right),[n.width,n.flexgrow,n.fixed,n.left,n.right]),w=f.useMemo(()=>{let k=n.editor;if(typeof k=="function"&&(k=k(a,n)),!k)return null;let A=typeof k=="string"?k:k.type;return Oj[A]},[n,a]),y=f.useRef(null);f.useEffect(()=>{y.current&&typeof g=="string"&&y.current.setAttribute("style",g)},[g]);const b=typeof a.$parent<"u"?"gridcell":"cell",C=typeof a.$parent<"u"?!n.editor:void 0;return l.jsx("div",{className:"wx-8l724t2g wx-cell wx-editor",ref:y,style:typeof g=="object"&&g!==null?g:void 0,role:b,"aria-readonly":C,tabIndex:-1,onClick:k=>k.stopPropagation(),onDoubleClick:k=>k.stopPropagation(),onKeyDown:v,children:w?l.jsx(w,{editor:r,onSave:u,onApply:p,onCancel:m,onAction:({action:k,data:A})=>i.exec(k,A)}):null})}function Tx(n){const{columns:a,type:i,columnStyle:r}=n,c=f.useContext(Na),{filterValues:u,_columns:m,_sizes:p}=c.getState();function v(g){return r?" "+r(g):""}return l.jsx(l.Fragment,{children:a.map((g,w)=>l.jsx("tr",{children:g.map(y=>{const b=m.find(A=>A.id===y.id),C=`wx-print-cell-${i}${v(b)}${y.filter?" wx-print-cell-filter":""}${y.vertical?" wx-vertical":""}`,k=y.cell;return l.jsx("th",{style:Gy(ew(y,p.columnWidth)),className:"wx-Gy81xq2u "+C,rowSpan:y.rowspan,colSpan:y.colspan,children:k?l.jsx(k,{api:c,cell:Object.fromEntries(Object.entries(y).filter(([A])=>A!=="cell")),column:b,row:w}):y.filter?l.jsx("div",{className:"wx-Gy81xq2u wx-print-filter",children:$C(u,m,y)}):l.jsx("div",{className:"wx-Gy81xq2u wx-text",children:y.text??""})},y.id)})},w))})}function Bj(n){const{columns:a,rowStyle:i,columnStyle:r,cellStyle:c,header:u,footer:m,reorder:p}=n,v=f.useContext(Na),{flatData:g,_sizes:w}=v.getState(),y=u&&Sx(a,"header",w.headerRowHeights),b=m&&Sx(a,"footer",w.footerRowHeights);function C(A,T){let j="";return j+=r?" "+r(T):"",j+=c?" "+c(A,T):"",j}function k(A,T){return typeof T.draggable=="function"?T.draggable(A,T)!==!1:T.draggable}return l.jsxs("table",{className:`wx-8NTMLH0z wx-print-grid ${a.some(A=>A.flexgrow)?"wx-flex-columns":""}`,children:[u?l.jsx("thead",{children:l.jsx(Tx,{columns:y,type:"header",columnStyle:r})}):null,l.jsx("tbody",{children:g.map((A,T)=>l.jsx("tr",{className:"wx-8NTMLH0z wx-row"+(i?" "+i(A):""),style:{height:`${A.rowHeight||w.rowHeight}px`},children:a.map(j=>j.collapsed?null:l.jsxs("td",{className:`wx-8NTMLH0z wx-print-cell wx-cell ${C(A,j)}`,style:Gy(ew(j,w.columnWidth)),children:[p&&j.draggable?l.jsx("span",{className:"wx-8NTMLH0z wx-print-draggable",children:k(A,j)?l.jsx("i",{className:"wx-8NTMLH0z wxi-drag"}):null}):null,j.treetoggle?l.jsxs(l.Fragment,{children:[l.jsx("span",{style:{marginLeft:A.$level*28+"px"}}),A.$count?l.jsx("i",{className:`wx-8NTMLH0z wx-print-grid-tree-toggle wxi-menu-${A.open!==!1?"down":"right"}`}):null]}):null,j.cell?(()=>{const R=j.cell;return l.jsx(R,{api:v,row:A,column:j})})():l.jsx("span",{children:wi(A,j)})]},j.id))},T))}),m?l.jsx("tfoot",{children:l.jsx(Tx,{columns:b,type:"footer",columnStyle:r})}):null]})}function Fj(n){const{config:a,...i}=n,r=f.useContext(Na),{_skin:c,_columns:u}=r.getState(),m=f.useMemo(()=>IC(u,a),[]),p=f.useRef(null);return f.useEffect(()=>{const v=document.body;v.classList.add("wx-print");const g=p.current;if(!g)return;const w=g.cloneNode(!0);v.appendChild(w);const y=`@media print { @page { size: ${a.paper} ${a.mode}; }`,b=document.createElement("style");b.setAttribute("type","text/css"),b.setAttribute("media","print"),document.getElementsByTagName("head")[0].appendChild(b),b.appendChild(document.createTextNode(y)),window.print(),b.remove(),v.classList.remove("wx-print"),w.remove()},[]),l.jsx("div",{className:`wx-4zwCKA7C wx-${c}-theme wx-print-container`,ref:p,children:m.map((v,g)=>l.jsx("div",{className:"wx-4zwCKA7C wx-print-grid-wrapper",children:l.jsx(Bj,{columns:v,...i})},g))})}function Hj(n){const{header:a,footer:i,overlay:r,multiselect:c,onreorder:u,rowStyle:m,columnStyle:p,cellStyle:v,autoRowHeight:g,resize:w,clientWidth:y,clientHeight:b,responsiveLevel:C,hotkeys:k}=n,A=f.useContext(Na),T=Ze(A,"dynamic"),j=Ze(A,"_columns"),R=Ze(A,"flatData"),E=Ze(A,"split"),H=Ze(A,"_sizes"),[F,q]=Wa(A,"selectedRows"),I=Ze(A,"select"),_=Ze(A,"editor"),fe=Ze(A,"scrollLeft"),G=Ze(A,"scrollTop"),ue=Ze(A,"tree"),Y=Ze(A,"focusCell"),ae=Ze(A,"_print"),le=Ze(A,"undo"),V=Ze(A,"reorder"),z=Ze(A,"_rowHeightFromData"),[K,Q]=f.useState(0);f.useEffect(()=>{Q(vs())},[]);const[P,ie]=f.useState(0),Se=f.useMemo(()=>(j||[]).some(X=>!X.hidden&&X.flexgrow),[j]),D=f.useMemo(()=>H?.rowHeight||0,[H]),Z=f.useRef(null),[ye,be]=f.useState(null),[de,Ne]=f.useState(null),Ie=f.useMemo(()=>{let X=[],je=0;return E&&E.left&&(X=(j||[]).slice(0,E.left).filter(Le=>!Le.hidden).map(Le=>({...Le})),X.forEach(Le=>{Le.fixed={left:1,leftSize:E.left},Le.left=je,je+=Le.width}),X.length&&(X[X.length-1].fixed.left=-1)),{columns:X,width:je}},[E,j]),re=f.useMemo(()=>{let X=[],je=0;if(E&&E.right){X=(j||[]).slice(E.right*-1).filter(Le=>!Le.hidden).map(Le=>({...Le}));for(let Le=X.length-1;Le>=0;Le--){const We=X[Le];We.fixed={right:1},We.right=je,je+=We.width}X.length&&(X[0].fixed={right:-1})}return{columns:X,width:je}},[E,j]),Ke=f.useMemo(()=>{const X=(j||[]).slice(E?.left||0,(j||[]).length-(E?.right??0)).filter(je=>!je.hidden);return X.forEach(je=>{je.fixed=0}),X},[j,E]),De=f.useMemo(()=>(j||[]).reduce((X,je)=>(je.hidden||(X+=je.width),X),0),[j]),Qe=1;function ne(X,je,Le){let We=je,xt=X;if(Ke.length){let gt=Ke.length;for(let Ue=X;Ue>=0;Ue--)Ke[Ue][Le].forEach(dt=>{dt.colspan>1&&Ue>X-dt.colspan&&Ue<gt&&(gt=Ue)});if(gt!==Ke.length&><X){for(let Ue=gt;Ue<X;Ue++)We-=Ke[Ue].width;xt=gt}}return{index:xt,delta:We}}const ge=f.useMemo(()=>{let X,je,Le;const We=fe||0,xt=(fe||0)+(y||0);let gt=0,Ue=0,dt=0,nn=0;Ke.forEach((Yt,bt)=>{We>dt&&(gt=bt,nn=dt),dt=dt+Yt.width,xt>dt&&(Ue=bt+Qe)});const Ht={header:0,footer:0};for(let Yt=Ue;Yt>=gt;Yt--)["header","footer"].forEach(bt=>{Ke[Yt]&&Ke[Yt][bt].forEach(La=>{const Ka=La.colspan;if(Ka&&Ka>1){const Qa=Ka-(Ue-Yt+1);Qa>0&&(Ht[bt]=Math.max(Ht[bt],Qa))}})});const Rn=ne(gt,nn,"header"),Mt=ne(gt,nn,"footer"),$t=Rn.delta,Et=Rn.index,ws=Mt.delta,vn=Mt.index;return Se&&De>(y||0)?X=je=Le=[...Ie.columns,...Ke,...re.columns]:(X=[...Ie.columns,...Ke.slice(gt,Ue+1),...re.columns],je=[...Ie.columns,...Ke.slice(Et,Ue+Ht.header+1),...re.columns],Le=[...Ie.columns,...Ke.slice(vn,Ue+Ht.footer+1),...re.columns]),{data:X||[],header:je||[],footer:Le||[],d:nn,df:ws,dh:$t}},[Ke,Ie,re,fe,y,Se,De]),Re=f.useMemo(()=>a&&H?.headerHeight||0,[a,H]),te=f.useMemo(()=>i&&H?.footerHeight||0,[i,H]),oe=f.useMemo(()=>y&&b?De>=y:!1,[y,b,De]),[Ae,Ce]=f.useState(!1),st=f.useMemo(()=>(b||0)-Re-te-(oe?K:0),[b,Re,te,oe,K]),me=f.useMemo(()=>Math.ceil((st||0)/(D||1))+1,[st,D]),He=f.useRef([]),[_e,Ge]=f.useState(0),[aa,gn]=f.useState(void 0),An=f.useMemo(()=>{let X=0,je=0;const Le=2,We=G||0;if(g){let Ue=We;for(;Ue>0;)Ue-=He.current[X]||D,X++;je=We-Ue;for(let dt=Math.max(0,X-Le-1);dt<X;dt++)je-=He.current[X-dt]||D;X=Math.max(0,X-Le)}else{if(z){let Ue=0,dt=0;for(let Mt=0;Mt<(R||[]).length;Mt++){const $t=R[Mt].rowHeight||D;if(dt+$t>We){Ue=Mt;break}dt+=$t}X=Math.max(0,Ue-Le);for(let Mt=0;Mt<X;Mt++)je+=R[Mt].rowHeight||D;let nn=0,Ht=0;for(let Mt=Ue+1;Mt<(R||[]).length;Mt++){const $t=R[Mt].rowHeight||D;if(nn++,Ht+$t>st)break;Ht+=$t}const Rn=Math.min(T?T.rowCount:(R||[]).length,Ue+nn+Le);return{d:je,start:X,end:Rn}}X=Math.floor(We/(D||1)),X=Math.max(0,X-Le),je=X*(D||0)}const xt=T?T.rowCount:(R||[]).length,gt=Math.min(xt,X+(me||0)+Le);return{d:je,start:X,end:gt}},[g,z,G,D,T,R,me,st]),Kn=f.useMemo(()=>{const X=T?T.rowCount:(R||[]).length;if(g)return _e+An.d+(X-(aa||0))*(D||0);if(!z)return X*(D||0);let je=0;for(let Le=0;Le<X;Le++)je+=R[Le]?.rowHeight||D;return je},[T,R,D,g,z,_e,An.d,aa]),Ci=f.useRef({});Ci.current={clientWidth:y,clientHeight:b,fullHeight:Kn,headerHeight:Re,footerHeight:te,fullWidth:De,SCROLLSIZE:K};const Ta=f.useCallback(()=>{const X=Ci.current;Ce(X.clientWidth&&X.clientHeight?X.fullHeight+X.headerHeight+X.footerHeight>=X.clientHeight-(X.fullWidth>=X.clientWidth?X.SCROLLSIZE:0):!1)},[]);f.useEffect(()=>{const X=requestAnimationFrame(Ta);return()=>window.cancelAnimationFrame(X)},[P,Ta]),f.useEffect(()=>{Ta()},[b,Ta]);const Bn=f.useMemo(()=>Se&&De<=(y||0)?(y||0)-0-(Ae?K:0):De,[Se,De,y,Ae,K,oe]),dr=f.useMemo(()=>Se&&De<=(y||0)?y||0:Bn<(y||0)?De+(Ae?K:0):-1,[Se,De,y,Bn,Ae,K]),gs=f.useRef({});f.useEffect(()=>{if(T&&(gs.current.start!==An.start||gs.current.end!==An.end)){const{start:X,end:je}=An;gs.current={start:X,end:je},A&&A.exec&&A.exec("request-data",{row:{start:X,end:je}})}},[T,An,A]);const mt=f.useMemo(()=>T?R||[]:(R||[]).slice(An.start,An.end),[T,R,An]),Mn=f.useMemo(()=>(F||[]).filter(X=>(mt||[]).some(je=>je.id===X)),[q,mt]),Me=f.useMemo(()=>An.start,[An.start]),ji=f.useRef({top:G,left:fe});ji.current={top:G,left:fe};const Je=f.useCallback(X=>{const je=X.target.scrollTop,Le=X.target.scrollLeft,We=ji.current;(je!==We.top||Le!==We.left)&&A.exec("scroll-to",{top:je,left:Le})},[A]),fr=f.useCallback(X=>{X.shiftKey&&X.preventDefault(),Z.current&&Z.current.focus&&Z.current.focus()},[]),At=f.useCallback(()=>!!(j||[]).find(X=>!!X.draggable),[j]),Ra=f.useRef(null),Gt=f.useRef(null),Qn=f.useRef({dblclick:(X,je)=>{const Le={id:X,column:Lc(je,"data-col-id")};A.exec("open-editor",Le)},click:(X,je)=>{if(je.target.closest("input")||Ra.current)return;const Le=Lc(je,"data-col-id");if(Y?.id!==X&&A.exec("focus-cell",{row:X,column:Le,eventSource:"click"}),I===!1)return;const We=c&&(je.ctrlKey||je.metaKey),xt=c&&je.shiftKey;(We||F.length>1||!F.includes(X))&&A.exec("select-row",{id:X,toggle:We,range:xt})},"toggle-row":X=>{const je=A.getRow(X);A.exec(je.open!==!1?"close-row":"open-row",{id:X})},"ignore-click":()=>!1}),ya=f.useMemo(()=>({top:Re,bottom:te,left:Ie.width,xScroll:oe,yScroll:Ae,sense:g&&de?de.offsetHeight:Math.max(H?.rowHeight||0,40),node:Z.current&&Z.current.firstElementChild}),[Re,te,Ie.width,oe,Ae,g,de,H]);function Ea(X,je){const{container:Le,sourceNode:We,from:xt}=je;if(At()&&!We.getAttribute("draggable-data"))return!1;be(xt),ue&&A.getRow(xt).open&&A.exec("close-row",{id:xt,nested:!0});const gt=co(We),Ue=gt.cloneNode(!0);Ue.classList.remove("wx-selected"),Ue.querySelectorAll("[tabindex]").forEach(Rn=>Rn.setAttribute("tabindex","-1")),Le.appendChild(Ue),Ne(Ue);const dt=(fe||0)-ge.d,nn=Ae?K:0;Le.style.width=Math.min((y||0)-nn,Se&&De<=(y||0)?Bn:Bn-nn)+dt+"px";const Ht=gd(gt);je.offset={x:dt,y:-Math.round(Ht.height/2)},Gt.current||(Gt.current=X.clientY)}function Vt(X,je){const{from:Le}=je,We=je.pos,xt=gd(Z.current);We.x=xt.x;const gt=ya.top;if(We.y<gt)We.y=gt;else{const Ue=xt.height-(oe&&K>0?K:Math.round(ya.sense/2))-ya.bottom;We.y>Ue&&(We.y=Ue)}if(Z.current.contains(je.targetNode)){const Ue=co(je.targetNode),dt=Ue&&Od(Ue);if(dt&&dt!==Le){je.to=dt;const nn=g?de?.offsetHeight:H?.rowHeight;if(de&&((G||0)===0||We.y>gt+nn-1)){const Ht=Ue.getBoundingClientRect(),Rn=gd(de).y,Mt=Ht.y,$t=Rn>Mt?-1:1,Et=$t===1?"after":"before",ws=A.getState().flatData,vn=Math.abs(ws.findIndex(bt=>bt.id===Le)-ws.findIndex(bt=>bt.id===dt)),Yt=vn!==1?Et==="before"?"after":"before":Et;if(vn===1&&($t===-1&&X.clientY>Gt.current||$t===1&&X.clientY<Gt.current))return;Gt.current=X.clientY,A.exec("move-item",{id:Le,target:dt,mode:Yt,inProgress:!0})}}u&&u({event:X,context:je})}gj(X,xt,je,ya)}function Is(X,je){const{from:Le,to:We}=je;A.exec("move-item",{id:Le,target:We,inProgress:!1}),Ra.current=setTimeout(()=>{Ra.current=0},1),be(null),Ne(null),Gt.current=null,aw(je)}function vs(){const X=document.createElement("div");X.style.cssText="position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;min-height:100px;overflow-y:scroll;",document.body.appendChild(X);const je=X.offsetWidth-X.clientWidth;return document.body.removeChild(X),je}const xs=f.useMemo(()=>dr>0?{width:`${dr}px`}:void 0,[dr]),mr=f.useRef(null);function hr(){Promise.resolve().then(()=>{let X=0,je=Me;const Le=mr.current;Le&&(Array.from(Le.children).forEach((We,xt)=>{He.current[Me+xt]=We.offsetHeight,X+=We.offsetHeight,je++}),Ge(X),gn(je))})}f.useEffect(()=>{mt&&g&&hr()},[mt,g,Me]);let[Da,ys]=f.useState();f.useEffect(()=>{if(Y&&(!I||!Mn.length||Mn.includes(Y.row)))ys({...Y});else if(mt.length&&ge.data.length){if(!Da||Mn.length&&!Mn.includes(Da.row)||mt.findIndex(X=>X.id===Da.row)===-1||ge.data.findIndex(X=>X.id===Da.column&&!X.collapsed)===-1){const X=Mn[0]||mt[0].id,je=ge.data.findIndex(Le=>!Le.collapsed);ys(je!==-1?{row:X,column:ge.data[je].id}:null)}}else ys(null)},[Y]);const Nn=f.useRef(null);f.useEffect(()=>{const X=Z.current;if(!X)return;const je=dj(X,w);return()=>{typeof je=="function"&&je()}},[w]);const sa=f.useRef({});Object.assign(sa.current,{start:Ea,move:Vt,end:Is,getReorder:()=>V,getDraggableInfo:()=>({hasDraggable:At()})}),f.useEffect(()=>{const X=Z.current;return X?mj(X,sa).destroy:void 0},[V,Z.current]),f.useEffect(()=>{const X=Z.current;return X?cj(X,{keys:k!==!1&&{...oj,"ctrl+z":le,"ctrl+y":le,...k},exec:je=>A.exec("hotkey",je)}).destroy:void 0},[A,le,k]);const tn=f.useRef({scroll:A.getReactiveState().scroll,scrollLeft:A.getReactiveState().scrollLeft,scrollTop:A.getReactiveState().scrollTop});tn.current.getWidth=()=>(y||0)-(Ae?K:0),tn.current.getHeight=()=>st,tn.current.getScrollMargin=()=>Ie.width+re.width,f.useEffect(()=>{uj(Nn.current,tn.current)},[]);const Bs=f.useRef(null);f.useEffect(()=>{const X=Bs.current;if(!X)return;const je=[];je.push(Os(X,()=>Y&&A.exec("focus-cell",{eventSource:"click"})).destroy),je.push(mC(X,Qn.current)),ie(X.clientHeight);const Le=new ResizeObserver(()=>{ie(X.clientHeight)});return Le.observe(X),je.push(()=>Le.disconnect()),()=>je.forEach(We=>We())},[]);const Tn=`wx-grid ${C?`wx-responsive-${C}`:""}`;return f.useEffect(()=>{Y&&(mt.some(X=>X.id===Y.row)&&ge.data.some(X=>X.id===Y.column&&!X.collapsed)||A.exec("focus-cell",{eventSource:"destroy"}))},[Y,mt,ge.data,A]),l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"wx-4VuBwK2D "+Tn,style:{"--header-height":`${Re}px`,"--footer-height":`${te}px`,"--split-left-width":`${Ie.width}px`,"--split-right-width":`${re.width}px`},children:l.jsx("div",{ref:Z,className:"wx-4VuBwK2D wx-table-box",style:xs,role:ue?"treegrid":"grid","aria-colcount":ge.data.length,"aria-rowcount":mt.length,"aria-multiselectable":ue&&c?!0:void 0,tabIndex:-1,children:l.jsxs("div",{ref:Nn,className:"wx-4VuBwK2D wx-scroll",style:{overflowX:oe?"scroll":"hidden",overflowY:Ae?"scroll":"hidden"},onScroll:Je,children:[a?l.jsx("div",{className:"wx-4VuBwK2D wx-header-wrapper",children:l.jsx(Nx,{contentWidth:Bn,deltaLeft:ge.dh,columns:ge.header,columnStyle:p,bodyHeight:st-+i})}):null,l.jsxs("div",{ref:Bs,className:"wx-4VuBwK2D wx-body",style:{width:`${Bn}px`,height:`${Kn}px`},onMouseDown:X=>fr(X),children:[r?l.jsx(Rj,{overlay:r}):null,l.jsx("div",{ref:mr,className:"wx-4VuBwK2D wx-data",style:{paddingTop:`${An.d}px`,paddingLeft:`${ge.d}px`},children:mt.map((X,je)=>{const Le=F.indexOf(X.id)!==-1,We=ye===X.id,xt="wx-row"+(g?" wx-autoheight":"")+(m?" "+m(X):"")+(Le?" wx-selected":"")+(We?" wx-inactive":""),gt=g?{minHeight:`${X.rowHeight||D}px`}:{height:`${X.rowHeight||D}px`};return l.jsx("div",{className:"wx-4VuBwK2D "+xt,"data-id":Cn(X.id),"data-context-id":Cn(X.id),style:gt,role:"row","aria-rowindex":je,"aria-expanded":X.open,"aria-level":ue?X.$level+1:void 0,"aria-selected":ue?Le:void 0,tabIndex:-1,children:ge.data.map(Ue=>Ue.collapsed?l.jsx("div",{className:"wx-4VuBwK2D wx-cell wx-collapsed"},Ue.id):_?.id===X.id&&_.column===Ue.id?l.jsx(Ij,{row:X,column:Ue},Ue.id):l.jsx(bj,{row:X,column:Ue,columnStyle:p,cellStyle:v,reorder:V,focusable:Da?.row===X.id&&Da?.column===Ue.id},Ue.id))},X.id)})})]}),i&&(R||[]).length?l.jsx(Nx,{type:"footer",contentWidth:Bn,deltaLeft:ge.df,columns:ge.footer,columnStyle:p}):null]})})}),ae?l.jsx(Fj,{config:ae,rowStyle:m,columnStyle:p,cellStyle:v,header:a,footer:i,reorder:V}):null]})}const $j=n=>n.split("-").map(a=>a?a.charAt(0).toUpperCase()+a.slice(1):"").join(""),Uj=f.forwardRef(function({data:n=[],columns:a=[],rowStyle:i=null,columnStyle:r=null,cellStyle:c=null,selectedRows:u,select:m=!0,multiselect:p=!1,header:v=!0,footer:g=!1,dynamic:w=null,overlay:y=null,reorder:b=!1,onReorder:C=null,autoRowHeight:k=!1,sizes:A,split:T,tree:j=!1,autoConfig:R=!1,init:E=null,responsive:H=null,sortMarks:F,undo:q=!1,hotkeys:I=null,filterValues:_,...fe},G){const ue=f.useRef();ue.current=fe;const Y=f.useMemo(()=>new nj(Vy),[]),ae=f.useMemo(()=>Y.in,[Y]),le=f.useRef(null);le.current===null&&(le.current=new Hy((re,Ke)=>{const De="on"+$j(re);ue.current&&ue.current[De]&&ue.current[De](Ke)}),ae.setNext(le.current));const V=f.useMemo(()=>({getState:Y.getState.bind(Y),getReactiveState:Y.getReactive.bind(Y),getStores:()=>({data:Y}),exec:ae.exec,setNext:re=>(le.current=le.current.setNext(re),le.current),intercept:ae.intercept.bind(ae),on:ae.on.bind(ae),detach:ae.detach.bind(ae),getRow:Y.getRow.bind(Y),getColumn:Y.getColumn.bind(Y)}),[Y,ae]),[z,K]=f.useState(0),[Q,P]=f.useState(0),[ie,Se]=f.useState(null),[D,Z]=f.useState(null),ye=f.useMemo(()=>{if(R&&!a.length&&n.length){const re=n[0],Ke=[];for(let De in re)if(De!=="id"&&De[0]!=="$"){let Qe={id:De,header:De[0].toUpperCase()+De.slice(1)};typeof R=="object"&&(Qe={...Qe,...R}),Ke.push(Qe)}return Ke}return(D&&D.columns)??a},[R,a,n,D]),be=f.useMemo(()=>(D&&D.sizes)??A,[D,A]),de=f.useCallback(re=>{if(K(re.width),P(re.height),H){const Ke=Object.keys(H).map(Number).sort((De,Qe)=>De-Qe).find(De=>re.width<=De)??null;Ke!==ie&&(Z(H[Ke]),Se(Ke))}},[H,ie]),Ne=f.useContext(kn.theme),Ie=f.useRef(0);return f.useEffect(()=>{if(!Ie.current)E&&E(V);else{const re=Y.getState();Y.init({data:n,columns:ye,split:T||re.split,sizes:be||re.sizes,selectedRows:u||re.selectedRows,dynamic:w,tree:j,sortMarks:F||re.sortMarks,filterValues:_||re.filterValues,undo:q,reorder:b,_skin:Ne,_select:m})}Ie.current++},[Y,n,ye,T,be,u,w,j,F,_,q,b,Ne,m,E,V]),Ie.current===0&&Y.init({data:n,columns:ye,split:T||{left:0},sizes:be||{},selectedRows:u||[],dynamic:w,tree:j,sortMarks:F||{},filterValues:_||{},undo:q,reorder:b,_skin:Ne,select:m}),f.useImperativeHandle(G,()=>({...V}),[V]),l.jsx(Na.Provider,{value:V,children:l.jsx(Oh,{words:Ih,optional:!0,children:l.jsx(Hj,{header:v,footer:g,overlay:y,rowStyle:i,columnStyle:r,cellStyle:c,onReorder:C,multiselect:p,autoRowHeight:k,clientWidth:z,clientHeight:Q,responsiveLevel:ie,resize:de,hotkeys:I})})})});Th(xa);const jn=f.createContext(null),Hh=f.createContext(null),$h=f.createContext(null);function Pj({children:n}){const a=f.useContext(kn.i18n),i=f.useMemo(()=>a.getGroup("filemanager"),[a]),r=f.useContext(jn),[c]=Wa(r,"panels"),u=Ze(r,"activePanel"),m=c[u].path,[p,v]=f.useState(null),[g,w]=f.useState(null),[y,b]=f.useState(""),[C,k]=f.useState(""),[A,T]=f.useState(!1);function j(){const F=y.trim();if(!F){T(!0);return}p.add?r.exec("create-file",{file:{...p.item,name:F},parent:m}):C!==F&&r.exec("rename-file",{id:p.item.id,name:F}),R()}function R(){v(null),T(null),k(""),b("")}function E(){r.exec("delete-files",{ids:g.selected}),w(null)}const H=f.useMemo(()=>({showPrompt(F){const q=F.item.name||(F.item.type==="folder"?i("New folder"):`${i("New file")}.txt`);k(q),b(q),v({...F})},showConfirm(F){w({...F})}}),[i]);return l.jsxs(Hh.Provider,{value:H,children:[l.jsx(P1,{children:n}),p?l.jsx(uh,{title:i(`Enter ${p.item.type} name`),onConfirm:j,onCancel:R,children:l.jsx(_h,{error:A,select:!0,focus:!0,value:y,onChange:({value:F})=>b(F)})}):null,g?l.jsx(uh,{title:i("Are you sure you want to delete these items:"),onConfirm:E,onCancel:()=>w(null),children:g.selected?l.jsx("ul",{className:"wx-gq7BMzEP wx-list",children:g.selected.map((F,q)=>l.jsx("li",{children:F},q))}):null}):null]})}let Rx={"7z":!0,rar:!0,zip:!0,css:!0,html:!0,js:!0,php:!0,md:!0,xml:!0,sql:!0,aif:!0,mid:!0,mp3:!0,waw:!0,wma:!0,doc:!0,docx:!0,txt:!0,avi:!0,mov:!0,mp4:!0,mpeg:!0,mpg:!0,pdf:!0,xls:!0,xlsx:!0,gif:!0,jpg:!0,jpeg:!0,png:!0,psd:!0,tiff:!0,svg:!0,folder:!0,file:!0,multiple:!0,search:!0,none:!0};function qj(n){const a=n.lastIndexOf("."),i=a>0&&a<n.length-1?Math.min(10,n.length-a):Math.min(5,n.length),r=n.slice(0,-i),c=n.slice(-i);return[r,c]}function Gj({item:n}){const a=f.useContext(jn),i=f.useContext(kn.i18n).getGroup("filemanager"),r=f.useContext(jn).templates,[c]=Wa(a,"panels"),u=Ze(a,"activePanel"),m=Ze(a,"mode"),p=c[u].selected,v=f.useMemo(()=>r.preview(n,214,163),[r,n]),g=f.useMemo(()=>r.icon(n,"big"),[r,n]),[w,y]=f.useMemo(()=>qj(n.name),[n.name]);return l.jsx(l.Fragment,{children:n.id==="/wx-filemanager-parent-link"?m!=="search"?l.jsx("div",{className:"wx-GAOa4kDV wx-back-item",children:l.jsxs("div",{className:`wx-GAOa4kDV wx-back ${n.navigation?"wx-selected":""}`,"data-id":Cn("/wx-filemanager-parent-link"),children:[l.jsx("i",{className:"wx-GAOa4kDV wxi-arrow-left"}),l.jsx("span",{children:i("Back to parent folder")})]})}):null:l.jsxs("div",{className:`wx-GAOa4kDV wx-item ${p?.length&&p.indexOf(n.id)>=0?"wx-selected":""}`,"data-id":Cn(n.id),children:[v?l.jsx("div",{className:"wx-GAOa4kDV wx-preview wx-file-preview",children:l.jsx("img",{className:"wx-GAOa4kDV wx-card-preview",alt:i("A miniature file preview"),src:v})}):g?l.jsx("div",{className:"wx-GAOa4kDV wx-preview wx-file-icon",children:l.jsx("img",{className:"wx-GAOa4kDV wx-card-preview",alt:"",src:g})}):l.jsx("div",{className:"wx-GAOa4kDV wx-preview",children:l.jsx("i",{className:`wx-GAOa4kDV wxi-${n.type}`})}),n.type==="folder"?l.jsxs("div",{className:"wx-GAOa4kDV wx-info",children:[l.jsxs("div",{className:"wx-GAOa4kDV wx-folder-name",children:[l.jsx("span",{className:"wx-GAOa4kDV wx-type",children:i("Folder")}),l.jsxs("span",{className:"wx-GAOa4kDV wx-name",children:[l.jsx("span",{children:w}),l.jsx("span",{children:y})]})]}),l.jsx("div",{"data-action-id":Cn(n.id),className:"wx-GAOa4kDV wx-more",children:l.jsx("i",{className:"wx-GAOa4kDV wxi-dots-v"})})]}):l.jsxs("div",{className:"wx-GAOa4kDV wx-info",children:[l.jsx("div",{className:"wx-GAOa4kDV wx-file-name",children:l.jsxs("span",{className:"wx-GAOa4kDV wx-name",children:[l.jsx("span",{children:w}),l.jsx("span",{children:y})]})}),l.jsx("div",{"data-action-id":Cn(n.id),className:"wx-GAOa4kDV wx-more",children:l.jsx("i",{className:"wx-GAOa4kDV wxi-dots-v"})})]})]})})}function rw(){const n=f.useContext(jn),a=f.useContext(kn.i18n),i=f.useMemo(()=>a.getGroup("filemanager"),[a]),[r]=Wa(n,"panels"),c=Ze(n,"activePanel"),u=Ze(n,"mode"),m=r[c]._files,p=r[c].selected,v=r[c].path,g=r[c]._crumbs,w=r[c]._selectNavigation,y=f.useCallback((R,E)=>{const H=E&&(E.ctrlKey||E.metaKey),F=E&&E.shiftKey;if(R==="/wx-filemanager-parent-link"){if(p.length&&(H||F))return;n.exec("select-file",{type:"navigation"});return}let q=R==="body"&&E?null:R;const I=E.target.className.indexOf("wx-more")!==-1||E.target.className.indexOf("wxi-dots-v")!==-1;setTimeout(()=>{n.exec("select-file",{id:q,toggle:H&&!I,range:F&&!I,panel:c})},1)},[n,p,c]),b=f.useCallback(()=>{g.length>1&&n.exec("set-path",{id:g[g.length-2].id,panel:c,selected:[g[g.length-1].id]})},[n,g,c]),C=f.useCallback(R=>{if(R==="/wx-filemanager-parent-link")return b();u==="search"&&n.exec("filter-files",{text:""});const E=m.find(H=>H.id===R);E&&(E.type=="folder"?n.exec("set-path",{id:E.id,panel:c}):n.exec("open-file",{id:E.id}))},[n,b,u,m,c]),k=f.useCallback((R,E)=>{(!p?.length||!p.filter(H=>H?.id===R).length>0)&&y(R,E)},[p,y]),A=f.useMemo(()=>v!=="/"?[{id:"/wx-filemanager-parent-link",name:i("Back to parent folder"),navigation:w},...m]:m,[v,i,w,m]),T=f.useRef(null),j=f.useRef();return f.useEffect(()=>{T.current&&(j.current?(j.current.click=y,j.current._dblclick=C,j.current.context=k):(j.current={click:y,dblclick:R=>j.current._dblclick(R),_dblclick:C,context:k},uo(T.current,j.current)))},[y,C,k]),u=="search"&&!A.length?l.jsx("div",{className:"wx-iyjASZCY wx-not-found",children:l.jsx("div",{className:"wx-iyjASZCY wx-not-found-text",children:i("Looks like nothing is here")})}):l.jsx("div",{tabIndex:0,className:"wx-iyjASZCY "+("wx-cards"+(v!=="/"&&u!=="search"?" wx-has-back-link":"")),"data-id":Cn("body"),ref:T,children:A.map(R=>l.jsx(Gj,{item:R},R.id))})}function cr({name:n="",spin:a=!1,onClick:i}){return l.jsx("i",{"data-menu-ignore":"true",className:`wx-uwcvNSAG wx-icon wxi-${n} ${a?"wx-spin":""} ${i?"wx-clickable":""}`,onClick:()=>{i&&i()}})}function Vj(){const n=f.useContext(kn.i18n).getGroup("filemanager"),a=f.useContext(jn),i=Ze(a,"activePanel"),[r]=Wa(a,"panels"),c=f.useMemo(()=>r[i]._crumbs,[r,i]);function u(){a.exec("filter-files",{text:""})}return l.jsxs("div",{className:"wx-GDJvtROw wx-search",children:[l.jsxs("div",{className:"wx-GDJvtROw wx-toolbar",children:[l.jsx("div",{className:"wx-GDJvtROw wx-back-icon",children:l.jsx(cr,{name:"angle-left",onClick:u})}),l.jsxs("div",{className:"wx-GDJvtROw wx-text",children:[n("Search results in")," ",Array.isArray(c)&&c.map((m,p)=>l.jsxs(f.Fragment,{children:[p?"/":null,m.id=="/"?n(m.name):m.name]},p))]})]}),l.jsx(rw,{})]})}function zm({narrowMode:n,extraInfo:a}){const i=f.useContext(jn),{preview:r,icon:c}=i.templates,u=f.useContext(kn.i18n),m=f.useMemo(()=>u.getGroup("filemanager"),[u]),p=f.useMemo(()=>io("%D, %d %F %Y, %H:%i",u.getRaw().calendar),[u]),[v,g]=Wa(i,"panels"),w=Ze(i,"activePanel"),y=Ze(i,"preview"),b=Ze(i,"search"),C=f.useMemo(()=>{const I=v&&w!=null&&v[w]?._selected?.length||0;return b&&!I},[b,g,w]),k=f.useMemo(()=>{const I=v&&w!=null?v[w]:null;return I?C?I._files:I._selected:[]},[C,g,w]),A=f.useCallback((I,_)=>(I?`${I} ${m(I>1?"folders":"folder")} `:"")+(_?`${_} ${m(_>1?"files":"file")}`:""),[m]),T=f.useCallback(()=>{i.exec("show-preview",{mode:!y})},[i,y]),j=f.useCallback(I=>I.type==="folder"?m("Folder"):I.ext||m("Unknown file"),[m]),R=f.useMemo(()=>{let I,_,fe,G,ue,Y,ae,le;if(k.length===1&&!C){_=k[0],I=_.name;const V=r(_,400,500);V?(fe=V,G=""):(G=c(_,"big"),fe=""),ue=_.type!=="folder"}else{if(_=ue=null,I="",k.length){let V=0,z=0,K=0,Q=[],P;k.forEach(Se=>{typeof Se.size>"u"&&(P=!0,V=void 0),P||(V+=Se.size),Q.push(j(Se)),Se.type==="folder"?z++:K++});const ie=new Set(Q);Y=ie.size>1?m("multiple"):[...ie][0],ae=A(z,K),le=V,C||(I=m("Multiple files"))}G=c({type:C?"search":k.length?"multiple":"none"},"big"),fe=""}return{name:I,item:_,previewSrc:fe,iconSrc:G,showDownloadIcon:ue,type:Y,totalCount:ae,totalSize:le}},[k,C,r,c,m,j,A]),E=f.useCallback(()=>{i.exec("download-file",{id:k[0].id})},[i,k]),H=f.useCallback(async I=>{if(!a||!I)return null;try{return await a(I)}catch(_){return console.log(_),null}},[a]),[F,q]=f.useState(null);return f.useEffect(()=>{let I=!1;return q(null),Promise.resolve(H(R.item)).then(_=>{I||q(_)}).catch(()=>{I||q(null)}),()=>{I=!0}},[H,R.item]),l.jsx("div",{className:"wx-O0BTtRrH wx-wrapper",children:k&&k.length?l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"wx-O0BTtRrH wx-preview",children:[l.jsxs("div",{className:"wx-O0BTtRrH wx-toolbar",children:[l.jsx("div",{className:"wx-O0BTtRrH wx-name",children:R.name}),l.jsxs("div",{className:"wx-O0BTtRrH wx-icons",children:[R.showDownloadIcon?l.jsx(cr,{name:"download",onClick:E}):null,n?l.jsx(cr,{name:"close",onClick:T}):null]})]}),R.previewSrc?l.jsx("div",{className:"wx-O0BTtRrH wx-img-wrapper",children:l.jsx("img",{src:R.previewSrc,alt:m("A miniature file preview")})}):R.iconSrc?l.jsx("div",{className:"wx-O0BTtRrH wx-icon-wrapper",children:l.jsx("img",{src:R.iconSrc,alt:m("A miniature file preview")})}):l.jsx("div",{className:"wx-O0BTtRrH wx-icon-wrapper",children:R.item?l.jsx("i",{className:`wx-O0BTtRrH wx-icon wxi-${R.item.type}`}):l.jsx("i",{className:`wx-O0BTtRrH wx-icon wxi-${C?"search":"file-multiple-outline"}`})})]}),l.jsxs("div",{className:"wx-O0BTtRrH wx-info-panel",children:[l.jsx("div",{className:"wx-O0BTtRrH wx-title",children:m(C?"Found":"Information")}),l.jsxs("div",{className:"wx-O0BTtRrH wx-list",children:[R.item?l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Type")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:j(R.item)}),typeof R.item.size<"u"?l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Size")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:_c(R.item.size)})]}):null,l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Date")}),l.jsxs("span",{className:"wx-O0BTtRrH wx-value",children:[p(R.item.date)," "]})]}):l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Count")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:R.totalCount}),l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Type")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:R.type}),typeof R.totalSize<"u"?l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Size")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:_c(R.totalSize)})]}):null]}),F?Object.entries(F).map(([I,_])=>l.jsxs(Ch.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:I}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:_})]},I)):null]})]})]}):l.jsxs("div",{className:"wx-O0BTtRrH wx-no-info-panel",children:[l.jsxs("div",{className:"wx-O0BTtRrH wx-toolbar",children:[l.jsx("div",{className:"wx-O0BTtRrH wx-name",children:R.name}),l.jsx("div",{className:"wx-O0BTtRrH wx-icons",children:n?l.jsx(cr,{name:"close",onClick:T}):null})]}),l.jsx("div",{className:"wx-O0BTtRrH wx-no-info-wrapper",children:l.jsxs("div",{className:"wx-O0BTtRrH wx-no-info",children:[R.previewSrc?l.jsx("div",{className:"wx-O0BTtRrH wx-img-wrapper",children:l.jsx("img",{src:R.previewSrc,alt:m("A miniature file preview")})}):R.iconSrc?l.jsx("div",{className:"wx-O0BTtRrH wx-icon-wrapper",children:l.jsx("img",{src:R.iconSrc,alt:m("A miniature file preview")})}):l.jsx("div",{className:"wx-O0BTtRrH wx-icon-wrapper",children:l.jsx("i",{className:`wx-O0BTtRrH wx-icon wxi-${C?"search":"message-question-outline"}`})}),l.jsx("span",{className:"wx-O0BTtRrH wx-text",children:C?"":m("Select file or folder to view details")})]})})]})})}function ow({panel:n}){const a=f.useContext(jn),i=f.useContext(kn.i18n),r=f.useMemo(()=>i.getGroup("filemanager"),[i]),[c,u]=Wa(a,"panels"),m=f.useMemo(()=>c[n]._files,[u,n]),p=f.useMemo(()=>c[n]._crumbs||[],[u,n]);function v(k){const A=Bh(k,p);a.exec("set-path",{id:k,panel:n,...A&&{selected:[A]}})}const[g,w]=f.useState(null);f.useEffect(()=>{m&&w(null)},[m]);function y(){w(!0),a.exec("request-data",{id:p[p.length-1].id}),setTimeout(()=>{w(null)},5e3)}const b=f.useRef(null),C=f.useRef();return f.useEffect(()=>{C.current?C.current.click=v:(C.current={click:v},uo(b.current,C.current))},[v]),l.jsxs("div",{className:"wx-SNY5LTYx wx-breadcrumbs","data-menu-ignore":"true",ref:b,children:[l.jsx("div",{className:"wx-SNY5LTYx wx-refresh-icon",children:l.jsx(cr,{name:"refresh",spin:!!g,onClick:y})}),p.map((k,A)=>l.jsxs(Ch.Fragment,{children:[A?l.jsx(cr,{name:"angle-right"}):null,l.jsx("div",{className:"wx-SNY5LTYx wx-item","data-id":Cn(k.id),"data-menu-ignore":"true",children:k.id=="/"?r(k.name):k.name})]},A))]})}function Yj({row:n}){const a=f.useContext(kn.i18n),[i]=f.useState(()=>a.getGroup("filemanager")),r=f.useContext(jn).templates,[c]=f.useState(()=>r.icon(n,"small"));return l.jsx("div",{className:"wx-qgAqG6sL wx-name-cell",children:n.id==="/wx-filemanager-parent-link"?l.jsxs(l.Fragment,{children:[l.jsx("i",{className:"wx-qgAqG6sL wxi-arrow-left"}),l.jsxs("span",{className:"wx-qgAqG6sL wx-name",children:[" ",i("Back to parent folder")]})]}):l.jsxs(l.Fragment,{children:[c?l.jsx("img",{className:"wx-qgAqG6sL wx-icon",alt:"",src:c,height:"24px",width:"24px"}):l.jsx("i",{className:`wx-qgAqG6sL wxi-${n.type}`}),l.jsxs("span",{className:"wx-qgAqG6sL wx-name",children:[" ",n.name," "]})]})})}function cw({children:n}){const a=f.useContext(jn),i=Ze(a,"activePanel"),r=f.useContext($h),c=f.useRef(null);let u=f.useRef({});return u.current.drop=()=>{const m=c.current,p=Q0(m,"data-panel");p&&p!=i&&a.exec("set-active-panel",{panel:p*1})},u.current.dragEnter=()=>{const m=c.current;m&&m.classList.toggle("wx-active")},u.current.dragLeave=()=>{const m=c.current;m&&m.classList.toggle("wx-active")},f.useEffect(()=>{const m=c.current;return r.droparea(m,u.current)},[]),l.jsx("div",{className:"wx-LT9X7tb7 wx-upload-area",ref:c,children:n})}function mh({panel:n,active:a=!1,onClick:i,onContextMenu:r}){const c=f.useContext(jn),u=f.useContext(kn.i18n),m=f.useMemo(()=>u.getGroup("filemanager"),[u]),p=f.useMemo(()=>io("%d %M %Y",u.getRaw().calendar),[u]),[v]=Wa(c,"panels"),g=v[n].selected,w=v[n].path,y=v[n]._crumbs,b=v[n]._sorts,C=v[n]._selectNavigation,k=v[n]._files,A=f.useMemo(()=>[{id:"name",header:m("Name"),flexgrow:3,sort:!0,resize:!0,cell:Yj},{id:"size",header:m("Size"),width:100,sort:!0,resize:!0,template:Y=>typeof Y=="number"?_c(Y):""},{id:"date",header:m("Date"),width:120,sort:!0,resize:!0,template:Y=>Y?p(Y):""}],[m,p]),T=f.useRef(null),j=f.useRef(null),R=f.useMemo(()=>C?["/wx-filemanager-parent-link"]:[...g],[C,g]);function E(Y,ae){if(ae&&ae.target&&ae.target.className&&ae.target.className.indexOf("wx-grip")!==-1)return;const le=ae&&(ae.ctrlKey||ae.metaKey),V=ae&&ae.shiftKey;if(Y==="/wx-filemanager-parent-link"){if(g.length&&(le||V))return;c.exec("select-file",{type:"navigation"});return}let z=Y==="body"&&ae?null:Y;!T.current&&!j.current?c.exec("select-file",{id:z,toggle:le,range:V,panel:n}):(T.current=null,j.current=null)}function H(){y.length>1&&c.exec("set-path",{id:y[y.length-2].id,panel:n,selected:[y[y.length-1].id]})}function F(Y){if(Y==="/wx-filemanager-parent-link")return H();const ae=k.find(le=>le.id===Y);ae&&(ae.type==="folder"?c.exec("set-path",{id:ae.id,panel:n}):c.exec("open-file",{id:ae.id}))}function q(Y){const ae=Y.key,le=b[w];let V=le?"asc":"desc";le&&le.key===ae&&(V=le.order==="asc"?"desc":"asc"),c.exec("sort-files",{key:ae,order:V,panel:n,path:w})}function I(Y){Y.intercept("sort-rows",ae=>(T.current=!0,q(ae),!1)),Y.intercept("select-row",()=>!1),Y.on("resize-column",()=>j.current=!0),Y.intercept("hotkey",()=>!1)}const _=f.useMemo(()=>w!=="/"?[{id:"/wx-filemanager-parent-link",name:m("Back to parent folder")},...k]:k,[w,k,m]),fe=f.useMemo(()=>{if(_&&b&&b[w]){const{key:Y,order:ae}=b[w];return{[Y]:{order:ae}}}},[_,b,w]),G=f.useRef(null),ue=f.useRef();return f.useEffect(()=>{ue.current?(ue.current.click=E,ue.current._dblclick=F):(ue.current={click:E,dblclick:Y=>ue.current._dblclick(Y),_dblclick:F},uo(G.current,ue.current))},[E,F]),l.jsxs("div",{onClick:i,onContextMenu:r,className:"wx-SSaVhET7 wx-wrapper",children:[l.jsx(ow,{panel:n}),l.jsx("div",{"data-id":Cn("body"),className:`wx-SSaVhET7 wx-list ${a?"wx-active":""}`,ref:G,children:l.jsx(cw,{children:l.jsx(Uj,{init:I,data:_,columns:A,selectedRows:R,columnStyle:()=>"wx-SSaVhET7 wx-each-cell",sizes:{rowHeight:42,headerHeight:42},sortMarks:fe})})})]})}function Wj(){const n=f.useContext(jn),a=Ze(n,"activePanel");function i(r){n.exec("set-active-panel",{panel:r})}return l.jsxs("div",{className:"wx-L55BfJa2 wx-panels","data-id":Cn("body"),children:[l.jsx("div",{className:"wx-L55BfJa2 wx-item","data-panel":0,children:l.jsx(mh,{panel:0,active:a==0,onClick:()=>i(0),onContextMenu:()=>i(0)})}),l.jsx("div",{className:"wx-L55BfJa2 wx-item","data-panel":1,children:l.jsx(mh,{panel:1,active:a==1,onClick:()=>i(1),onContextMenu:()=>i(1)})})]})}function uw({folderIcon:n=!1,folder:a={}}){const i=f.useContext(jn),[r,c]=Wa(i,"panels"),u=Ze(i,"activePanel"),m=f.useMemo(()=>r[u].path,[c,u]),p=f.useContext(kn.i18n),v=f.useMemo(()=>p.getGroup("filemanager"),[p]),g=f.useMemo(()=>!!a.data?.find(C=>C.type==="folder"),[a]),w=f.useMemo(()=>a.id=="/"?v(a.name):a.name,[a,v]),y=f.useMemo(()=>a.$level>1?(a.$level-1)*20:0,[a]),b=a.open;return l.jsxs(l.Fragment,{children:[l.jsxs("li",{"data-id":Cn(a.id),className:`wx-NYfhvGIt wx-folder${m===a.id?" wx-selected":""}`,style:{paddingLeft:`${y}px`},children:[g?l.jsx("i",{className:`wx-NYfhvGIt wx-toggle wxi-${b?"angle-down":"angle-right"}`,"data-action":"toggle"}):l.jsx("span",{className:"wx-NYfhvGIt wx-toggle-placeholder"}),l.jsx("i",{className:"wx-NYfhvGIt "+(n||"wxi-folder")}),l.jsxs("span",{className:"wx-NYfhvGIt wx-name",children:[" ",w," "]})]}),b&&a.data&&a.data.length&&g?l.jsx(l.Fragment,{children:a.data.map(C=>C.type==="folder"?l.jsx(uw,{folder:C},C.id):null)}):null]})}function Kj(){const n=f.useContext(jn),[a,i]=Wa(n,"data"),[r,c]=Wa(n,"panels"),u=Ze(n,"activePanel"),m=f.useMemo(()=>r[u]._crumbs,[c,u]),p=f.useCallback(C=>{n.exec("open-tree-folder",{id:C,mode:!a.byId(C).open})},[n,i]),v=f.useCallback(C=>{const k=Bh(C,m);n.exec("set-path",{id:C,panel:u,...k&&{selected:[k]}})},[n,m,u]),[g,w]=f.useState([]);f.useEffect(()=>{w(a.byId(0).data)},[i]);const y=f.useRef(null),b=f.useRef();return f.useEffect(()=>{b.current?(b.current.click=v,b.current.toggle=p):(b.current={click:v,toggle:p},uo(y.current,b.current))},[v,p]),l.jsx("ul",{ref:y,className:"wx-LyHJ6R6A",children:g.map(C=>C.type==="folder"?l.jsx(uw,{folder:C},C.id):null)})}function Qj(){const n=f.useContext(jn),a=f.useContext(kn.i18n),i=f.useMemo(()=>a.getGroup("filemanager"),[a]),r=Ze(n,"drive"),c=r?r.used:"",u=r?r.total:"";return c&&u?l.jsxs("div",{className:"wx-DetSyKGG wx-drive",children:[l.jsx("progress",{value:c,max:u,className:"wx-DetSyKGG wx-progress"}),l.jsxs("p",{children:[_c(c)," ",i("of")," ",_c(u)," ",i("used")]})]}):null}function Xj({option:n}){const a=f.useContext(kn.i18n).getGroup("filemanager"),i=f.useContext($h),r=f.useCallback(()=>{i.open({})},[i]);return l.jsx("div",{className:"wx-9XiKcxq5 wx-upload-button",onClick:r,children:l.jsx("span",{children:a(n.text)})})}function Zj({readonly:n,menuOptions:a}){const i=f.useContext(kn.i18n).getGroup("filemanager"),{showPrompt:r}=f.useContext(Hh);f.useEffect(()=>{gC("upload",Xj)},[]);function c({action:m}){m&&(m.id==="add-file"?r({item:{type:"file",size:0,date:new Date},add:!0}):m.id==="add-folder"&&r({item:{type:"folder",date:new Date},add:!0}))}const u=f.useMemo(()=>a("add").map(m=>(m.text=i(m.text),m)),[a,i]);return l.jsxs("div",{className:"wx-FlucfALM wx-wrapper",children:[!n&&l.jsx("div",{className:"wx-FlucfALM wx-button",children:l.jsx(xC,{options:u,at:"bottom-fit",onClick:c,children:l.jsx(Ac,{type:"primary block",children:i("Add New")})})}),l.jsx("div",{className:"wx-FlucfALM wx-tree",children:l.jsx(Kj,{})}),l.jsx(Qj,{})]})}function Jj({value:n="",onSearch:a}){const[i,r]=qy(n),c=f.useContext(kn.i18n).getGroup("filemanager"),u=f.useRef(null),m=f.useMemo(()=>i!==""?"wxi-close":"wxi-search",[i]);function p(g){const w=g.target.value;r(w),a&&a({value:w})}function v(){r(""),u.current&&u.current.focus(),a&&a({value:""})}return l.jsxs("div",{className:"wx-lUZMtgT1 wx-search-input",children:[l.jsx("i",{className:`wx-lUZMtgT1 wx-icon ${m}`,onClick:v}),l.jsx("input",{type:"text",className:"wx-lUZMtgT1 wx-text",ref:u,value:i,onInput:p,placeholder:c("Search")})]})}function ek({narrowMode:n=!1,onShowTree:a}){const i=f.useContext(jn),r=f.useContext(kn.i18n).getGroup("filemanager"),c=Ze(i,"mode"),u=Ze(i,"preview"),m=Ze(i,"search"),p=[{icon:"wxi-view-sequential",id:"table"},{icon:"wxi-view-grid",id:"cards"},{icon:"wxi-view-column",id:"panels"}];function v({value:y}){i.exec("set-mode",{mode:y})}function g(y){y.preventDefault(),i.exec("show-preview",{mode:!u})}function w(y){i.exec("filter-files",{text:y.value})}return l.jsxs("div",{className:"wx-5PZQQztG wx-toolbar",children:[l.jsxs("div",{className:"wx-5PZQQztG wx-left "+(n?"wx-left-narrow":""),children:[n?c==="panels"||c==="search"?null:l.jsx("div",{className:"wx-5PZQQztG wx-sidebar-icon","data-id":Cn("toggle-tree"),children:l.jsx(cr,{onClick:()=>a&&a(),name:"subtask"})}):l.jsx("div",{className:"wx-5PZQQztG wx-name",children:r("Files")}),l.jsx(Jj,{onSearch:w,value:m})]}),l.jsxs("div",{className:"wx-5PZQQztG wx-right",children:[n?null:l.jsx("div",{className:"wx-5PZQQztG wx-preview-icon",children:l.jsx(q1,{onClick:g,value:u,children:l.jsx("i",{className:"wx-5PZQQztG wxi-eye"})})}),l.jsx("div",{className:"wx-5PZQQztG wx-modes",children:l.jsx(B1,{value:c,options:p,onChange:v})})]})]})}function tk(){const n=f.useContext(jn),a=Ze(n,"activePanel");return l.jsxs("div",{className:"wx-NwohNJzN wx-wrapper",children:[l.jsx(ow,{panel:a}),l.jsx(cw,{children:l.jsx(rw,{})})]})}function nk({readonly:n=!1,menuOptions:a,extraInfo:i}){const r=f.useRef(null),c=f.useRef(null),[u,m]=f.useState(void 0),[p,v]=f.useState(void 0),[g,w]=f.useState(!1),y=Xy(),b=f.useContext(jn),{showPrompt:C,showConfirm:k}=f.useContext(Hh),A=f.useContext(kn.i18n),T=f.useMemo(()=>A.getGroup("filemanager"),[A]),j=Ze(b,"mode"),R=Ze(b,"preview"),E=Ze(b,"activePanel"),[H,F]=Wa(b,"panels"),q=f.useMemo(()=>(H&&E!=null?H[E]:null)?.selected??[],[F,E]),I=f.useMemo(()=>(H&&E!=null?H[E]:null)?.path,[F,E]),[_,fe]=f.useState([]);f.useEffect(()=>{const ie=r.current;if(!ie)return;const Se=new ResizeObserver(D=>{const Z=D[0]?.borderBoxSize?.[0]?.inlineSize;typeof Z=="number"&&v(Z<768)});return Se.observe(ie),()=>{Se.disconnect()}},[]);const G=f.useCallback(()=>{w(ie=>!ie)},[]),ue=f.useCallback(ie=>{p&&Lc(ie)!=="toggle-tree"&&w(!1)},[p]);f.useEffect(()=>{const ie=c.current;if(ie)return Os(ie,ue).destroy},[ue]),f.useEffect(()=>{const ie=c.current;if(!ie)return;const Se=new ResizeObserver(()=>{ie&&m(ie.clientWidth)});return Se.observe(ie),ie&&m(ie.clientWidth),()=>{Se.disconnect()}},[]);const Y=f.useMemo(()=>({icon:"wxi-eye",text:"Preview",id:"preview"}),[]),ae=f.useCallback(ie=>{let Se=p?[Y]:[];return ie==="file"&&(Se=[...Se,...a().filter(D=>D.id==="download")]),Se},[p,Y,a]),le=f.useRef(null),V=f.useCallback((ie,Se,D)=>{const Z=D?[Se.id]:q;switch(ie){case"download":b.exec("download-file",{id:Se.id});break;case"copy":case"move":le.current={action:ie,ids:Z};break;case"paste":le.current&&b.exec(le.current.action==="copy"?"copy-files":"move-files",{ids:le.current.ids,target:Se?.type==="folder"?Se.id:I});break;case"rename":C({item:Se});break;case"delete":k({selected:Z});break;case"preview":b.exec("show-preview",{mode:!R});break}},[b,q,I,C,k,R]),z=f.useCallback(()=>H?.[E],[H,E]);f.useEffect(()=>{const ie=r.current;if(!ie)return;const Se=lC(ie,{api:b,menuOptions:n?ae:a,performAction:V,getPanel:z});return()=>{typeof Se=="function"?Se():Se&&typeof Se.destroy=="function"&&Se.destroy()}},[b,n,ae,a,V,z]);const K=f.useCallback((ie,Se)=>{const D=ie?b.getFile(ie):null,Z=Se.target.closest(".tree-item.folder");let ye;if(n)ye=ae(D?.type);else{switch(ie){case"body":ye=a(ie);break;default:if(D)if(!Z&&q.length>1)ye=p?[Y,...a("multiselect")]:a("multiselect");else if(ie==="/")ye=a("folder",D).filter(be=>be.id==="paste");else{const be=a(D.type,D);be&&(ye=p?[Y,...be]:be)}}j==="search"&&(ye=ye?.filter(be=>be.id!=="paste"))}if(D?.id&&(!q.length||!q.some(be=>be===D.id))&&!Z&&b.exec("select-file",{id:D.id}),ye?.length)return ye.forEach(be=>{Z&&(be.hotkey=""),be.text&&(be.text=T(be.text)),be.hotkey&&(be.subtext=be.hotkey)}),fe(ye),D||{}},[b,n,ae,a,q,p,Y,j,T]),Q=f.useCallback(ie=>{const{action:Se,context:D}=ie;Se&&V(Se.id,D,!Se.hotkey)},[V]);async function P(ie){await Promise.resolve();const{name:Se,size:D}=ie.file;b.exec("create-file",{file:{name:Se,size:D,date:new Date,file:ie.file},parent:I})}return l.jsx("div",{className:"wx-RJbNonjJ wx-filemanager wx-flex",ref:r,"data-menu-ignore":"false",children:p&&R?l.jsx("div",{className:"wx-RJbNonjJ wx-info-narrow",children:l.jsx(zm,{narrowMode:p,extraInfo:i})}):l.jsxs(l.Fragment,{children:[l.jsx(ek,{narrowMode:p,onShowTree:G}),l.jsx(yC,{dataKey:"id",at:"point",options:_,resolver:K,onClick:Q,children:l.jsxs(Qy,{dataKey:"actionId",options:_,resolver:K,onClick:Q,children:[l.jsx(jC,{data:y,apiOnly:!0,uploadURL:P}),l.jsx($h.Provider,{value:y,children:l.jsx("div",{className:"wx-RJbNonjJ wx-content-wrapper wx-flex",children:j!=="panels"&&j!=="search"?l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"wx-RJbNonjJ "+["wx-sidebar",p?"wx-sidebar-narrow":"",g?"wx-sidebar-visible":""].filter(Boolean).join(" "),ref:c,children:l.jsx(Zj,{readonly:n,menuOptions:a})}),l.jsxs("div",{className:"wx-RJbNonjJ wx-content",style:{width:`calc(100% - ${u||0}px - 10px)`},children:[l.jsx("div",{className:`wx-RJbNonjJ wx-content-item${R?"":"-fit"}`,"data-id":Cn("body"),children:j==="table"?l.jsx(mh,{panel:E}):l.jsx(tk,{})}),R?l.jsx("div",{className:"wx-RJbNonjJ wx-info",children:l.jsx(zm,{extraInfo:i})}):null]})]}):l.jsxs(l.Fragment,{children:[l.jsx("div",{className:`wx-RJbNonjJ wx-content-item${R?"":"-fit"}`,children:j==="panels"?l.jsx(Wj,{}):l.jsx(Vj,{})}),R?l.jsx("div",{className:"wx-RJbNonjJ wx-info",children:l.jsx(zm,{extraInfo:i})}):null]})})})]})})]})})}const ak=n=>n.split("-").map(a=>a?a.charAt(0).toUpperCase()+a.slice(1):"").join("");function sk(n,a){const{type:i,ext:r}=n;if(i==="folder")return!1;let c;return i&&i!=="file"&&Rx[i]?c=i:r?c=Rx[r]?r:"file":c="unknown",`https://cdn.svar.dev/icons/filemanager/vivid/${a}/${c}.svg`}const lk=f.forwardRef(function(n,a){const{data:i=[],mode:r="cards",drive:c=null,preview:u=!1,panels:m=null,activePanel:p=0,readonly:v=!1,menuOptions:g=nC,extraInfo:w=null,init:y=null,icons:b=sk,previews:C=null,...k}=n,A=f.useRef();A.current=k;const T=f.useMemo(()=>new tC(Vy),[]),j=f.useMemo(()=>T.in,[T]),R=f.useRef(null);R.current===null&&(R.current=new Hy((F,q)=>{const I="on"+ak(F);A.current&&A.current[I]&&A.current[I](q)}),j.setNext(R.current));const E=f.useMemo(()=>({getState:T.getState.bind(T),getReactiveState:T.getReactive.bind(T),getStores:()=>({data:T}),exec:j.exec,setNext:F=>(R.current=R.current.setNext(F),R.current),intercept:j.intercept.bind(j),on:j.on.bind(j),detach:j.detach.bind(j),getFile:T.getFile.bind(T),serialize:T.serialize.bind(T),templates:{preview:C||(()=>null),icon:b==="simple"?(()=>null):b}}),[T,j]),H=f.useRef(0);return f.useEffect(()=>{if(!H.current)y&&y(E);else{const F=T.getState();T.init({data:i,mode:r,drive:c,preview:u,panels:m||F.panels||[],activePanel:p})}H.current++},[T,i,r,c,u,m,p,y,E]),H.current===0&&T.init({data:i,mode:r,drive:c,preview:u,panels:m||[],activePanel:p}),f.useImperativeHandle(a,()=>({...E}),[E]),l.jsx(jn.Provider,{value:E,children:l.jsx(Oh,{words:Ih,optional:!0,children:l.jsx(Pj,{children:l.jsx(nk,{readonly:v,menuOptions:g,extraInfo:w})})})})});function ik({fonts:n=!0,children:a}){return a?l.jsx(px,{fonts:n,children:a}):l.jsx(px,{fonts:n})}Th(xa);function Uh(n,a){if(!n||typeof n!="object"||Array.isArray(n))throw new Error(`Invalid Hub ${a} response.`);return n}function Ic(n,a,i){const r=Uh(n,i);if(!Array.isArray(r[a]))throw new Error(`Invalid Hub ${i} response: ${a} must be an array.`);return r[a]}function rk(n,a,i){const r=Uh(n,i);if(!r[a]||typeof r[a]!="object"||Array.isArray(r[a]))throw new Error(`Invalid Hub ${i} response: ${a} must be an object.`);return r[a]}async function ok(n,a=!1){return Ic(await Be(`/api/remote/filesystem/roots${a?"?refresh=1":""}`,void 0,n),"roots","filesystem roots")}async function Om(n,a){const i=await Be(`/api/remote/filesystem/entries?id=${encodeURIComponent(n)}`,void 0,a);return{folder:rk(i,"folder","filesystem entries"),entries:Ic(i,"entries","filesystem entries")}}async function ck(n,a){return Be("/api/remote/filesystem/selection/scan",{method:"POST",body:JSON.stringify({itemIds:n})},a)}async function uk(n,a,i,r){return Be("/api/remote/files/from-hub",{method:"POST",body:JSON.stringify({itemIds:n,deviceIds:a,remoteDirectory:i})},r)}async function dk(n,a=!1){const i=await Be(`/api/remote/files/jobs?active=${a?"1":"0"}`,void 0,n);return{jobs:Ic(i,"jobs","file transfer jobs")}}async function fk(n,a){return Be(`/api/remote/files/jobs/${encodeURIComponent(n)}`,void 0,a)}async function mk(n,a){return Be(`/api/remote/files/jobs/${encodeURIComponent(n)}/cancel`,{method:"POST"},a)}async function Ex(n){return Ic(await Be("/api/remote/filesystem/shared-folders",void 0,n),"folders","shared folders")}async function hk(n,a){return Be("/api/remote/filesystem/shared-folders",{method:"POST",body:JSON.stringify({sourceId:n})},a)}async function pk(n,a,i){return Be(`/api/remote/filesystem/shared-folders/${encodeURIComponent(n)}`,{method:"PATCH",body:JSON.stringify(a)},i)}async function gk(n,a){return Be(`/api/remote/filesystem/shared-folders/${encodeURIComponent(n)}`,{method:"DELETE"},a)}async function vk(n,a,i,r){const c=await Be(`/api/remote/filesystem/shared-folders/${encodeURIComponent(n)}/sync`,{method:"POST",body:JSON.stringify({deviceIds:a,remoteDirectory:i})},r),u=Uh(c,"shared folder sync");return{ok:u.ok===!0,jobs:Ic(c,"jobs","shared folder sync"),files:Number(u.files||0),totalBytes:Number(u.totalBytes||0)}}function xk(n){return{id:String(n.id),parentId:n.parent,name:n.name,type:n.type==="file"?"file":"folder",size:Number(n.size||0),modifiedAt:n.date?.toISOString()||null,displayPath:String(n.displayPath||n.name),hasChildren:n.lazy===!0||!!n.data?.length,locked:n.locked===!0}}function Dx(n){if(!Number.isFinite(n)||n<=0)return"0 B";const a=["B","KB","MB","GB","TB"];let i=n,r=0;for(;i>=1024&&r<a.length-1;)i/=1024,r+=1;return`${i.toFixed(r===0||i>=100?0:1)} ${a[r]}`}function vd(n){return n.driveType==="network"?"network":n.driveType==="removable"?"removable":"local"}function yk(n){const a=n.filter(i=>vd(i)==="local");return a.find(i=>/\bC:/i.test(`${i.name} ${i.displayPath||""}`))||a[0]||n[0]||null}function wk({hubUrl:n,roots:a,loading:i,error:r,onRefreshRoots:c,onImportFiles:u,onImportFolder:m,onSelectionChange:p,onShareItem:v,onAddSyncFolder:g,onNotice:w}){const y=f.useRef(null),b=f.useRef("/"),C=f.useRef(0),k=f.useRef([]),A=f.useRef(new Map),[T,j]=f.useState(null),[R,E]=f.useState([]),[H,F]=f.useState([]),[q,I]=f.useState(0),[_,fe]=f.useState(null),[G,ue]=f.useState(!1),[Y,ae]=f.useState(""),[le,V]=f.useState(new Set),z=a.find(ne=>ne.id===T)||null,K=R[R.length-1]||null,Q=z?K?.svarPath||`/${z.name}`:null,P=Q;f.useEffect(()=>{k.current=R,b.current=P||"/"},[P,R]);const ie=f.useMemo(()=>(A.current.clear(),!z||!P||R.length===0?[]:(R.forEach(ne=>A.current.set(ne.svarPath,ne.hubId)),[...R.map((ne,ge)=>({id:ne.svarPath,parent:ge===0?"/":R[ge-1].svarPath,type:"folder",name:ne.name,date:ne.modifiedAt?new Date(ne.modifiedAt):void 0,lazy:!1})),...H.map(ne=>{const ge=`${P}/${ne.name}`;return A.current.set(ge,ne.id),{id:ge,parent:P,name:ne.name,type:ne.type==="file"?"file":"folder",...ne.type==="file"?{size:ne.size}:{},date:ne.modifiedAt?new Date(ne.modifiedAt):void 0,lazy:ne.type!=="file"&&ne.hasChildren===!0,displayPath:ne.displayPath,locked:ne.locked,driveType:ne.driveType,totalBytes:ne.totalBytes,freeBytes:ne.freeBytes}})])),[z,H,P,R]),Se=ne=>A.current.get(String(ne))||String(ne),D=ne=>xk({...ne,id:Se(String(ne.id)),parent:Se(String(ne.parent))}),Z=async(ne,ge)=>{const Re=ne[ne.length-1];if(!Re)return;const te=++C.current;ue(!0),ae("");try{const oe=await Om(Re.hubId,n);if(te!==C.current)return;if(!Array.isArray(oe.entries))throw new Error("Invalid Hub filesystem entries response.");const Ae={...Re,displayPath:oe.folder.displayPath||Re.displayPath,modifiedAt:oe.folder.modifiedAt||Re.modifiedAt},Ce=[...ne.slice(0,-1),Ae];k.current=Ce,E(Ce),F(oe.entries),I(st=>st+1)}catch(oe){if(te!==C.current)return;console.error("[LiveDesk FS] folder navigation failed",{folderId:Re.hubId,error:oe}),ae(oe instanceof Error?`${ge}: ${oe.message}`:`${ge}: Unable to read this folder.`)}finally{te===C.current&&ue(!1)}},ye=async ne=>{const ge={svarPath:`/${ne.name}`,hubId:ne.id,name:ne.name,displayPath:ne.displayPath,modifiedAt:ne.modifiedAt},Re=++C.current;j(ne.id),k.current=[ge],E([ge]),b.current=ge.svarPath,F([]),ae(""),ue(!0),fe(ne.id),V(te=>{const oe=new Set(te);return oe.delete(ne.id),oe});try{const te=await Om(ne.id,n);if(Re!==C.current)return;if(!Array.isArray(te.entries))throw new Error("Invalid Hub filesystem entries response.");const oe={...ge,displayPath:te.folder.displayPath||ge.displayPath,modifiedAt:te.folder.modifiedAt||ge.modifiedAt};k.current=[oe],E([oe]),F(te.entries),I(Ae=>Ae+1)}catch(te){if(Re!==C.current)return;console.error("[LiveDesk FS] getEntries failed",{rootId:ne.id,error:te}),V(oe=>new Set(oe).add(ne.id)),ae(te instanceof Error?`${ne.name}: ${te.message}`:`${ne.name}: Unable to read this drive.`),w(te instanceof Error?`${ne.name}: ${te.message}`:`${ne.name}: Unable to read this drive.`)}finally{Re===C.current&&(fe(null),ue(!1))}},be=ne=>{const ge=k.current;ne<0||ne>=ge.length||ne===ge.length-1||Z(ge.slice(0,ne+1),ge[ne].name)},de=(ne,ge)=>{if(ne.type!=="folder")return;const Re=k.current,te=Re.findIndex(Ae=>Ae.svarPath===ge);if(te<0)return;const oe={svarPath:`${ge}/${ne.name}`,hubId:ne.id,name:ne.name,displayPath:ne.displayPath,modifiedAt:ne.modifiedAt};Z([...Re.slice(0,te+1),oe],ne.name)},Ne=()=>be(k.current.length-2),Ie=ne=>{if(ne.key!=="Enter"&&ne.code!=="Enter"&&ne.code!=="NumpadEnter"||ne.target?.closest('button, input, textarea, [contenteditable="true"]'))return;const Re=y.current;if(!Re)return;const te=Re.getState().panels?.flatMap(Ae=>Ae.selected||[])||[];if(te.length!==1)return;const oe=Re.getFile(String(te[0]));oe?.type==="folder"&&(ne.preventDefault(),ne.stopPropagation(),de(D(oe),String(oe.parent||b.current)))};f.useEffect(()=>{const ne=a.find(ge=>ge.id===T)||yk(a);if(V(ge=>new Set([...ge].filter(Re=>a.some(te=>te.id===Re)))),!ne){j(null),k.current=[],E([]),F([]);return}ye(ne)},[a]);const re=ne=>{y.current=ne,ne.on("request-data",async({id:ge})=>{const Re=String(ge),te=Se(Re);try{const oe=await Om(te,n);if(!Array.isArray(oe.entries))throw new Error("Invalid Hub filesystem entries response.");const Ae=oe.entries.map(Ce=>{const st=`${Re}/${Ce.name}`;return A.current.set(st,Ce.id),{id:st,parent:Re,name:Ce.name,type:Ce.type==="file"?"file":"folder",...Ce.type==="file"?{size:Ce.size}:{},date:Ce.modifiedAt?new Date(Ce.modifiedAt):void 0,lazy:Ce.type!=="file"&&Ce.hasChildren===!0,displayPath:Ce.displayPath,locked:Ce.locked,driveType:Ce.driveType,totalBytes:Ce.totalBytes,freeBytes:Ce.freeBytes}});await ne.exec("provide-data",{id:Re,data:Ae})}catch(oe){console.error("[LiveDesk FS] nested getEntries failed",{id:te,error:oe}),w(oe instanceof Error?oe.message:"Unable to read this folder.")}}),ne.intercept("set-path",({id:ge})=>{const Re=String(ge),te=k.current.findIndex(Ae=>Ae.svarPath===Re);if(te>=0)return be(te),!1;const oe=ne.getFile(Re);if(oe?.type==="folder")return de(D(oe),String(oe.parent||b.current)),!1}),ne.intercept("open-file",()=>!1),ne.on("select-file",()=>{window.setTimeout(()=>{const te=(ne.getState().panels?.flatMap(oe=>oe.selected||[])||[]).map(oe=>ne.getFile(oe)).filter(Boolean).map(oe=>D(oe));p(te.map(oe=>oe.id),te)},0)})},Ke=(ne,ge)=>{const Re=ge?D(ge):null,te=()=>{const oe=Re?.type==="file"?String(ge?.parent||b.current):String(ge?.id||b.current);y.current?.exec("request-data",{id:oe})};return ne==="body"?[{id:"refresh",text:"Refresh",icon:"mdi mdi-refresh",handler:te},{id:"properties",text:"Properties",icon:"mdi mdi-information-outline",handler:()=>w("Select a file or folder to view its properties.")}]:ne==="multiselect"?[{id:"share",text:"Share to workstations",icon:"mdi mdi-share-variant",handler:()=>{(y.current?.getState().panels?.flatMap(Ae=>Ae.selected||[])||[]).forEach(Ae=>{const Ce=y.current?.getFile(Ae);Ce&&v(D(Ce))})}},{id:"refresh",text:"Refresh",icon:"mdi mdi-refresh",handler:te}]:Re?[{id:"share",text:"Share to workstations",icon:"mdi mdi-share-variant",handler:()=>v(Re)},...Re.type==="folder"?[{id:"sync",text:"Add folder to Sync",icon:"mdi mdi-folder-sync-outline",handler:()=>g(Re)}]:[],{id:"copy-path",text:"Copy path",icon:"mdi mdi-content-copy",handler:()=>{ar(Re.displayPath||Re.name)}},{id:"refresh",text:"Refresh",icon:"mdi mdi-refresh",handler:te},{id:"properties",text:"Properties",icon:"mdi mdi-information-outline",handler:()=>w(`${Re.name}
|
|
12
|
-
${Re.displayPath||""}`)}]:[]},De=async()=>{try{await c()}catch(ne){w(ne instanceof Error?ne.message:"Unable to refresh Hub drives.")}},Qe=[{id:"local",label:"Local drives",icon:pc,roots:a.filter(ne=>vd(ne)==="local")},{id:"removable",label:"Removable drives",icon:Xb,roots:a.filter(ne=>vd(ne)==="removable")},{id:"network",label:"Network drives",icon:jh,roots:a.filter(ne=>vd(ne)==="network")}];return l.jsxs("section",{className:"hub-file-explorer-panel","aria-label":"Hub file explorer",children:[l.jsxs("div",{className:"hub-file-explorer-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Hub file explorer"}),l.jsxs("strong",{children:[l.jsx(pc,{size:16})," Browse files on this Hub"]})]}),l.jsxs("div",{className:"hub-file-explorer-heading-actions",children:[l.jsx("button",{className:"icon-button",onClick:u,title:"Import files from this browser",type:"button",children:l.jsx(dy,{size:16})}),l.jsx("button",{className:"icon-button",onClick:m,title:"Import folder from this browser",type:"button",children:l.jsx(Zb,{size:16})}),l.jsx("button",{className:"icon-button",onClick:()=>{De()},title:"Refresh drives",type:"button",children:l.jsx(zc,{size:16})})]})]}),i?l.jsxs("div",{className:"hub-file-explorer-state",children:[l.jsx(pc,{size:24}),l.jsx("strong",{children:"Connecting to LiveDesk Hub file system..."})]}):r?l.jsxs("div",{className:"hub-file-explorer-state error",role:"alert",children:[l.jsx(Nc,{size:24}),l.jsx("strong",{children:r})]}):l.jsxs("div",{className:"hub-file-explorer-content",children:[l.jsxs("aside",{className:"hub-file-explorer-drive-sidebar","aria-label":"Hub drives",children:[l.jsxs("div",{className:"hub-drive-sidebar-title",children:[l.jsx(pc,{size:15}),l.jsx("strong",{children:"This PC"})]}),Qe.map(ne=>ne.roots.length>0&&l.jsxs("section",{className:"hub-drive-group",children:[l.jsxs("h3",{children:[l.jsx(ne.icon,{size:13}),ne.label]}),l.jsx("div",{className:"hub-drive-list",children:ne.roots.map(ge=>{const Re=ne.icon,te=le.has(ge.id)||ge.locked===!0;return l.jsxs("button",{className:`hub-drive-item ${T===ge.id?"active":""} ${te?"unavailable":""}`,onClick:()=>{ye(ge)},"aria-pressed":T===ge.id,type:"button",children:[l.jsx("span",{className:"hub-drive-item-icon",children:l.jsx(Re,{size:16})}),l.jsxs("span",{className:"hub-drive-item-copy",children:[l.jsx("strong",{children:ge.name}),l.jsx("small",{children:ge.displayPath||ge.name}),l.jsxs("em",{children:[Dx(ge.freeBytes||0)," free / ",Dx(ge.totalBytes||0)]})]}),_===ge.id?l.jsx(Sd,{className:"hub-drive-item-status spin",size:15}):te?l.jsx(Ev,{className:"hub-drive-item-status",size:15}):null]},ge.id)})})]},ne.id)),a.length===0&&l.jsxs("div",{className:"hub-drive-sidebar-empty",children:[l.jsx(Nc,{size:17}),l.jsx("span",{children:"No drives available."})]})]}),l.jsxs("div",{className:"hub-file-explorer-browser",children:[l.jsxs("div",{className:"hub-file-explorer-navigation",children:[l.jsx("nav",{className:"hub-file-explorer-breadcrumbs","aria-label":"Current Hub folder",children:R.map((ne,ge)=>l.jsxs("span",{className:"hub-file-explorer-breadcrumb-item",children:[ge>0&&l.jsx(kh,{size:13,"aria-hidden":"true"}),l.jsx("button",{className:`hub-file-explorer-breadcrumb ${ge===R.length-1?"current":""}`,onClick:()=>be(ge),"aria-current":ge===R.length-1?"location":void 0,type:"button",children:ne.name})]},ne.svarPath))}),l.jsxs("div",{className:"hub-file-explorer-navigation-actions",children:[G&&l.jsx(Sd,{className:"hub-file-explorer-loading-icon spin",size:15,"aria-label":"Loading folder"}),l.jsx("button",{className:"icon-button",onClick:Ne,disabled:R.length<=1||G,title:"Back to parent folder",type:"button",children:l.jsx(Jb,{size:16})})]})]}),Y&&l.jsxs("div",{className:"hub-file-explorer-folder-error",role:"alert",children:[l.jsx(Ev,{size:15}),l.jsx("span",{children:Y})]}),l.jsx("div",{className:"hub-file-explorer-svar",onKeyDownCapture:Ie,children:l.jsx(ik,{fonts:!1,children:l.jsx(lk,{data:ie,panels:Q?[{path:Q,selected:[]}]:void 0,readonly:!0,mode:"table",preview:!1,init:re,icons:"simple",menuOptions:Ke},`${z?.id||"no-root"}:${q}`)})})]})]})]})}class bk extends f.Component{state={error:null};static getDerivedStateFromError(a){return{error:a}}componentDidCatch(a,i){console.error("[LiveDesk] Share Files runtime error",a,i.componentStack)}render(){return this.state.error?l.jsxs("section",{className:"file-share-error-boundary",role:"alert",children:[l.jsx(Ld,{size:24}),l.jsx("strong",{children:"Share Files could not be opened."}),l.jsx("span",{children:this.state.error.message||"An unexpected file explorer error occurred."}),l.jsxs("button",{className:"text-button",onClick:this.props.onRetry,type:"button",children:[l.jsx(zc,{size:15})," Retry"]})]}):this.props.children}}function Sk(n){return n.deviceName||n.hostname||n.deviceId}function Ck({devices:n,mode:a,selectedIds:i,onModeChange:r,onToggle:c}){const u=new Set(i);return l.jsxs("section",{className:"distribution-targets",children:[l.jsxs("div",{className:"file-share-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Target"}),l.jsx("strong",{children:a==="all"?`${n.length} connected`:`${i.length} selected`})]}),l.jsxs("div",{className:"file-share-tabs compact","aria-label":"File transfer targets",children:[l.jsxs("button",{className:a==="all"?"active":"",onClick:()=>r("all"),type:"button",children:[l.jsx(fy,{size:14})," All connected"]}),l.jsxs("button",{className:a==="selected"?"active":"",onClick:()=>r("selected"),type:"button",children:[l.jsx(en,{size:14})," Selected"]})]})]}),l.jsx("div",{className:"file-share-device-list","aria-label":"Connected workstation targets",children:n.length===0?l.jsx("div",{className:"file-share-empty-inline",children:"No connected workstations."}):n.map(m=>{const p=a==="all"||u.has(m.deviceId);return l.jsxs("label",{className:`file-share-device-option ${p?"selected":""}`,children:[l.jsx("input",{type:"checkbox",checked:p,disabled:a==="all",onChange:()=>c(m.deviceId)}),l.jsx(en,{size:20,"aria-hidden":"true"}),l.jsxs("span",{children:[l.jsx("strong",{children:Sk(m)}),l.jsxs("small",{children:["Slot ",m.slotNumber?String(m.slotNumber).padStart(3,"0"):"-"," / ",m.platform||"unknown OS"]})]}),l.jsx(In,{size:17,"aria-hidden":"true"})]},m.deviceId)})})]})}function jk(n){if(!Number.isFinite(n)||n<=0)return"0 B";const a=["B","KB","MB","GB","TB"];let i=n,r=0;for(;i>=1024&&r<a.length-1;)i/=1024,r+=1;return`${i.toFixed(r===0||i>=100?0:1)} ${a[r]}`}function kk({folders:n,loading:a,busy:i,canSync:r,onSyncAll:c,onSync:u,onToggleAuto:m,onRemove:p,onAdd:v}){return l.jsxs("section",{className:"file-share-sync-panel",children:[l.jsxs("div",{className:"file-share-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Hub folders"}),l.jsx("strong",{children:"Continuous sync"})]}),l.jsxs("button",{className:"text-button compact",onClick:c,disabled:i||!r||n.length===0,type:"button",children:[l.jsx(fd,{size:15})," ",i?"Syncing":"Sync all"]})]}),a?l.jsx("div",{className:"file-share-empty-state",children:"Loading Hub sync folders..."}):n.length===0?l.jsxs("button",{className:"file-share-empty-state interactive",onClick:v,type:"button",children:[l.jsx(fd,{size:28}),l.jsx("strong",{children:"Add a selected Hub folder"}),l.jsx("span",{children:"Hub keeps the manifest and can sync while this browser is closed."})]}):l.jsx("div",{className:"file-share-sync-list",children:n.map(g=>l.jsxs("article",{className:`file-share-sync-row state-${g.status}`,children:[l.jsx("div",{className:"file-share-sync-icon",children:l.jsx(fd,{size:19})}),l.jsxs("div",{className:"file-share-sync-info",children:[l.jsx("strong",{children:g.name}),l.jsx("span",{children:g.displayPath}),l.jsxs("small",{children:[g.fileCount," files / ",jk(g.totalBytes)," · ",g.lastSyncedAt?`Last sync ${rh(g.lastSyncedAt)} ago`:g.message||"Not synced yet"]})]}),l.jsxs("label",{className:"file-share-auto-sync",children:[l.jsx("input",{type:"checkbox",checked:g.autoSync,onChange:()=>m(g)}),l.jsx("span",{children:"Auto"})]}),l.jsxs("button",{className:"text-button compact",onClick:()=>u(g),disabled:i||!r||g.status==="syncing",type:"button",children:[l.jsx(zc,{size:14})," Sync now"]}),l.jsx("button",{className:"icon-button",onClick:()=>p(g),title:"Remove sync folder",type:"button",children:l.jsx(Sh,{size:15})})]},g.id))})]})}function Ak(n){const i=(n.targetMode==="all"?n.devices.map(r=>r.deviceId):n.selectedTargetIds).length>0;return l.jsxs("aside",{className:"file-share-distribution-panel",children:[l.jsxs("div",{className:"file-share-distribution-head",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Distribution"}),l.jsx("strong",{children:"Hub → workstations"})]}),l.jsx(Cd,{size:18})]}),l.jsxs("div",{className:"file-share-tabs",role:"tablist","aria-label":"Distribution mode",children:[l.jsx("button",{className:n.tab==="send"?"active":"",onClick:()=>n.onTabChange("send"),role:"tab","aria-selected":n.tab==="send",type:"button",children:"Send"}),l.jsx("button",{className:n.tab==="sync"?"active":"",onClick:()=>n.onTabChange("sync"),role:"tab","aria-selected":n.tab==="sync",type:"button",children:"Sync"})]}),n.tab==="send"?l.jsxs(l.Fragment,{children:[l.jsx(Ck,{devices:n.devices,mode:n.targetMode,selectedIds:n.selectedTargetIds,onModeChange:n.onTargetModeChange,onToggle:n.onTargetToggle}),l.jsxs("label",{className:"file-share-destination",children:[l.jsx("span",{children:"Destination folder"}),l.jsxs("div",{children:[l.jsx(lo,{size:15}),l.jsx("input",{value:n.remoteDirectory,onChange:r=>n.onRemoteDirectoryChange(r.target.value),placeholder:"Desktop/LiveDeskFiles"})]}),l.jsx("small",{children:"Blank uses Desktop/LiveDeskFiles."})]}),l.jsxs("div",{className:"file-share-selection-summary",children:[l.jsx("span",{children:"Selected"}),l.jsx("strong",{children:n.selectedSummary})]}),l.jsxs("button",{className:"file-share-share-button",onClick:n.onShare,disabled:!n.canShare,type:"button",children:[l.jsx(Cd,{size:17})," Share selected"]}),l.jsxs("button",{className:"file-share-secondary-button",onClick:n.onAddSync,disabled:!n.canAddSync,type:"button",children:[l.jsx(lo,{size:16})," Add selected folder to Sync"]})]}):l.jsx(kk,{folders:n.folders,loading:n.foldersLoading,busy:n.syncBusy,canSync:i,onSyncAll:n.onSyncAll,onSync:n.onSync,onToggleAuto:n.onToggleAuto,onRemove:n.onRemove,onAdd:n.onAddFolder})]})}function Mk(n){if(!Number.isFinite(n)||n<=0)return"0 B";const a=["B","KB","MB","GB","TB"];let i=n,r=0;for(;i>=1024&&r<a.length-1;)i/=1024,r+=1;return`${i.toFixed(r===0||i>=100?0:1)} ${a[r]}`}function Lx(n){return n.totalBytes>0?Math.max(0,Math.min(100,Math.round(n.sentBytes/n.totalBytes*100))):n.totalFiles>0?Math.max(0,Math.min(100,Math.round(n.completedFiles/n.totalFiles*100))):n.state==="completed"?100:0}function _x(n){return n.state==="scanning"?"Scanning selected Hub items":n.state==="queued"?"Preparing transfer":n.state==="sending"?`${n.completedFiles}/${n.totalFiles} · ${n.currentPath||"sending"}`:n.state==="completed"?`Sent ${n.totalFiles} file${n.totalFiles===1?"":"s"} to ${n.targetCount} workstation${n.targetCount===1?"":"s"}`:n.state==="partially-failed"?`${n.failedTargets.length} workstation${n.failedTargets.length===1?"":"s"} failed`:n.state==="cancelled"?"Transfer cancelled":n.error||"Transfer failed"}function zx(n){return["completed","partially-failed","failed","cancelled"].includes(n)}function Nk({hubUrl:n,devices:a,localFeatureAccess:i,upgradeNotice:r,remoteDirectory:c,onRemoteDirectoryChange:u,targetMode:m,selectedTargetIds:p,onTargetModeChange:v,onTargetToggle:g,filePickerRef:w,folderPickerRef:y,onBrowserFileImport:b,onBrowserFolderImport:C,onNotice:k,onTransferChange:A}){const T=Array.isArray(a)?a:[],[j,R]=f.useState([]),[E,H]=f.useState(!0),[F,q]=f.useState(""),[I,_]=f.useState([]),[fe,G]=f.useState([]),[ue,Y]=f.useState(null),[ae,le]=f.useState(!1),[V,z]=f.useState([]),[K,Q]=f.useState(!0),[P,ie]=f.useState(!1),[Se,D]=f.useState("send"),[Z,ye]=f.useState([]),be=f.useRef(new Set),de=f.useMemo(()=>m==="all"?T.map(me=>me.deviceId):p.filter(me=>T.some(He=>He.deviceId===me)),[T,p,m]),Ne=Z.find(me=>!zx(me.state)),Ie=fe.length===1&&fe[0].type==="folder"?fe[0]:null,re=fe.length===0?"Select files or folders from the Hub explorer.":ae?"Calculating selection size...":ue?`${ue.files} files, ${ue.folders} folders · ${Mk(ue.totalBytes)}`:`${fe.length} item${fe.length===1?"":"s"} selected`,Ke=me=>{A({id:me.jobId,state:me.state,progress:Lx(me),message:_x(me)})},De=f.useCallback(async()=>{const me=await ok(n,!0);return R(me),q(""),me},[n]),Qe=async()=>{try{const He=(await dk(n,!0)).jobs||[],_e=await Promise.all([...be.current].map(async gn=>{try{return await fk(gn,n)}catch{return null}})),Ge=[...He,..._e.filter(Boolean)],aa=[...new Map(Ge.map(gn=>[gn.jobId,gn])).values()];ye(aa),aa.forEach(Ke),aa.filter(gn=>zx(gn.state)).forEach(gn=>be.current.delete(gn.jobId))}catch{}};f.useEffect(()=>{let me=!0;H(!0),q(""),Promise.all([De(),Ex(n).then(_e=>{me&&z(_e)})]).catch(_e=>{me&&(q(_e instanceof Error?"Hub file system is unavailable. Make sure LiveDesk Hub is running on this computer.":"Hub file system is unavailable."),k(_e instanceof Error?_e.message:"Hub file system is unavailable."))}).finally(()=>{me&&(H(!1),Q(!1))}),Qe();const He=window.setInterval(()=>{Qe()},800);return()=>{me=!1,window.clearInterval(He)}},[n,De]),f.useEffect(()=>{if(I.length===0){Y(null);return}let me=!1;return le(!0),ck(I,n).then(He=>{me||Y(He)}).catch(He=>{me||k(He instanceof Error?He.message:"Unable to calculate selected size.")}).finally(()=>{me||le(!1)}),()=>{me=!0}},[n,I.join("|")]);const ne=(me,He)=>{_(me),G(He)},ge=me=>{me.forEach(He=>be.current.add(He.jobId)),ye(He=>[...new Map([...He,...me].map(_e=>[_e.jobId,_e])).values()]),me.forEach(Ke)},Re=async()=>{if(!i){k(r);return}if(I.length===0){k("Select files or folders from the Hub explorer.");return}if(de.length===0){k("Choose at least one connected workstation.");return}if(Ne){k("A Hub transfer is already running.");return}try{const me=await uk(I,de,c.trim(),n);be.current.add(me.jobId),k("Hub transfer queued."),await Qe()}catch(me){k(me instanceof Error?me.message:"Unable to start Hub transfer.")}},te=async me=>{const He=me||Ie;if(!He||He.type!=="folder"){k("Select one folder to add it to Sync.");return}try{const _e=await hk(He.id,n);z(Ge=>[...Ge.filter(aa=>aa.id!==_e.folder.id),_e.folder]),D("sync"),k(`${He.name} is ready for Hub sync.`)}catch(_e){k(_e instanceof Error?_e.message:"Unable to add the Hub folder to Sync.")}},oe=async me=>{if(de.length===0){k("Choose at least one connected workstation.");return}ie(!0),z(He=>He.map(_e=>_e.id===me.id?{..._e,status:"syncing"}:_e));try{const He=await vk(me.id,de,c.trim(),n);ge(He.jobs||[]),k(He.jobs?.length?"Hub sync queued.":"No changed files to sync.");const _e=await Ex(n);z(_e)}catch(He){k(He instanceof Error?He.message:"Unable to sync the Hub folder."),z(_e=>_e.map(Ge=>Ge.id===me.id?{...Ge,status:"error",message:"Sync failed"}:Ge))}finally{ie(!1)}},Ae=async()=>{ie(!0);try{for(const me of V)await oe(me)}finally{ie(!1)}},Ce=async me=>{try{const He=await pk(me.id,{autoSync:!me.autoSync},n);z(_e=>_e.map(Ge=>Ge.id===me.id?He.folder:Ge))}catch(He){k(He instanceof Error?He.message:"Unable to update auto sync.")}},st=async me=>{try{await gk(me.id,n),z(He=>He.filter(_e=>_e.id!==me.id))}catch(He){k(He instanceof Error?He.message:"Unable to remove the sync folder.")}};return l.jsxs("section",{className:"livedesk-file-explorer",children:[l.jsx("input",{ref:w,className:"hidden-file-input",type:"file",multiple:!0,onChange:me=>{me.currentTarget.files&&b(me.currentTarget.files),me.currentTarget.value=""}}),l.jsx("input",{ref:y,className:"hidden-file-input",type:"file",multiple:!0,webkitdirectory:"",directory:"",onChange:me=>{me.currentTarget.files&&C(me.currentTarget.files),me.currentTarget.value=""}}),l.jsx("div",{className:"file-share-workspace",children:l.jsxs(bk,{onRetry:()=>window.location.reload(),children:[l.jsx(wk,{hubUrl:n,roots:j,loading:E,error:F,onRefreshRoots:De,onImportFiles:()=>w.current?.click(),onImportFolder:()=>y.current?.click(),onSelectionChange:ne,onShareItem:me=>{_([me.id]),G([me]),D("send")},onAddSyncFolder:me=>{_([me.id]),G([me]),te(me)},onNotice:k}),l.jsx(Ak,{devices:T,targetMode:m,selectedTargetIds:p,onTargetModeChange:v,onTargetToggle:g,remoteDirectory:c,onRemoteDirectoryChange:u,selectedEntries:fe,selectedSummary:re,canShare:i&&!Ne&&I.length>0&&de.length>0&&!ae,onShare:()=>{Re()},canAddSync:!!Ie,onAddSync:()=>{te()},tab:Se,onTabChange:D,folders:V,foldersLoading:K,syncBusy:P,onSyncAll:()=>{Ae()},onSync:me=>{oe(me)},onToggleAuto:me=>{Ce(me)},onRemove:me=>{st(me)},onAddFolder:()=>{te()}})]})}),Ne&&l.jsx("footer",{className:"file-share-workspace-footer",children:l.jsxs("span",{children:[_x(Ne)," · ",Lx(Ne),"% ",l.jsx("button",{className:"icon-button",onClick:()=>{mk(Ne.jobId,n).then(me=>{ye(He=>He.map(_e=>_e.jobId===me.jobId?me:_e)),Ke(me)})},title:"Cancel transfer",type:"button",children:l.jsx(rr,{size:14})})]})})]})}const Tk=f.forwardRef(function({value:a,onChange:i,onSubmit:r,onOpenSuggestedTasks:c,suggestedOpen:u=!1,suggestedTaskCount:m,disabled:p=!1},v){return l.jsxs("form",{className:"agents-composer",onSubmit:g=>{g.preventDefault(),r()},children:[l.jsxs("button",{className:`agents-suggested-trigger ${u?"active":""}`,type:"button","aria-label":m===void 0?"Open Suggested tasks":`Open Suggested tasks (${m} available)`,"aria-expanded":u,onClick:c,disabled:p,children:[l.jsx(eS,{size:17}),m!==void 0&&l.jsx("span",{className:"agents-suggested-count","aria-hidden":"true",children:m})]}),l.jsx("textarea",{ref:v,value:a,onChange:g=>i(g.target.value.slice(0,4e3)),placeholder:"Ask LiveDesk to work across your machines...","aria-label":"Ask LiveDesk",rows:2,disabled:p}),l.jsxs("button",{className:"agents-run-button",type:"submit",disabled:p||!a.trim(),children:[p?l.jsx(Sd,{className:"spin",size:16}):l.jsx(Cd,{size:16}),p?"Running":"Run"]})]})}),Rk=["read","processControl","serviceControl","applicationControl","fileRead","fileWrite","fileDelete","shell","script","softwareInstall","network","systemPower","systemConfiguration","userAccount"];function dw(n){return n.deviceName?.trim()||n.hostname?.trim()||n.deviceId}function Ek(n){return n==="running"||n==="completed"||n==="failed"||n==="cancelled"?n:"queued"}function Dk(n){switch(n){case"process.list":return"Process list";case"system.health":return"System health";case"gpu.status":return"GPU status";case"disk.status":return"Disk status";case"service.status":return"Service status";case"diagnostics.collect":return"Diagnostics";case"process.control":return"Process control";case"service.control":return"Service control";case"application.launch":return"Launch application";case"application.close":return"Close application";case"file.read":return"Read file";case"file.write":return"Write file";case"file.delete":return"Delete file";case"file.list":return"List directory";case"command.run":return"Run command";case"script.run":return"Run script";case"software.install":return"Install software";case"network.status":return"Network status";case"system.power":return"Power action";case"system.configure":return"System configuration";case"logs.collect":return"Collect logs"}}function Lk(n){const a=n.match(/\[([^\]]+)\]/)?.[1]?.trim();if(a)return a;if(n.includes("comfyui"))return"comfyui";if(n.includes("ollama"))return"ollama";const i=n.match(/process(?:\s+(?:named|called))?\s+([a-z0-9._-]+)/i)?.[1];return i&&!["is","running","process"].includes(i)?i:void 0}function _k(n){const a=n.trim().toLowerCase();return!a||/(stop|restart|kill|terminate|start|launch|close|delete|write|edit|run command|execute|install|shutdown|reboot|sleep|power|file|folder|script|application)/i.test(a)?null:/(process|프로세스|실행 중|실행중|comfyui|running|processes)/i.test(a)?{operation:"process.list",query:Lk(a)}:/(gpu|그래픽|vram|gpu 상태)/i.test(a)?{operation:"gpu.status"}:/(disk|디스크|storage|저장 공간)/i.test(a)?{operation:"disk.status"}:/(service|서비스)/i.test(a)?{operation:"service.status"}:/(diagnostic|진단|로그)/i.test(a)?{operation:"diagnostics.collect"}:/(health|system|시스템|상태)/i.test(a)?{operation:"system.health"}:null}const zk=["이 작업은 아직 지원되지 않습니다.","","현재 지원:","• 시스템 상태 확인","• GPU 상태 확인","• 디스크 상태 확인","• 프로세스 조회","• 서비스 상태 조회","• 진단 로그 수집"].join(`
|
|
13
|
-
`);function Ok(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:null}function Ma(n){return typeof n=="number"&&Number.isFinite(n)?n:null}function id(n){const a=Ma(n);return a===null?"":a<1024**2?`${Math.round(a/1024)}K`:a<1024**3?`${(a/1024**2).toFixed(0)}M`:`${(a/1024**3).toFixed(1)}G`}function Ik(n){const a=Ma(n);return a===null?"":`${Math.round((a<=1?a:a/100)*100)}%`}function Bk(n){return!n||/^(?:[\w .-]+ )?collected(?:\.)?$/i.test(n.trim())?"":n.trim()}function Ed(n,a){if(a.error)return a.error;const i=Ok(a.data),r=Bk(a.result||"");if(!i)return r||a.stage||a.status;if(n==="system.health"){const c=typeof i.machine=="string"?i.machine:"",u=id(i.freeMemoryBytes),m=id(i.totalMemoryBytes),p=Ma(i.totalMemoryBytes)&&Ma(i.freeMemoryBytes)!==null?`${Math.round(Ma(i.freeMemoryBytes)/Ma(i.totalMemoryBytes)*100)}% RAM free`:"";return[c,u&&m?`RAM ${u}/${m}`:"",p,typeof i.platform=="string"?i.platform:""].filter(Boolean).join(" · ")||r||a.status}if(n==="disk.status"){const c=typeof i.root=="string"?i.root:"",u=id(i.freeBytes),m=Ma(i.totalBytes)&&Ma(i.freeBytes)!==null?`${Math.round(Ma(i.freeBytes)/Ma(i.totalBytes)*100)}% free`:"";return[c,u&&`${u} free`,m].filter(Boolean).join(" · ")||r||a.status}if(n==="gpu.status"){const c=typeof i.name=="string"&&i.name?i.name:"No GPU provider",u=Ik(i.usageRatio),m=Ma(i.temperatureC)!==null?`${Math.round(Ma(i.temperatureC))}°C`:"",p=id(i.freeMemoryBytes);return[c,u&&`GPU ${u}`,m,p&&`${p} free`].filter(Boolean).join(" · ")||r||a.status}if(n==="process.list"){const c=Ma(i.count);return c!==null?`${c} matching process${c===1?"":"es"}`:r||a.status}if(n==="network.status"){const c=Array.isArray(i.adapters)?i.adapters.length:null;return c!==null?`${c} active adapter${c===1?"":"s"}`:r||a.status}return r||a.stage||a.status}function Ox(n,a){const i=Ed(n,a);return a.status==="failed"||a.status==="cancelled"||/\b(?:warning|failed|error|offline|not running|low|timeout|timed out)\b/i.test(`${a.result||""} ${i}`)}function Fk({state:n,operation:a}){const i=n.status==="completed"?Rc:n.status==="failed"||n.status==="cancelled"?rr:n.status==="running"?Sd:my,r=n.status==="running"?n.stage||"Working":n.status==="completed"?a?Ed(a,n):n.result||"Completed":n.status==="failed"?n.error||"Failed":n.status==="cancelled"?"Cancelled":"Queued";return l.jsxs("div",{className:`agent-target-row status-${n.status}`,"data-agent-target-id":n.deviceId,children:[l.jsx("span",{className:"agent-target-status","aria-hidden":"true",children:l.jsx(i,{size:15})}),l.jsx("strong",{children:n.deviceName}),l.jsx("span",{className:"agent-target-state",children:n.status[0].toUpperCase()+n.status.slice(1)}),l.jsx("small",{children:r})]})}function Hk({operation:n,states:a,status:i,onCancel:r,onRetry:c,busy:u=!1}){const m=["running","queued"].includes(i),[p,v]=f.useState(!1),[g,w]=f.useState("all"),y=f.useMemo(()=>({total:a.length,completed:a.filter(E=>E.status==="completed").length,failed:a.filter(E=>E.status==="failed").length,running:a.filter(E=>E.status==="running").length,queued:a.filter(E=>E.status==="queued").length,cancelled:a.filter(E=>E.status==="cancelled").length}),[a]),b=a.filter(E=>Ox(n,E)),C=b.filter(E=>E.status==="completed").length,k=y.failed>0,A=b.length>0,T=a.filter(E=>g==="issues"?Ox(n,E):g==="running"?E.status==="running"||E.status==="queued":g==="completed"?E.status==="completed":g==="failed"?E.status==="failed":!0),j=A&&!m||i==="completed-with-failures"?"Completed with issues":i[0]?.toUpperCase()+i.slice(1),R=a.filter(E=>E.status==="completed").map(E=>Ed(n,E)).filter(Boolean).filter((E,H,F)=>F.indexOf(E)===H).slice(0,2);return l.jsxs("section",{className:"agent-task-block","aria-label":"Task execution",children:[l.jsxs("div",{className:"agent-task-head",children:[l.jsxs("div",{children:[l.jsx("span",{children:"LiveDesk Agent"}),l.jsx("strong",{children:Dk(n)})]}),l.jsx("span",{className:`agent-task-status status-${A?"completed-with-failures":i}`,children:j})]}),l.jsxs("div",{className:"agent-task-summary","aria-label":"Task summary",children:[l.jsxs("strong",{children:[y.total," targets"]}),l.jsxs("span",{className:"summary-completed",children:[y.completed," completed"]}),y.running>0&&l.jsxs("span",{className:"summary-running",children:[y.running," running"]}),y.queued>0&&l.jsxs("span",{children:[y.queued," queued"]}),k&&l.jsxs("span",{className:"summary-failed",children:[y.failed," failed"]}),C>0&&l.jsxs("span",{className:"summary-cancelled",children:[C," warning"]}),y.cancelled>0&&l.jsxs("span",{className:"summary-cancelled",children:[y.cancelled," cancelled"]})]}),R.length>0&&l.jsxs("div",{className:"agent-task-result-preview",title:R.join(" · "),children:[l.jsx("span",{children:"Result"}),R.join(" · ")]}),l.jsx("div",{className:"agent-target-chips","aria-label":"Target status overview",children:a.map((E,H)=>{const F=E.status==="completed"?"✓":E.status==="failed"?"×":E.status==="cancelled"?"!":E.status==="running"?"…":"·";return l.jsxs("span",{className:`agent-target-chip status-${E.status}`,title:`${E.deviceName}: ${Ed(n,E)}`,"aria-label":`${H+1}. ${E.deviceName}: ${E.status}`,children:[l.jsx("b",{children:String(H+1).padStart(2,"0")}),l.jsx("span",{children:F})]},E.deviceId)})}),a.length>0&&l.jsx("div",{className:"agent-task-details-toggle",children:l.jsxs("button",{type:"button",onClick:()=>v(E=>!E),"aria-expanded":p,children:[p?l.jsx(tS,{size:14}):l.jsx(hy,{size:14}),p?"Hide details":"Show details"]})}),p&&l.jsxs("div",{className:"agent-task-details",children:[l.jsx("div",{className:"agent-task-filters",role:"tablist","aria-label":"Task result filter",children:["all","issues","running","completed","failed"].map(E=>l.jsx("button",{className:g===E?"active":"",onClick:()=>w(E),role:"tab","aria-selected":g===E,type:"button",children:E==="all"?"All":E==="issues"?"Issues only":E[0].toUpperCase()+E.slice(1)},E))}),l.jsx("div",{className:"agent-task-rows",children:T.length>0?T.map(E=>l.jsx(Fk,{operation:n,state:E},E.deviceId)):l.jsx("small",{className:"agent-task-no-results",children:"No targets match this filter."})})]}),(m||k)&&l.jsxs("div",{className:"agent-task-actions",children:[m&&r&&l.jsxs("button",{onClick:r,disabled:u,type:"button",children:[l.jsx(nS,{size:14})," Cancel"]}),!m&&k&&c&&l.jsxs("button",{onClick:c,disabled:u,type:"button",children:[l.jsx(Sc,{size:14})," Retry failed"]})]})]})}function $k(n){try{return JSON.stringify(n,null,2).slice(0,6e3)}catch{return"{}"}}function Uk({approval:n,busy:a=!1,onApprove:i,onReject:r}){return l.jsxs("article",{className:"agent-approval-card","aria-label":"Agent approval required",children:[l.jsxs("div",{className:"agent-approval-head",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Approval required"}),l.jsx("strong",{children:n.toolName})]}),l.jsx("span",{className:`agent-approval-risk risk-${n.risk}`,children:n.risk})]}),l.jsx("p",{children:n.description}),l.jsx("pre",{children:$k(n.arguments)}),l.jsxs("small",{children:["Permission: ",n.permissionMode," · Scope: selected devices only · Expires in 5 minutes"]}),l.jsxs("div",{className:"agent-approval-actions",children:[l.jsxs("button",{className:"reject",disabled:a,onClick:r,type:"button",children:[l.jsx(rr,{size:14})," Reject"]}),l.jsxs("button",{disabled:a,onClick:()=>i("once"),type:"button",children:[l.jsx(Rc,{size:14})," Once"]}),l.jsx("button",{disabled:a,onClick:()=>i("same-action-this-run"),type:"button",children:"Allow same action"}),l.jsx("button",{disabled:a,onClick:()=>i("category-this-run"),type:"button",children:"Allow category"})]}),l.jsxs("div",{className:"agent-approval-scope",children:[l.jsx(Ld,{size:13})," Approval is bound to this run, tool, arguments, selected devices, and policy hash."]})]})}function Pk({items:n,onCancel:a,onRetry:i,busyBatchId:r,approvals:c,onApprove:u,onReject:m,busyApprovalId:p}){return l.jsxs("section",{className:"agents-conversation","aria-live":"polite",children:[c.filter(v=>v.status==="pending").map(v=>l.jsx(Uk,{approval:v,busy:p===v.approvalId,onApprove:g=>u(v,g),onReject:()=>m(v)},v.approvalId)),n.length===0&&l.jsxs("div",{className:"agents-empty-conversation",children:[l.jsx("strong",{children:"Ask LiveDesk to work across your machines."}),l.jsx("span",{children:"Start with a read-only request such as “모든 PC에서 ComfyUI가 실행 중인지 확인해줘”."})]}),n.map(v=>{if(v.type==="task"){const g=v;return l.jsx(Hk,{operation:g.operation,states:g.states,status:g.status,onCancel:()=>a(g.batchId,g.agentRunId),onRetry:()=>i(g.batchId),busy:r===g.batchId},g.id)}return l.jsxs("article",{className:`agents-message ${v.type}`,children:[l.jsx("span",{children:v.type==="user"?"You":"LiveDesk Agent"}),l.jsx("p",{children:v.text})]},v.id)})]})}const Ix=["Recommended","Health & capacity","Processes & services","AI workloads","Files & configuration","Software & automation","Network & connectivity","Power & maintenance","Troubleshooting & recovery"],Jt=["windows","macos","linux"],xi={"system.health":{label:"system health",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Jt},"gpu.status":{label:"GPU status",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Jt},"disk.status":{label:"disk status",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Jt},"process.list":{label:"process inspection",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Jt},"service.status":{label:"service inspection",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Jt},"diagnostics.collect":{label:"diagnostics collection",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Jt},"process.control":{label:"process control",permissionCategory:"processControl",readOnly:!1,risk:"high",supportedPlatforms:Jt},"service.control":{label:"service control",permissionCategory:"serviceControl",readOnly:!1,risk:"high",supportedPlatforms:["windows","linux"]},"application.launch":{label:"application launch",permissionCategory:"applicationControl",readOnly:!1,risk:"medium",supportedPlatforms:Jt},"application.close":{label:"application close",permissionCategory:"applicationControl",readOnly:!1,risk:"medium",supportedPlatforms:Jt},"file.read":{label:"file reading",permissionCategory:"fileRead",readOnly:!0,risk:"low",supportedPlatforms:Jt},"file.write":{label:"file writing",permissionCategory:"fileWrite",readOnly:!1,risk:"high",supportedPlatforms:Jt},"file.delete":{label:"file deletion",permissionCategory:"fileDelete",readOnly:!1,risk:"critical",supportedPlatforms:Jt},"file.list":{label:"directory listing",permissionCategory:"fileRead",readOnly:!0,risk:"low",supportedPlatforms:Jt},"command.run":{label:"command execution",permissionCategory:"shell",readOnly:!1,risk:"critical",supportedPlatforms:Jt},"script.run":{label:"script execution",permissionCategory:"script",readOnly:!1,risk:"high",supportedPlatforms:Jt},"software.install":{label:"software installation",permissionCategory:"softwareInstall",readOnly:!1,risk:"high",supportedPlatforms:Jt},"network.status":{label:"network inspection",permissionCategory:"network",readOnly:!0,risk:"low",supportedPlatforms:Jt},"system.power":{label:"power control",permissionCategory:"systemPower",readOnly:!1,risk:"critical",supportedPlatforms:Jt},"system.configure":{label:"system configuration",permissionCategory:"systemConfiguration",readOnly:!1,risk:"critical",supportedPlatforms:Jt},"logs.collect":{label:"log collection",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Jt}};new Set(Object.keys(xi));const qk={Recommended:["recommended","overview","fleet","요약","추천"],"Health & capacity":["health","capacity","performance","상태","성능","용량"],"Processes & services":["process","service","application","프로세스","서비스","앱"],"AI workloads":["ai","gpu","comfyui","ollama","인공지능","모델"],"Files & configuration":["file","config","directory","파일","설정","폴더"],"Software & automation":["software","install","automation","프로그램","설치","자동화"],"Network & connectivity":["network","connection","adapter","네트워크","연결","어댑터"],"Power & maintenance":["power","maintenance","restart","전원","유지보수","재시작"],"Troubleshooting & recovery":["troubleshooting","recovery","incident","문제해결","복구","장애"]},Bx=["low","medium","high","critical"];function Gk(n){return n.reduce((a,i)=>{const r=xi[i].risk;return Bx.indexOf(r)>Bx.indexOf(a)?r:a},"low")}function Vk(n){return Jt.filter(a=>n.every(i=>xi[i].supportedPlatforms.includes(a)))}function ze(n,a,i,r,c,u,m={}){const p=m.description||r,v=c.flatMap(w=>w.split(".")),g=[...new Set([...qk[a],...u,...v])];return{id:n,category:a,title:i,prompt:r,description:p,requiredOperations:c,risk:m.risk||Gk(c),targetSupport:m.targetSupport||"single-or-multiple",supportedPlatforms:m.supportedPlatforms||Vk(c),keywords:g,recommended:m.recommended??!1,enabled:!0}}const fw=[ze("recommended-fleet-health","Recommended","Summarize current target health","Summarize system health, GPU, and disk capacity for the current target workstations.",["system.health","gpu.status","disk.status"],["summary","overview"],{recommended:!0}),ze("recommended-attention","Recommended","Find targets needing attention","Identify current targets with high resource use, low disk space, or service warnings.",["system.health","disk.status","service.status"],["attention","warning","monitor"],{recommended:!0}),ze("recommended-performance-compare","Recommended","Compare selected performance","Compare CPU, memory, disk, and GPU capacity across the current targets.",["system.health","disk.status","gpu.status"],["compare","benchmark"],{recommended:!0}),ze("recommended-gpu-vram","Recommended","Review GPU and VRAM availability","Show GPU temperature, utilization, and VRAM availability for the current targets.",["gpu.status"],["graphics","temperature","utilization"],{recommended:!0}),ze("recommended-low-disk","Recommended","Locate low disk capacity","Find current targets with low free disk capacity and report the affected volumes.",["disk.status"],["storage","free space","capacity"],{recommended:!0}),ze("recommended-ai-workers","Recommended","Verify ComfyUI and Ollama workers","Check whether ComfyUI and Ollama workers and their services are available on the current targets.",["process.list","service.status"],["comfyui","ollama","worker"],{recommended:!0}),ze("recommended-recover-ai","Recommended","Recover stopped AI workers","Find stopped AI workers and relaunch the registered worker application or service on the target workstation.",["process.list","application.launch","service.control"],["recover","start","ai worker"],{targetSupport:"single",recommended:!0}),ze("recommended-incident-diagnostics","Recommended","Collect an incident diagnostic bundle","Collect health, service, network, and recent log diagnostics for the current targets.",["diagnostics.collect","logs.collect","system.health","network.status"],["incident","report","evidence"],{recommended:!0}),ze("health-cpu-memory","Health & capacity","Check high CPU and memory use","Find current targets with unusually high CPU or memory usage.",["system.health"],["cpu","memory","load","높은 사용량"]),ze("health-uptime","Health & capacity","Review workstation uptime","Show uptime, boot time, and current system health for the target workstations.",["system.health"],["uptime","boot","가동시간"]),ze("health-gpu-temperature","Health & capacity","Check GPU temperature","Check GPU temperature and thermal warnings on the current targets.",["gpu.status"],["thermal","temperature","발열"]),ze("health-vram-usage","Health & capacity","Check VRAM usage","Report GPU memory usage and remaining VRAM on the current targets.",["gpu.status"],["vram","gpu memory","video memory"]),ze("health-low-disk","Health & capacity","Find low disk space","Find volumes below a safe free-space threshold on the current targets.",["disk.status"],["disk","storage","free space","디스크"]),ze("health-gpu-compare","Health & capacity","Compare GPU capacity","Compare GPU model, memory, temperature, and utilization across the current targets.",["gpu.status"],["compare","graphics","capacity"]),ze("health-system-warnings","Health & capacity","Collect system warnings","Review health, disk, and network status for warnings that need attention.",["system.health","disk.status","network.status"],["warnings","alerts","경고"]),ze("health-capacity-report","Health & capacity","Build a capacity report","Create a concise capacity report covering CPU, memory, GPU, disk, and network status.",["system.health","gpu.status","disk.status","network.status"],["report","capacity","inventory"]),ze("process-find-name","Processes & services","Find a running process by name","Find process named [process name] on the current targets.",["process.list"],["find","running","name","실행 중"]),ze("process-resource-heavy","Processes & services","Find resource-heavy processes","List the processes using the most CPU or memory on the current targets.",["process.list","system.health"],["top","cpu","memory","resource"]),ze("process-stop-named","Processes & services","Stop a named process","Stop process named [process name] on the target workstation after checking its current state.",["process.list","process.control"],["stop","terminate","종료"],{targetSupport:"single"}),ze("process-restart-named","Processes & services","Restart a named process","Check process named [process name] and restart it with its registered launch details when available.",["process.list","process.control"],["restart","relaunch","재시작"],{targetSupport:"single"}),ze("process-launch-app","Processes & services","Launch a registered application","Launch the registered application [application] on the target workstation with [arguments].",["application.launch"],["launch","open","실행"],{targetSupport:"single"}),ze("process-close-app","Processes & services","Close an application","Close application [application] on the target workstation and report whether it exited cleanly.",["application.close","process.list"],["close","exit","앱 종료"],{targetSupport:"single"}),ze("service-status-name","Processes & services","Check a service status","Check service [service name] and report its state on the current targets.",["service.status"],["service","status","서비스 상태"]),ze("service-restart-name","Processes & services","Restart a service safely","Check service [service name], stop it, wait for it to stop, then start it and verify the result.",["service.status","service.control"],["restart","start","stop","서비스 재시작"],{targetSupport:"single"}),ze("ai-comfyui-status","AI workloads","Check ComfyUI availability","Check the ComfyUI process, service state, and GPU readiness on the current targets.",["process.list","service.status","gpu.status"],["comfyui","stable diffusion","image generation"]),ze("ai-start-comfyui","AI workloads","Start ComfyUI","If ComfyUI is stopped, launch its registered application or service and verify it is running.",["process.list","application.launch","service.status"],["comfyui","start","launch"],{targetSupport:"single"}),ze("ai-restart-ollama","AI workloads","Restart Ollama","Check Ollama, restart its registered application or service, and verify the worker is ready.",["process.list","application.close","application.launch","service.status"],["ollama","restart","llm"],{targetSupport:"single"}),ze("ai-stable-diffusion","AI workloads","Check Stable Diffusion workers","Check Stable Diffusion or Automatic1111 processes and their GPU usage on the current targets.",["process.list","gpu.status"],["stable diffusion","automatic1111","sd"]),ze("ai-gpu-readiness","AI workloads","Check GPU readiness for AI","Check GPU temperature, VRAM, utilization, and system health before an AI workload starts.",["gpu.status","system.health"],["readiness","inference","training"]),ze("ai-worker-logs","AI workloads","Collect AI worker logs","Collect recent logs and relevant log files for the AI worker on the target workstation.",["logs.collect","file.list","file.read"],["logs","diagnostics","worker"],{targetSupport:"single"}),ze("ai-llama-cpp","AI workloads","Check llama.cpp workers","Find llama.cpp or local model worker processes and inspect their recent logs.",["process.list","logs.collect"],["llama.cpp","local model","inference"]),ze("ai-recover-orphan-python","AI workloads","Recover an orphaned Python worker","Find an orphaned Python AI worker, stop the stale process, then launch its registered worker again.",["process.list","process.control","application.launch"],["python","orphaned","recovery"],{targetSupport:"single"}),ze("files-list-directory","Files & configuration","List a directory","List files and folders under [path] on the target workstation.",["file.list"],["directory","folder","list","목록"],{targetSupport:"single"}),ze("files-read-config","Files & configuration","Read a configuration file","Read the relevant settings from configuration file [path] on the target workstation.",["file.read"],["config","settings","read","구성"]),ze("files-recent-logs","Files & configuration","Find recent log files","List recent log files under [path] and summarize the latest entries.",["file.list","file.read"],["logs","recent","tail"]),ze("files-update-config","Files & configuration","Update a configuration value","Read configuration file [path], update [change], and report the exact change made.",["file.read","file.write"],["edit","update","설정 변경"],{targetSupport:"single"}),ze("files-delete-temp","Files & configuration","Delete temporary files","Find temporary files under [path], delete only the requested matches, and report the freed space.",["file.list","file.delete","disk.status"],["cleanup","temp","delete","정리"],{targetSupport:"single"}),ze("files-compare-config","Files & configuration","Compare configuration files","Read configuration file [path] on the target workstation and compare it with [reference path].",["file.read"],["compare","diff","configuration"]),ze("files-set-environment","Files & configuration","Set an environment variable","Set environment variable [name] to [value] for the target workstation and verify the resulting configuration.",["system.configure","file.read"],["environment","variable","env","환경변수"],{targetSupport:"single"}),ze("files-archive-diagnostics","Files & configuration","Write a diagnostic manifest","Collect selected diagnostics and write a manifest file to [path] on the target workstation.",["diagnostics.collect","file.write"],["manifest","export","diagnostic file"],{targetSupport:"single"}),ze("software-winget-install","Software & automation","Install software with winget","Install package [package name] with winget on the Windows target workstation, then verify it.",["software.install","process.list"],["winget","windows","install","설치"],{targetSupport:"single",supportedPlatforms:["windows"]}),ze("software-apt-install","Software & automation","Install software with apt","Install package [package name] with apt on the Linux target workstation, then verify it.",["software.install","process.list"],["apt","linux","package","설치"],{targetSupport:"single",supportedPlatforms:["linux"]}),ze("software-brew-install","Software & automation","Install software with Homebrew","Install package [package name] with brew on the macOS target workstation, then verify it.",["software.install","process.list"],["brew","homebrew","macos","설치"],{targetSupport:"single",supportedPlatforms:["macos"]}),ze("software-npm-install","Software & automation","Install an npm package","Install npm package [package name] on the target workstation and verify the installed version.",["software.install","command.run"],["npm","node","package"],{targetSupport:"single"}),ze("software-run-script","Software & automation","Run a registered script","Run the registered script [script path] on the target workstation and report its result.",["script.run"],["script","automation","registered"],{targetSupport:"single"}),ze("software-run-command","Software & automation","Run a command on one target","Run command [command] on the target workstation and return its exit status and output.",["command.run"],["command","shell","terminal"],{targetSupport:"single"}),ze("software-verify-install","Software & automation","Verify an installed tool","Check whether [application] is installed, running, and available on the PATH of the current targets.",["process.list","system.health"],["verify","installed","path"]),ze("software-toolchain-setup","Software & automation","Set up a toolchain","Install the requested package [package name], configure [change], and verify the toolchain on the target workstation.",["software.install","system.configure","process.list"],["toolchain","setup","developer"],{targetSupport:"single"}),ze("network-adapter-status","Network & connectivity","Check network adapters","Show adapter state, address, and link information for the current targets.",["network.status"],["adapter","ethernet","wifi","네트워크 상태"]),ze("network-disconnected","Network & connectivity","Find disconnected targets","Find current targets with disconnected or degraded network adapters.",["network.status"],["disconnected","offline","연결 끊김"]),ze("network-link-speed","Network & connectivity","Check link speed","Report network link speed and duplex information for the current targets.",["network.status"],["speed","bandwidth","duplex"]),ze("network-warnings","Network & connectivity","Review network warnings","Review network status and recent logs for connectivity warnings on the current targets.",["network.status","logs.collect"],["warning","latency","packet loss"]),ze("network-diagnostics","Network & connectivity","Collect network diagnostics","Collect network status, system diagnostics, and relevant logs for the current targets.",["network.status","diagnostics.collect","logs.collect"],["diagnostics","incident","connectivity"]),ze("network-service-failures","Network & connectivity","Find network service failures","Check network status and relevant service states on the current targets.",["network.status","service.status"],["service","failure","dns"]),ze("network-compare","Network & connectivity","Compare target connectivity","Compare adapter state, addresses, and link speed across the current targets.",["network.status"],["compare","inventory","connectivity"]),ze("network-intermittent","Network & connectivity","Investigate intermittent connectivity","Investigate intermittent connectivity using network status, service state, and diagnostics evidence.",["network.status","service.status","diagnostics.collect"],["intermittent","unstable","recovery"]),ze("power-lock","Power & maintenance","Lock the workstation","Lock the target workstation and report the resulting power action status.",["system.power"],["lock","security","잠금"],{targetSupport:"single",risk:"critical"}),ze("power-logoff","Power & maintenance","Log off the workstation","Log off the target workstation after warning that interactive sessions will close.",["system.power"],["logoff","session","로그오프"],{targetSupport:"single",risk:"critical"}),ze("power-sleep","Power & maintenance","Put the workstation to sleep","Put the target workstation to sleep after confirming the requested delay of [delay].",["system.power"],["sleep","suspend","절전"],{targetSupport:"single",risk:"critical"}),ze("power-restart","Power & maintenance","Restart the workstation","Restart the target workstation after confirming that active work may be interrupted.",["system.power"],["restart","reboot","재부팅"],{targetSupport:"single",risk:"critical"}),ze("power-shutdown","Power & maintenance","Shut down the workstation","Shut down the target workstation after confirming that active work may be interrupted.",["system.power"],["shutdown","power off","종료"],{targetSupport:"single",risk:"critical"}),ze("power-maintenance-restart","Power & maintenance","Restart after maintenance","Check the target workstation, restart it after maintenance, and verify that it returns online.",["system.health","system.power","network.status"],["maintenance","reboot","verify"],{targetSupport:"single",risk:"critical"}),ze("power-timezone","Power & maintenance","Set the workstation timezone","Set the target workstation timezone to [timezone] and verify the resulting system configuration.",["system.configure"],["timezone","clock","시간대"],{targetSupport:"single",risk:"critical"}),ze("power-persistent-environment","Power & maintenance","Persist an environment variable","Persist environment variable [name] with value [value] for the target workstation and verify it.",["system.configure"],["environment","persistent","환경변수"],{targetSupport:"single",risk:"critical"}),ze("recovery-app-wont-start","Troubleshooting & recovery","Investigate an app that will not start","Inspect [application], review its logs, launch the registered application, and verify the process.",["process.list","application.launch","logs.collect"],["app failure","start","실행 오류"],{targetSupport:"single"}),ze("recovery-failed-service","Troubleshooting & recovery","Recover a failed service","Inspect service [service name], collect logs, restart it safely, and verify its running state.",["service.status","logs.collect","service.control"],["service failure","recover","서비스 복구"],{targetSupport:"single"}),ze("recovery-repeated-process","Troubleshooting & recovery","Investigate a repeatedly stopping process","Inspect process [process name], collect diagnostics, stop stale instances, and relaunch the registered process.",["process.list","diagnostics.collect","process.control","application.launch"],["crash loop","process","반복 종료"],{targetSupport:"single"}),ze("recovery-low-disk","Troubleshooting & recovery","Recover from low disk space","Inspect disk capacity, find temporary files, remove only the requested files, and verify free space.",["disk.status","file.list","file.delete"],["disk full","cleanup","저장공간 부족"],{targetSupport:"single"}),ze("recovery-gpu-overheating","Troubleshooting & recovery","Investigate GPU overheating","Inspect GPU temperature and processes, then close the specified workload if it is causing the thermal warning.",["gpu.status","process.list","application.close"],["overheating","thermal","GPU 발열"],{targetSupport:"single"}),ze("recovery-high-vram","Troubleshooting & recovery","Recover high VRAM usage","Inspect VRAM usage and GPU processes, then stop the specified stale workload if necessary.",["gpu.status","process.list","process.control"],["vram","memory pressure","VRAM 부족"],{targetSupport:"single"}),ze("recovery-network-instability","Troubleshooting & recovery","Recover network instability","Collect network diagnostics, inspect network services, and report the safest recovery action for the target workstation.",["network.status","service.status","diagnostics.collect"],["network","unstable","네트워크 복구"],{targetSupport:"single"}),ze("recovery-incident-report","Troubleshooting & recovery","Create a full incident report","Create a full incident report from health, process, service, network, and log evidence for the current targets.",["system.health","process.list","service.status","network.status","logs.collect"],["incident","report","장애 보고서"])],Im={read:"allow",processControl:"allow",serviceControl:"allow",applicationControl:"ask",fileRead:"allow",fileWrite:"allow",fileDelete:"ask",shell:"ask",script:"ask",softwareInstall:"ask",network:"allow",systemPower:"ask",systemConfiguration:"ask",userAccount:"deny"};function Yk(n,a){return n==="safe-auto"?Im:n==="full-access"?{...Im,processControl:"allow",serviceControl:"allow",applicationControl:"allow",fileDelete:"allow",shell:"allow",script:"allow",softwareInstall:"allow",systemPower:"allow",systemConfiguration:"allow"}:n==="custom"&&a?a:{...Im,processControl:"ask",serviceControl:"ask",applicationControl:"ask",fileWrite:"ask",network:"ask"}}function Wk(n,a,i){const r=Yk(a,i),c=n.requiredOperations.map(u=>r[xi[u].permissionCategory]);if(c.includes("deny")){const u=n.requiredOperations.find(m=>r[xi[m].permissionCategory]==="deny");return{state:"blocked",label:"Blocked",reason:`This task requires ${xi[u].label}, which is blocked by the current permission policy.`}}return c.includes("ask")?{state:"approval",label:"Approval required",reason:"This task requires approval before the requested changes can reach a workstation."}:n.requiredOperations.every(u=>xi[u].readOnly)?{state:"read-only",label:"Read only"}:a==="full-access"?{state:"full-access",label:"Full Access"}:{state:"auto",label:"Auto allowed"}}function Kk(n){const a=String(n||"").trim().toLowerCase();return a==="windows"||a==="win32"||a==="win32nt"?"windows":a==="macos"||a==="macosx"||a==="darwin"||a==="osx"?"macos":a==="linux"?"linux":null}function Qk(n,a,i){const r=new Set(i);return n.filter(c=>c.connected&&(a==="all"||r.has(c.deviceId)))}function Xk(n,a){const i=Kk(n.platform);if(!i||!a.supportedPlatforms.includes(i))return!1;const r=n.capabilities?.agentTools;return!Array.isArray(r)||r.length===0?a.requiredOperations.every(c=>xi[c].readOnly):a.requiredOperations.every(c=>r.includes(c))}function mw(n,a,i,r,c,u){const m=Wk(n,c,u),p=Qk(a,i,r),v=p.map(C=>C.deviceId),g={...m,available:!1,availableDeviceIds:[],unsupportedDeviceIds:v,risk:n.risk,supportedPlatforms:n.supportedPlatforms};if(p.length===0)return{...g,reason:"Select at least one connected workstation."};if(n.targetSupport==="single"&&p.length!==1)return{...g,reason:"This task supports one workstation at a time."};if(m.state==="blocked")return g;const w=p.filter(C=>Xk(C,n)),y=w.map(C=>C.deviceId),b=v.filter(C=>!y.includes(C));return w.length===0?{...g,unsupportedDeviceIds:b,reason:"No current target supports the required platform and client capabilities."}:{...g,available:!0,availableDeviceIds:y,unsupportedDeviceIds:b}}function Zk(n,a,i,r,c,u){return n.filter(m=>m.enabled&&mw(m,a,i,r,c,u).available).length}const Bm="livedesk.agentPromptRecent",Fm="livedesk.agentPromptFavorites",Jk={Recommended:ir,"Health & capacity":qt,"Processes & services":cS,"AI workloads":oS,"Files & configuration":rS,"Software & automation":bd,"Network & connectivity":jh,"Power & maintenance":pn,"Troubleshooting & recovery":iS};function Fx(n){if(typeof window>"u")return[];try{const a=JSON.parse(window.localStorage.getItem(n)||"[]");return Array.isArray(a)?a.filter(i=>typeof i=="string"):[]}catch{return[]}}function rd(n,a){try{window.localStorage.setItem(n,JSON.stringify(a))}catch{}}function Hm(n){return n==="all"?"All tasks":n==="recent"?"Recent":n==="favorites"?"Favorites":n==="read-only"?"Read only":n==="auto"?"Auto allowed":n==="approval"?"Approval required":n==="full-access"?"Full Access":n==="available"?"Available":n==="unavailable"?"Unavailable":n}function eA(n){return n==="all"?"All":n==="recent"?"Recent":n==="favorites"?"Favorites":n==="read-only"?"Read only":n==="auto"?"Auto":n==="approval"?"Approval":n==="full-access"?"Full access":n==="available"?"Available":n==="unavailable"?"Unavailable":{Recommended:"Recommended","Health & capacity":"Health","Processes & services":"Processes","AI workloads":"AI","Files & configuration":"Files","Software & automation":"Software","Network & connectivity":"Network","Power & maintenance":"Power","Troubleshooting & recovery":"Recovery"}[n]}function tA(n,a,i){if(!i.trim())return!0;const r=i.trim().toLowerCase();return[n.title,n.prompt,n.description,n.category,n.risk,a.label,...n.keywords,...n.requiredOperations,...n.supportedPlatforms].join(" ").toLowerCase().includes(r)}function nA(n){return`permission-${n}`}function aA(n){return n==="low"?"Low risk":n==="medium"?"Medium risk":n==="high"?"High risk":"Critical risk"}function sA(n){return n==="windows"?"Windows":n==="macos"?"macOS":"Linux"}function lA({devices:n,targetMode:a,selectedIds:i,permissionMode:r,customCategories:c,onSelectPrompt:u,onClose:m}){const[p,v]=f.useState(""),[g,w]=f.useState("all"),[y,b]=f.useState(()=>Fx(Bm)),[C,k]=f.useState(()=>Fx(Fm)),[A,T]=f.useState(0),[j,R]=f.useState(""),E=f.useRef(null),H=f.useRef(null),F=f.useMemo(()=>fw.filter(V=>V.enabled),[]),q=f.useMemo(()=>new Map(F.map(V=>[V.id,mw(V,n,a,i,r,c)])),[c,n,r,i,a,F]),I=f.useMemo(()=>[...q.values()].filter(V=>V.available).length,[q]),_=f.useMemo(()=>n.filter(V=>V.connected&&(a==="all"||i.includes(V.deviceId))).length,[n,i,a]),fe=f.useMemo(()=>{const V=F.filter(z=>tA(z,q.get(z.id),p));return g==="recent"?y.map(z=>V.find(K=>K.id===z)).filter(z=>!!z):g==="favorites"?C.map(z=>V.find(K=>K.id===z)).filter(z=>!!z):g==="all"?V:V.filter(z=>{const K=q.get(z.id);return g==="read-only"?K.state==="read-only":g==="auto"?K.state==="auto":g==="approval"?K.state==="approval":g==="full-access"?K.state==="full-access":g==="available"?K.available:g==="unavailable"?!K.available:z.category===g})},[q,C,g,y,p,F]),G=f.useMemo(()=>g!=="all"?[{category:Hm(g),templates:fe}]:Ix.map(V=>({category:V,templates:fe.filter(z=>z.category===V)})).filter(V=>V.templates.length>0),[g,fe]);f.useEffect(()=>{T(V=>Math.min(V,Math.max(0,fe.length-1)))},[fe.length]),f.useEffect(()=>{rd(Bm,y)},[y]),f.useEffect(()=>{rd(Fm,C)},[C]),f.useEffect(()=>{H.current?.focus();const V=K=>{K.target instanceof Node&&!E.current?.contains(K.target)&&m()},z=K=>{K.key==="Escape"&&(K.preventDefault(),m())};return document.addEventListener("pointerdown",V),document.addEventListener("keydown",z),()=>{document.removeEventListener("pointerdown",V),document.removeEventListener("keydown",z)}},[m]);const ue=V=>{const z=q.get(V.id);if(!z.available){R(z.reason||"This task is not available for the current targets and permission policy.");return}const K=[V.id,...y.filter(Q=>Q!==V.id)].slice(0,10);b(K),rd(Bm,K),u(V.prompt),m()},Y=V=>{k(z=>{const K=z.includes(V)?z.filter(Q=>Q!==V):[V,...z];return rd(Fm,K),K})},ae=V=>{V.key==="ArrowDown"?(V.preventDefault(),T(z=>Math.min(z+1,Math.max(0,fe.length-1)))):V.key==="ArrowUp"?(V.preventDefault(),T(z=>Math.max(z-1,0))):V.key==="Enter"&&fe[A]&&(V.preventDefault(),ue(fe[A]))};let le=-1;return l.jsxs("section",{className:"agents-suggested-tasks",ref:E,"aria-label":"Suggested tasks",children:[l.jsxs("header",{className:"agents-suggested-header",children:[l.jsxs("div",{children:[l.jsxs("span",{className:"agents-suggested-title",children:[l.jsx(ir,{size:15})," Suggested tasks"]}),l.jsxs("small",{children:[I," available · ",F.length," total. Choose a task, edit it, then run it."]})]}),l.jsx("button",{className:"agents-suggested-close",type:"button","aria-label":"Close suggested tasks",onClick:m,children:l.jsx(rr,{size:16})})]}),l.jsxs("label",{className:"agents-suggested-search",children:[l.jsx(aS,{size:15,"aria-hidden":"true"}),l.jsx("input",{ref:H,value:p,onChange:V=>v(V.target.value),onKeyDown:ae,placeholder:"Search tasks...","aria-label":"Search suggested tasks"})]}),l.jsx("div",{className:"agents-suggested-filters","aria-label":"Task categories and availability filters",children:["all","recent","favorites","read-only","auto","approval","full-access","available","unavailable",...Ix].map(V=>{const z=V==="recent"?sS:V==="favorites"?Jm:V==="all"?ir:V==="available"?In:V==="unavailable"?lS:V==="read-only"||V==="auto"||V==="approval"||V==="full-access"?pn:Jk[V];return l.jsxs("button",{className:g===V?"active":"",type:"button",title:Hm(V),"aria-label":Hm(V),"aria-pressed":g===V,onClick:()=>{w(V),T(0),R("")},children:[l.jsx(z,{size:12})," ",eA(V)]},V)})}),j&&l.jsx("div",{className:"agents-suggested-notice",role:"status",children:j}),l.jsxs("div",{className:"agents-suggested-list",role:"listbox","aria-label":"Suggested tasks",children:[G.map(V=>l.jsxs("div",{className:"agents-suggested-group",children:[l.jsx("strong",{children:V.category}),V.templates.map(z=>{le+=1;const K=le===A,Q=C.includes(z.id),P=q.get(z.id),ie=P.availableDeviceIds.length+P.unsupportedDeviceIds.length||_,Se=P.available?`Available on ${P.availableDeviceIds.length} of ${ie} target${ie===1?"":"s"}`:`Unavailable: ${P.reason||"not supported by the current targets"}`;return l.jsxs("div",{className:`agents-suggested-item ${K?"active":""} ${P.available?"":"unavailable"}`,children:[l.jsxs("button",{className:"agents-suggested-prompt",type:"button",role:"option","aria-selected":K,"aria-disabled":!P.available,onClick:()=>ue(z),children:[l.jsx("span",{children:z.title}),l.jsx("small",{className:"agents-suggested-description",children:z.description}),l.jsxs("span",{className:"agents-suggested-meta",children:[l.jsx("em",{children:z.category}),l.jsx("em",{className:nA(P.state),children:P.label}),l.jsx("em",{className:`risk-${z.risk}`,children:aA(z.risk)}),l.jsx("em",{children:z.supportedPlatforms.map(sA).join(" · ")}),l.jsx("em",{className:P.available?"availability-ok":"availability-unavailable",children:Se}),P.available&&P.unsupportedDeviceIds.length>0&&l.jsxs("em",{className:"availability-warning",children:["Unsupported on ",P.unsupportedDeviceIds.length]})]})]}),l.jsx("button",{className:`agents-suggested-favorite ${Q?"favorite":""}`,type:"button","aria-label":Q?`Remove ${z.title} from favorites`:`Add ${z.title} to favorites`,"aria-pressed":Q,onClick:()=>Y(z.id),children:l.jsx(Jm,{size:14,fill:Q?"currentColor":"none"})})]},z.id)})]},V.category)),fe.length===0&&l.jsx("p",{className:"agents-suggested-empty",children:"No tasks match this search or current filter."})]})]})}function iA({devices:n,mode:a,selectedIds:i,onModeChange:r,onToggle:c,permissionMode:u,onPermissionModeChange:m}){const p=n.filter(g=>g.connected),v=i.filter(g=>p.some(w=>w.deviceId===g)).length;return l.jsxs("section",{className:"agents-target-picker","aria-label":"Agent targets",children:[l.jsxs("div",{className:"agents-target-toolbar",children:[l.jsx("span",{className:"agents-section-label",children:"Targets"}),l.jsxs("div",{className:"agents-target-modes",children:[l.jsxs("button",{className:a==="all"?"active":"",onClick:()=>r("all"),type:"button",children:[l.jsx(fy,{size:14})," All connected ",l.jsx("small",{children:p.length})]}),l.jsxs("button",{className:a==="selected"?"active":"",onClick:()=>r("selected"),type:"button",children:[l.jsx(Rc,{size:14})," Selected ",v]})]}),l.jsxs("label",{className:`agents-permission-picker permission-${u}`,children:[l.jsx(Ld,{size:14}),l.jsx("span",{children:"Permission"}),l.jsxs("select",{value:u,onChange:g=>m(g.target.value),"aria-label":"Agent permission mode",children:[l.jsx("option",{value:"ask",children:"Ask"}),l.jsx("option",{value:"safe-auto",children:"Safe Auto"}),l.jsx("option",{value:"full-access",children:"Full Access"}),l.jsx("option",{value:"custom",children:"Custom"})]}),l.jsx(hy,{size:13,"aria-hidden":"true"})]})]}),l.jsx("div",{className:"agents-target-list",children:n.length===0?l.jsx("span",{className:"agents-target-empty",children:"No workstations discovered."}):n.map(g=>{const w=a==="all"?g.connected:i.includes(g.deviceId);return l.jsxs("label",{className:`agents-target-option ${w?"selected":""} ${g.connected?"":"offline"}`,children:[l.jsx("input",{type:"checkbox",checked:w,disabled:!g.connected||a==="all",onChange:()=>c(g.deviceId)}),l.jsx("span",{className:"agents-target-icon",children:l.jsx(en,{size:15})}),l.jsxs("span",{children:[l.jsx("strong",{children:dw(g)}),l.jsx("small",{children:g.connected?"Connected":"Offline"})]}),w&&l.jsx(Rc,{className:"agents-target-check",size:15,"aria-hidden":"true"})]},g.deviceId)})})]})}async function rA(n,a){return Be("/api/settings/agent/plan",{method:"POST",body:JSON.stringify({instruction:a})},n)}async function oA(n,a){return Be("/api/settings/agent/run",{method:"POST",body:JSON.stringify(a)},n)}async function cA(n,a){return Be(`/api/settings/agent/runs/${encodeURIComponent(a)}`,void 0,n)}async function uA(n,a){return Be(`/api/settings/agent/runs/${encodeURIComponent(a)}/cancel`,{method:"POST",body:JSON.stringify({})},n)}async function dA(n){return Be("/api/settings/agent/runs/cancel-all",{method:"POST",body:JSON.stringify({})},n)}async function fA(n,a,i,r){return Be(`/api/settings/agent/runs/${encodeURIComponent(a)}/approvals/${encodeURIComponent(i)}/approve`,{method:"POST",body:JSON.stringify({scope:r})},n)}async function mA(n,a,i,r="User rejected this action."){return Be(`/api/settings/agent/runs/${encodeURIComponent(a)}/approvals/${encodeURIComponent(i)}/reject`,{method:"POST",body:JSON.stringify({reason:r})},n)}async function hA(n,a,i){return Be(`/api/settings/agent/policies/${encodeURIComponent(a)}`,{method:"PUT",body:JSON.stringify({categories:i})},n)}async function pA(n,a){return Be("/api/settings/agent/summary",{method:"POST",body:JSON.stringify(a)},n)}async function gA(n,a){return Be("/api/remote/tasks",{method:"POST",body:JSON.stringify({instruction:a.instruction,deviceIds:a.deviceIds,operation:a.operation,targetQuery:a.targetQuery,approvalLevel:"read-only"})},n)}async function vA(n,a){return Be(`/api/remote/tasks/${encodeURIComponent(a)}`,void 0,n)}async function xA(n,a){return Be(`/api/remote/tasks/${encodeURIComponent(a)}/cancel`,{method:"POST",body:JSON.stringify({})},n)}async function yA(n,a){return Be(`/api/remote/tasks/${encodeURIComponent(a)}/retry`,{method:"POST",body:JSON.stringify({failedOnly:!0})},n)}function Ji(n){return`${n}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function od(n,a){const i=new Map(a.map(r=>[r.deviceId,dw(r)]));return n.results.map(r=>({deviceId:r.deviceId,deviceName:r.deviceName||i.get(r.deviceId)||r.deviceId,status:Ek(r.status),stage:r.stage||(r.status==="running"?"Checking processes":void 0),result:r.result,data:r.data,error:r.error,sequence:Number.isSafeInteger(r.sequence)?r.sequence:0}))}function wA(n,a){const i=new Map(a.map(r=>[r.deviceId,r]));return n.map(r=>{const c=i.get(r.deviceId);return!c||c.sequence<=r.sequence?r:c})}function bA(n,a){const i=a.filter(u=>u.status==="completed"),r=a.filter(u=>u.status==="failed");if(n.operation==="process.list"){const m=`${i.filter(p=>{const v=p.result||"";return!/not running|no process/i.test(v)&&/running|online|found/i.test(v)}).length}대에서 요청한 프로세스가 실행 중입니다.`;return r.length>0?`${m}
|
|
8
|
+
`+o.stack}}var Ce=Object.prototype.hasOwnProperty,st=n.unstable_scheduleCallback,me=n.unstable_cancelCallback,He=n.unstable_shouldYield,_e=n.unstable_requestPaint,Ge=n.unstable_now,na=n.unstable_getCurrentPriorityLevel,hn=n.unstable_ImmediatePriority,kn=n.unstable_UserBlockingPriority,Wn=n.unstable_NormalPriority,Ci=n.unstable_LowPriority,Na=n.unstable_IdlePriority,In=n.log,dr=n.unstable_setDisableYieldValue,ps=null,mt=null;function An(e){if(typeof In=="function"&&dr(e),mt&&typeof mt.setStrictMode=="function")try{mt.setStrictMode(ps,e)}catch{}}var Me=Math.clz32?Math.clz32:fr,ji=Math.log,Je=Math.LN2;function fr(e){return e>>>=0,e===0?32:31-(ji(e)/Je|0)|0}var At=256,Ta=262144,Pt=4194304;function Kn(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function xa(e,t,s){var o=e.pendingLanes;if(o===0)return 0;var u=0,h=e.suspendedLanes,S=e.pingedLanes;e=e.warmLanes;var M=o&134217727;return M!==0?(o=M&~h,o!==0?u=Kn(o):(S&=M,S!==0?u=Kn(S):s||(s=M&~e,s!==0&&(u=Kn(s))))):(M=o&~h,M!==0?u=Kn(M):S!==0?u=Kn(S):s||(s=o&~e,s!==0&&(u=Kn(s)))),u===0?0:t!==0&&t!==u&&(t&h)===0&&(h=u&-u,s=t&-t,h>=s||h===32&&(s&4194048)!==0)?t:u}function Ra(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function qt(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Os(){var e=Pt;return Pt<<=1,(Pt&62914560)===0&&(Pt=4194304),e}function gs(e){for(var t=[],s=0;31>s;s++)t.push(e);return t}function vs(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function mr(e,t,s,o,u,h){var S=e.pendingLanes;e.pendingLanes=s,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=s,e.entangledLanes&=s,e.errorRecoveryDisabledLanes&=s,e.shellSuspendCounter=0;var M=e.entanglements,B=e.expirationTimes,ee=e.hiddenUpdates;for(s=S&~s;0<s;){var he=31-Me(s),we=1<<he;M[he]=0,B[he]=-1;var se=ee[he];if(se!==null)for(ee[he]=null,he=0;he<se.length;he++){var ce=se[he];ce!==null&&(ce.lane&=-536870913)}s&=~we}o!==0&&hr(e,o,0),h!==0&&u===0&&e.tag!==0&&(e.suspendedLanes|=h&~(S&~t))}function hr(e,t,s){e.pendingLanes|=t,e.suspendedLanes&=~t;var o=31-Me(t);e.entangledLanes|=t,e.entanglements[o]=e.entanglements[o]|1073741824|s&261930}function Ea(e,t){var s=e.entangledLanes|=t;for(e=e.entanglements;s;){var o=31-Me(s),u=1<<o;u&t|e[o]&t&&(e[o]|=t),s&=~u}}function xs(e,t){var s=t&-t;return s=(s&42)!==0?1:Mn(s),(s&(e.suspendedLanes|t))!==0?0:s}function Mn(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function aa(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function en(){var e=K.p;return e!==0?e:(e=window.event,e===void 0?32:bv(e.type))}function Is(e,t){var s=K.p;try{return K.p=e,t()}finally{K.p=s}}var Nn=Math.random().toString(36).slice(2),X="__reactFiber$"+Nn,je="__reactProps$"+Nn,Le="__reactContainer$"+Nn,We="__reactEvents$"+Nn,xt="__reactListeners$"+Nn,gt="__reactHandles$"+Nn,Ue="__reactResources$"+Nn,dt="__reactMarker$"+Nn;function tn(e){delete e[X],delete e[je],delete e[We],delete e[xt],delete e[gt]}function Ft(e){var t=e[X];if(t)return t;for(var s=e.parentNode;s;){if(t=s[Le]||s[X]){if(s=t.alternate,t.child!==null||s!==null&&s.child!==null)for(e=lv(e);e!==null;){if(s=e[X])return s;e=lv(e)}return t}e=s,s=e.parentNode}return null}function Tn(e){if(e=e[X]||e[Le]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function Mt(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error(r(33))}function Ht(e){var t=e[Ue];return t||(t=e[Ue]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function Et(e){e[dt]=!0}var ys=new Set,pn={};function Gt(e,t){bt(e,t),bt(e+"Capture",t)}function bt(e,t){for(pn[e]=t,e=0;e<t.length;e++)ys.add(t[e])}var Da=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Wa={},Ka={};function ki(e){return Ce.call(Ka,e)?!0:Ce.call(Wa,e)?!1:Da.test(e)?Ka[e]=!0:(Wa[e]=!0,!1)}function Bs(e,t,s){if(ki(t))if(s===null)e.removeAttribute(t);else{switch(typeof s){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var o=t.toLowerCase().slice(0,5);if(o!=="data-"&&o!=="aria-"){e.removeAttribute(t);return}}e.setAttribute(t,""+s)}}function ws(e,t,s){if(s===null)e.removeAttribute(t);else{switch(typeof s){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}e.setAttribute(t,""+s)}}function Bn(e,t,s,o){if(o===null)e.removeAttribute(s);else{switch(typeof o){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(s);return}e.setAttributeNS(t,s,""+o)}}function on(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function pr(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ai(e,t,s){var o=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof o<"u"&&typeof o.get=="function"&&typeof o.set=="function"){var u=o.get,h=o.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return u.call(this)},set:function(S){s=""+S,h.call(this,S)}}),Object.defineProperty(e,t,{enumerable:o.enumerable}),{getValue:function(){return s},setValue:function(S){s=""+S},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function wl(e){if(!e._valueTracker){var t=pr(e)?"checked":"value";e._valueTracker=Ai(e,t,""+e[t])}}function Mi(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var s=t.getValue(),o="";return e&&(o=pr(e)?e.checked?"true":"false":e.value),e=o,e!==s?(t.setValue(e),!0):!1}function Fs(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var co=/[\n"\\]/g;function Qn(e){return e.replace(co,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function La(e,t,s,o,u,h,S,M){e.name="",S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"?e.type=S:e.removeAttribute("type"),t!=null?S==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+on(t)):e.value!==""+on(t)&&(e.value=""+on(t)):S!=="submit"&&S!=="reset"||e.removeAttribute("value"),t!=null?_a(e,S,on(t)):s!=null?_a(e,S,on(s)):o!=null&&e.removeAttribute("value"),u==null&&h!=null&&(e.defaultChecked=!!h),u!=null&&(e.checked=u&&typeof u!="function"&&typeof u!="symbol"),M!=null&&typeof M!="function"&&typeof M!="symbol"&&typeof M!="boolean"?e.name=""+on(M):e.removeAttribute("name")}function bs(e,t,s,o,u,h,S,M){if(h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"&&(e.type=h),t!=null||s!=null){if(!(h!=="submit"&&h!=="reset"||t!=null)){wl(e);return}s=s!=null?""+on(s):"",t=t!=null?""+on(t):s,M||t===e.value||(e.value=t),e.defaultValue=t}o=o??u,o=typeof o!="function"&&typeof o!="symbol"&&!!o,e.checked=M?e.checked:!!o,e.defaultChecked=!!o,S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"&&(e.name=S),wl(e)}function _a(e,t,s){t==="number"&&Fs(e.ownerDocument)===e||e.defaultValue===""+s||(e.defaultValue=""+s)}function bl(e,t,s,o){if(e=e.options,t){t={};for(var u=0;u<s.length;u++)t["$"+s[u]]=!0;for(s=0;s<e.length;s++)u=t.hasOwnProperty("$"+e[s].value),e[s].selected!==u&&(e[s].selected=u),u&&o&&(e[s].defaultSelected=!0)}else{for(s=""+on(s),t=null,u=0;u<e.length;u++){if(e[u].value===s){e[u].selected=!0,o&&(e[u].defaultSelected=!0);return}t!==null||e[u].disabled||(t=e[u])}t!==null&&(t.selected=!0)}}function gr(e,t,s){if(t!=null&&(t=""+on(t),t!==e.value&&(e.value=t),s==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=s!=null?""+on(s):""}function Ud(e,t,s,o){if(t==null){if(o!=null){if(s!=null)throw Error(r(92));if(V(o)){if(1<o.length)throw Error(r(93));o=o[0]}s=o}s==null&&(s=""),t=s}s=on(t),e.defaultValue=s,o=e.textContent,o===s&&o!==""&&o!==null&&(e.value=o),wl(e)}function Sl(e,t){if(t){var s=e.firstChild;if(s&&s===e.lastChild&&s.nodeType===3){s.nodeValue=t;return}}e.textContent=t}var Cl=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Fc(e,t,s){var o=t.indexOf("--")===0;s==null||typeof s=="boolean"||s===""?o?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":o?e.setProperty(t,s):typeof s!="number"||s===0||Cl.has(t)?t==="float"?e.cssFloat=s:e[t]=(""+s).trim():e[t]=s+"px"}function Hs(e,t,s){if(t!=null&&typeof t!="object")throw Error(r(62));if(e=e.style,s!=null){for(var o in s)!s.hasOwnProperty(o)||t!=null&&t.hasOwnProperty(o)||(o.indexOf("--")===0?e.setProperty(o,""):o==="float"?e.cssFloat="":e[o]="");for(var u in t)o=t[u],t.hasOwnProperty(u)&&s[u]!==o&&Fc(e,u,o)}else for(var h in t)t.hasOwnProperty(h)&&Fc(e,h,t[h])}function Ni(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Ph=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),qh=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function uo(e){return qh.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function Qa(){}var vr=null;function xr(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var jl=null,kl=null;function Hc(e){var t=Tn(e);if(t&&(e=t.stateNode)){var s=e[je]||null;e:switch(e=t.stateNode,t.type){case"input":if(La(e,s.value,s.defaultValue,s.defaultValue,s.checked,s.defaultChecked,s.type,s.name),t=s.name,s.type==="radio"&&t!=null){for(s=e;s.parentNode;)s=s.parentNode;for(s=s.querySelectorAll('input[name="'+Qn(""+t)+'"][type="radio"]'),t=0;t<s.length;t++){var o=s[t];if(o!==e&&o.form===e.form){var u=o[je]||null;if(!u)throw Error(r(90));La(o,u.value,u.defaultValue,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name)}}for(t=0;t<s.length;t++)o=s[t],o.form===e.form&&Mi(o)}break e;case"textarea":gr(e,s.value,s.defaultValue);break e;case"select":t=s.value,t!=null&&bl(e,!!s.multiple,t,!1)}}}var Ti=!1;function fo(e,t,s){if(Ti)return e(t,s);Ti=!0;try{var o=e(t);return o}finally{if(Ti=!1,(jl!==null||kl!==null)&&(Mu(),jl&&(t=jl,e=kl,kl=jl=null,Hc(t),e)))for(t=0;t<e.length;t++)Hc(e[t])}}function Xa(e,t){var s=e.stateNode;if(s===null)return null;var o=s[je]||null;if(o===null)return null;s=o[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(o=!o.disabled)||(e=e.type,o=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!o;break e;default:e=!1}if(e)return null;if(s&&typeof s!="function")throw Error(r(231,t,typeof s));return s}var gn=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Al=!1;if(gn)try{var Ml={};Object.defineProperty(Ml,"passive",{get:function(){Al=!0}}),window.addEventListener("test",Ml,Ml),window.removeEventListener("test",Ml,Ml)}catch{Al=!1}var Za=null,$s=null,Ri=null;function mo(){if(Ri)return Ri;var e,t=$s,s=t.length,o,u="value"in Za?Za.value:Za.textContent,h=u.length;for(e=0;e<s&&t[e]===u[e];e++);var S=s-e;for(o=1;o<=S&&t[s-o]===u[h-o];o++);return Ri=u.slice(e,1<o?1-o:void 0)}function Ve(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function nt(){return!0}function sa(){return!1}function vn(e){function t(s,o,u,h,S){this._reactName=s,this._targetInst=u,this.type=o,this.nativeEvent=h,this.target=S,this.currentTarget=null;for(var M in e)e.hasOwnProperty(M)&&(s=e[M],this[M]=s?s(h):h[M]);return this.isDefaultPrevented=(h.defaultPrevented!=null?h.defaultPrevented:h.returnValue===!1)?nt:sa,this.isPropagationStopped=sa,this}return y(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var s=this.nativeEvent;s&&(s.preventDefault?s.preventDefault():typeof s.returnValue!="unknown"&&(s.returnValue=!1),this.isDefaultPrevented=nt)},stopPropagation:function(){var s=this.nativeEvent;s&&(s.stopPropagation?s.stopPropagation():typeof s.cancelBubble!="unknown"&&(s.cancelBubble=!0),this.isPropagationStopped=nt)},persist:function(){},isPersistent:nt}),t}var Fn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Xe=vn(Fn),Nl=y({},Fn,{view:0,detail:0}),Pd=vn(Nl),Tl,Us,Ps,Ja=y({},Nl,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:ho,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Ps&&(Ps&&e.type==="mousemove"?(Tl=e.screenX-Ps.screenX,Us=e.screenY-Ps.screenY):Us=Tl=0,Ps=e),Tl)},movementY:function(e){return"movementY"in e?e.movementY:Us}}),la=vn(Ja),Rl=y({},Ja,{dataTransfer:0}),Rn=vn(Rl),yr=y({},Nl,{relatedTarget:0}),Te=vn(yr),$c=y({},Fn,{animationName:0,elapsedTime:0,pseudoElement:0}),qd=vn($c),za=y({},Fn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Gd=vn(za),Vd=y({},Fn,{data:0}),El=vn(Vd),Rt={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Uc={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},wr={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function qs(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=wr[e])?!!t[e]:!1}function ho(){return qs}var Yd=y({},Nl,{key:function(e){if(e.key){var t=Rt[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Ve(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Uc[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:ho,charCode:function(e){return e.type==="keypress"?Ve(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Ve(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Vt=vn(Yd),Dl=y({},Ja,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Pc=vn(Dl),qc=y({},Nl,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:ho}),es=vn(qc),Gc=y({},Fn,{propertyName:0,elapsedTime:0,pseudoElement:0}),br=vn(Gc),Gs=y({},Ja,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Oa=vn(Gs),cn=y({},Fn,{newState:0,oldState:0}),Wd=vn(cn),Vc=[9,13,27,32],Ss=gn&&"CompositionEvent"in window,Ei=null;gn&&"documentMode"in document&&(Ei=document.documentMode);var Yt=gn&&"TextEvent"in window&&!Ei,Cs=gn&&(!Ss||Ei&&8<Ei&&11>=Ei),Di=" ",Li=!1;function Ia(e,t){switch(e){case"keyup":return Vc.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Yc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ll=!1;function Sr(e,t){switch(e){case"compositionend":return Yc(t);case"keypress":return t.which!==32?null:(Li=!0,Di);case"textInput":return e=t.data,e===Di&&Li?null:e;default:return null}}function Cr(e,t){if(Ll)return e==="compositionend"||!Ss&&Ia(e,t)?(e=mo(),Ri=$s=Za=null,Ll=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Cs&&t.locale!=="ko"?null:t.data;default:return null}}var Wc={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Vs(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!Wc[e.type]:t==="textarea"}function po(e,t,s,o){jl?kl?kl.push(o):kl=[o]:jl=o,t=_u(t,"onChange"),0<t.length&&(s=new Xe("onChange","change",null,s,o),e.push({event:s,listeners:t}))}var _l=null,_i=null;function zl(e){Gg(e,0)}function jr(e){var t=Mt(e);if(Mi(t))return e}function go(e,t){if(e==="change")return t}var Kc=!1;if(gn){var vo;if(gn){var xo="oninput"in document;if(!xo){var yo=document.createElement("div");yo.setAttribute("oninput","return;"),xo=typeof yo.oninput=="function"}vo=xo}else vo=!1;Kc=vo&&(!document.documentMode||9<document.documentMode)}function Ol(){_l&&(_l.detachEvent("onpropertychange",wo),_i=_l=null)}function wo(e){if(e.propertyName==="value"&&jr(_i)){var t=[];po(t,_i,e,xr(e)),fo(zl,t)}}function js(e,t,s){e==="focusin"?(Ol(),_l=t,_i=s,_l.attachEvent("onpropertychange",wo)):e==="focusout"&&Ol()}function kr(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return jr(_i)}function Il(e,t){if(e==="click")return jr(t)}function Ys(e,t){if(e==="input"||e==="change")return jr(t)}function bo(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Xn=typeof Object.is=="function"?Object.is:bo;function Bl(e,t){if(Xn(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var s=Object.keys(e),o=Object.keys(t);if(s.length!==o.length)return!1;for(o=0;o<s.length;o++){var u=s[o];if(!Ce.call(t,u)||!Xn(e[u],t[u]))return!1}return!0}function Ar(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Mr(e,t){var s=Ar(e);e=0;for(var o;s;){if(s.nodeType===3){if(o=e+s.textContent.length,e<=t&&o>=t)return{node:s,offset:t-e};e=o}e:{for(;s;){if(s.nextSibling){s=s.nextSibling;break e}s=s.parentNode}s=void 0}s=Ar(s)}}function Fl(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Fl(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Qc(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Fs(e.document);t instanceof e.HTMLIFrameElement;){try{var s=typeof t.contentWindow.location.href=="string"}catch{s=!1}if(s)e=t.contentWindow;else break;t=Fs(e.document)}return t}function Hl(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Xc=gn&&"documentMode"in document&&11>=document.documentMode,ts=null,zi=null,Ws=null,$l=!1;function Oi(e,t,s){var o=s.window===s?s.document:s.nodeType===9?s:s.ownerDocument;$l||ts==null||ts!==Fs(o)||(o=ts,"selectionStart"in o&&Hl(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Ws&&Bl(Ws,o)||(Ws=o,o=_u(zi,"onSelect"),0<o.length&&(t=new Xe("onSelect","select",null,t,s),e.push({event:t,listeners:o}),t.target=ts)))}function ns(e,t){var s={};return s[e.toLowerCase()]=t.toLowerCase(),s["Webkit"+e]="webkit"+t,s["Moz"+e]="moz"+t,s}var Ks={animationend:ns("Animation","AnimationEnd"),animationiteration:ns("Animation","AnimationIteration"),animationstart:ns("Animation","AnimationStart"),transitionrun:ns("Transition","TransitionRun"),transitionstart:ns("Transition","TransitionStart"),transitioncancel:ns("Transition","TransitionCancel"),transitionend:ns("Transition","TransitionEnd")},ks={},Qs={};gn&&(Qs=document.createElement("div").style,"AnimationEvent"in window||(delete Ks.animationend.animation,delete Ks.animationiteration.animation,delete Ks.animationstart.animation),"TransitionEvent"in window||delete Ks.transitionend.transition);function Ba(e){if(ks[e])return ks[e];if(!Ks[e])return e;var t=Ks[e],s;for(s in t)if(t.hasOwnProperty(s)&&s in Qs)return ks[e]=t[s];return e}var Ul=Ba("animationend"),ya=Ba("animationiteration"),So=Ba("animationstart"),Co=Ba("transitionrun"),Zc=Ba("transitionstart"),En=Ba("transitioncancel"),jo=Ba("transitionend"),Nr=new Map,Ii="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Ii.push("scrollEnd");function Hn(e,t){Nr.set(e,t),Gt(t,[e])}var Tr=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},un=[],Pl=0,ko=0;function Xs(){for(var e=Pl,t=ko=Pl=0;t<e;){var s=un[t];un[t++]=null;var o=un[t];un[t++]=null;var u=un[t];un[t++]=null;var h=un[t];if(un[t++]=null,o!==null&&u!==null){var S=o.pending;S===null?u.next=u:(u.next=S.next,S.next=u),o.pending=u}h!==0&&Rr(s,u,h)}}function Bi(e,t,s,o){un[Pl++]=e,un[Pl++]=t,un[Pl++]=s,un[Pl++]=o,ko|=o,e.lanes|=o,e=e.alternate,e!==null&&(e.lanes|=o)}function Zs(e,t,s,o){return Bi(e,t,s,o),Fi(e)}function As(e,t){return Bi(e,null,null,t),Fi(e)}function Rr(e,t,s){e.lanes|=s;var o=e.alternate;o!==null&&(o.lanes|=s);for(var u=!1,h=e.return;h!==null;)h.childLanes|=s,o=h.alternate,o!==null&&(o.childLanes|=s),h.tag===22&&(e=h.stateNode,e===null||e._visibility&1||(u=!0)),e=h,h=h.return;return e.tag===3?(h=e.stateNode,u&&t!==null&&(u=31-Me(s),e=h.hiddenUpdates,o=e[u],o===null?e[u]=[t]:o.push(t),t.lane=s|536870912),h):null}function Fi(e){if(50<Xo)throw Xo=0,Pf=null,Error(r(185));for(var t=e.return;t!==null;)e=t,t=e.return;return e.tag===3?e.stateNode:null}var ql={};function Ao(e,t,s,o){this.tag=e,this.key=s,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Zn(e,t,s,o){return new Ao(e,t,s,o)}function Er(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Fa(e,t){var s=e.alternate;return s===null?(s=Zn(e.tag,t,e.key,e.mode),s.elementType=e.elementType,s.type=e.type,s.stateNode=e.stateNode,s.alternate=e,e.alternate=s):(s.pendingProps=t,s.type=e.type,s.flags=0,s.subtreeFlags=0,s.deletions=null),s.flags=e.flags&65011712,s.childLanes=e.childLanes,s.lanes=e.lanes,s.child=e.child,s.memoizedProps=e.memoizedProps,s.memoizedState=e.memoizedState,s.updateQueue=e.updateQueue,t=e.dependencies,s.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},s.sibling=e.sibling,s.index=e.index,s.ref=e.ref,s.refCleanup=e.refCleanup,s}function Mo(e,t){e.flags&=65011714;var s=e.alternate;return s===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=s.childLanes,e.lanes=s.lanes,e.child=s.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=s.memoizedProps,e.memoizedState=s.memoizedState,e.updateQueue=s.updateQueue,e.type=s.type,t=s.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function Dr(e,t,s,o,u,h){var S=0;if(o=e,typeof e=="function")Er(e)&&(S=1);else if(typeof e=="string")S=Tb(e,s,ye.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case fe:return e=Zn(31,s,t,u),e.elementType=fe,e.lanes=h,e;case A:return Ha(s.children,u,h,t);case T:S=8,u|=24;break;case k:return e=Zn(12,s,t,u|2),e.elementType=k,e.lanes=h,e;case F:return e=Zn(13,s,t,u),e.elementType=F,e.lanes=h,e;case q:return e=Zn(19,s,t,u),e.elementType=q,e.lanes=h,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case E:S=10;break e;case R:S=9;break e;case $:S=11;break e;case I:S=14;break e;case _:S=16,o=null;break e}S=29,s=Error(r(130,e===null?"null":typeof e,"")),o=null}return t=Zn(S,s,t,u),t.elementType=e,t.type=o,t.lanes=h,t}function Ha(e,t,s,o){return e=Zn(7,e,o,t),e.lanes=s,e}function $a(e,t,s){return e=Zn(6,e,null,t),e.lanes=s,e}function Hi(e){var t=Zn(18,null,null,0);return t.stateNode=e,t}function No(e,t,s){return t=Zn(4,e.children!==null?e.children:[],e.key,t),t.lanes=s,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}var Lr=new WeakMap;function $n(e,t){if(typeof e=="object"&&e!==null){var s=Lr.get(e);return s!==void 0?s:(t={value:e,source:t,stack:Ae(t)},Lr.set(e,t),t)}return{value:e,source:t,stack:Ae(t)}}var ke=[],as=0,$i=null,Ui=0,wa=[],Un=0,Ms=null,Jn=1,St="";function zt(e,t){ke[as++]=Ui,ke[as++]=$i,$i=e,Ui=t}function lt(e,t,s){wa[Un++]=Jn,wa[Un++]=St,wa[Un++]=Ms,Ms=e;var o=Jn;e=St;var u=32-Me(o)-1;o&=~(1<<u),s+=1;var h=32-Me(t)+u;if(30<h){var S=u-u%5;h=(o&(1<<S)-1).toString(32),o>>=S,u-=S,Jn=1<<32-Me(t)+u|s<<u|o,St=h+e}else Jn=1<<h|s<<u|o,St=e}function To(e){e.return!==null&&(zt(e,1),lt(e,1,0))}function Ro(e){for(;e===$i;)$i=ke[--as],ke[as]=null,Ui=ke[--as],ke[as]=null;for(;e===Ms;)Ms=wa[--Un],wa[Un]=null,St=wa[--Un],wa[Un]=null,Jn=wa[--Un],wa[Un]=null}function Jc(e,t){wa[Un++]=Jn,wa[Un++]=St,wa[Un++]=Ms,Jn=t.id,St=t.overflow,Ms=e}var dn=null,Nt=null,it=!1,Ns=null,ia=!1,Eo=Error(r(519));function Ts(e){var t=Error(r(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw Pi($n(t,e)),Eo}function eu(e){var t=e.stateNode,s=e.type,o=e.memoizedProps;switch(t[X]=e,t[je]=o,s){case"dialog":ot("cancel",t),ot("close",t);break;case"iframe":case"object":case"embed":ot("load",t);break;case"video":case"audio":for(s=0;s<Jo.length;s++)ot(Jo[s],t);break;case"source":ot("error",t);break;case"img":case"image":case"link":ot("error",t),ot("load",t);break;case"details":ot("toggle",t);break;case"input":ot("invalid",t),bs(t,o.value,o.defaultValue,o.checked,o.defaultChecked,o.type,o.name,!0);break;case"select":ot("invalid",t);break;case"textarea":ot("invalid",t),Ud(t,o.value,o.defaultValue,o.children)}s=o.children,typeof s!="string"&&typeof s!="number"&&typeof s!="bigint"||t.textContent===""+s||o.suppressHydrationWarning===!0||Kg(t.textContent,s)?(o.popover!=null&&(ot("beforetoggle",t),ot("toggle",t)),o.onScroll!=null&&ot("scroll",t),o.onScrollEnd!=null&&ot("scrollend",t),o.onClick!=null&&(t.onclick=Qa),t=!0):t=!1,t||Ts(e,!0)}function tu(e){for(dn=e.return;dn;)switch(dn.tag){case 5:case 31:case 13:ia=!1;return;case 27:case 3:ia=!0;return;default:dn=dn.return}}function Gl(e){if(e!==dn)return!1;if(!it)return tu(e),it=!0,!1;var t=e.tag,s;if((s=t!==3&&t!==27)&&((s=t===5)&&(s=e.type,s=!(s!=="form"&&s!=="button")||sm(e.type,e.memoizedProps)),s=!s),s&&Nt&&Ts(e),tu(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));Nt=sv(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));Nt=sv(e)}else t===27?(t=Nt,ci(e.type)?(e=cm,cm=null,Nt=e):Nt=t):Nt=dn?qa(e.stateNode.nextSibling):null;return!0}function Js(){Nt=dn=null,it=!1}function Do(){var e=Ns;return e!==null&&(da===null?da=e:da.push.apply(da,e),Ns=null),e}function Pi(e){Ns===null?Ns=[e]:Ns.push(e)}var qi=Se(null),ss=null,ls=null;function Rs(e,t,s){Z(qi,t._currentValue),t._currentValue=s}function is(e){e._currentValue=qi.current,D(qi)}function Lo(e,t,s){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===s)break;e=e.return}}function _o(e,t,s,o){var u=e.child;for(u!==null&&(u.return=e);u!==null;){var h=u.dependencies;if(h!==null){var S=u.child;h=h.firstContext;e:for(;h!==null;){var M=h;h=u;for(var B=0;B<t.length;B++)if(M.context===t[B]){h.lanes|=s,M=h.alternate,M!==null&&(M.lanes|=s),Lo(h.return,s,e),o||(S=null);break e}h=M.next}}else if(u.tag===18){if(S=u.return,S===null)throw Error(r(341));S.lanes|=s,h=S.alternate,h!==null&&(h.lanes|=s),Lo(S,s,e),S=null}else S=u.child;if(S!==null)S.return=u;else for(S=u;S!==null;){if(S===e){S=null;break}if(u=S.sibling,u!==null){u.return=S.return,S=u;break}S=S.return}u=S}}function Vl(e,t,s,o){e=null;for(var u=t,h=!1;u!==null;){if(!h){if((u.flags&524288)!==0)h=!0;else if((u.flags&262144)!==0)break}if(u.tag===10){var S=u.alternate;if(S===null)throw Error(r(387));if(S=S.memoizedProps,S!==null){var M=u.type;Xn(u.pendingProps.value,S.value)||(e!==null?e.push(M):e=[M])}}else if(u===Ne.current){if(S=u.alternate,S===null)throw Error(r(387));S.memoizedState.memoizedState!==u.memoizedState.memoizedState&&(e!==null?e.push(sc):e=[sc])}u=u.return}e!==null&&_o(t,e,s,o),t.flags|=262144}function _r(e){for(e=e.firstContext;e!==null;){if(!Xn(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function el(e){ss=e,ls=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function fn(e){return zo(ss,e)}function rs(e,t){return ss===null&&el(e),zo(e,t)}function zo(e,t){var s=t._currentValue;if(t={context:t,memoizedValue:s,next:null},ls===null){if(e===null)throw Error(r(308));ls=t,e.dependencies={lanes:0,firstContext:t},e.flags|=524288}else ls=ls.next=t;return s}var Oo=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(s,o){e.push(o)}};this.abort=function(){t.aborted=!0,e.forEach(function(s){return s()})}},Kd=n.unstable_scheduleCallback,Qd=n.unstable_NormalPriority,Ot={$$typeof:E,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Yl(){return{controller:new Oo,data:new Map,refCount:0}}function Gi(e){e.refCount--,e.refCount===0&&Kd(Qd,function(){e.controller.abort()})}var Wt=null,Wl=0,tl=0,Kl=null;function Gh(e,t){if(Wt===null){var s=Wt=[];Wl=0,tl=Kf(),Kl={status:"pending",value:void 0,then:function(o){s.push(o)}}}return Wl++,t.then(nu,nu),t}function nu(){if(--Wl===0&&Wt!==null){Kl!==null&&(Kl.status="fulfilled");var e=Wt;Wt=null,tl=0,Kl=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function Xd(e,t){var s=[],o={status:"pending",value:null,reason:null,then:function(u){s.push(u)}};return e.then(function(){o.status="fulfilled",o.value=t;for(var u=0;u<s.length;u++)(0,s[u])(t)},function(u){for(o.status="rejected",o.reason=u,u=0;u<s.length;u++)(0,s[u])(void 0)}),o}var Io=z.S;z.S=function(e,t){yg=Ge(),typeof t=="object"&&t!==null&&typeof t.then=="function"&&Gh(e,t),Io!==null&&Io(e,t)};var Ua=Se(null);function nl(){var e=Ua.current;return e!==null?e:Tt.pooledCache}function Vi(e,t){t===null?Z(Ua,Ua.current):Z(Ua,t.pool)}function au(){var e=nl();return e===null?null:{parent:Ot._currentValue,pool:e}}var Ql=Error(r(460)),Bo=Error(r(474)),zr=Error(r(542)),Or={then:function(){}};function su(e){return e=e.status,e==="fulfilled"||e==="rejected"}function lu(e,t,s){switch(s=e[s],s===void 0?e.push(t):s!==t&&(t.then(Qa,Qa),t=s),t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,sl(e),e;default:if(typeof t.status=="string")t.then(Qa,Qa);else{if(e=Tt,e!==null&&100<e.shellSuspendCounter)throw Error(r(482));e=t,e.status="pending",e.then(function(o){if(t.status==="pending"){var u=t;u.status="fulfilled",u.value=o}},function(o){if(t.status==="pending"){var u=t;u.status="rejected",u.reason=o}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,sl(e),e}throw al=t,Ql}}function nn(e){try{var t=e._init;return t(e._payload)}catch(s){throw s!==null&&typeof s=="object"&&typeof s.then=="function"?(al=s,Ql):s}}var al=null;function iu(){if(al===null)throw Error(r(459));var e=al;return al=null,e}function sl(e){if(e===Ql||e===zr)throw Error(r(483))}var Xl=null,ll=0;function Ir(e){var t=ll;return ll+=1,Xl===null&&(Xl=[]),lu(Xl,e,t)}function Zl(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function x(e,t){throw t.$$typeof===b?Error(r(525)):(e=Object.prototype.toString.call(t),Error(r(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)))}function N(e){function t(W,U){if(e){var J=W.deletions;J===null?(W.deletions=[U],W.flags|=16):J.push(U)}}function s(W,U){if(!e)return null;for(;U!==null;)t(W,U),U=U.sibling;return null}function o(W){for(var U=new Map;W!==null;)W.key!==null?U.set(W.key,W):U.set(W.index,W),W=W.sibling;return U}function u(W,U){return W=Fa(W,U),W.index=0,W.sibling=null,W}function h(W,U,J){return W.index=J,e?(J=W.alternate,J!==null?(J=J.index,J<U?(W.flags|=67108866,U):J):(W.flags|=67108866,U)):(W.flags|=1048576,U)}function S(W){return e&&W.alternate===null&&(W.flags|=67108866),W}function M(W,U,J,xe){return U===null||U.tag!==6?(U=$a(J,W.mode,xe),U.return=W,U):(U=u(U,J),U.return=W,U)}function B(W,U,J,xe){var Pe=J.type;return Pe===A?he(W,U,J.props.children,xe,J.key):U!==null&&(U.elementType===Pe||typeof Pe=="object"&&Pe!==null&&Pe.$$typeof===_&&nn(Pe)===U.type)?(U=u(U,J.props),Zl(U,J),U.return=W,U):(U=Dr(J.type,J.key,J.props,null,W.mode,xe),Zl(U,J),U.return=W,U)}function ee(W,U,J,xe){return U===null||U.tag!==4||U.stateNode.containerInfo!==J.containerInfo||U.stateNode.implementation!==J.implementation?(U=No(J,W.mode,xe),U.return=W,U):(U=u(U,J.children||[]),U.return=W,U)}function he(W,U,J,xe,Pe){return U===null||U.tag!==7?(U=Ha(J,W.mode,xe,Pe),U.return=W,U):(U=u(U,J),U.return=W,U)}function we(W,U,J){if(typeof U=="string"&&U!==""||typeof U=="number"||typeof U=="bigint")return U=$a(""+U,W.mode,J),U.return=W,U;if(typeof U=="object"&&U!==null){switch(U.$$typeof){case C:return J=Dr(U.type,U.key,U.props,null,W.mode,J),Zl(J,U),J.return=W,J;case j:return U=No(U,W.mode,J),U.return=W,U;case _:return U=nn(U),we(W,U,J)}if(V(U)||Y(U))return U=Ha(U,W.mode,J,null),U.return=W,U;if(typeof U.then=="function")return we(W,Ir(U),J);if(U.$$typeof===E)return we(W,rs(W,U),J);x(W,U)}return null}function se(W,U,J,xe){var Pe=U!==null?U.key:null;if(typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint")return Pe!==null?null:M(W,U,""+J,xe);if(typeof J=="object"&&J!==null){switch(J.$$typeof){case C:return J.key===Pe?B(W,U,J,xe):null;case j:return J.key===Pe?ee(W,U,J,xe):null;case _:return J=nn(J),se(W,U,J,xe)}if(V(J)||Y(J))return Pe!==null?null:he(W,U,J,xe,null);if(typeof J.then=="function")return se(W,U,Ir(J),xe);if(J.$$typeof===E)return se(W,U,rs(W,J),xe);x(W,J)}return null}function ce(W,U,J,xe,Pe){if(typeof xe=="string"&&xe!==""||typeof xe=="number"||typeof xe=="bigint")return W=W.get(J)||null,M(U,W,""+xe,Pe);if(typeof xe=="object"&&xe!==null){switch(xe.$$typeof){case C:return W=W.get(xe.key===null?J:xe.key)||null,B(U,W,xe,Pe);case j:return W=W.get(xe.key===null?J:xe.key)||null,ee(U,W,xe,Pe);case _:return xe=nn(xe),ce(W,U,J,xe,Pe)}if(V(xe)||Y(xe))return W=W.get(J)||null,he(U,W,xe,Pe,null);if(typeof xe.then=="function")return ce(W,U,J,Ir(xe),Pe);if(xe.$$typeof===E)return ce(W,U,J,rs(U,xe),Pe);x(U,xe)}return null}function Oe(W,U,J,xe){for(var Pe=null,ht=null,Fe=U,at=U=0,ut=null;Fe!==null&&at<J.length;at++){Fe.index>at?(ut=Fe,Fe=null):ut=Fe.sibling;var pt=se(W,Fe,J[at],xe);if(pt===null){Fe===null&&(Fe=ut);break}e&&Fe&&pt.alternate===null&&t(W,Fe),U=h(pt,U,at),ht===null?Pe=pt:ht.sibling=pt,ht=pt,Fe=ut}if(at===J.length)return s(W,Fe),it&&zt(W,at),Pe;if(Fe===null){for(;at<J.length;at++)Fe=we(W,J[at],xe),Fe!==null&&(U=h(Fe,U,at),ht===null?Pe=Fe:ht.sibling=Fe,ht=Fe);return it&&zt(W,at),Pe}for(Fe=o(Fe);at<J.length;at++)ut=ce(Fe,W,at,J[at],xe),ut!==null&&(e&&ut.alternate!==null&&Fe.delete(ut.key===null?at:ut.key),U=h(ut,U,at),ht===null?Pe=ut:ht.sibling=ut,ht=ut);return e&&Fe.forEach(function(hi){return t(W,hi)}),it&&zt(W,at),Pe}function qe(W,U,J,xe){if(J==null)throw Error(r(151));for(var Pe=null,ht=null,Fe=U,at=U=0,ut=null,pt=J.next();Fe!==null&&!pt.done;at++,pt=J.next()){Fe.index>at?(ut=Fe,Fe=null):ut=Fe.sibling;var hi=se(W,Fe,pt.value,xe);if(hi===null){Fe===null&&(Fe=ut);break}e&&Fe&&hi.alternate===null&&t(W,Fe),U=h(hi,U,at),ht===null?Pe=hi:ht.sibling=hi,ht=hi,Fe=ut}if(pt.done)return s(W,Fe),it&&zt(W,at),Pe;if(Fe===null){for(;!pt.done;at++,pt=J.next())pt=we(W,pt.value,xe),pt!==null&&(U=h(pt,U,at),ht===null?Pe=pt:ht.sibling=pt,ht=pt);return it&&zt(W,at),Pe}for(Fe=o(Fe);!pt.done;at++,pt=J.next())pt=ce(Fe,W,at,pt.value,xe),pt!==null&&(e&&pt.alternate!==null&&Fe.delete(pt.key===null?at:pt.key),U=h(pt,U,at),ht===null?Pe=pt:ht.sibling=pt,ht=pt);return e&&Fe.forEach(function(Hb){return t(W,Hb)}),it&&zt(W,at),Pe}function kt(W,U,J,xe){if(typeof J=="object"&&J!==null&&J.type===A&&J.key===null&&(J=J.props.children),typeof J=="object"&&J!==null){switch(J.$$typeof){case C:e:{for(var Pe=J.key;U!==null;){if(U.key===Pe){if(Pe=J.type,Pe===A){if(U.tag===7){s(W,U.sibling),xe=u(U,J.props.children),xe.return=W,W=xe;break e}}else if(U.elementType===Pe||typeof Pe=="object"&&Pe!==null&&Pe.$$typeof===_&&nn(Pe)===U.type){s(W,U.sibling),xe=u(U,J.props),Zl(xe,J),xe.return=W,W=xe;break e}s(W,U);break}else t(W,U);U=U.sibling}J.type===A?(xe=Ha(J.props.children,W.mode,xe,J.key),xe.return=W,W=xe):(xe=Dr(J.type,J.key,J.props,null,W.mode,xe),Zl(xe,J),xe.return=W,W=xe)}return S(W);case j:e:{for(Pe=J.key;U!==null;){if(U.key===Pe)if(U.tag===4&&U.stateNode.containerInfo===J.containerInfo&&U.stateNode.implementation===J.implementation){s(W,U.sibling),xe=u(U,J.children||[]),xe.return=W,W=xe;break e}else{s(W,U);break}else t(W,U);U=U.sibling}xe=No(J,W.mode,xe),xe.return=W,W=xe}return S(W);case _:return J=nn(J),kt(W,U,J,xe)}if(V(J))return Oe(W,U,J,xe);if(Y(J)){if(Pe=Y(J),typeof Pe!="function")throw Error(r(150));return J=Pe.call(J),qe(W,U,J,xe)}if(typeof J.then=="function")return kt(W,U,Ir(J),xe);if(J.$$typeof===E)return kt(W,U,rs(W,J),xe);x(W,J)}return typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint"?(J=""+J,U!==null&&U.tag===6?(s(W,U.sibling),xe=u(U,J),xe.return=W,W=xe):(s(W,U),xe=$a(J,W.mode,xe),xe.return=W,W=xe),S(W)):s(W,U)}return function(W,U,J,xe){try{ll=0;var Pe=kt(W,U,J,xe);return Xl=null,Pe}catch(Fe){if(Fe===Ql||Fe===zr)throw Fe;var ht=Zn(29,Fe,null,W.mode);return ht.lanes=xe,ht.return=W,ht}}}var L=N(!0),H=N(!1),O=!1;function pe(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ve(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ee(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function $e(e,t,s){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,(vt&2)!==0){var u=o.pending;return u===null?t.next=t:(t.next=u.next,u.next=t),o.pending=t,t=Fi(e),Rr(e,null,s),t}return Bi(e,o,t,s),Fi(e)}function Ye(e,t,s){if(t=t.updateQueue,t!==null&&(t=t.shared,(s&4194048)!==0)){var o=t.lanes;o&=e.pendingLanes,s|=o,t.lanes=s,Ea(e,s)}}function Dt(e,t){var s=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,s===o)){var u=null,h=null;if(s=s.firstBaseUpdate,s!==null){do{var S={lane:s.lane,tag:s.tag,payload:s.payload,callback:null,next:null};h===null?u=h=S:h=h.next=S,s=s.next}while(s!==null);h===null?u=h=t:h=h.next=t}else u=h=t;s={baseState:o.baseState,firstBaseUpdate:u,lastBaseUpdate:h,shared:o.shared,callbacks:o.callbacks},e.updateQueue=s;return}e=s.lastBaseUpdate,e===null?s.firstBaseUpdate=t:e.next=t,s.lastBaseUpdate=t}var xn=!1;function Dn(){if(xn){var e=Kl;if(e!==null)throw e}}function ra(e,t,s,o){xn=!1;var u=e.updateQueue;O=!1;var h=u.firstBaseUpdate,S=u.lastBaseUpdate,M=u.shared.pending;if(M!==null){u.shared.pending=null;var B=M,ee=B.next;B.next=null,S===null?h=ee:S.next=ee,S=B;var he=e.alternate;he!==null&&(he=he.updateQueue,M=he.lastBaseUpdate,M!==S&&(M===null?he.firstBaseUpdate=ee:M.next=ee,he.lastBaseUpdate=B))}if(h!==null){var we=u.baseState;S=0,he=ee=B=null,M=h;do{var se=M.lane&-536870913,ce=se!==M.lane;if(ce?(ct&se)===se:(o&se)===se){se!==0&&se===tl&&(xn=!0),he!==null&&(he=he.next={lane:0,tag:M.tag,payload:M.payload,callback:null,next:null});e:{var Oe=e,qe=M;se=t;var kt=s;switch(qe.tag){case 1:if(Oe=qe.payload,typeof Oe=="function"){we=Oe.call(kt,we,se);break e}we=Oe;break e;case 3:Oe.flags=Oe.flags&-65537|128;case 0:if(Oe=qe.payload,se=typeof Oe=="function"?Oe.call(kt,we,se):Oe,se==null)break e;we=y({},we,se);break e;case 2:O=!0}}se=M.callback,se!==null&&(e.flags|=64,ce&&(e.flags|=8192),ce=u.callbacks,ce===null?u.callbacks=[se]:ce.push(se))}else ce={lane:se,tag:M.tag,payload:M.payload,callback:M.callback,next:null},he===null?(ee=he=ce,B=we):he=he.next=ce,S|=se;if(M=M.next,M===null){if(M=u.shared.pending,M===null)break;ce=M,M=ce.next,ce.next=null,u.lastBaseUpdate=ce,u.shared.pending=null}}while(!0);he===null&&(B=we),u.baseState=B,u.firstBaseUpdate=ee,u.lastBaseUpdate=he,h===null&&(u.shared.lanes=0),si|=S,e.lanes=S,e.memoizedState=we}}function Es(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function Jl(e,t){var s=e.callbacks;if(s!==null)for(e.callbacks=null,e=0;e<s.length;e++)Es(s[e],t)}var os=Se(null),Br=Se(0);function Vh(e,t){e=hl,Z(Br,e),Z(os,t),hl=e|t.baseLanes}function Zd(){Z(Br,hl),Z(os,os.current)}function Jd(){hl=Br.current,D(os),D(Br)}var ba=Se(null),Pa=null;function ei(e){var t=e.alternate;Z(Kt,Kt.current&1),Z(ba,e),Pa===null&&(t===null||os.current!==null||t.memoizedState!==null)&&(Pa=e)}function ef(e){Z(Kt,Kt.current),Z(ba,e),Pa===null&&(Pa=e)}function Yh(e){e.tag===22?(Z(Kt,Kt.current),Z(ba,e),Pa===null&&(Pa=e)):ti()}function ti(){Z(Kt,Kt.current),Z(ba,ba.current)}function Sa(e){D(ba),Pa===e&&(Pa=null),D(Kt)}var Kt=Se(0);function ru(e){for(var t=e;t!==null;){if(t.tag===13){var s=t.memoizedState;if(s!==null&&(s=s.dehydrated,s===null||rm(s)||om(s)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var il=0,et=null,Ct=null,an=null,ou=!1,Fr=!1,Yi=!1,cu=0,Fo=0,Hr=null,Rw=0;function $t(){throw Error(r(321))}function tf(e,t){if(t===null)return!1;for(var s=0;s<t.length&&s<e.length;s++)if(!Xn(e[s],t[s]))return!1;return!0}function nf(e,t,s,o,u,h){return il=h,et=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,z.H=e===null||e.memoizedState===null?Rp:xf,Yi=!1,h=s(o,u),Yi=!1,Fr&&(h=Kh(t,s,o,u)),Wh(e),h}function Wh(e){z.H=Uo;var t=Ct!==null&&Ct.next!==null;if(il=0,an=Ct=et=null,ou=!1,Fo=0,Hr=null,t)throw Error(r(300));e===null||sn||(e=e.dependencies,e!==null&&_r(e)&&(sn=!0))}function Kh(e,t,s,o){et=e;var u=0;do{if(Fr&&(Hr=null),Fo=0,Fr=!1,25<=u)throw Error(r(301));if(u+=1,an=Ct=null,e.updateQueue!=null){var h=e.updateQueue;h.lastEffect=null,h.events=null,h.stores=null,h.memoCache!=null&&(h.memoCache.index=0)}z.H=Ep,h=t(s,o)}while(Fr);return h}function Ew(){var e=z.H,t=e.useState()[0];return t=typeof t.then=="function"?Ho(t):t,e=e.useState()[0],(Ct!==null?Ct.memoizedState:null)!==e&&(et.flags|=1024),t}function af(){var e=cu!==0;return cu=0,e}function sf(e,t,s){t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~s}function lf(e){if(ou){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}ou=!1}il=0,an=Ct=et=null,Fr=!1,Fo=cu=0,Hr=null}function ea(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return an===null?et.memoizedState=an=e:an=an.next=e,an}function Qt(){if(Ct===null){var e=et.alternate;e=e!==null?e.memoizedState:null}else e=Ct.next;var t=an===null?et.memoizedState:an.next;if(t!==null)an=t,Ct=e;else{if(e===null)throw et.alternate===null?Error(r(467)):Error(r(310));Ct=e,e={memoizedState:Ct.memoizedState,baseState:Ct.baseState,baseQueue:Ct.baseQueue,queue:Ct.queue,next:null},an===null?et.memoizedState=an=e:an=an.next=e}return an}function uu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Ho(e){var t=Fo;return Fo+=1,Hr===null&&(Hr=[]),e=lu(Hr,e,t),t=et,(an===null?t.memoizedState:an.next)===null&&(t=t.alternate,z.H=t===null||t.memoizedState===null?Rp:xf),e}function du(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Ho(e);if(e.$$typeof===E)return fn(e)}throw Error(r(438,String(e)))}function rf(e){var t=null,s=et.updateQueue;if(s!==null&&(t=s.memoCache),t==null){var o=et.alternate;o!==null&&(o=o.updateQueue,o!==null&&(o=o.memoCache,o!=null&&(t={data:o.data.map(function(u){return u.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),s===null&&(s=uu(),et.updateQueue=s),s.memoCache=t,s=t.data[t.index],s===void 0)for(s=t.data[t.index]=Array(e),o=0;o<e;o++)s[o]=G;return t.index++,s}function rl(e,t){return typeof t=="function"?t(e):t}function fu(e){var t=Qt();return of(t,Ct,e)}function of(e,t,s){var o=e.queue;if(o===null)throw Error(r(311));o.lastRenderedReducer=s;var u=e.baseQueue,h=o.pending;if(h!==null){if(u!==null){var S=u.next;u.next=h.next,h.next=S}t.baseQueue=u=h,o.pending=null}if(h=e.baseState,u===null)e.memoizedState=h;else{t=u.next;var M=S=null,B=null,ee=t,he=!1;do{var we=ee.lane&-536870913;if(we!==ee.lane?(ct&we)===we:(il&we)===we){var se=ee.revertLane;if(se===0)B!==null&&(B=B.next={lane:0,revertLane:0,gesture:null,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null}),we===tl&&(he=!0);else if((il&se)===se){ee=ee.next,se===tl&&(he=!0);continue}else we={lane:0,revertLane:ee.revertLane,gesture:null,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null},B===null?(M=B=we,S=h):B=B.next=we,et.lanes|=se,si|=se;we=ee.action,Yi&&s(h,we),h=ee.hasEagerState?ee.eagerState:s(h,we)}else se={lane:we,revertLane:ee.revertLane,gesture:ee.gesture,action:ee.action,hasEagerState:ee.hasEagerState,eagerState:ee.eagerState,next:null},B===null?(M=B=se,S=h):B=B.next=se,et.lanes|=we,si|=we;ee=ee.next}while(ee!==null&&ee!==t);if(B===null?S=h:B.next=M,!Xn(h,e.memoizedState)&&(sn=!0,he&&(s=Kl,s!==null)))throw s;e.memoizedState=h,e.baseState=S,e.baseQueue=B,o.lastRenderedState=h}return u===null&&(o.lanes=0),[e.memoizedState,o.dispatch]}function cf(e){var t=Qt(),s=t.queue;if(s===null)throw Error(r(311));s.lastRenderedReducer=e;var o=s.dispatch,u=s.pending,h=t.memoizedState;if(u!==null){s.pending=null;var S=u=u.next;do h=e(h,S.action),S=S.next;while(S!==u);Xn(h,t.memoizedState)||(sn=!0),t.memoizedState=h,t.baseQueue===null&&(t.baseState=h),s.lastRenderedState=h}return[h,o]}function Qh(e,t,s){var o=et,u=Qt(),h=it;if(h){if(s===void 0)throw Error(r(407));s=s()}else s=t();var S=!Xn((Ct||u).memoizedState,s);if(S&&(u.memoizedState=s,sn=!0),u=u.queue,ff(Jh.bind(null,o,u,e),[e]),u.getSnapshot!==t||S||an!==null&&an.memoizedState.tag&1){if(o.flags|=2048,$r(9,{destroy:void 0},Zh.bind(null,o,u,s,t),null),Tt===null)throw Error(r(349));h||(il&127)!==0||Xh(o,t,s)}return s}function Xh(e,t,s){e.flags|=16384,e={getSnapshot:t,value:s},t=et.updateQueue,t===null?(t=uu(),et.updateQueue=t,t.stores=[e]):(s=t.stores,s===null?t.stores=[e]:s.push(e))}function Zh(e,t,s,o){t.value=s,t.getSnapshot=o,ep(t)&&tp(e)}function Jh(e,t,s){return s(function(){ep(t)&&tp(e)})}function ep(e){var t=e.getSnapshot;e=e.value;try{var s=t();return!Xn(e,s)}catch{return!0}}function tp(e){var t=As(e,2);t!==null&&fa(t,e,2)}function uf(e){var t=ea();if(typeof e=="function"){var s=e;if(e=s(),Yi){An(!0);try{s()}finally{An(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:rl,lastRenderedState:e},t}function np(e,t,s,o){return e.baseState=s,of(e,Ct,typeof o=="function"?o:rl)}function Dw(e,t,s,o,u){if(pu(e))throw Error(r(485));if(e=t.action,e!==null){var h={payload:u,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(S){h.listeners.push(S)}};z.T!==null?s(!0):h.isTransition=!1,o(h),s=t.pending,s===null?(h.next=t.pending=h,ap(t,h)):(h.next=s.next,t.pending=s.next=h)}}function ap(e,t){var s=t.action,o=t.payload,u=e.state;if(t.isTransition){var h=z.T,S={};z.T=S;try{var M=s(u,o),B=z.S;B!==null&&B(S,M),sp(e,t,M)}catch(ee){df(e,t,ee)}finally{h!==null&&S.types!==null&&(h.types=S.types),z.T=h}}else try{h=s(u,o),sp(e,t,h)}catch(ee){df(e,t,ee)}}function sp(e,t,s){s!==null&&typeof s=="object"&&typeof s.then=="function"?s.then(function(o){lp(e,t,o)},function(o){return df(e,t,o)}):lp(e,t,s)}function lp(e,t,s){t.status="fulfilled",t.value=s,ip(t),e.state=s,t=e.pending,t!==null&&(s=t.next,s===t?e.pending=null:(s=s.next,t.next=s,ap(e,s)))}function df(e,t,s){var o=e.pending;if(e.pending=null,o!==null){o=o.next;do t.status="rejected",t.reason=s,ip(t),t=t.next;while(t!==o)}e.action=null}function ip(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function rp(e,t){return t}function op(e,t){if(it){var s=Tt.formState;if(s!==null){e:{var o=et;if(it){if(Nt){t:{for(var u=Nt,h=ia;u.nodeType!==8;){if(!h){u=null;break t}if(u=qa(u.nextSibling),u===null){u=null;break t}}h=u.data,u=h==="F!"||h==="F"?u:null}if(u){Nt=qa(u.nextSibling),o=u.data==="F!";break e}}Ts(o)}o=!1}o&&(t=s[0])}}return s=ea(),s.memoizedState=s.baseState=t,o={pending:null,lanes:0,dispatch:null,lastRenderedReducer:rp,lastRenderedState:t},s.queue=o,s=Mp.bind(null,et,o),o.dispatch=s,o=uf(!1),h=vf.bind(null,et,!1,o.queue),o=ea(),u={state:t,dispatch:null,action:e,pending:null},o.queue=u,s=Dw.bind(null,et,u,h,s),u.dispatch=s,o.memoizedState=e,[t,s,!1]}function cp(e){var t=Qt();return up(t,Ct,e)}function up(e,t,s){if(t=of(e,t,rp)[0],e=fu(rl)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var o=Ho(t)}catch(S){throw S===Ql?zr:S}else o=t;t=Qt();var u=t.queue,h=u.dispatch;return s!==t.memoizedState&&(et.flags|=2048,$r(9,{destroy:void 0},Lw.bind(null,u,s),null)),[o,h,e]}function Lw(e,t){e.action=t}function dp(e){var t=Qt(),s=Ct;if(s!==null)return up(t,s,e);Qt(),t=t.memoizedState,s=Qt();var o=s.queue.dispatch;return s.memoizedState=e,[t,o,!1]}function $r(e,t,s,o){return e={tag:e,create:s,deps:o,inst:t,next:null},t=et.updateQueue,t===null&&(t=uu(),et.updateQueue=t),s=t.lastEffect,s===null?t.lastEffect=e.next=e:(o=s.next,s.next=e,e.next=o,t.lastEffect=e),e}function fp(){return Qt().memoizedState}function mu(e,t,s,o){var u=ea();et.flags|=e,u.memoizedState=$r(1|t,{destroy:void 0},s,o===void 0?null:o)}function hu(e,t,s,o){var u=Qt();o=o===void 0?null:o;var h=u.memoizedState.inst;Ct!==null&&o!==null&&tf(o,Ct.memoizedState.deps)?u.memoizedState=$r(t,h,s,o):(et.flags|=e,u.memoizedState=$r(1|t,h,s,o))}function mp(e,t){mu(8390656,8,e,t)}function ff(e,t){hu(2048,8,e,t)}function _w(e){et.flags|=4;var t=et.updateQueue;if(t===null)t=uu(),et.updateQueue=t,t.events=[e];else{var s=t.events;s===null?t.events=[e]:s.push(e)}}function hp(e){var t=Qt().memoizedState;return _w({ref:t,nextImpl:e}),function(){if((vt&2)!==0)throw Error(r(440));return t.impl.apply(void 0,arguments)}}function pp(e,t){return hu(4,2,e,t)}function gp(e,t){return hu(4,4,e,t)}function vp(e,t){if(typeof t=="function"){e=e();var s=t(e);return function(){typeof s=="function"?s():t(null)}}if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function xp(e,t,s){s=s!=null?s.concat([e]):null,hu(4,4,vp.bind(null,t,e),s)}function mf(){}function yp(e,t){var s=Qt();t=t===void 0?null:t;var o=s.memoizedState;return t!==null&&tf(t,o[1])?o[0]:(s.memoizedState=[e,t],e)}function wp(e,t){var s=Qt();t=t===void 0?null:t;var o=s.memoizedState;if(t!==null&&tf(t,o[1]))return o[0];if(o=e(),Yi){An(!0);try{e()}finally{An(!1)}}return s.memoizedState=[o,t],o}function hf(e,t,s){return s===void 0||(il&1073741824)!==0&&(ct&261930)===0?e.memoizedState=t:(e.memoizedState=s,e=bg(),et.lanes|=e,si|=e,s)}function bp(e,t,s,o){return Xn(s,t)?s:os.current!==null?(e=hf(e,s,o),Xn(e,t)||(sn=!0),e):(il&42)===0||(il&1073741824)!==0&&(ct&261930)===0?(sn=!0,e.memoizedState=s):(e=bg(),et.lanes|=e,si|=e,t)}function Sp(e,t,s,o,u){var h=K.p;K.p=h!==0&&8>h?h:8;var S=z.T,M={};z.T=M,vf(e,!1,t,s);try{var B=u(),ee=z.S;if(ee!==null&&ee(M,B),B!==null&&typeof B=="object"&&typeof B.then=="function"){var he=Xd(B,o);$o(e,t,he,ka(e))}else $o(e,t,o,ka(e))}catch(we){$o(e,t,{then:function(){},status:"rejected",reason:we},ka())}finally{K.p=h,S!==null&&M.types!==null&&(S.types=M.types),z.T=S}}function zw(){}function pf(e,t,s,o){if(e.tag!==5)throw Error(r(476));var u=Cp(e).queue;Sp(e,u,t,Q,s===null?zw:function(){return jp(e),s(o)})}function Cp(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rl,lastRenderedState:Q},next:null};var s={};return t.next={memoizedState:s,baseState:s,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rl,lastRenderedState:s},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function jp(e){var t=Cp(e);t.next===null&&(t=e.alternate.memoizedState),$o(e,t.next.queue,{},ka())}function gf(){return fn(sc)}function kp(){return Qt().memoizedState}function Ap(){return Qt().memoizedState}function Ow(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var s=ka();e=Ee(s);var o=$e(t,e,s);o!==null&&(fa(o,t,s),Ye(o,t,s)),t={cache:Yl()},e.payload=t;return}t=t.return}}function Iw(e,t,s){var o=ka();s={lane:o,revertLane:0,gesture:null,action:s,hasEagerState:!1,eagerState:null,next:null},pu(e)?Np(t,s):(s=Zs(e,t,s,o),s!==null&&(fa(s,e,o),Tp(s,t,o)))}function Mp(e,t,s){var o=ka();$o(e,t,s,o)}function $o(e,t,s,o){var u={lane:o,revertLane:0,gesture:null,action:s,hasEagerState:!1,eagerState:null,next:null};if(pu(e))Np(t,u);else{var h=e.alternate;if(e.lanes===0&&(h===null||h.lanes===0)&&(h=t.lastRenderedReducer,h!==null))try{var S=t.lastRenderedState,M=h(S,s);if(u.hasEagerState=!0,u.eagerState=M,Xn(M,S))return Bi(e,t,u,0),Tt===null&&Xs(),!1}catch{}if(s=Zs(e,t,u,o),s!==null)return fa(s,e,o),Tp(s,t,o),!0}return!1}function vf(e,t,s,o){if(o={lane:2,revertLane:Kf(),gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},pu(e)){if(t)throw Error(r(479))}else t=Zs(e,s,o,2),t!==null&&fa(t,e,2)}function pu(e){var t=e.alternate;return e===et||t!==null&&t===et}function Np(e,t){Fr=ou=!0;var s=e.pending;s===null?t.next=t:(t.next=s.next,s.next=t),e.pending=t}function Tp(e,t,s){if((s&4194048)!==0){var o=t.lanes;o&=e.pendingLanes,s|=o,t.lanes=s,Ea(e,s)}}var Uo={readContext:fn,use:du,useCallback:$t,useContext:$t,useEffect:$t,useImperativeHandle:$t,useLayoutEffect:$t,useInsertionEffect:$t,useMemo:$t,useReducer:$t,useRef:$t,useState:$t,useDebugValue:$t,useDeferredValue:$t,useTransition:$t,useSyncExternalStore:$t,useId:$t,useHostTransitionStatus:$t,useFormState:$t,useActionState:$t,useOptimistic:$t,useMemoCache:$t,useCacheRefresh:$t};Uo.useEffectEvent=$t;var Rp={readContext:fn,use:du,useCallback:function(e,t){return ea().memoizedState=[e,t===void 0?null:t],e},useContext:fn,useEffect:mp,useImperativeHandle:function(e,t,s){s=s!=null?s.concat([e]):null,mu(4194308,4,vp.bind(null,t,e),s)},useLayoutEffect:function(e,t){return mu(4194308,4,e,t)},useInsertionEffect:function(e,t){mu(4,2,e,t)},useMemo:function(e,t){var s=ea();t=t===void 0?null:t;var o=e();if(Yi){An(!0);try{e()}finally{An(!1)}}return s.memoizedState=[o,t],o},useReducer:function(e,t,s){var o=ea();if(s!==void 0){var u=s(t);if(Yi){An(!0);try{s(t)}finally{An(!1)}}}else u=t;return o.memoizedState=o.baseState=u,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:u},o.queue=e,e=e.dispatch=Iw.bind(null,et,e),[o.memoizedState,e]},useRef:function(e){var t=ea();return e={current:e},t.memoizedState=e},useState:function(e){e=uf(e);var t=e.queue,s=Mp.bind(null,et,t);return t.dispatch=s,[e.memoizedState,s]},useDebugValue:mf,useDeferredValue:function(e,t){var s=ea();return hf(s,e,t)},useTransition:function(){var e=uf(!1);return e=Sp.bind(null,et,e.queue,!0,!1),ea().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,s){var o=et,u=ea();if(it){if(s===void 0)throw Error(r(407));s=s()}else{if(s=t(),Tt===null)throw Error(r(349));(ct&127)!==0||Xh(o,t,s)}u.memoizedState=s;var h={value:s,getSnapshot:t};return u.queue=h,mp(Jh.bind(null,o,h,e),[e]),o.flags|=2048,$r(9,{destroy:void 0},Zh.bind(null,o,h,s,t),null),s},useId:function(){var e=ea(),t=Tt.identifierPrefix;if(it){var s=St,o=Jn;s=(o&~(1<<32-Me(o)-1)).toString(32)+s,t="_"+t+"R_"+s,s=cu++,0<s&&(t+="H"+s.toString(32)),t+="_"}else s=Rw++,t="_"+t+"r_"+s.toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:gf,useFormState:op,useActionState:op,useOptimistic:function(e){var t=ea();t.memoizedState=t.baseState=e;var s={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=s,t=vf.bind(null,et,!0,s),s.dispatch=t,[e,t]},useMemoCache:rf,useCacheRefresh:function(){return ea().memoizedState=Ow.bind(null,et)},useEffectEvent:function(e){var t=ea(),s={impl:e};return t.memoizedState=s,function(){if((vt&2)!==0)throw Error(r(440));return s.impl.apply(void 0,arguments)}}},xf={readContext:fn,use:du,useCallback:yp,useContext:fn,useEffect:ff,useImperativeHandle:xp,useInsertionEffect:pp,useLayoutEffect:gp,useMemo:wp,useReducer:fu,useRef:fp,useState:function(){return fu(rl)},useDebugValue:mf,useDeferredValue:function(e,t){var s=Qt();return bp(s,Ct.memoizedState,e,t)},useTransition:function(){var e=fu(rl)[0],t=Qt().memoizedState;return[typeof e=="boolean"?e:Ho(e),t]},useSyncExternalStore:Qh,useId:kp,useHostTransitionStatus:gf,useFormState:cp,useActionState:cp,useOptimistic:function(e,t){var s=Qt();return np(s,Ct,e,t)},useMemoCache:rf,useCacheRefresh:Ap};xf.useEffectEvent=hp;var Ep={readContext:fn,use:du,useCallback:yp,useContext:fn,useEffect:ff,useImperativeHandle:xp,useInsertionEffect:pp,useLayoutEffect:gp,useMemo:wp,useReducer:cf,useRef:fp,useState:function(){return cf(rl)},useDebugValue:mf,useDeferredValue:function(e,t){var s=Qt();return Ct===null?hf(s,e,t):bp(s,Ct.memoizedState,e,t)},useTransition:function(){var e=cf(rl)[0],t=Qt().memoizedState;return[typeof e=="boolean"?e:Ho(e),t]},useSyncExternalStore:Qh,useId:kp,useHostTransitionStatus:gf,useFormState:dp,useActionState:dp,useOptimistic:function(e,t){var s=Qt();return Ct!==null?np(s,Ct,e,t):(s.baseState=e,[e,s.queue.dispatch])},useMemoCache:rf,useCacheRefresh:Ap};Ep.useEffectEvent=hp;function yf(e,t,s,o){t=e.memoizedState,s=s(o,t),s=s==null?t:y({},t,s),e.memoizedState=s,e.lanes===0&&(e.updateQueue.baseState=s)}var wf={enqueueSetState:function(e,t,s){e=e._reactInternals;var o=ka(),u=Ee(o);u.payload=t,s!=null&&(u.callback=s),t=$e(e,u,o),t!==null&&(fa(t,e,o),Ye(t,e,o))},enqueueReplaceState:function(e,t,s){e=e._reactInternals;var o=ka(),u=Ee(o);u.tag=1,u.payload=t,s!=null&&(u.callback=s),t=$e(e,u,o),t!==null&&(fa(t,e,o),Ye(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var s=ka(),o=Ee(s);o.tag=2,t!=null&&(o.callback=t),t=$e(e,o,s),t!==null&&(fa(t,e,s),Ye(t,e,s))}};function Dp(e,t,s,o,u,h,S){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(o,h,S):t.prototype&&t.prototype.isPureReactComponent?!Bl(s,o)||!Bl(u,h):!0}function Lp(e,t,s,o){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(s,o),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(s,o),t.state!==e&&wf.enqueueReplaceState(t,t.state,null)}function Wi(e,t){var s=t;if("ref"in t){s={};for(var o in t)o!=="ref"&&(s[o]=t[o])}if(e=e.defaultProps){s===t&&(s=y({},s));for(var u in e)s[u]===void 0&&(s[u]=e[u])}return s}function _p(e){Tr(e)}function zp(e){console.error(e)}function Op(e){Tr(e)}function gu(e,t){try{var s=e.onUncaughtError;s(t.value,{componentStack:t.stack})}catch(o){setTimeout(function(){throw o})}}function Ip(e,t,s){try{var o=e.onCaughtError;o(s.value,{componentStack:s.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(u){setTimeout(function(){throw u})}}function bf(e,t,s){return s=Ee(s),s.tag=3,s.payload={element:null},s.callback=function(){gu(e,t)},s}function Bp(e){return e=Ee(e),e.tag=3,e}function Fp(e,t,s,o){var u=s.type.getDerivedStateFromError;if(typeof u=="function"){var h=o.value;e.payload=function(){return u(h)},e.callback=function(){Ip(t,s,o)}}var S=s.stateNode;S!==null&&typeof S.componentDidCatch=="function"&&(e.callback=function(){Ip(t,s,o),typeof u!="function"&&(li===null?li=new Set([this]):li.add(this));var M=o.stack;this.componentDidCatch(o.value,{componentStack:M!==null?M:""})})}function Bw(e,t,s,o,u){if(s.flags|=32768,o!==null&&typeof o=="object"&&typeof o.then=="function"){if(t=s.alternate,t!==null&&Vl(t,s,u,!0),s=ba.current,s!==null){switch(s.tag){case 31:case 13:return Pa===null?Nu():s.alternate===null&&Ut===0&&(Ut=3),s.flags&=-257,s.flags|=65536,s.lanes=u,o===Or?s.flags|=16384:(t=s.updateQueue,t===null?s.updateQueue=new Set([o]):t.add(o),Vf(e,o,u)),!1;case 22:return s.flags|=65536,o===Or?s.flags|=16384:(t=s.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([o])},s.updateQueue=t):(s=t.retryQueue,s===null?t.retryQueue=new Set([o]):s.add(o)),Vf(e,o,u)),!1}throw Error(r(435,s.tag))}return Vf(e,o,u),Nu(),!1}if(it)return t=ba.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=u,o!==Eo&&(e=Error(r(422),{cause:o}),Pi($n(e,s)))):(o!==Eo&&(t=Error(r(423),{cause:o}),Pi($n(t,s))),e=e.current.alternate,e.flags|=65536,u&=-u,e.lanes|=u,o=$n(o,s),u=bf(e.stateNode,o,u),Dt(e,u),Ut!==4&&(Ut=2)),!1;var h=Error(r(520),{cause:o});if(h=$n(h,s),Qo===null?Qo=[h]:Qo.push(h),Ut!==4&&(Ut=2),t===null)return!0;o=$n(o,s),s=t;do{switch(s.tag){case 3:return s.flags|=65536,e=u&-u,s.lanes|=e,e=bf(s.stateNode,o,e),Dt(s,e),!1;case 1:if(t=s.type,h=s.stateNode,(s.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||h!==null&&typeof h.componentDidCatch=="function"&&(li===null||!li.has(h))))return s.flags|=65536,u&=-u,s.lanes|=u,u=Bp(u),Fp(u,e,s,o),Dt(s,u),!1}s=s.return}while(s!==null);return!1}var Sf=Error(r(461)),sn=!1;function Ln(e,t,s,o){t.child=e===null?H(t,null,s,o):L(t,e.child,s,o)}function Hp(e,t,s,o,u){s=s.render;var h=t.ref;if("ref"in o){var S={};for(var M in o)M!=="ref"&&(S[M]=o[M])}else S=o;return el(t),o=nf(e,t,s,S,h,u),M=af(),e!==null&&!sn?(sf(e,t,u),ol(e,t,u)):(it&&M&&To(t),t.flags|=1,Ln(e,t,o,u),t.child)}function $p(e,t,s,o,u){if(e===null){var h=s.type;return typeof h=="function"&&!Er(h)&&h.defaultProps===void 0&&s.compare===null?(t.tag=15,t.type=h,Up(e,t,h,o,u)):(e=Dr(s.type,null,o,t,t.mode,u),e.ref=t.ref,e.return=t,t.child=e)}if(h=e.child,!Rf(e,u)){var S=h.memoizedProps;if(s=s.compare,s=s!==null?s:Bl,s(S,o)&&e.ref===t.ref)return ol(e,t,u)}return t.flags|=1,e=Fa(h,o),e.ref=t.ref,e.return=t,t.child=e}function Up(e,t,s,o,u){if(e!==null){var h=e.memoizedProps;if(Bl(h,o)&&e.ref===t.ref)if(sn=!1,t.pendingProps=o=h,Rf(e,u))(e.flags&131072)!==0&&(sn=!0);else return t.lanes=e.lanes,ol(e,t,u)}return Cf(e,t,s,o,u)}function Pp(e,t,s,o){var u=o.children,h=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),o.mode==="hidden"){if((t.flags&128)!==0){if(h=h!==null?h.baseLanes|s:s,e!==null){for(o=t.child=e.child,u=0;o!==null;)u=u|o.lanes|o.childLanes,o=o.sibling;o=u&~h}else o=0,t.child=null;return qp(e,t,h,s,o)}if((s&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Vi(t,h!==null?h.cachePool:null),h!==null?Vh(t,h):Zd(),Yh(t);else return o=t.lanes=536870912,qp(e,t,h!==null?h.baseLanes|s:s,s,o)}else h!==null?(Vi(t,h.cachePool),Vh(t,h),ti(),t.memoizedState=null):(e!==null&&Vi(t,null),Zd(),ti());return Ln(e,t,u,s),t.child}function Po(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function qp(e,t,s,o,u){var h=nl();return h=h===null?null:{parent:Ot._currentValue,pool:h},t.memoizedState={baseLanes:s,cachePool:h},e!==null&&Vi(t,null),Zd(),Yh(t),e!==null&&Vl(e,t,o,!0),t.childLanes=u,null}function vu(e,t){return t=yu({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function Gp(e,t,s){return L(t,e.child,null,s),e=vu(t,t.pendingProps),e.flags|=2,Sa(t),t.memoizedState=null,e}function Fw(e,t,s){var o=t.pendingProps,u=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(it){if(o.mode==="hidden")return e=vu(t,o),t.lanes=536870912,Po(null,e);if(ef(t),(e=Nt)?(e=av(e,ia),e=e!==null&&e.data==="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Ms!==null?{id:Jn,overflow:St}:null,retryLane:536870912,hydrationErrors:null},s=Hi(e),s.return=t,t.child=s,dn=t,Nt=null)):e=null,e===null)throw Ts(t);return t.lanes=536870912,null}return vu(t,o)}var h=e.memoizedState;if(h!==null){var S=h.dehydrated;if(ef(t),u)if(t.flags&256)t.flags&=-257,t=Gp(e,t,s);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error(r(558));else if(sn||Vl(e,t,s,!1),u=(s&e.childLanes)!==0,sn||u){if(o=Tt,o!==null&&(S=xs(o,s),S!==0&&S!==h.retryLane))throw h.retryLane=S,As(e,S),fa(o,e,S),Sf;Nu(),t=Gp(e,t,s)}else e=h.treeContext,Nt=qa(S.nextSibling),dn=t,it=!0,Ns=null,ia=!1,e!==null&&Jc(t,e),t=vu(t,o),t.flags|=4096;return t}return e=Fa(e.child,{mode:o.mode,children:o.children}),e.ref=t.ref,t.child=e,e.return=t,e}function xu(e,t){var s=t.ref;if(s===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof s!="function"&&typeof s!="object")throw Error(r(284));(e===null||e.ref!==s)&&(t.flags|=4194816)}}function Cf(e,t,s,o,u){return el(t),s=nf(e,t,s,o,void 0,u),o=af(),e!==null&&!sn?(sf(e,t,u),ol(e,t,u)):(it&&o&&To(t),t.flags|=1,Ln(e,t,s,u),t.child)}function Vp(e,t,s,o,u,h){return el(t),t.updateQueue=null,s=Kh(t,o,s,u),Wh(e),o=af(),e!==null&&!sn?(sf(e,t,h),ol(e,t,h)):(it&&o&&To(t),t.flags|=1,Ln(e,t,s,h),t.child)}function Yp(e,t,s,o,u){if(el(t),t.stateNode===null){var h=ql,S=s.contextType;typeof S=="object"&&S!==null&&(h=fn(S)),h=new s(o,h),t.memoizedState=h.state!==null&&h.state!==void 0?h.state:null,h.updater=wf,t.stateNode=h,h._reactInternals=t,h=t.stateNode,h.props=o,h.state=t.memoizedState,h.refs={},pe(t),S=s.contextType,h.context=typeof S=="object"&&S!==null?fn(S):ql,h.state=t.memoizedState,S=s.getDerivedStateFromProps,typeof S=="function"&&(yf(t,s,S,o),h.state=t.memoizedState),typeof s.getDerivedStateFromProps=="function"||typeof h.getSnapshotBeforeUpdate=="function"||typeof h.UNSAFE_componentWillMount!="function"&&typeof h.componentWillMount!="function"||(S=h.state,typeof h.componentWillMount=="function"&&h.componentWillMount(),typeof h.UNSAFE_componentWillMount=="function"&&h.UNSAFE_componentWillMount(),S!==h.state&&wf.enqueueReplaceState(h,h.state,null),ra(t,o,h,u),Dn(),h.state=t.memoizedState),typeof h.componentDidMount=="function"&&(t.flags|=4194308),o=!0}else if(e===null){h=t.stateNode;var M=t.memoizedProps,B=Wi(s,M);h.props=B;var ee=h.context,he=s.contextType;S=ql,typeof he=="object"&&he!==null&&(S=fn(he));var we=s.getDerivedStateFromProps;he=typeof we=="function"||typeof h.getSnapshotBeforeUpdate=="function",M=t.pendingProps!==M,he||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(M||ee!==S)&&Lp(t,h,o,S),O=!1;var se=t.memoizedState;h.state=se,ra(t,o,h,u),Dn(),ee=t.memoizedState,M||se!==ee||O?(typeof we=="function"&&(yf(t,s,we,o),ee=t.memoizedState),(B=O||Dp(t,s,B,o,se,ee,S))?(he||typeof h.UNSAFE_componentWillMount!="function"&&typeof h.componentWillMount!="function"||(typeof h.componentWillMount=="function"&&h.componentWillMount(),typeof h.UNSAFE_componentWillMount=="function"&&h.UNSAFE_componentWillMount()),typeof h.componentDidMount=="function"&&(t.flags|=4194308)):(typeof h.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=o,t.memoizedState=ee),h.props=o,h.state=ee,h.context=S,o=B):(typeof h.componentDidMount=="function"&&(t.flags|=4194308),o=!1)}else{h=t.stateNode,ve(e,t),S=t.memoizedProps,he=Wi(s,S),h.props=he,we=t.pendingProps,se=h.context,ee=s.contextType,B=ql,typeof ee=="object"&&ee!==null&&(B=fn(ee)),M=s.getDerivedStateFromProps,(ee=typeof M=="function"||typeof h.getSnapshotBeforeUpdate=="function")||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(S!==we||se!==B)&&Lp(t,h,o,B),O=!1,se=t.memoizedState,h.state=se,ra(t,o,h,u),Dn();var ce=t.memoizedState;S!==we||se!==ce||O||e!==null&&e.dependencies!==null&&_r(e.dependencies)?(typeof M=="function"&&(yf(t,s,M,o),ce=t.memoizedState),(he=O||Dp(t,s,he,o,se,ce,B)||e!==null&&e.dependencies!==null&&_r(e.dependencies))?(ee||typeof h.UNSAFE_componentWillUpdate!="function"&&typeof h.componentWillUpdate!="function"||(typeof h.componentWillUpdate=="function"&&h.componentWillUpdate(o,ce,B),typeof h.UNSAFE_componentWillUpdate=="function"&&h.UNSAFE_componentWillUpdate(o,ce,B)),typeof h.componentDidUpdate=="function"&&(t.flags|=4),typeof h.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof h.componentDidUpdate!="function"||S===e.memoizedProps&&se===e.memoizedState||(t.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||S===e.memoizedProps&&se===e.memoizedState||(t.flags|=1024),t.memoizedProps=o,t.memoizedState=ce),h.props=o,h.state=ce,h.context=B,o=he):(typeof h.componentDidUpdate!="function"||S===e.memoizedProps&&se===e.memoizedState||(t.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||S===e.memoizedProps&&se===e.memoizedState||(t.flags|=1024),o=!1)}return h=o,xu(e,t),o=(t.flags&128)!==0,h||o?(h=t.stateNode,s=o&&typeof s.getDerivedStateFromError!="function"?null:h.render(),t.flags|=1,e!==null&&o?(t.child=L(t,e.child,null,u),t.child=L(t,null,s,u)):Ln(e,t,s,u),t.memoizedState=h.state,e=t.child):e=ol(e,t,u),e}function Wp(e,t,s,o){return Js(),t.flags|=256,Ln(e,t,s,o),t.child}var jf={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function kf(e){return{baseLanes:e,cachePool:au()}}function Af(e,t,s){return e=e!==null?e.childLanes&~s:0,t&&(e|=ja),e}function Kp(e,t,s){var o=t.pendingProps,u=!1,h=(t.flags&128)!==0,S;if((S=h)||(S=e!==null&&e.memoizedState===null?!1:(Kt.current&2)!==0),S&&(u=!0,t.flags&=-129),S=(t.flags&32)!==0,t.flags&=-33,e===null){if(it){if(u?ei(t):ti(),(e=Nt)?(e=av(e,ia),e=e!==null&&e.data!=="&"?e:null,e!==null&&(t.memoizedState={dehydrated:e,treeContext:Ms!==null?{id:Jn,overflow:St}:null,retryLane:536870912,hydrationErrors:null},s=Hi(e),s.return=t,t.child=s,dn=t,Nt=null)):e=null,e===null)throw Ts(t);return om(e)?t.lanes=32:t.lanes=536870912,null}var M=o.children;return o=o.fallback,u?(ti(),u=t.mode,M=yu({mode:"hidden",children:M},u),o=Ha(o,u,s,null),M.return=t,o.return=t,M.sibling=o,t.child=M,o=t.child,o.memoizedState=kf(s),o.childLanes=Af(e,S,s),t.memoizedState=jf,Po(null,o)):(ei(t),Mf(t,M))}var B=e.memoizedState;if(B!==null&&(M=B.dehydrated,M!==null)){if(h)t.flags&256?(ei(t),t.flags&=-257,t=Nf(e,t,s)):t.memoizedState!==null?(ti(),t.child=e.child,t.flags|=128,t=null):(ti(),M=o.fallback,u=t.mode,o=yu({mode:"visible",children:o.children},u),M=Ha(M,u,s,null),M.flags|=2,o.return=t,M.return=t,o.sibling=M,t.child=o,L(t,e.child,null,s),o=t.child,o.memoizedState=kf(s),o.childLanes=Af(e,S,s),t.memoizedState=jf,t=Po(null,o));else if(ei(t),om(M)){if(S=M.nextSibling&&M.nextSibling.dataset,S)var ee=S.dgst;S=ee,o=Error(r(419)),o.stack="",o.digest=S,Pi({value:o,source:null,stack:null}),t=Nf(e,t,s)}else if(sn||Vl(e,t,s,!1),S=(s&e.childLanes)!==0,sn||S){if(S=Tt,S!==null&&(o=xs(S,s),o!==0&&o!==B.retryLane))throw B.retryLane=o,As(e,o),fa(S,e,o),Sf;rm(M)||Nu(),t=Nf(e,t,s)}else rm(M)?(t.flags|=192,t.child=e.child,t=null):(e=B.treeContext,Nt=qa(M.nextSibling),dn=t,it=!0,Ns=null,ia=!1,e!==null&&Jc(t,e),t=Mf(t,o.children),t.flags|=4096);return t}return u?(ti(),M=o.fallback,u=t.mode,B=e.child,ee=B.sibling,o=Fa(B,{mode:"hidden",children:o.children}),o.subtreeFlags=B.subtreeFlags&65011712,ee!==null?M=Fa(ee,M):(M=Ha(M,u,s,null),M.flags|=2),M.return=t,o.return=t,o.sibling=M,t.child=o,Po(null,o),o=t.child,M=e.child.memoizedState,M===null?M=kf(s):(u=M.cachePool,u!==null?(B=Ot._currentValue,u=u.parent!==B?{parent:B,pool:B}:u):u=au(),M={baseLanes:M.baseLanes|s,cachePool:u}),o.memoizedState=M,o.childLanes=Af(e,S,s),t.memoizedState=jf,Po(e.child,o)):(ei(t),s=e.child,e=s.sibling,s=Fa(s,{mode:"visible",children:o.children}),s.return=t,s.sibling=null,e!==null&&(S=t.deletions,S===null?(t.deletions=[e],t.flags|=16):S.push(e)),t.child=s,t.memoizedState=null,s)}function Mf(e,t){return t=yu({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function yu(e,t){return e=Zn(22,e,null,t),e.lanes=0,e}function Nf(e,t,s){return L(t,e.child,null,s),e=Mf(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Qp(e,t,s){e.lanes|=t;var o=e.alternate;o!==null&&(o.lanes|=t),Lo(e.return,t,s)}function Tf(e,t,s,o,u,h){var S=e.memoizedState;S===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:o,tail:s,tailMode:u,treeForkCount:h}:(S.isBackwards=t,S.rendering=null,S.renderingStartTime=0,S.last=o,S.tail=s,S.tailMode=u,S.treeForkCount=h)}function Xp(e,t,s){var o=t.pendingProps,u=o.revealOrder,h=o.tail;o=o.children;var S=Kt.current,M=(S&2)!==0;if(M?(S=S&1|2,t.flags|=128):S&=1,Z(Kt,S),Ln(e,t,o,s),o=it?Ui:0,!M&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Qp(e,s,t);else if(e.tag===19)Qp(e,s,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(u){case"forwards":for(s=t.child,u=null;s!==null;)e=s.alternate,e!==null&&ru(e)===null&&(u=s),s=s.sibling;s=u,s===null?(u=t.child,t.child=null):(u=s.sibling,s.sibling=null),Tf(t,!1,u,s,h,o);break;case"backwards":case"unstable_legacy-backwards":for(s=null,u=t.child,t.child=null;u!==null;){if(e=u.alternate,e!==null&&ru(e)===null){t.child=u;break}e=u.sibling,u.sibling=s,s=u,u=e}Tf(t,!0,s,null,h,o);break;case"together":Tf(t,!1,null,null,void 0,o);break;default:t.memoizedState=null}return t.child}function ol(e,t,s){if(e!==null&&(t.dependencies=e.dependencies),si|=t.lanes,(s&t.childLanes)===0)if(e!==null){if(Vl(e,t,s,!1),(s&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(r(153));if(t.child!==null){for(e=t.child,s=Fa(e,e.pendingProps),t.child=s,s.return=t;e.sibling!==null;)e=e.sibling,s=s.sibling=Fa(e,e.pendingProps),s.return=t;s.sibling=null}return t.child}function Rf(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&_r(e)))}function Hw(e,t,s){switch(t.tag){case 3:Ie(t,t.stateNode.containerInfo),Rs(t,Ot,e.memoizedState.cache),Js();break;case 27:case 5:Ke(t);break;case 4:Ie(t,t.stateNode.containerInfo);break;case 10:Rs(t,t.type,t.memoizedProps.value);break;case 31:if(t.memoizedState!==null)return t.flags|=128,ef(t),null;break;case 13:var o=t.memoizedState;if(o!==null)return o.dehydrated!==null?(ei(t),t.flags|=128,null):(s&t.child.childLanes)!==0?Kp(e,t,s):(ei(t),e=ol(e,t,s),e!==null?e.sibling:null);ei(t);break;case 19:var u=(e.flags&128)!==0;if(o=(s&t.childLanes)!==0,o||(Vl(e,t,s,!1),o=(s&t.childLanes)!==0),u){if(o)return Xp(e,t,s);t.flags|=128}if(u=t.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),Z(Kt,Kt.current),o)break;return null;case 22:return t.lanes=0,Pp(e,t,s,t.pendingProps);case 24:Rs(t,Ot,e.memoizedState.cache)}return ol(e,t,s)}function Zp(e,t,s){if(e!==null)if(e.memoizedProps!==t.pendingProps)sn=!0;else{if(!Rf(e,s)&&(t.flags&128)===0)return sn=!1,Hw(e,t,s);sn=(e.flags&131072)!==0}else sn=!1,it&&(t.flags&1048576)!==0&<(t,Ui,t.index);switch(t.lanes=0,t.tag){case 16:e:{var o=t.pendingProps;if(e=nn(t.elementType),t.type=e,typeof e=="function")Er(e)?(o=Wi(e,o),t.tag=1,t=Yp(null,t,e,o,s)):(t.tag=0,t=Cf(null,t,e,o,s));else{if(e!=null){var u=e.$$typeof;if(u===$){t.tag=11,t=Hp(null,t,e,o,s);break e}else if(u===I){t.tag=14,t=$p(null,t,e,o,s);break e}}throw t=le(e)||e,Error(r(306,t,""))}}return t;case 0:return Cf(e,t,t.type,t.pendingProps,s);case 1:return o=t.type,u=Wi(o,t.pendingProps),Yp(e,t,o,u,s);case 3:e:{if(Ie(t,t.stateNode.containerInfo),e===null)throw Error(r(387));o=t.pendingProps;var h=t.memoizedState;u=h.element,ve(e,t),ra(t,o,null,s);var S=t.memoizedState;if(o=S.cache,Rs(t,Ot,o),o!==h.cache&&_o(t,[Ot],s,!0),Dn(),o=S.element,h.isDehydrated)if(h={element:o,isDehydrated:!1,cache:S.cache},t.updateQueue.baseState=h,t.memoizedState=h,t.flags&256){t=Wp(e,t,o,s);break e}else if(o!==u){u=$n(Error(r(424)),t),Pi(u),t=Wp(e,t,o,s);break e}else for(e=t.stateNode.containerInfo,e.nodeType===9?e=e.body:e=e.nodeName==="HTML"?e.ownerDocument.body:e,Nt=qa(e.firstChild),dn=t,it=!0,Ns=null,ia=!0,s=H(t,null,o,s),t.child=s;s;)s.flags=s.flags&-3|4096,s=s.sibling;else{if(Js(),o===u){t=ol(e,t,s);break e}Ln(e,t,o,s)}t=t.child}return t;case 26:return xu(e,t),e===null?(s=cv(t.type,null,t.pendingProps,null))?t.memoizedState=s:it||(s=t.type,e=t.pendingProps,o=zu(de.current).createElement(s),o[X]=t,o[je]=e,_n(o,s,e),Et(o),t.stateNode=o):t.memoizedState=cv(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Ke(t),e===null&&it&&(o=t.stateNode=iv(t.type,t.pendingProps,de.current),dn=t,ia=!0,u=Nt,ci(t.type)?(cm=u,Nt=qa(o.firstChild)):Nt=u),Ln(e,t,t.pendingProps.children,s),xu(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&it&&((u=o=Nt)&&(o=gb(o,t.type,t.pendingProps,ia),o!==null?(t.stateNode=o,dn=t,Nt=qa(o.firstChild),ia=!1,u=!0):u=!1),u||Ts(t)),Ke(t),u=t.type,h=t.pendingProps,S=e!==null?e.memoizedProps:null,o=h.children,sm(u,h)?o=null:S!==null&&sm(u,S)&&(t.flags|=32),t.memoizedState!==null&&(u=nf(e,t,Ew,null,null,s),sc._currentValue=u),xu(e,t),Ln(e,t,o,s),t.child;case 6:return e===null&&it&&((e=s=Nt)&&(s=vb(s,t.pendingProps,ia),s!==null?(t.stateNode=s,dn=t,Nt=null,e=!0):e=!1),e||Ts(t)),null;case 13:return Kp(e,t,s);case 4:return Ie(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=L(t,null,o,s):Ln(e,t,o,s),t.child;case 11:return Hp(e,t,t.type,t.pendingProps,s);case 7:return Ln(e,t,t.pendingProps,s),t.child;case 8:return Ln(e,t,t.pendingProps.children,s),t.child;case 12:return Ln(e,t,t.pendingProps.children,s),t.child;case 10:return o=t.pendingProps,Rs(t,t.type,o.value),Ln(e,t,o.children,s),t.child;case 9:return u=t.type._context,o=t.pendingProps.children,el(t),u=fn(u),o=o(u),t.flags|=1,Ln(e,t,o,s),t.child;case 14:return $p(e,t,t.type,t.pendingProps,s);case 15:return Up(e,t,t.type,t.pendingProps,s);case 19:return Xp(e,t,s);case 31:return Fw(e,t,s);case 22:return Pp(e,t,s,t.pendingProps);case 24:return el(t),o=fn(Ot),e===null?(u=nl(),u===null&&(u=Tt,h=Yl(),u.pooledCache=h,h.refCount++,h!==null&&(u.pooledCacheLanes|=s),u=h),t.memoizedState={parent:o,cache:u},pe(t),Rs(t,Ot,u)):((e.lanes&s)!==0&&(ve(e,t),ra(t,null,null,s),Dn()),u=e.memoizedState,h=t.memoizedState,u.parent!==o?(u={parent:o,cache:o},t.memoizedState=u,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=u),Rs(t,Ot,o)):(o=h.cache,Rs(t,Ot,o),o!==u.cache&&_o(t,[Ot],s,!0))),Ln(e,t,t.pendingProps.children,s),t.child;case 29:throw t.pendingProps}throw Error(r(156,t.tag))}function cl(e){e.flags|=4}function Ef(e,t,s,o,u){if((t=(e.mode&32)!==0)&&(t=!1),t){if(e.flags|=16777216,(u&335544128)===u)if(e.stateNode.complete)e.flags|=8192;else if(kg())e.flags|=8192;else throw al=Or,Bo}else e.flags&=-16777217}function Jp(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!hv(t))if(kg())e.flags|=8192;else throw al=Or,Bo}function wu(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?Os():536870912,e.lanes|=t,Gr|=t)}function qo(e,t){if(!it)switch(e.tailMode){case"hidden":t=e.tail;for(var s=null;t!==null;)t.alternate!==null&&(s=t),t=t.sibling;s===null?e.tail=null:s.sibling=null;break;case"collapsed":s=e.tail;for(var o=null;s!==null;)s.alternate!==null&&(o=s),s=s.sibling;o===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:o.sibling=null}}function Lt(e){var t=e.alternate!==null&&e.alternate.child===e.child,s=0,o=0;if(t)for(var u=e.child;u!==null;)s|=u.lanes|u.childLanes,o|=u.subtreeFlags&65011712,o|=u.flags&65011712,u.return=e,u=u.sibling;else for(u=e.child;u!==null;)s|=u.lanes|u.childLanes,o|=u.subtreeFlags,o|=u.flags,u.return=e,u=u.sibling;return e.subtreeFlags|=o,e.childLanes=s,t}function $w(e,t,s){var o=t.pendingProps;switch(Ro(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Lt(t),null;case 1:return Lt(t),null;case 3:return s=t.stateNode,o=null,e!==null&&(o=e.memoizedState.cache),t.memoizedState.cache!==o&&(t.flags|=2048),is(Ot),re(),s.pendingContext&&(s.context=s.pendingContext,s.pendingContext=null),(e===null||e.child===null)&&(Gl(t)?cl(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Do())),Lt(t),null;case 26:var u=t.type,h=t.memoizedState;return e===null?(cl(t),h!==null?(Lt(t),Jp(t,h)):(Lt(t),Ef(t,u,null,o,s))):h?h!==e.memoizedState?(cl(t),Lt(t),Jp(t,h)):(Lt(t),t.flags&=-16777217):(e=e.memoizedProps,e!==o&&cl(t),Lt(t),Ef(t,u,e,o,s)),null;case 27:if(De(t),s=de.current,u=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==o&&cl(t);else{if(!o){if(t.stateNode===null)throw Error(r(166));return Lt(t),null}e=ye.current,Gl(t)?eu(t):(e=iv(u,o,s),t.stateNode=e,cl(t))}return Lt(t),null;case 5:if(De(t),u=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==o&&cl(t);else{if(!o){if(t.stateNode===null)throw Error(r(166));return Lt(t),null}if(h=ye.current,Gl(t))eu(t);else{var S=zu(de.current);switch(h){case 1:h=S.createElementNS("http://www.w3.org/2000/svg",u);break;case 2:h=S.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;default:switch(u){case"svg":h=S.createElementNS("http://www.w3.org/2000/svg",u);break;case"math":h=S.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;case"script":h=S.createElement("div"),h.innerHTML="<script><\/script>",h=h.removeChild(h.firstChild);break;case"select":h=typeof o.is=="string"?S.createElement("select",{is:o.is}):S.createElement("select"),o.multiple?h.multiple=!0:o.size&&(h.size=o.size);break;default:h=typeof o.is=="string"?S.createElement(u,{is:o.is}):S.createElement(u)}}h[X]=t,h[je]=o;e:for(S=t.child;S!==null;){if(S.tag===5||S.tag===6)h.appendChild(S.stateNode);else if(S.tag!==4&&S.tag!==27&&S.child!==null){S.child.return=S,S=S.child;continue}if(S===t)break e;for(;S.sibling===null;){if(S.return===null||S.return===t)break e;S=S.return}S.sibling.return=S.return,S=S.sibling}t.stateNode=h;e:switch(_n(h,u,o),u){case"button":case"input":case"select":case"textarea":o=!!o.autoFocus;break e;case"img":o=!0;break e;default:o=!1}o&&cl(t)}}return Lt(t),Ef(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,s),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==o&&cl(t);else{if(typeof o!="string"&&t.stateNode===null)throw Error(r(166));if(e=de.current,Gl(t)){if(e=t.stateNode,s=t.memoizedProps,o=null,u=dn,u!==null)switch(u.tag){case 27:case 5:o=u.memoizedProps}e[X]=t,e=!!(e.nodeValue===s||o!==null&&o.suppressHydrationWarning===!0||Kg(e.nodeValue,s)),e||Ts(t,!0)}else e=zu(e).createTextNode(o),e[X]=t,t.stateNode=e}return Lt(t),null;case 31:if(s=t.memoizedState,e===null||e.memoizedState!==null){if(o=Gl(t),s!==null){if(e===null){if(!o)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[X]=t}else Js(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Lt(t),e=!1}else s=Do(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=s),e=!0;if(!e)return t.flags&256?(Sa(t),t):(Sa(t),null);if((t.flags&128)!==0)throw Error(r(558))}return Lt(t),null;case 13:if(o=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(u=Gl(t),o!==null&&o.dehydrated!==null){if(e===null){if(!u)throw Error(r(318));if(u=t.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(317));u[X]=t}else Js(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Lt(t),u=!1}else u=Do(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=u),u=!0;if(!u)return t.flags&256?(Sa(t),t):(Sa(t),null)}return Sa(t),(t.flags&128)!==0?(t.lanes=s,t):(s=o!==null,e=e!==null&&e.memoizedState!==null,s&&(o=t.child,u=null,o.alternate!==null&&o.alternate.memoizedState!==null&&o.alternate.memoizedState.cachePool!==null&&(u=o.alternate.memoizedState.cachePool.pool),h=null,o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(h=o.memoizedState.cachePool.pool),h!==u&&(o.flags|=2048)),s!==e&&s&&(t.child.flags|=8192),wu(t,t.updateQueue),Lt(t),null);case 4:return re(),e===null&&Jf(t.stateNode.containerInfo),Lt(t),null;case 10:return is(t.type),Lt(t),null;case 19:if(D(Kt),o=t.memoizedState,o===null)return Lt(t),null;if(u=(t.flags&128)!==0,h=o.rendering,h===null)if(u)qo(o,!1);else{if(Ut!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(h=ru(e),h!==null){for(t.flags|=128,qo(o,!1),e=h.updateQueue,t.updateQueue=e,wu(t,e),t.subtreeFlags=0,e=s,s=t.child;s!==null;)Mo(s,e),s=s.sibling;return Z(Kt,Kt.current&1|2),it&&zt(t,o.treeForkCount),t.child}e=e.sibling}o.tail!==null&&Ge()>ku&&(t.flags|=128,u=!0,qo(o,!1),t.lanes=4194304)}else{if(!u)if(e=ru(h),e!==null){if(t.flags|=128,u=!0,e=e.updateQueue,t.updateQueue=e,wu(t,e),qo(o,!0),o.tail===null&&o.tailMode==="hidden"&&!h.alternate&&!it)return Lt(t),null}else 2*Ge()-o.renderingStartTime>ku&&s!==536870912&&(t.flags|=128,u=!0,qo(o,!1),t.lanes=4194304);o.isBackwards?(h.sibling=t.child,t.child=h):(e=o.last,e!==null?e.sibling=h:t.child=h,o.last=h)}return o.tail!==null?(e=o.tail,o.rendering=e,o.tail=e.sibling,o.renderingStartTime=Ge(),e.sibling=null,s=Kt.current,Z(Kt,u?s&1|2:s&1),it&&zt(t,o.treeForkCount),e):(Lt(t),null);case 22:case 23:return Sa(t),Jd(),o=t.memoizedState!==null,e!==null?e.memoizedState!==null!==o&&(t.flags|=8192):o&&(t.flags|=8192),o?(s&536870912)!==0&&(t.flags&128)===0&&(Lt(t),t.subtreeFlags&6&&(t.flags|=8192)):Lt(t),s=t.updateQueue,s!==null&&wu(t,s.retryQueue),s=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(s=e.memoizedState.cachePool.pool),o=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(o=t.memoizedState.cachePool.pool),o!==s&&(t.flags|=2048),e!==null&&D(Ua),null;case 24:return s=null,e!==null&&(s=e.memoizedState.cache),t.memoizedState.cache!==s&&(t.flags|=2048),is(Ot),Lt(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}function Uw(e,t){switch(Ro(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return is(Ot),re(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return De(t),null;case 31:if(t.memoizedState!==null){if(Sa(t),t.alternate===null)throw Error(r(340));Js()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Sa(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));Js()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return D(Kt),null;case 4:return re(),null;case 10:return is(t.type),null;case 22:case 23:return Sa(t),Jd(),e!==null&&D(Ua),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return is(Ot),null;case 25:return null;default:return null}}function eg(e,t){switch(Ro(t),t.tag){case 3:is(Ot),re();break;case 26:case 27:case 5:De(t);break;case 4:re();break;case 31:t.memoizedState!==null&&Sa(t);break;case 13:Sa(t);break;case 19:D(Kt);break;case 10:is(t.type);break;case 22:case 23:Sa(t),Jd(),e!==null&&D(Ua);break;case 24:is(Ot)}}function Go(e,t){try{var s=t.updateQueue,o=s!==null?s.lastEffect:null;if(o!==null){var u=o.next;s=u;do{if((s.tag&e)===e){o=void 0;var h=s.create,S=s.inst;o=h(),S.destroy=o}s=s.next}while(s!==u)}}catch(M){wt(t,t.return,M)}}function ni(e,t,s){try{var o=t.updateQueue,u=o!==null?o.lastEffect:null;if(u!==null){var h=u.next;o=h;do{if((o.tag&e)===e){var S=o.inst,M=S.destroy;if(M!==void 0){S.destroy=void 0,u=t;var B=s,ee=M;try{ee()}catch(he){wt(u,B,he)}}}o=o.next}while(o!==h)}}catch(he){wt(t,t.return,he)}}function tg(e){var t=e.updateQueue;if(t!==null){var s=e.stateNode;try{Jl(t,s)}catch(o){wt(e,e.return,o)}}}function ng(e,t,s){s.props=Wi(e.type,e.memoizedProps),s.state=e.memoizedState;try{s.componentWillUnmount()}catch(o){wt(e,t,o)}}function Vo(e,t){try{var s=e.ref;if(s!==null){switch(e.tag){case 26:case 27:case 5:var o=e.stateNode;break;case 30:o=e.stateNode;break;default:o=e.stateNode}typeof s=="function"?e.refCleanup=s(o):s.current=o}}catch(u){wt(e,t,u)}}function Ds(e,t){var s=e.ref,o=e.refCleanup;if(s!==null)if(typeof o=="function")try{o()}catch(u){wt(e,t,u)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof s=="function")try{s(null)}catch(u){wt(e,t,u)}else s.current=null}function ag(e){var t=e.type,s=e.memoizedProps,o=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":s.autoFocus&&o.focus();break e;case"img":s.src?o.src=s.src:s.srcSet&&(o.srcset=s.srcSet)}}catch(u){wt(e,e.return,u)}}function Df(e,t,s){try{var o=e.stateNode;ub(o,e.type,s,t),o[je]=t}catch(u){wt(e,e.return,u)}}function sg(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&ci(e.type)||e.tag===4}function Lf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||sg(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&ci(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function _f(e,t,s){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?(s.nodeType===9?s.body:s.nodeName==="HTML"?s.ownerDocument.body:s).insertBefore(e,t):(t=s.nodeType===9?s.body:s.nodeName==="HTML"?s.ownerDocument.body:s,t.appendChild(e),s=s._reactRootContainer,s!=null||t.onclick!==null||(t.onclick=Qa));else if(o!==4&&(o===27&&ci(e.type)&&(s=e.stateNode,t=null),e=e.child,e!==null))for(_f(e,t,s),e=e.sibling;e!==null;)_f(e,t,s),e=e.sibling}function bu(e,t,s){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?s.insertBefore(e,t):s.appendChild(e);else if(o!==4&&(o===27&&ci(e.type)&&(s=e.stateNode),e=e.child,e!==null))for(bu(e,t,s),e=e.sibling;e!==null;)bu(e,t,s),e=e.sibling}function lg(e){var t=e.stateNode,s=e.memoizedProps;try{for(var o=e.type,u=t.attributes;u.length;)t.removeAttributeNode(u[0]);_n(t,o,s),t[X]=e,t[je]=s}catch(h){wt(e,e.return,h)}}var ul=!1,ln=!1,zf=!1,ig=typeof WeakSet=="function"?WeakSet:Set,yn=null;function Pw(e,t){if(e=e.containerInfo,nm=Uu,e=Qc(e),Hl(e)){if("selectionStart"in e)var s={start:e.selectionStart,end:e.selectionEnd};else e:{s=(s=e.ownerDocument)&&s.defaultView||window;var o=s.getSelection&&s.getSelection();if(o&&o.rangeCount!==0){s=o.anchorNode;var u=o.anchorOffset,h=o.focusNode;o=o.focusOffset;try{s.nodeType,h.nodeType}catch{s=null;break e}var S=0,M=-1,B=-1,ee=0,he=0,we=e,se=null;t:for(;;){for(var ce;we!==s||u!==0&&we.nodeType!==3||(M=S+u),we!==h||o!==0&&we.nodeType!==3||(B=S+o),we.nodeType===3&&(S+=we.nodeValue.length),(ce=we.firstChild)!==null;)se=we,we=ce;for(;;){if(we===e)break t;if(se===s&&++ee===u&&(M=S),se===h&&++he===o&&(B=S),(ce=we.nextSibling)!==null)break;we=se,se=we.parentNode}we=ce}s=M===-1||B===-1?null:{start:M,end:B}}else s=null}s=s||{start:0,end:0}}else s=null;for(am={focusedElem:e,selectionRange:s},Uu=!1,yn=t;yn!==null;)if(t=yn,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,yn=e;else for(;yn!==null;){switch(t=yn,h=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(s=0;s<e.length;s++)u=e[s],u.ref.impl=u.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&h!==null){e=void 0,s=t,u=h.memoizedProps,h=h.memoizedState,o=s.stateNode;try{var Oe=Wi(s.type,u);e=o.getSnapshotBeforeUpdate(Oe,h),o.__reactInternalSnapshotBeforeUpdate=e}catch(qe){wt(s,s.return,qe)}}break;case 3:if((e&1024)!==0){if(e=t.stateNode.containerInfo,s=e.nodeType,s===9)im(e);else if(s===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":im(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(r(163))}if(e=t.sibling,e!==null){e.return=t.return,yn=e;break}yn=t.return}}function rg(e,t,s){var o=s.flags;switch(s.tag){case 0:case 11:case 15:fl(e,s),o&4&&Go(5,s);break;case 1:if(fl(e,s),o&4)if(e=s.stateNode,t===null)try{e.componentDidMount()}catch(S){wt(s,s.return,S)}else{var u=Wi(s.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(u,t,e.__reactInternalSnapshotBeforeUpdate)}catch(S){wt(s,s.return,S)}}o&64&&tg(s),o&512&&Vo(s,s.return);break;case 3:if(fl(e,s),o&64&&(e=s.updateQueue,e!==null)){if(t=null,s.child!==null)switch(s.child.tag){case 27:case 5:t=s.child.stateNode;break;case 1:t=s.child.stateNode}try{Jl(e,t)}catch(S){wt(s,s.return,S)}}break;case 27:t===null&&o&4&&lg(s);case 26:case 5:fl(e,s),t===null&&o&4&&ag(s),o&512&&Vo(s,s.return);break;case 12:fl(e,s);break;case 31:fl(e,s),o&4&&ug(e,s);break;case 13:fl(e,s),o&4&&dg(e,s),o&64&&(e=s.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(s=Zw.bind(null,s),xb(e,s))));break;case 22:if(o=s.memoizedState!==null||ul,!o){t=t!==null&&t.memoizedState!==null||ln,u=ul;var h=ln;ul=o,(ln=t)&&!h?ml(e,s,(s.subtreeFlags&8772)!==0):fl(e,s),ul=u,ln=h}break;case 30:break;default:fl(e,s)}}function og(e){var t=e.alternate;t!==null&&(e.alternate=null,og(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&tn(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var _t=null,oa=!1;function dl(e,t,s){for(s=s.child;s!==null;)cg(e,t,s),s=s.sibling}function cg(e,t,s){if(mt&&typeof mt.onCommitFiberUnmount=="function")try{mt.onCommitFiberUnmount(ps,s)}catch{}switch(s.tag){case 26:ln||Ds(s,t),dl(e,t,s),s.memoizedState?s.memoizedState.count--:s.stateNode&&(s=s.stateNode,s.parentNode.removeChild(s));break;case 27:ln||Ds(s,t);var o=_t,u=oa;ci(s.type)&&(_t=s.stateNode,oa=!1),dl(e,t,s),tc(s.stateNode),_t=o,oa=u;break;case 5:ln||Ds(s,t);case 6:if(o=_t,u=oa,_t=null,dl(e,t,s),_t=o,oa=u,_t!==null)if(oa)try{(_t.nodeType===9?_t.body:_t.nodeName==="HTML"?_t.ownerDocument.body:_t).removeChild(s.stateNode)}catch(h){wt(s,t,h)}else try{_t.removeChild(s.stateNode)}catch(h){wt(s,t,h)}break;case 18:_t!==null&&(oa?(e=_t,tv(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,s.stateNode),Jr(e)):tv(_t,s.stateNode));break;case 4:o=_t,u=oa,_t=s.stateNode.containerInfo,oa=!0,dl(e,t,s),_t=o,oa=u;break;case 0:case 11:case 14:case 15:ni(2,s,t),ln||ni(4,s,t),dl(e,t,s);break;case 1:ln||(Ds(s,t),o=s.stateNode,typeof o.componentWillUnmount=="function"&&ng(s,t,o)),dl(e,t,s);break;case 21:dl(e,t,s);break;case 22:ln=(o=ln)||s.memoizedState!==null,dl(e,t,s),ln=o;break;default:dl(e,t,s)}}function ug(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Jr(e)}catch(s){wt(t,t.return,s)}}}function dg(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Jr(e)}catch(s){wt(t,t.return,s)}}function qw(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new ig),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new ig),t;default:throw Error(r(435,e.tag))}}function Su(e,t){var s=qw(e);t.forEach(function(o){if(!s.has(o)){s.add(o);var u=Jw.bind(null,e,o);o.then(u,u)}})}function ca(e,t){var s=t.deletions;if(s!==null)for(var o=0;o<s.length;o++){var u=s[o],h=e,S=t,M=S;e:for(;M!==null;){switch(M.tag){case 27:if(ci(M.type)){_t=M.stateNode,oa=!1;break e}break;case 5:_t=M.stateNode,oa=!1;break e;case 3:case 4:_t=M.stateNode.containerInfo,oa=!0;break e}M=M.return}if(_t===null)throw Error(r(160));cg(h,S,u),_t=null,oa=!1,h=u.alternate,h!==null&&(h.return=null),u.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)fg(t,e),t=t.sibling}var cs=null;function fg(e,t){var s=e.alternate,o=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:ca(t,e),ua(e),o&4&&(ni(3,e,e.return),Go(3,e),ni(5,e,e.return));break;case 1:ca(t,e),ua(e),o&512&&(ln||s===null||Ds(s,s.return)),o&64&&ul&&(e=e.updateQueue,e!==null&&(o=e.callbacks,o!==null&&(s=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=s===null?o:s.concat(o))));break;case 26:var u=cs;if(ca(t,e),ua(e),o&512&&(ln||s===null||Ds(s,s.return)),o&4){var h=s!==null?s.memoizedState:null;if(o=e.memoizedState,s===null)if(o===null)if(e.stateNode===null){e:{o=e.type,s=e.memoizedProps,u=u.ownerDocument||u;t:switch(o){case"title":h=u.getElementsByTagName("title")[0],(!h||h[dt]||h[X]||h.namespaceURI==="http://www.w3.org/2000/svg"||h.hasAttribute("itemprop"))&&(h=u.createElement(o),u.head.insertBefore(h,u.querySelector("head > title"))),_n(h,o,s),h[X]=e,Et(h),o=h;break e;case"link":var S=fv("link","href",u).get(o+(s.href||""));if(S){for(var M=0;M<S.length;M++)if(h=S[M],h.getAttribute("href")===(s.href==null||s.href===""?null:s.href)&&h.getAttribute("rel")===(s.rel==null?null:s.rel)&&h.getAttribute("title")===(s.title==null?null:s.title)&&h.getAttribute("crossorigin")===(s.crossOrigin==null?null:s.crossOrigin)){S.splice(M,1);break t}}h=u.createElement(o),_n(h,o,s),u.head.appendChild(h);break;case"meta":if(S=fv("meta","content",u).get(o+(s.content||""))){for(M=0;M<S.length;M++)if(h=S[M],h.getAttribute("content")===(s.content==null?null:""+s.content)&&h.getAttribute("name")===(s.name==null?null:s.name)&&h.getAttribute("property")===(s.property==null?null:s.property)&&h.getAttribute("http-equiv")===(s.httpEquiv==null?null:s.httpEquiv)&&h.getAttribute("charset")===(s.charSet==null?null:s.charSet)){S.splice(M,1);break t}}h=u.createElement(o),_n(h,o,s),u.head.appendChild(h);break;default:throw Error(r(468,o))}h[X]=e,Et(h),o=h}e.stateNode=o}else mv(u,e.type,e.stateNode);else e.stateNode=dv(u,o,e.memoizedProps);else h!==o?(h===null?s.stateNode!==null&&(s=s.stateNode,s.parentNode.removeChild(s)):h.count--,o===null?mv(u,e.type,e.stateNode):dv(u,o,e.memoizedProps)):o===null&&e.stateNode!==null&&Df(e,e.memoizedProps,s.memoizedProps)}break;case 27:ca(t,e),ua(e),o&512&&(ln||s===null||Ds(s,s.return)),s!==null&&o&4&&Df(e,e.memoizedProps,s.memoizedProps);break;case 5:if(ca(t,e),ua(e),o&512&&(ln||s===null||Ds(s,s.return)),e.flags&32){u=e.stateNode;try{Sl(u,"")}catch(Oe){wt(e,e.return,Oe)}}o&4&&e.stateNode!=null&&(u=e.memoizedProps,Df(e,u,s!==null?s.memoizedProps:u)),o&1024&&(zf=!0);break;case 6:if(ca(t,e),ua(e),o&4){if(e.stateNode===null)throw Error(r(162));o=e.memoizedProps,s=e.stateNode;try{s.nodeValue=o}catch(Oe){wt(e,e.return,Oe)}}break;case 3:if(Bu=null,u=cs,cs=Ou(t.containerInfo),ca(t,e),cs=u,ua(e),o&4&&s!==null&&s.memoizedState.isDehydrated)try{Jr(t.containerInfo)}catch(Oe){wt(e,e.return,Oe)}zf&&(zf=!1,mg(e));break;case 4:o=cs,cs=Ou(e.stateNode.containerInfo),ca(t,e),ua(e),cs=o;break;case 12:ca(t,e),ua(e);break;case 31:ca(t,e),ua(e),o&4&&(o=e.updateQueue,o!==null&&(e.updateQueue=null,Su(e,o)));break;case 13:ca(t,e),ua(e),e.child.flags&8192&&e.memoizedState!==null!=(s!==null&&s.memoizedState!==null)&&(ju=Ge()),o&4&&(o=e.updateQueue,o!==null&&(e.updateQueue=null,Su(e,o)));break;case 22:u=e.memoizedState!==null;var B=s!==null&&s.memoizedState!==null,ee=ul,he=ln;if(ul=ee||u,ln=he||B,ca(t,e),ln=he,ul=ee,ua(e),o&8192)e:for(t=e.stateNode,t._visibility=u?t._visibility&-2:t._visibility|1,u&&(s===null||B||ul||ln||Ki(e)),s=null,t=e;;){if(t.tag===5||t.tag===26){if(s===null){B=s=t;try{if(h=B.stateNode,u)S=h.style,typeof S.setProperty=="function"?S.setProperty("display","none","important"):S.display="none";else{M=B.stateNode;var we=B.memoizedProps.style,se=we!=null&&we.hasOwnProperty("display")?we.display:null;M.style.display=se==null||typeof se=="boolean"?"":(""+se).trim()}}catch(Oe){wt(B,B.return,Oe)}}}else if(t.tag===6){if(s===null){B=t;try{B.stateNode.nodeValue=u?"":B.memoizedProps}catch(Oe){wt(B,B.return,Oe)}}}else if(t.tag===18){if(s===null){B=t;try{var ce=B.stateNode;u?nv(ce,!0):nv(B.stateNode,!1)}catch(Oe){wt(B,B.return,Oe)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;s===t&&(s=null),t=t.return}s===t&&(s=null),t.sibling.return=t.return,t=t.sibling}o&4&&(o=e.updateQueue,o!==null&&(s=o.retryQueue,s!==null&&(o.retryQueue=null,Su(e,s))));break;case 19:ca(t,e),ua(e),o&4&&(o=e.updateQueue,o!==null&&(e.updateQueue=null,Su(e,o)));break;case 30:break;case 21:break;default:ca(t,e),ua(e)}}function ua(e){var t=e.flags;if(t&2){try{for(var s,o=e.return;o!==null;){if(sg(o)){s=o;break}o=o.return}if(s==null)throw Error(r(160));switch(s.tag){case 27:var u=s.stateNode,h=Lf(e);bu(e,h,u);break;case 5:var S=s.stateNode;s.flags&32&&(Sl(S,""),s.flags&=-33);var M=Lf(e);bu(e,M,S);break;case 3:case 4:var B=s.stateNode.containerInfo,ee=Lf(e);_f(e,ee,B);break;default:throw Error(r(161))}}catch(he){wt(e,e.return,he)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function mg(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;mg(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function fl(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)rg(e,t.alternate,t),t=t.sibling}function Ki(e){for(e=e.child;e!==null;){var t=e;switch(t.tag){case 0:case 11:case 14:case 15:ni(4,t,t.return),Ki(t);break;case 1:Ds(t,t.return);var s=t.stateNode;typeof s.componentWillUnmount=="function"&&ng(t,t.return,s),Ki(t);break;case 27:tc(t.stateNode);case 26:case 5:Ds(t,t.return),Ki(t);break;case 22:t.memoizedState===null&&Ki(t);break;case 30:Ki(t);break;default:Ki(t)}e=e.sibling}}function ml(e,t,s){for(s=s&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var o=t.alternate,u=e,h=t,S=h.flags;switch(h.tag){case 0:case 11:case 15:ml(u,h,s),Go(4,h);break;case 1:if(ml(u,h,s),o=h,u=o.stateNode,typeof u.componentDidMount=="function")try{u.componentDidMount()}catch(ee){wt(o,o.return,ee)}if(o=h,u=o.updateQueue,u!==null){var M=o.stateNode;try{var B=u.shared.hiddenCallbacks;if(B!==null)for(u.shared.hiddenCallbacks=null,u=0;u<B.length;u++)Es(B[u],M)}catch(ee){wt(o,o.return,ee)}}s&&S&64&&tg(h),Vo(h,h.return);break;case 27:lg(h);case 26:case 5:ml(u,h,s),s&&o===null&&S&4&&ag(h),Vo(h,h.return);break;case 12:ml(u,h,s);break;case 31:ml(u,h,s),s&&S&4&&ug(u,h);break;case 13:ml(u,h,s),s&&S&4&&dg(u,h);break;case 22:h.memoizedState===null&&ml(u,h,s),Vo(h,h.return);break;case 30:break;default:ml(u,h,s)}t=t.sibling}}function Of(e,t){var s=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(s=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==s&&(e!=null&&e.refCount++,s!=null&&Gi(s))}function If(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Gi(e))}function us(e,t,s,o){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)hg(e,t,s,o),t=t.sibling}function hg(e,t,s,o){var u=t.flags;switch(t.tag){case 0:case 11:case 15:us(e,t,s,o),u&2048&&Go(9,t);break;case 1:us(e,t,s,o);break;case 3:us(e,t,s,o),u&2048&&(e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(t.refCount++,e!=null&&Gi(e)));break;case 12:if(u&2048){us(e,t,s,o),e=t.stateNode;try{var h=t.memoizedProps,S=h.id,M=h.onPostCommit;typeof M=="function"&&M(S,t.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(B){wt(t,t.return,B)}}else us(e,t,s,o);break;case 31:us(e,t,s,o);break;case 13:us(e,t,s,o);break;case 23:break;case 22:h=t.stateNode,S=t.alternate,t.memoizedState!==null?h._visibility&2?us(e,t,s,o):Yo(e,t):h._visibility&2?us(e,t,s,o):(h._visibility|=2,Ur(e,t,s,o,(t.subtreeFlags&10256)!==0||!1)),u&2048&&Of(S,t);break;case 24:us(e,t,s,o),u&2048&&If(t.alternate,t);break;default:us(e,t,s,o)}}function Ur(e,t,s,o,u){for(u=u&&((t.subtreeFlags&10256)!==0||!1),t=t.child;t!==null;){var h=e,S=t,M=s,B=o,ee=S.flags;switch(S.tag){case 0:case 11:case 15:Ur(h,S,M,B,u),Go(8,S);break;case 23:break;case 22:var he=S.stateNode;S.memoizedState!==null?he._visibility&2?Ur(h,S,M,B,u):Yo(h,S):(he._visibility|=2,Ur(h,S,M,B,u)),u&&ee&2048&&Of(S.alternate,S);break;case 24:Ur(h,S,M,B,u),u&&ee&2048&&If(S.alternate,S);break;default:Ur(h,S,M,B,u)}t=t.sibling}}function Yo(e,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var s=e,o=t,u=o.flags;switch(o.tag){case 22:Yo(s,o),u&2048&&Of(o.alternate,o);break;case 24:Yo(s,o),u&2048&&If(o.alternate,o);break;default:Yo(s,o)}t=t.sibling}}var Wo=8192;function Pr(e,t,s){if(e.subtreeFlags&Wo)for(e=e.child;e!==null;)pg(e,t,s),e=e.sibling}function pg(e,t,s){switch(e.tag){case 26:Pr(e,t,s),e.flags&Wo&&e.memoizedState!==null&&Rb(s,cs,e.memoizedState,e.memoizedProps);break;case 5:Pr(e,t,s);break;case 3:case 4:var o=cs;cs=Ou(e.stateNode.containerInfo),Pr(e,t,s),cs=o;break;case 22:e.memoizedState===null&&(o=e.alternate,o!==null&&o.memoizedState!==null?(o=Wo,Wo=16777216,Pr(e,t,s),Wo=o):Pr(e,t,s));break;default:Pr(e,t,s)}}function gg(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function Ko(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var s=0;s<t.length;s++){var o=t[s];yn=o,xg(o,e)}gg(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)vg(e),e=e.sibling}function vg(e){switch(e.tag){case 0:case 11:case 15:Ko(e),e.flags&2048&&ni(9,e,e.return);break;case 3:Ko(e);break;case 12:Ko(e);break;case 22:var t=e.stateNode;e.memoizedState!==null&&t._visibility&2&&(e.return===null||e.return.tag!==13)?(t._visibility&=-3,Cu(e)):Ko(e);break;default:Ko(e)}}function Cu(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var s=0;s<t.length;s++){var o=t[s];yn=o,xg(o,e)}gg(e)}for(e=e.child;e!==null;){switch(t=e,t.tag){case 0:case 11:case 15:ni(8,t,t.return),Cu(t);break;case 22:s=t.stateNode,s._visibility&2&&(s._visibility&=-3,Cu(t));break;default:Cu(t)}e=e.sibling}}function xg(e,t){for(;yn!==null;){var s=yn;switch(s.tag){case 0:case 11:case 15:ni(8,s,t);break;case 23:case 22:if(s.memoizedState!==null&&s.memoizedState.cachePool!==null){var o=s.memoizedState.cachePool.pool;o!=null&&o.refCount++}break;case 24:Gi(s.memoizedState.cache)}if(o=s.child,o!==null)o.return=s,yn=o;else e:for(s=e;yn!==null;){o=yn;var u=o.sibling,h=o.return;if(og(o),o===s){yn=null;break e}if(u!==null){u.return=h,yn=u;break e}yn=h}}}var Gw={getCacheForType:function(e){var t=fn(Ot),s=t.data.get(e);return s===void 0&&(s=e(),t.data.set(e,s)),s},cacheSignal:function(){return fn(Ot).controller.signal}},Vw=typeof WeakMap=="function"?WeakMap:Map,vt=0,Tt=null,rt=null,ct=0,yt=0,Ca=null,ai=!1,qr=!1,Bf=!1,hl=0,Ut=0,si=0,Qi=0,Ff=0,ja=0,Gr=0,Qo=null,da=null,Hf=!1,ju=0,yg=0,ku=1/0,Au=null,li=null,mn=0,ii=null,Vr=null,pl=0,$f=0,Uf=null,wg=null,Xo=0,Pf=null;function ka(){return(vt&2)!==0&&ct!==0?ct&-ct:z.T!==null?Kf():en()}function bg(){if(ja===0)if((ct&536870912)===0||it){var e=Ta;Ta<<=1,(Ta&3932160)===0&&(Ta=262144),ja=e}else ja=536870912;return e=ba.current,e!==null&&(e.flags|=32),ja}function fa(e,t,s){(e===Tt&&(yt===2||yt===9)||e.cancelPendingCommit!==null)&&(Yr(e,0),ri(e,ct,ja,!1)),vs(e,s),((vt&2)===0||e!==Tt)&&(e===Tt&&((vt&2)===0&&(Qi|=s),Ut===4&&ri(e,ct,ja,!1)),Ls(e))}function Sg(e,t,s){if((vt&6)!==0)throw Error(r(327));var o=!s&&(t&127)===0&&(t&e.expiredLanes)===0||Ra(e,t),u=o?Kw(e,t):Gf(e,t,!0),h=o;do{if(u===0){qr&&!o&&ri(e,t,0,!1);break}else{if(s=e.current.alternate,h&&!Yw(s)){u=Gf(e,t,!1),h=!1;continue}if(u===2){if(h=t,e.errorRecoveryDisabledLanes&h)var S=0;else S=e.pendingLanes&-536870913,S=S!==0?S:S&536870912?536870912:0;if(S!==0){t=S;e:{var M=e;u=Qo;var B=M.current.memoizedState.isDehydrated;if(B&&(Yr(M,S).flags|=256),S=Gf(M,S,!1),S!==2){if(Bf&&!B){M.errorRecoveryDisabledLanes|=h,Qi|=h,u=4;break e}h=da,da=u,h!==null&&(da===null?da=h:da.push.apply(da,h))}u=S}if(h=!1,u!==2)continue}}if(u===1){Yr(e,0),ri(e,t,0,!0);break}e:{switch(o=e,h=u,h){case 0:case 1:throw Error(r(345));case 4:if((t&4194048)!==t)break;case 6:ri(o,t,ja,!ai);break e;case 2:da=null;break;case 3:case 5:break;default:throw Error(r(329))}if((t&62914560)===t&&(u=ju+300-Ge(),10<u)){if(ri(o,t,ja,!ai),xa(o,0,!0)!==0)break e;pl=t,o.timeoutHandle=Jg(Cg.bind(null,o,s,da,Au,Hf,t,ja,Qi,Gr,ai,h,"Throttled",-0,0),u);break e}Cg(o,s,da,Au,Hf,t,ja,Qi,Gr,ai,h,null,-0,0)}}break}while(!0);Ls(e)}function Cg(e,t,s,o,u,h,S,M,B,ee,he,we,se,ce){if(e.timeoutHandle=-1,we=t.subtreeFlags,we&8192||(we&16785408)===16785408){we={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Qa},pg(t,h,we);var Oe=(h&62914560)===h?ju-Ge():(h&4194048)===h?yg-Ge():0;if(Oe=Eb(we,Oe),Oe!==null){pl=h,e.cancelPendingCommit=Oe(Eg.bind(null,e,t,h,s,o,u,S,M,B,he,we,null,se,ce)),ri(e,h,S,!ee);return}}Eg(e,t,h,s,o,u,S,M,B)}function Yw(e){for(var t=e;;){var s=t.tag;if((s===0||s===11||s===15)&&t.flags&16384&&(s=t.updateQueue,s!==null&&(s=s.stores,s!==null)))for(var o=0;o<s.length;o++){var u=s[o],h=u.getSnapshot;u=u.value;try{if(!Xn(h(),u))return!1}catch{return!1}}if(s=t.child,t.subtreeFlags&16384&&s!==null)s.return=t,t=s;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function ri(e,t,s,o){t&=~Ff,t&=~Qi,e.suspendedLanes|=t,e.pingedLanes&=~t,o&&(e.warmLanes|=t),o=e.expirationTimes;for(var u=t;0<u;){var h=31-Me(u),S=1<<h;o[h]=-1,u&=~S}s!==0&&hr(e,s,t)}function Mu(){return(vt&6)===0?(Zo(0),!1):!0}function qf(){if(rt!==null){if(yt===0)var e=rt.return;else e=rt,ls=ss=null,lf(e),Xl=null,ll=0,e=rt;for(;e!==null;)eg(e.alternate,e),e=e.return;rt=null}}function Yr(e,t){var s=e.timeoutHandle;s!==-1&&(e.timeoutHandle=-1,mb(s)),s=e.cancelPendingCommit,s!==null&&(e.cancelPendingCommit=null,s()),pl=0,qf(),Tt=e,rt=s=Fa(e.current,null),ct=t,yt=0,Ca=null,ai=!1,qr=Ra(e,t),Bf=!1,Gr=ja=Ff=Qi=si=Ut=0,da=Qo=null,Hf=!1,(t&8)!==0&&(t|=t&32);var o=e.entangledLanes;if(o!==0)for(e=e.entanglements,o&=t;0<o;){var u=31-Me(o),h=1<<u;t|=e[u],o&=~h}return hl=t,Xs(),s}function jg(e,t){et=null,z.H=Uo,t===Ql||t===zr?(t=iu(),yt=3):t===Bo?(t=iu(),yt=4):yt=t===Sf?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,Ca=t,rt===null&&(Ut=1,gu(e,$n(t,e.current)))}function kg(){var e=ba.current;return e===null?!0:(ct&4194048)===ct?Pa===null:(ct&62914560)===ct||(ct&536870912)!==0?e===Pa:!1}function Ag(){var e=z.H;return z.H=Uo,e===null?Uo:e}function Mg(){var e=z.A;return z.A=Gw,e}function Nu(){Ut=4,ai||(ct&4194048)!==ct&&ba.current!==null||(qr=!0),(si&134217727)===0&&(Qi&134217727)===0||Tt===null||ri(Tt,ct,ja,!1)}function Gf(e,t,s){var o=vt;vt|=2;var u=Ag(),h=Mg();(Tt!==e||ct!==t)&&(Au=null,Yr(e,t)),t=!1;var S=Ut;e:do try{if(yt!==0&&rt!==null){var M=rt,B=Ca;switch(yt){case 8:qf(),S=6;break e;case 3:case 2:case 9:case 6:ba.current===null&&(t=!0);var ee=yt;if(yt=0,Ca=null,Wr(e,M,B,ee),s&&qr){S=0;break e}break;default:ee=yt,yt=0,Ca=null,Wr(e,M,B,ee)}}Ww(),S=Ut;break}catch(he){jg(e,he)}while(!0);return t&&e.shellSuspendCounter++,ls=ss=null,vt=o,z.H=u,z.A=h,rt===null&&(Tt=null,ct=0,Xs()),S}function Ww(){for(;rt!==null;)Ng(rt)}function Kw(e,t){var s=vt;vt|=2;var o=Ag(),u=Mg();Tt!==e||ct!==t?(Au=null,ku=Ge()+500,Yr(e,t)):qr=Ra(e,t);e:do try{if(yt!==0&&rt!==null){t=rt;var h=Ca;t:switch(yt){case 1:yt=0,Ca=null,Wr(e,t,h,1);break;case 2:case 9:if(su(h)){yt=0,Ca=null,Tg(t);break}t=function(){yt!==2&&yt!==9||Tt!==e||(yt=7),Ls(e)},h.then(t,t);break e;case 3:yt=7;break e;case 4:yt=5;break e;case 7:su(h)?(yt=0,Ca=null,Tg(t)):(yt=0,Ca=null,Wr(e,t,h,7));break;case 5:var S=null;switch(rt.tag){case 26:S=rt.memoizedState;case 5:case 27:var M=rt;if(S?hv(S):M.stateNode.complete){yt=0,Ca=null;var B=M.sibling;if(B!==null)rt=B;else{var ee=M.return;ee!==null?(rt=ee,Tu(ee)):rt=null}break t}}yt=0,Ca=null,Wr(e,t,h,5);break;case 6:yt=0,Ca=null,Wr(e,t,h,6);break;case 8:qf(),Ut=6;break e;default:throw Error(r(462))}}Qw();break}catch(he){jg(e,he)}while(!0);return ls=ss=null,z.H=o,z.A=u,vt=s,rt!==null?0:(Tt=null,ct=0,Xs(),Ut)}function Qw(){for(;rt!==null&&!He();)Ng(rt)}function Ng(e){var t=Zp(e.alternate,e,hl);e.memoizedProps=e.pendingProps,t===null?Tu(e):rt=t}function Tg(e){var t=e,s=t.alternate;switch(t.tag){case 15:case 0:t=Vp(s,t,t.pendingProps,t.type,void 0,ct);break;case 11:t=Vp(s,t,t.pendingProps,t.type.render,t.ref,ct);break;case 5:lf(t);default:eg(s,t),t=rt=Mo(t,hl),t=Zp(s,t,hl)}e.memoizedProps=e.pendingProps,t===null?Tu(e):rt=t}function Wr(e,t,s,o){ls=ss=null,lf(t),Xl=null,ll=0;var u=t.return;try{if(Bw(e,u,t,s,ct)){Ut=1,gu(e,$n(s,e.current)),rt=null;return}}catch(h){if(u!==null)throw rt=u,h;Ut=1,gu(e,$n(s,e.current)),rt=null;return}t.flags&32768?(it||o===1?e=!0:qr||(ct&536870912)!==0?e=!1:(ai=e=!0,(o===2||o===9||o===3||o===6)&&(o=ba.current,o!==null&&o.tag===13&&(o.flags|=16384))),Rg(t,e)):Tu(t)}function Tu(e){var t=e;do{if((t.flags&32768)!==0){Rg(t,ai);return}e=t.return;var s=$w(t.alternate,t,hl);if(s!==null){rt=s;return}if(t=t.sibling,t!==null){rt=t;return}rt=t=e}while(t!==null);Ut===0&&(Ut=5)}function Rg(e,t){do{var s=Uw(e.alternate,e);if(s!==null){s.flags&=32767,rt=s;return}if(s=e.return,s!==null&&(s.flags|=32768,s.subtreeFlags=0,s.deletions=null),!t&&(e=e.sibling,e!==null)){rt=e;return}rt=e=s}while(e!==null);Ut=6,rt=null}function Eg(e,t,s,o,u,h,S,M,B){e.cancelPendingCommit=null;do Ru();while(mn!==0);if((vt&6)!==0)throw Error(r(327));if(t!==null){if(t===e.current)throw Error(r(177));if(h=t.lanes|t.childLanes,h|=ko,mr(e,s,h,S,M,B),e===Tt&&(rt=Tt=null,ct=0),Vr=t,ii=e,pl=s,$f=h,Uf=u,wg=o,(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,eb(Wn,function(){return Og(),null})):(e.callbackNode=null,e.callbackPriority=0),o=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||o){o=z.T,z.T=null,u=K.p,K.p=2,S=vt,vt|=4;try{Pw(e,t,s)}finally{vt=S,K.p=u,z.T=o}}mn=1,Dg(),Lg(),_g()}}function Dg(){if(mn===1){mn=0;var e=ii,t=Vr,s=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||s){s=z.T,z.T=null;var o=K.p;K.p=2;var u=vt;vt|=4;try{fg(t,e);var h=am,S=Qc(e.containerInfo),M=h.focusedElem,B=h.selectionRange;if(S!==M&&M&&M.ownerDocument&&Fl(M.ownerDocument.documentElement,M)){if(B!==null&&Hl(M)){var ee=B.start,he=B.end;if(he===void 0&&(he=ee),"selectionStart"in M)M.selectionStart=ee,M.selectionEnd=Math.min(he,M.value.length);else{var we=M.ownerDocument||document,se=we&&we.defaultView||window;if(se.getSelection){var ce=se.getSelection(),Oe=M.textContent.length,qe=Math.min(B.start,Oe),kt=B.end===void 0?qe:Math.min(B.end,Oe);!ce.extend&&qe>kt&&(S=kt,kt=qe,qe=S);var W=Mr(M,qe),U=Mr(M,kt);if(W&&U&&(ce.rangeCount!==1||ce.anchorNode!==W.node||ce.anchorOffset!==W.offset||ce.focusNode!==U.node||ce.focusOffset!==U.offset)){var J=we.createRange();J.setStart(W.node,W.offset),ce.removeAllRanges(),qe>kt?(ce.addRange(J),ce.extend(U.node,U.offset)):(J.setEnd(U.node,U.offset),ce.addRange(J))}}}}for(we=[],ce=M;ce=ce.parentNode;)ce.nodeType===1&&we.push({element:ce,left:ce.scrollLeft,top:ce.scrollTop});for(typeof M.focus=="function"&&M.focus(),M=0;M<we.length;M++){var xe=we[M];xe.element.scrollLeft=xe.left,xe.element.scrollTop=xe.top}}Uu=!!nm,am=nm=null}finally{vt=u,K.p=o,z.T=s}}e.current=t,mn=2}}function Lg(){if(mn===2){mn=0;var e=ii,t=Vr,s=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||s){s=z.T,z.T=null;var o=K.p;K.p=2;var u=vt;vt|=4;try{rg(e,t.alternate,t)}finally{vt=u,K.p=o,z.T=s}}mn=3}}function _g(){if(mn===4||mn===3){mn=0,_e();var e=ii,t=Vr,s=pl,o=wg;(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?mn=5:(mn=0,Vr=ii=null,zg(e,e.pendingLanes));var u=e.pendingLanes;if(u===0&&(li=null),aa(s),t=t.stateNode,mt&&typeof mt.onCommitFiberRoot=="function")try{mt.onCommitFiberRoot(ps,t,void 0,(t.current.flags&128)===128)}catch{}if(o!==null){t=z.T,u=K.p,K.p=2,z.T=null;try{for(var h=e.onRecoverableError,S=0;S<o.length;S++){var M=o[S];h(M.value,{componentStack:M.stack})}}finally{z.T=t,K.p=u}}(pl&3)!==0&&Ru(),Ls(e),u=e.pendingLanes,(s&261930)!==0&&(u&42)!==0?e===Pf?Xo++:(Xo=0,Pf=e):Xo=0,Zo(0)}}function zg(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Gi(t)))}function Ru(){return Dg(),Lg(),_g(),Og()}function Og(){if(mn!==5)return!1;var e=ii,t=$f;$f=0;var s=aa(pl),o=z.T,u=K.p;try{K.p=32>s?32:s,z.T=null,s=Uf,Uf=null;var h=ii,S=pl;if(mn=0,Vr=ii=null,pl=0,(vt&6)!==0)throw Error(r(331));var M=vt;if(vt|=4,vg(h.current),hg(h,h.current,S,s),vt=M,Zo(0,!1),mt&&typeof mt.onPostCommitFiberRoot=="function")try{mt.onPostCommitFiberRoot(ps,h)}catch{}return!0}finally{K.p=u,z.T=o,zg(e,t)}}function Ig(e,t,s){t=$n(s,t),t=bf(e.stateNode,t,2),e=$e(e,t,2),e!==null&&(vs(e,2),Ls(e))}function wt(e,t,s){if(e.tag===3)Ig(e,e,s);else for(;t!==null;){if(t.tag===3){Ig(t,e,s);break}else if(t.tag===1){var o=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof o.componentDidCatch=="function"&&(li===null||!li.has(o))){e=$n(s,e),s=Bp(2),o=$e(t,s,2),o!==null&&(Fp(s,o,t,e),vs(o,2),Ls(o));break}}t=t.return}}function Vf(e,t,s){var o=e.pingCache;if(o===null){o=e.pingCache=new Vw;var u=new Set;o.set(t,u)}else u=o.get(t),u===void 0&&(u=new Set,o.set(t,u));u.has(s)||(Bf=!0,u.add(s),e=Xw.bind(null,e,t,s),t.then(e,e))}function Xw(e,t,s){var o=e.pingCache;o!==null&&o.delete(t),e.pingedLanes|=e.suspendedLanes&s,e.warmLanes&=~s,Tt===e&&(ct&s)===s&&(Ut===4||Ut===3&&(ct&62914560)===ct&&300>Ge()-ju?(vt&2)===0&&Yr(e,0):Ff|=s,Gr===ct&&(Gr=0)),Ls(e)}function Bg(e,t){t===0&&(t=Os()),e=As(e,t),e!==null&&(vs(e,t),Ls(e))}function Zw(e){var t=e.memoizedState,s=0;t!==null&&(s=t.retryLane),Bg(e,s)}function Jw(e,t){var s=0;switch(e.tag){case 31:case 13:var o=e.stateNode,u=e.memoizedState;u!==null&&(s=u.retryLane);break;case 19:o=e.stateNode;break;case 22:o=e.stateNode._retryCache;break;default:throw Error(r(314))}o!==null&&o.delete(t),Bg(e,s)}function eb(e,t){return st(e,t)}var Eu=null,Kr=null,Yf=!1,Du=!1,Wf=!1,oi=0;function Ls(e){e!==Kr&&e.next===null&&(Kr===null?Eu=Kr=e:Kr=Kr.next=e),Du=!0,Yf||(Yf=!0,nb())}function Zo(e,t){if(!Wf&&Du){Wf=!0;do for(var s=!1,o=Eu;o!==null;){if(e!==0){var u=o.pendingLanes;if(u===0)var h=0;else{var S=o.suspendedLanes,M=o.pingedLanes;h=(1<<31-Me(42|e)+1)-1,h&=u&~(S&~M),h=h&201326741?h&201326741|1:h?h|2:0}h!==0&&(s=!0,Ug(o,h))}else h=ct,h=xa(o,o===Tt?h:0,o.cancelPendingCommit!==null||o.timeoutHandle!==-1),(h&3)===0||Ra(o,h)||(s=!0,Ug(o,h));o=o.next}while(s);Wf=!1}}function tb(){Fg()}function Fg(){Du=Yf=!1;var e=0;oi!==0&&fb()&&(e=oi);for(var t=Ge(),s=null,o=Eu;o!==null;){var u=o.next,h=Hg(o,t);h===0?(o.next=null,s===null?Eu=u:s.next=u,u===null&&(Kr=s)):(s=o,(e!==0||(h&3)!==0)&&(Du=!0)),o=u}mn!==0&&mn!==5||Zo(e),oi!==0&&(oi=0)}function Hg(e,t){for(var s=e.suspendedLanes,o=e.pingedLanes,u=e.expirationTimes,h=e.pendingLanes&-62914561;0<h;){var S=31-Me(h),M=1<<S,B=u[S];B===-1?((M&s)===0||(M&o)!==0)&&(u[S]=qt(M,t)):B<=t&&(e.expiredLanes|=M),h&=~M}if(t=Tt,s=ct,s=xa(e,e===t?s:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),o=e.callbackNode,s===0||e===t&&(yt===2||yt===9)||e.cancelPendingCommit!==null)return o!==null&&o!==null&&me(o),e.callbackNode=null,e.callbackPriority=0;if((s&3)===0||Ra(e,s)){if(t=s&-s,t===e.callbackPriority)return t;switch(o!==null&&me(o),aa(s)){case 2:case 8:s=kn;break;case 32:s=Wn;break;case 268435456:s=Na;break;default:s=Wn}return o=$g.bind(null,e),s=st(s,o),e.callbackPriority=t,e.callbackNode=s,t}return o!==null&&o!==null&&me(o),e.callbackPriority=2,e.callbackNode=null,2}function $g(e,t){if(mn!==0&&mn!==5)return e.callbackNode=null,e.callbackPriority=0,null;var s=e.callbackNode;if(Ru()&&e.callbackNode!==s)return null;var o=ct;return o=xa(e,e===Tt?o:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),o===0?null:(Sg(e,o,t),Hg(e,Ge()),e.callbackNode!=null&&e.callbackNode===s?$g.bind(null,e):null)}function Ug(e,t){if(Ru())return null;Sg(e,t,!0)}function nb(){hb(function(){(vt&6)!==0?st(hn,tb):Fg()})}function Kf(){if(oi===0){var e=tl;e===0&&(e=At,At<<=1,(At&261888)===0&&(At=256)),oi=e}return oi}function Pg(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:uo(""+e)}function qg(e,t){var s=t.ownerDocument.createElement("input");return s.name=t.name,s.value=t.value,e.id&&s.setAttribute("form",e.id),t.parentNode.insertBefore(s,t),e=new FormData(e),s.parentNode.removeChild(s),e}function ab(e,t,s,o,u){if(t==="submit"&&s&&s.stateNode===u){var h=Pg((u[je]||null).action),S=o.submitter;S&&(t=(t=S[je]||null)?Pg(t.formAction):S.getAttribute("formAction"),t!==null&&(h=t,S=null));var M=new Xe("action","action",null,o,u);e.push({event:M,listeners:[{instance:null,listener:function(){if(o.defaultPrevented){if(oi!==0){var B=S?qg(u,S):new FormData(u);pf(s,{pending:!0,data:B,method:u.method,action:h},null,B)}}else typeof h=="function"&&(M.preventDefault(),B=S?qg(u,S):new FormData(u),pf(s,{pending:!0,data:B,method:u.method,action:h},h,B))},currentTarget:u}]})}}for(var Qf=0;Qf<Ii.length;Qf++){var Xf=Ii[Qf],sb=Xf.toLowerCase(),lb=Xf[0].toUpperCase()+Xf.slice(1);Hn(sb,"on"+lb)}Hn(Ul,"onAnimationEnd"),Hn(ya,"onAnimationIteration"),Hn(So,"onAnimationStart"),Hn("dblclick","onDoubleClick"),Hn("focusin","onFocus"),Hn("focusout","onBlur"),Hn(Co,"onTransitionRun"),Hn(Zc,"onTransitionStart"),Hn(En,"onTransitionCancel"),Hn(jo,"onTransitionEnd"),bt("onMouseEnter",["mouseout","mouseover"]),bt("onMouseLeave",["mouseout","mouseover"]),bt("onPointerEnter",["pointerout","pointerover"]),bt("onPointerLeave",["pointerout","pointerover"]),Gt("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Gt("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Gt("onBeforeInput",["compositionend","keypress","textInput","paste"]),Gt("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Gt("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Gt("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Jo="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ib=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Jo));function Gg(e,t){t=(t&4)!==0;for(var s=0;s<e.length;s++){var o=e[s],u=o.event;o=o.listeners;e:{var h=void 0;if(t)for(var S=o.length-1;0<=S;S--){var M=o[S],B=M.instance,ee=M.currentTarget;if(M=M.listener,B!==h&&u.isPropagationStopped())break e;h=M,u.currentTarget=ee;try{h(u)}catch(he){Tr(he)}u.currentTarget=null,h=B}else for(S=0;S<o.length;S++){if(M=o[S],B=M.instance,ee=M.currentTarget,M=M.listener,B!==h&&u.isPropagationStopped())break e;h=M,u.currentTarget=ee;try{h(u)}catch(he){Tr(he)}u.currentTarget=null,h=B}}}}function ot(e,t){var s=t[We];s===void 0&&(s=t[We]=new Set);var o=e+"__bubble";s.has(o)||(Vg(t,e,2,!1),s.add(o))}function Zf(e,t,s){var o=0;t&&(o|=4),Vg(s,e,o,t)}var Lu="_reactListening"+Math.random().toString(36).slice(2);function Jf(e){if(!e[Lu]){e[Lu]=!0,ys.forEach(function(s){s!=="selectionchange"&&(ib.has(s)||Zf(s,!1,e),Zf(s,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Lu]||(t[Lu]=!0,Zf("selectionchange",!1,t))}}function Vg(e,t,s,o){switch(bv(t)){case 2:var u=_b;break;case 8:u=zb;break;default:u=hm}s=u.bind(null,t,s,e),u=void 0,!Al||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(u=!0),o?u!==void 0?e.addEventListener(t,s,{capture:!0,passive:u}):e.addEventListener(t,s,!0):u!==void 0?e.addEventListener(t,s,{passive:u}):e.addEventListener(t,s,!1)}function em(e,t,s,o,u){var h=o;if((t&1)===0&&(t&2)===0&&o!==null)e:for(;;){if(o===null)return;var S=o.tag;if(S===3||S===4){var M=o.stateNode.containerInfo;if(M===u)break;if(S===4)for(S=o.return;S!==null;){var B=S.tag;if((B===3||B===4)&&S.stateNode.containerInfo===u)return;S=S.return}for(;M!==null;){if(S=Ft(M),S===null)return;if(B=S.tag,B===5||B===6||B===26||B===27){o=h=S;continue e}M=M.parentNode}}o=o.return}fo(function(){var ee=h,he=xr(s),we=[];e:{var se=Nr.get(e);if(se!==void 0){var ce=Xe,Oe=e;switch(e){case"keypress":if(Ve(s)===0)break e;case"keydown":case"keyup":ce=Vt;break;case"focusin":Oe="focus",ce=Te;break;case"focusout":Oe="blur",ce=Te;break;case"beforeblur":case"afterblur":ce=Te;break;case"click":if(s.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":ce=la;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":ce=Rn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":ce=es;break;case Ul:case ya:case So:ce=qd;break;case jo:ce=br;break;case"scroll":case"scrollend":ce=Pd;break;case"wheel":ce=Oa;break;case"copy":case"cut":case"paste":ce=Gd;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":ce=Pc;break;case"toggle":case"beforetoggle":ce=Wd}var qe=(t&4)!==0,kt=!qe&&(e==="scroll"||e==="scrollend"),W=qe?se!==null?se+"Capture":null:se;qe=[];for(var U=ee,J;U!==null;){var xe=U;if(J=xe.stateNode,xe=xe.tag,xe!==5&&xe!==26&&xe!==27||J===null||W===null||(xe=Xa(U,W),xe!=null&&qe.push(ec(U,xe,J))),kt)break;U=U.return}0<qe.length&&(se=new ce(se,Oe,null,s,he),we.push({event:se,listeners:qe}))}}if((t&7)===0){e:{if(se=e==="mouseover"||e==="pointerover",ce=e==="mouseout"||e==="pointerout",se&&s!==vr&&(Oe=s.relatedTarget||s.fromElement)&&(Ft(Oe)||Oe[Le]))break e;if((ce||se)&&(se=he.window===he?he:(se=he.ownerDocument)?se.defaultView||se.parentWindow:window,ce?(Oe=s.relatedTarget||s.toElement,ce=ee,Oe=Oe?Ft(Oe):null,Oe!==null&&(kt=d(Oe),qe=Oe.tag,Oe!==kt||qe!==5&&qe!==27&&qe!==6)&&(Oe=null)):(ce=null,Oe=ee),ce!==Oe)){if(qe=la,xe="onMouseLeave",W="onMouseEnter",U="mouse",(e==="pointerout"||e==="pointerover")&&(qe=Pc,xe="onPointerLeave",W="onPointerEnter",U="pointer"),kt=ce==null?se:Mt(ce),J=Oe==null?se:Mt(Oe),se=new qe(xe,U+"leave",ce,s,he),se.target=kt,se.relatedTarget=J,xe=null,Ft(he)===ee&&(qe=new qe(W,U+"enter",Oe,s,he),qe.target=J,qe.relatedTarget=kt,xe=qe),kt=xe,ce&&Oe)t:{for(qe=rb,W=ce,U=Oe,J=0,xe=W;xe;xe=qe(xe))J++;xe=0;for(var Pe=U;Pe;Pe=qe(Pe))xe++;for(;0<J-xe;)W=qe(W),J--;for(;0<xe-J;)U=qe(U),xe--;for(;J--;){if(W===U||U!==null&&W===U.alternate){qe=W;break t}W=qe(W),U=qe(U)}qe=null}else qe=null;ce!==null&&Yg(we,se,ce,qe,!1),Oe!==null&&kt!==null&&Yg(we,kt,Oe,qe,!0)}}e:{if(se=ee?Mt(ee):window,ce=se.nodeName&&se.nodeName.toLowerCase(),ce==="select"||ce==="input"&&se.type==="file")var ht=go;else if(Vs(se))if(Kc)ht=Ys;else{ht=kr;var Fe=js}else ce=se.nodeName,!ce||ce.toLowerCase()!=="input"||se.type!=="checkbox"&&se.type!=="radio"?ee&&Ni(ee.elementType)&&(ht=go):ht=Il;if(ht&&(ht=ht(e,ee))){po(we,ht,s,he);break e}Fe&&Fe(e,se,ee),e==="focusout"&&ee&&se.type==="number"&&ee.memoizedProps.value!=null&&_a(se,"number",se.value)}switch(Fe=ee?Mt(ee):window,e){case"focusin":(Vs(Fe)||Fe.contentEditable==="true")&&(ts=Fe,zi=ee,Ws=null);break;case"focusout":Ws=zi=ts=null;break;case"mousedown":$l=!0;break;case"contextmenu":case"mouseup":case"dragend":$l=!1,Oi(we,s,he);break;case"selectionchange":if(Xc)break;case"keydown":case"keyup":Oi(we,s,he)}var at;if(Ss)e:{switch(e){case"compositionstart":var ut="onCompositionStart";break e;case"compositionend":ut="onCompositionEnd";break e;case"compositionupdate":ut="onCompositionUpdate";break e}ut=void 0}else Ll?Ia(e,s)&&(ut="onCompositionEnd"):e==="keydown"&&s.keyCode===229&&(ut="onCompositionStart");ut&&(Cs&&s.locale!=="ko"&&(Ll||ut!=="onCompositionStart"?ut==="onCompositionEnd"&&Ll&&(at=mo()):(Za=he,$s="value"in Za?Za.value:Za.textContent,Ll=!0)),Fe=_u(ee,ut),0<Fe.length&&(ut=new El(ut,e,null,s,he),we.push({event:ut,listeners:Fe}),at?ut.data=at:(at=Yc(s),at!==null&&(ut.data=at)))),(at=Yt?Sr(e,s):Cr(e,s))&&(ut=_u(ee,"onBeforeInput"),0<ut.length&&(Fe=new El("onBeforeInput","beforeinput",null,s,he),we.push({event:Fe,listeners:ut}),Fe.data=at)),ab(we,e,ee,s,he)}Gg(we,t)})}function ec(e,t,s){return{instance:e,listener:t,currentTarget:s}}function _u(e,t){for(var s=t+"Capture",o=[];e!==null;){var u=e,h=u.stateNode;if(u=u.tag,u!==5&&u!==26&&u!==27||h===null||(u=Xa(e,s),u!=null&&o.unshift(ec(e,u,h)),u=Xa(e,t),u!=null&&o.push(ec(e,u,h))),e.tag===3)return o;e=e.return}return[]}function rb(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Yg(e,t,s,o,u){for(var h=t._reactName,S=[];s!==null&&s!==o;){var M=s,B=M.alternate,ee=M.stateNode;if(M=M.tag,B!==null&&B===o)break;M!==5&&M!==26&&M!==27||ee===null||(B=ee,u?(ee=Xa(s,h),ee!=null&&S.unshift(ec(s,ee,B))):u||(ee=Xa(s,h),ee!=null&&S.push(ec(s,ee,B)))),s=s.return}S.length!==0&&e.push({event:t,listeners:S})}var ob=/\r\n?/g,cb=/\u0000|\uFFFD/g;function Wg(e){return(typeof e=="string"?e:""+e).replace(ob,`
|
|
9
|
+
`).replace(cb,"")}function Kg(e,t){return t=Wg(t),Wg(e)===t}function jt(e,t,s,o,u,h){switch(s){case"children":typeof o=="string"?t==="body"||t==="textarea"&&o===""||Sl(e,o):(typeof o=="number"||typeof o=="bigint")&&t!=="body"&&Sl(e,""+o);break;case"className":ws(e,"class",o);break;case"tabIndex":ws(e,"tabindex",o);break;case"dir":case"role":case"viewBox":case"width":case"height":ws(e,s,o);break;case"style":Hs(e,o,h);break;case"data":if(t!=="object"){ws(e,"data",o);break}case"src":case"href":if(o===""&&(t!=="a"||s!=="href")){e.removeAttribute(s);break}if(o==null||typeof o=="function"||typeof o=="symbol"||typeof o=="boolean"){e.removeAttribute(s);break}o=uo(""+o),e.setAttribute(s,o);break;case"action":case"formAction":if(typeof o=="function"){e.setAttribute(s,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof h=="function"&&(s==="formAction"?(t!=="input"&&jt(e,t,"name",u.name,u,null),jt(e,t,"formEncType",u.formEncType,u,null),jt(e,t,"formMethod",u.formMethod,u,null),jt(e,t,"formTarget",u.formTarget,u,null)):(jt(e,t,"encType",u.encType,u,null),jt(e,t,"method",u.method,u,null),jt(e,t,"target",u.target,u,null)));if(o==null||typeof o=="symbol"||typeof o=="boolean"){e.removeAttribute(s);break}o=uo(""+o),e.setAttribute(s,o);break;case"onClick":o!=null&&(e.onclick=Qa);break;case"onScroll":o!=null&&ot("scroll",e);break;case"onScrollEnd":o!=null&&ot("scrollend",e);break;case"dangerouslySetInnerHTML":if(o!=null){if(typeof o!="object"||!("__html"in o))throw Error(r(61));if(s=o.__html,s!=null){if(u.children!=null)throw Error(r(60));e.innerHTML=s}}break;case"multiple":e.multiple=o&&typeof o!="function"&&typeof o!="symbol";break;case"muted":e.muted=o&&typeof o!="function"&&typeof o!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(o==null||typeof o=="function"||typeof o=="boolean"||typeof o=="symbol"){e.removeAttribute("xlink:href");break}s=uo(""+o),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":o!=null&&typeof o!="function"&&typeof o!="symbol"?e.setAttribute(s,""+o):e.removeAttribute(s);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":o&&typeof o!="function"&&typeof o!="symbol"?e.setAttribute(s,""):e.removeAttribute(s);break;case"capture":case"download":o===!0?e.setAttribute(s,""):o!==!1&&o!=null&&typeof o!="function"&&typeof o!="symbol"?e.setAttribute(s,o):e.removeAttribute(s);break;case"cols":case"rows":case"size":case"span":o!=null&&typeof o!="function"&&typeof o!="symbol"&&!isNaN(o)&&1<=o?e.setAttribute(s,o):e.removeAttribute(s);break;case"rowSpan":case"start":o==null||typeof o=="function"||typeof o=="symbol"||isNaN(o)?e.removeAttribute(s):e.setAttribute(s,o);break;case"popover":ot("beforetoggle",e),ot("toggle",e),Bs(e,"popover",o);break;case"xlinkActuate":Bn(e,"http://www.w3.org/1999/xlink","xlink:actuate",o);break;case"xlinkArcrole":Bn(e,"http://www.w3.org/1999/xlink","xlink:arcrole",o);break;case"xlinkRole":Bn(e,"http://www.w3.org/1999/xlink","xlink:role",o);break;case"xlinkShow":Bn(e,"http://www.w3.org/1999/xlink","xlink:show",o);break;case"xlinkTitle":Bn(e,"http://www.w3.org/1999/xlink","xlink:title",o);break;case"xlinkType":Bn(e,"http://www.w3.org/1999/xlink","xlink:type",o);break;case"xmlBase":Bn(e,"http://www.w3.org/XML/1998/namespace","xml:base",o);break;case"xmlLang":Bn(e,"http://www.w3.org/XML/1998/namespace","xml:lang",o);break;case"xmlSpace":Bn(e,"http://www.w3.org/XML/1998/namespace","xml:space",o);break;case"is":Bs(e,"is",o);break;case"innerText":case"textContent":break;default:(!(2<s.length)||s[0]!=="o"&&s[0]!=="O"||s[1]!=="n"&&s[1]!=="N")&&(s=Ph.get(s)||s,Bs(e,s,o))}}function tm(e,t,s,o,u,h){switch(s){case"style":Hs(e,o,h);break;case"dangerouslySetInnerHTML":if(o!=null){if(typeof o!="object"||!("__html"in o))throw Error(r(61));if(s=o.__html,s!=null){if(u.children!=null)throw Error(r(60));e.innerHTML=s}}break;case"children":typeof o=="string"?Sl(e,o):(typeof o=="number"||typeof o=="bigint")&&Sl(e,""+o);break;case"onScroll":o!=null&&ot("scroll",e);break;case"onScrollEnd":o!=null&&ot("scrollend",e);break;case"onClick":o!=null&&(e.onclick=Qa);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!pn.hasOwnProperty(s))e:{if(s[0]==="o"&&s[1]==="n"&&(u=s.endsWith("Capture"),t=s.slice(2,u?s.length-7:void 0),h=e[je]||null,h=h!=null?h[s]:null,typeof h=="function"&&e.removeEventListener(t,h,u),typeof o=="function")){typeof h!="function"&&h!==null&&(s in e?e[s]=null:e.hasAttribute(s)&&e.removeAttribute(s)),e.addEventListener(t,o,u);break e}s in e?e[s]=o:o===!0?e.setAttribute(s,""):Bs(e,s,o)}}}function _n(e,t,s){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":ot("error",e),ot("load",e);var o=!1,u=!1,h;for(h in s)if(s.hasOwnProperty(h)){var S=s[h];if(S!=null)switch(h){case"src":o=!0;break;case"srcSet":u=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(r(137,t));default:jt(e,t,h,S,s,null)}}u&&jt(e,t,"srcSet",s.srcSet,s,null),o&&jt(e,t,"src",s.src,s,null);return;case"input":ot("invalid",e);var M=h=S=u=null,B=null,ee=null;for(o in s)if(s.hasOwnProperty(o)){var he=s[o];if(he!=null)switch(o){case"name":u=he;break;case"type":S=he;break;case"checked":B=he;break;case"defaultChecked":ee=he;break;case"value":h=he;break;case"defaultValue":M=he;break;case"children":case"dangerouslySetInnerHTML":if(he!=null)throw Error(r(137,t));break;default:jt(e,t,o,he,s,null)}}bs(e,h,M,B,ee,S,u,!1);return;case"select":ot("invalid",e),o=S=h=null;for(u in s)if(s.hasOwnProperty(u)&&(M=s[u],M!=null))switch(u){case"value":h=M;break;case"defaultValue":S=M;break;case"multiple":o=M;default:jt(e,t,u,M,s,null)}t=h,s=S,e.multiple=!!o,t!=null?bl(e,!!o,t,!1):s!=null&&bl(e,!!o,s,!0);return;case"textarea":ot("invalid",e),h=u=o=null;for(S in s)if(s.hasOwnProperty(S)&&(M=s[S],M!=null))switch(S){case"value":o=M;break;case"defaultValue":u=M;break;case"children":h=M;break;case"dangerouslySetInnerHTML":if(M!=null)throw Error(r(91));break;default:jt(e,t,S,M,s,null)}Ud(e,o,u,h);return;case"option":for(B in s)s.hasOwnProperty(B)&&(o=s[B],o!=null)&&(B==="selected"?e.selected=o&&typeof o!="function"&&typeof o!="symbol":jt(e,t,B,o,s,null));return;case"dialog":ot("beforetoggle",e),ot("toggle",e),ot("cancel",e),ot("close",e);break;case"iframe":case"object":ot("load",e);break;case"video":case"audio":for(o=0;o<Jo.length;o++)ot(Jo[o],e);break;case"image":ot("error",e),ot("load",e);break;case"details":ot("toggle",e);break;case"embed":case"source":case"link":ot("error",e),ot("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(ee in s)if(s.hasOwnProperty(ee)&&(o=s[ee],o!=null))switch(ee){case"children":case"dangerouslySetInnerHTML":throw Error(r(137,t));default:jt(e,t,ee,o,s,null)}return;default:if(Ni(t)){for(he in s)s.hasOwnProperty(he)&&(o=s[he],o!==void 0&&tm(e,t,he,o,s,void 0));return}}for(M in s)s.hasOwnProperty(M)&&(o=s[M],o!=null&&jt(e,t,M,o,s,null))}function ub(e,t,s,o){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var u=null,h=null,S=null,M=null,B=null,ee=null,he=null;for(ce in s){var we=s[ce];if(s.hasOwnProperty(ce)&&we!=null)switch(ce){case"checked":break;case"value":break;case"defaultValue":B=we;default:o.hasOwnProperty(ce)||jt(e,t,ce,null,o,we)}}for(var se in o){var ce=o[se];if(we=s[se],o.hasOwnProperty(se)&&(ce!=null||we!=null))switch(se){case"type":h=ce;break;case"name":u=ce;break;case"checked":ee=ce;break;case"defaultChecked":he=ce;break;case"value":S=ce;break;case"defaultValue":M=ce;break;case"children":case"dangerouslySetInnerHTML":if(ce!=null)throw Error(r(137,t));break;default:ce!==we&&jt(e,t,se,ce,o,we)}}La(e,S,M,B,ee,he,h,u);return;case"select":ce=S=M=se=null;for(h in s)if(B=s[h],s.hasOwnProperty(h)&&B!=null)switch(h){case"value":break;case"multiple":ce=B;default:o.hasOwnProperty(h)||jt(e,t,h,null,o,B)}for(u in o)if(h=o[u],B=s[u],o.hasOwnProperty(u)&&(h!=null||B!=null))switch(u){case"value":se=h;break;case"defaultValue":M=h;break;case"multiple":S=h;default:h!==B&&jt(e,t,u,h,o,B)}t=M,s=S,o=ce,se!=null?bl(e,!!s,se,!1):!!o!=!!s&&(t!=null?bl(e,!!s,t,!0):bl(e,!!s,s?[]:"",!1));return;case"textarea":ce=se=null;for(M in s)if(u=s[M],s.hasOwnProperty(M)&&u!=null&&!o.hasOwnProperty(M))switch(M){case"value":break;case"children":break;default:jt(e,t,M,null,o,u)}for(S in o)if(u=o[S],h=s[S],o.hasOwnProperty(S)&&(u!=null||h!=null))switch(S){case"value":se=u;break;case"defaultValue":ce=u;break;case"children":break;case"dangerouslySetInnerHTML":if(u!=null)throw Error(r(91));break;default:u!==h&&jt(e,t,S,u,o,h)}gr(e,se,ce);return;case"option":for(var Oe in s)se=s[Oe],s.hasOwnProperty(Oe)&&se!=null&&!o.hasOwnProperty(Oe)&&(Oe==="selected"?e.selected=!1:jt(e,t,Oe,null,o,se));for(B in o)se=o[B],ce=s[B],o.hasOwnProperty(B)&&se!==ce&&(se!=null||ce!=null)&&(B==="selected"?e.selected=se&&typeof se!="function"&&typeof se!="symbol":jt(e,t,B,se,o,ce));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var qe in s)se=s[qe],s.hasOwnProperty(qe)&&se!=null&&!o.hasOwnProperty(qe)&&jt(e,t,qe,null,o,se);for(ee in o)if(se=o[ee],ce=s[ee],o.hasOwnProperty(ee)&&se!==ce&&(se!=null||ce!=null))switch(ee){case"children":case"dangerouslySetInnerHTML":if(se!=null)throw Error(r(137,t));break;default:jt(e,t,ee,se,o,ce)}return;default:if(Ni(t)){for(var kt in s)se=s[kt],s.hasOwnProperty(kt)&&se!==void 0&&!o.hasOwnProperty(kt)&&tm(e,t,kt,void 0,o,se);for(he in o)se=o[he],ce=s[he],!o.hasOwnProperty(he)||se===ce||se===void 0&&ce===void 0||tm(e,t,he,se,o,ce);return}}for(var W in s)se=s[W],s.hasOwnProperty(W)&&se!=null&&!o.hasOwnProperty(W)&&jt(e,t,W,null,o,se);for(we in o)se=o[we],ce=s[we],!o.hasOwnProperty(we)||se===ce||se==null&&ce==null||jt(e,t,we,se,o,ce)}function Qg(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function db(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,s=performance.getEntriesByType("resource"),o=0;o<s.length;o++){var u=s[o],h=u.transferSize,S=u.initiatorType,M=u.duration;if(h&&M&&Qg(S)){for(S=0,M=u.responseEnd,o+=1;o<s.length;o++){var B=s[o],ee=B.startTime;if(ee>M)break;var he=B.transferSize,we=B.initiatorType;he&&Qg(we)&&(B=B.responseEnd,S+=he*(B<M?1:(M-ee)/(B-ee)))}if(--o,t+=8*(h+S)/(u.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var nm=null,am=null;function zu(e){return e.nodeType===9?e:e.ownerDocument}function Xg(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Zg(e,t){if(e===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&t==="foreignObject"?0:e}function sm(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var lm=null;function fb(){var e=window.event;return e&&e.type==="popstate"?e===lm?!1:(lm=e,!0):(lm=null,!1)}var Jg=typeof setTimeout=="function"?setTimeout:void 0,mb=typeof clearTimeout=="function"?clearTimeout:void 0,ev=typeof Promise=="function"?Promise:void 0,hb=typeof queueMicrotask=="function"?queueMicrotask:typeof ev<"u"?function(e){return ev.resolve(null).then(e).catch(pb)}:Jg;function pb(e){setTimeout(function(){throw e})}function ci(e){return e==="head"}function tv(e,t){var s=t,o=0;do{var u=s.nextSibling;if(e.removeChild(s),u&&u.nodeType===8)if(s=u.data,s==="/$"||s==="/&"){if(o===0){e.removeChild(u),Jr(t);return}o--}else if(s==="$"||s==="$?"||s==="$~"||s==="$!"||s==="&")o++;else if(s==="html")tc(e.ownerDocument.documentElement);else if(s==="head"){s=e.ownerDocument.head,tc(s);for(var h=s.firstChild;h;){var S=h.nextSibling,M=h.nodeName;h[dt]||M==="SCRIPT"||M==="STYLE"||M==="LINK"&&h.rel.toLowerCase()==="stylesheet"||s.removeChild(h),h=S}}else s==="body"&&tc(e.ownerDocument.body);s=u}while(s);Jr(t)}function nv(e,t){var s=e;e=0;do{var o=s.nextSibling;if(s.nodeType===1?t?(s._stashedDisplay=s.style.display,s.style.display="none"):(s.style.display=s._stashedDisplay||"",s.getAttribute("style")===""&&s.removeAttribute("style")):s.nodeType===3&&(t?(s._stashedText=s.nodeValue,s.nodeValue=""):s.nodeValue=s._stashedText||""),o&&o.nodeType===8)if(s=o.data,s==="/$"){if(e===0)break;e--}else s!=="$"&&s!=="$?"&&s!=="$~"&&s!=="$!"||e++;s=o}while(s)}function im(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var s=t;switch(t=t.nextSibling,s.nodeName){case"HTML":case"HEAD":case"BODY":im(s),tn(s);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(s.rel.toLowerCase()==="stylesheet")continue}e.removeChild(s)}}function gb(e,t,s,o){for(;e.nodeType===1;){var u=s;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!o&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(o){if(!e[dt])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(h=e.getAttribute("rel"),h==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(h!==u.rel||e.getAttribute("href")!==(u.href==null||u.href===""?null:u.href)||e.getAttribute("crossorigin")!==(u.crossOrigin==null?null:u.crossOrigin)||e.getAttribute("title")!==(u.title==null?null:u.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(h=e.getAttribute("src"),(h!==(u.src==null?null:u.src)||e.getAttribute("type")!==(u.type==null?null:u.type)||e.getAttribute("crossorigin")!==(u.crossOrigin==null?null:u.crossOrigin))&&h&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){var h=u.name==null?null:""+u.name;if(u.type==="hidden"&&e.getAttribute("name")===h)return e}else return e;if(e=qa(e.nextSibling),e===null)break}return null}function vb(e,t,s){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!s||(e=qa(e.nextSibling),e===null))return null;return e}function av(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=qa(e.nextSibling),e===null))return null;return e}function rm(e){return e.data==="$?"||e.data==="$~"}function om(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function xb(e,t){var s=e.ownerDocument;if(e.data==="$~")e._reactRetry=t;else if(e.data!=="$?"||s.readyState!=="loading")t();else{var o=function(){t(),s.removeEventListener("DOMContentLoaded",o)};s.addEventListener("DOMContentLoaded",o),e._reactRetry=o}}function qa(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t==="$"||t==="$!"||t==="$?"||t==="$~"||t==="&"||t==="F!"||t==="F")break;if(t==="/$"||t==="/&")return null}}return e}var cm=null;function sv(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var s=e.data;if(s==="/$"||s==="/&"){if(t===0)return qa(e.nextSibling);t--}else s!=="$"&&s!=="$!"&&s!=="$?"&&s!=="$~"&&s!=="&"||t++}e=e.nextSibling}return null}function lv(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var s=e.data;if(s==="$"||s==="$!"||s==="$?"||s==="$~"||s==="&"){if(t===0)return e;t--}else s!=="/$"&&s!=="/&"||t++}e=e.previousSibling}return null}function iv(e,t,s){switch(t=zu(s),e){case"html":if(e=t.documentElement,!e)throw Error(r(452));return e;case"head":if(e=t.head,!e)throw Error(r(453));return e;case"body":if(e=t.body,!e)throw Error(r(454));return e;default:throw Error(r(451))}}function tc(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);tn(e)}var Ga=new Map,rv=new Set;function Ou(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var gl=K.d;K.d={f:yb,r:wb,D:bb,C:Sb,L:Cb,m:jb,X:Ab,S:kb,M:Mb};function yb(){var e=gl.f(),t=Mu();return e||t}function wb(e){var t=Tn(e);t!==null&&t.tag===5&&t.type==="form"?jp(t):gl.r(e)}var Qr=typeof document>"u"?null:document;function ov(e,t,s){var o=Qr;if(o&&typeof t=="string"&&t){var u=Qn(t);u='link[rel="'+e+'"][href="'+u+'"]',typeof s=="string"&&(u+='[crossorigin="'+s+'"]'),rv.has(u)||(rv.add(u),e={rel:e,crossOrigin:s,href:t},o.querySelector(u)===null&&(t=o.createElement("link"),_n(t,"link",e),Et(t),o.head.appendChild(t)))}}function bb(e){gl.D(e),ov("dns-prefetch",e,null)}function Sb(e,t){gl.C(e,t),ov("preconnect",e,t)}function Cb(e,t,s){gl.L(e,t,s);var o=Qr;if(o&&e&&t){var u='link[rel="preload"][as="'+Qn(t)+'"]';t==="image"&&s&&s.imageSrcSet?(u+='[imagesrcset="'+Qn(s.imageSrcSet)+'"]',typeof s.imageSizes=="string"&&(u+='[imagesizes="'+Qn(s.imageSizes)+'"]')):u+='[href="'+Qn(e)+'"]';var h=u;switch(t){case"style":h=Xr(e);break;case"script":h=Zr(e)}Ga.has(h)||(e=y({rel:"preload",href:t==="image"&&s&&s.imageSrcSet?void 0:e,as:t},s),Ga.set(h,e),o.querySelector(u)!==null||t==="style"&&o.querySelector(nc(h))||t==="script"&&o.querySelector(ac(h))||(t=o.createElement("link"),_n(t,"link",e),Et(t),o.head.appendChild(t)))}}function jb(e,t){gl.m(e,t);var s=Qr;if(s&&e){var o=t&&typeof t.as=="string"?t.as:"script",u='link[rel="modulepreload"][as="'+Qn(o)+'"][href="'+Qn(e)+'"]',h=u;switch(o){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":h=Zr(e)}if(!Ga.has(h)&&(e=y({rel:"modulepreload",href:e},t),Ga.set(h,e),s.querySelector(u)===null)){switch(o){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(s.querySelector(ac(h)))return}o=s.createElement("link"),_n(o,"link",e),Et(o),s.head.appendChild(o)}}}function kb(e,t,s){gl.S(e,t,s);var o=Qr;if(o&&e){var u=Ht(o).hoistableStyles,h=Xr(e);t=t||"default";var S=u.get(h);if(!S){var M={loading:0,preload:null};if(S=o.querySelector(nc(h)))M.loading=5;else{e=y({rel:"stylesheet",href:e,"data-precedence":t},s),(s=Ga.get(h))&&um(e,s);var B=S=o.createElement("link");Et(B),_n(B,"link",e),B._p=new Promise(function(ee,he){B.onload=ee,B.onerror=he}),B.addEventListener("load",function(){M.loading|=1}),B.addEventListener("error",function(){M.loading|=2}),M.loading|=4,Iu(S,t,o)}S={type:"stylesheet",instance:S,count:1,state:M},u.set(h,S)}}}function Ab(e,t){gl.X(e,t);var s=Qr;if(s&&e){var o=Ht(s).hoistableScripts,u=Zr(e),h=o.get(u);h||(h=s.querySelector(ac(u)),h||(e=y({src:e,async:!0},t),(t=Ga.get(u))&&dm(e,t),h=s.createElement("script"),Et(h),_n(h,"link",e),s.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},o.set(u,h))}}function Mb(e,t){gl.M(e,t);var s=Qr;if(s&&e){var o=Ht(s).hoistableScripts,u=Zr(e),h=o.get(u);h||(h=s.querySelector(ac(u)),h||(e=y({src:e,async:!0,type:"module"},t),(t=Ga.get(u))&&dm(e,t),h=s.createElement("script"),Et(h),_n(h,"link",e),s.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},o.set(u,h))}}function cv(e,t,s,o){var u=(u=de.current)?Ou(u):null;if(!u)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof s.precedence=="string"&&typeof s.href=="string"?(t=Xr(s.href),s=Ht(u).hoistableStyles,o=s.get(t),o||(o={type:"style",instance:null,count:0,state:null},s.set(t,o)),o):{type:"void",instance:null,count:0,state:null};case"link":if(s.rel==="stylesheet"&&typeof s.href=="string"&&typeof s.precedence=="string"){e=Xr(s.href);var h=Ht(u).hoistableStyles,S=h.get(e);if(S||(u=u.ownerDocument||u,S={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},h.set(e,S),(h=u.querySelector(nc(e)))&&!h._p&&(S.instance=h,S.state.loading=5),Ga.has(e)||(s={rel:"preload",as:"style",href:s.href,crossOrigin:s.crossOrigin,integrity:s.integrity,media:s.media,hrefLang:s.hrefLang,referrerPolicy:s.referrerPolicy},Ga.set(e,s),h||Nb(u,e,s,S.state))),t&&o===null)throw Error(r(528,""));return S}if(t&&o!==null)throw Error(r(529,""));return null;case"script":return t=s.async,s=s.src,typeof s=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Zr(s),s=Ht(u).hoistableScripts,o=s.get(t),o||(o={type:"script",instance:null,count:0,state:null},s.set(t,o)),o):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function Xr(e){return'href="'+Qn(e)+'"'}function nc(e){return'link[rel="stylesheet"]['+e+"]"}function uv(e){return y({},e,{"data-precedence":e.precedence,precedence:null})}function Nb(e,t,s,o){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?o.loading=1:(t=e.createElement("link"),o.preload=t,t.addEventListener("load",function(){return o.loading|=1}),t.addEventListener("error",function(){return o.loading|=2}),_n(t,"link",s),Et(t),e.head.appendChild(t))}function Zr(e){return'[src="'+Qn(e)+'"]'}function ac(e){return"script[async]"+e}function dv(e,t,s){if(t.count++,t.instance===null)switch(t.type){case"style":var o=e.querySelector('style[data-href~="'+Qn(s.href)+'"]');if(o)return t.instance=o,Et(o),o;var u=y({},s,{"data-href":s.href,"data-precedence":s.precedence,href:null,precedence:null});return o=(e.ownerDocument||e).createElement("style"),Et(o),_n(o,"style",u),Iu(o,s.precedence,e),t.instance=o;case"stylesheet":u=Xr(s.href);var h=e.querySelector(nc(u));if(h)return t.state.loading|=4,t.instance=h,Et(h),h;o=uv(s),(u=Ga.get(u))&&um(o,u),h=(e.ownerDocument||e).createElement("link"),Et(h);var S=h;return S._p=new Promise(function(M,B){S.onload=M,S.onerror=B}),_n(h,"link",o),t.state.loading|=4,Iu(h,s.precedence,e),t.instance=h;case"script":return h=Zr(s.src),(u=e.querySelector(ac(h)))?(t.instance=u,Et(u),u):(o=s,(u=Ga.get(h))&&(o=y({},s),dm(o,u)),e=e.ownerDocument||e,u=e.createElement("script"),Et(u),_n(u,"link",o),e.head.appendChild(u),t.instance=u);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(o=t.instance,t.state.loading|=4,Iu(o,s.precedence,e));return t.instance}function Iu(e,t,s){for(var o=s.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=o.length?o[o.length-1]:null,h=u,S=0;S<o.length;S++){var M=o[S];if(M.dataset.precedence===t)h=M;else if(h!==u)break}h?h.parentNode.insertBefore(e,h.nextSibling):(t=s.nodeType===9?s.head:s,t.insertBefore(e,t.firstChild))}function um(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function dm(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}var Bu=null;function fv(e,t,s){if(Bu===null){var o=new Map,u=Bu=new Map;u.set(s,o)}else u=Bu,o=u.get(s),o||(o=new Map,u.set(s,o));if(o.has(e))return o;for(o.set(e,null),s=s.getElementsByTagName(e),u=0;u<s.length;u++){var h=s[u];if(!(h[dt]||h[X]||e==="link"&&h.getAttribute("rel")==="stylesheet")&&h.namespaceURI!=="http://www.w3.org/2000/svg"){var S=h.getAttribute(t)||"";S=e+S;var M=o.get(S);M?M.push(h):o.set(S,[h])}}return o}function mv(e,t,s){e=e.ownerDocument||e,e.head.insertBefore(s,t==="title"?e.querySelector("head > title"):null)}function Tb(e,t,s){if(s===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;return t.rel==="stylesheet"?(e=t.disabled,typeof t.precedence=="string"&&e==null):!0;case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function hv(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Rb(e,t,s,o){if(s.type==="stylesheet"&&(typeof o.media!="string"||matchMedia(o.media).matches!==!1)&&(s.state.loading&4)===0){if(s.instance===null){var u=Xr(o.href),h=t.querySelector(nc(u));if(h){t=h._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Fu.bind(e),t.then(e,e)),s.state.loading|=4,s.instance=h,Et(h);return}h=t.ownerDocument||t,o=uv(o),(u=Ga.get(u))&&um(o,u),h=h.createElement("link"),Et(h);var S=h;S._p=new Promise(function(M,B){S.onload=M,S.onerror=B}),_n(h,"link",o),s.instance=h}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(s,t),(t=s.state.preload)&&(s.state.loading&3)===0&&(e.count++,s=Fu.bind(e),t.addEventListener("load",s),t.addEventListener("error",s))}}var fm=0;function Eb(e,t){return e.stylesheets&&e.count===0&&$u(e,e.stylesheets),0<e.count||0<e.imgCount?function(s){var o=setTimeout(function(){if(e.stylesheets&&$u(e,e.stylesheets),e.unsuspend){var h=e.unsuspend;e.unsuspend=null,h()}},6e4+t);0<e.imgBytes&&fm===0&&(fm=62500*db());var u=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&$u(e,e.stylesheets),e.unsuspend)){var h=e.unsuspend;e.unsuspend=null,h()}},(e.imgBytes>fm?50:800)+t);return e.unsuspend=s,function(){e.unsuspend=null,clearTimeout(o),clearTimeout(u)}}:null}function Fu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)$u(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Hu=null;function $u(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Hu=new Map,t.forEach(Db,e),Hu=null,Fu.call(e))}function Db(e,t){if(!(t.state.loading&4)){var s=Hu.get(e);if(s)var o=s.get(null);else{s=new Map,Hu.set(e,s);for(var u=e.querySelectorAll("link[data-precedence],style[data-precedence]"),h=0;h<u.length;h++){var S=u[h];(S.nodeName==="LINK"||S.getAttribute("media")!=="not all")&&(s.set(S.dataset.precedence,S),o=S)}o&&s.set(null,o)}u=t.instance,S=u.getAttribute("data-precedence"),h=s.get(S)||o,h===o&&s.set(null,u),s.set(S,u),this.count++,o=Fu.bind(this),u.addEventListener("load",o),u.addEventListener("error",o),h?h.parentNode.insertBefore(u,h.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(u,e.firstChild)),t.state.loading|=4}}var sc={$$typeof:E,Provider:null,Consumer:null,_currentValue:Q,_currentValue2:Q,_threadCount:0};function Lb(e,t,s,o,u,h,S,M,B){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=gs(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gs(0),this.hiddenUpdates=gs(null),this.identifierPrefix=o,this.onUncaughtError=u,this.onCaughtError=h,this.onRecoverableError=S,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=B,this.incompleteTransitions=new Map}function pv(e,t,s,o,u,h,S,M,B,ee,he,we){return e=new Lb(e,t,s,S,B,ee,he,we,M),t=1,h===!0&&(t|=24),h=Zn(3,null,null,t),e.current=h,h.stateNode=e,t=Yl(),t.refCount++,e.pooledCache=t,t.refCount++,h.memoizedState={element:o,isDehydrated:s,cache:t},pe(h),e}function gv(e){return e?(e=ql,e):ql}function vv(e,t,s,o,u,h){u=gv(u),o.context===null?o.context=u:o.pendingContext=u,o=Ee(t),o.payload={element:s},h=h===void 0?null:h,h!==null&&(o.callback=h),s=$e(e,o,t),s!==null&&(fa(s,e,t),Ye(s,e,t))}function xv(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var s=e.retryLane;e.retryLane=s!==0&&s<t?s:t}}function mm(e,t){xv(e,t),(e=e.alternate)&&xv(e,t)}function yv(e){if(e.tag===13||e.tag===31){var t=As(e,67108864);t!==null&&fa(t,e,67108864),mm(e,67108864)}}function wv(e){if(e.tag===13||e.tag===31){var t=ka();t=Mn(t);var s=As(e,t);s!==null&&fa(s,e,t),mm(e,t)}}var Uu=!0;function _b(e,t,s,o){var u=z.T;z.T=null;var h=K.p;try{K.p=2,hm(e,t,s,o)}finally{K.p=h,z.T=u}}function zb(e,t,s,o){var u=z.T;z.T=null;var h=K.p;try{K.p=8,hm(e,t,s,o)}finally{K.p=h,z.T=u}}function hm(e,t,s,o){if(Uu){var u=pm(o);if(u===null)em(e,t,o,Pu,s),Sv(e,o);else if(Ib(u,e,t,s,o))o.stopPropagation();else if(Sv(e,o),t&4&&-1<Ob.indexOf(e)){for(;u!==null;){var h=Tn(u);if(h!==null)switch(h.tag){case 3:if(h=h.stateNode,h.current.memoizedState.isDehydrated){var S=Kn(h.pendingLanes);if(S!==0){var M=h;for(M.pendingLanes|=2,M.entangledLanes|=2;S;){var B=1<<31-Me(S);M.entanglements[1]|=B,S&=~B}Ls(h),(vt&6)===0&&(ku=Ge()+500,Zo(0))}}break;case 31:case 13:M=As(h,2),M!==null&&fa(M,h,2),Mu(),mm(h,2)}if(h=pm(o),h===null&&em(e,t,o,Pu,s),h===u)break;u=h}u!==null&&o.stopPropagation()}else em(e,t,o,null,s)}}function pm(e){return e=xr(e),gm(e)}var Pu=null;function gm(e){if(Pu=null,e=Ft(e),e!==null){var t=d(e);if(t===null)e=null;else{var s=t.tag;if(s===13){if(e=m(t),e!==null)return e;e=null}else if(s===31){if(e=p(t),e!==null)return e;e=null}else if(s===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return Pu=e,null}function bv(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(na()){case hn:return 2;case kn:return 8;case Wn:case Ci:return 32;case Na:return 268435456;default:return 32}default:return 32}}var vm=!1,ui=null,di=null,fi=null,lc=new Map,ic=new Map,mi=[],Ob="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function Sv(e,t){switch(e){case"focusin":case"focusout":ui=null;break;case"dragenter":case"dragleave":di=null;break;case"mouseover":case"mouseout":fi=null;break;case"pointerover":case"pointerout":lc.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ic.delete(t.pointerId)}}function rc(e,t,s,o,u,h){return e===null||e.nativeEvent!==h?(e={blockedOn:t,domEventName:s,eventSystemFlags:o,nativeEvent:h,targetContainers:[u]},t!==null&&(t=Tn(t),t!==null&&yv(t)),e):(e.eventSystemFlags|=o,t=e.targetContainers,u!==null&&t.indexOf(u)===-1&&t.push(u),e)}function Ib(e,t,s,o,u){switch(t){case"focusin":return ui=rc(ui,e,t,s,o,u),!0;case"dragenter":return di=rc(di,e,t,s,o,u),!0;case"mouseover":return fi=rc(fi,e,t,s,o,u),!0;case"pointerover":var h=u.pointerId;return lc.set(h,rc(lc.get(h)||null,e,t,s,o,u)),!0;case"gotpointercapture":return h=u.pointerId,ic.set(h,rc(ic.get(h)||null,e,t,s,o,u)),!0}return!1}function Cv(e){var t=Ft(e.target);if(t!==null){var s=d(t);if(s!==null){if(t=s.tag,t===13){if(t=m(s),t!==null){e.blockedOn=t,Is(e.priority,function(){wv(s)});return}}else if(t===31){if(t=p(s),t!==null){e.blockedOn=t,Is(e.priority,function(){wv(s)});return}}else if(t===3&&s.stateNode.current.memoizedState.isDehydrated){e.blockedOn=s.tag===3?s.stateNode.containerInfo:null;return}}}e.blockedOn=null}function qu(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var s=pm(e.nativeEvent);if(s===null){s=e.nativeEvent;var o=new s.constructor(s.type,s);vr=o,s.target.dispatchEvent(o),vr=null}else return t=Tn(s),t!==null&&yv(t),e.blockedOn=s,!1;t.shift()}return!0}function jv(e,t,s){qu(e)&&s.delete(t)}function Bb(){vm=!1,ui!==null&&qu(ui)&&(ui=null),di!==null&&qu(di)&&(di=null),fi!==null&&qu(fi)&&(fi=null),lc.forEach(jv),ic.forEach(jv)}function Gu(e,t){e.blockedOn===t&&(e.blockedOn=null,vm||(vm=!0,n.unstable_scheduleCallback(n.unstable_NormalPriority,Bb)))}var Vu=null;function kv(e){Vu!==e&&(Vu=e,n.unstable_scheduleCallback(n.unstable_NormalPriority,function(){Vu===e&&(Vu=null);for(var t=0;t<e.length;t+=3){var s=e[t],o=e[t+1],u=e[t+2];if(typeof o!="function"){if(gm(o||s)===null)continue;break}var h=Tn(s);h!==null&&(e.splice(t,3),t-=3,pf(h,{pending:!0,data:u,method:s.method,action:o},o,u))}}))}function Jr(e){function t(B){return Gu(B,e)}ui!==null&&Gu(ui,e),di!==null&&Gu(di,e),fi!==null&&Gu(fi,e),lc.forEach(t),ic.forEach(t);for(var s=0;s<mi.length;s++){var o=mi[s];o.blockedOn===e&&(o.blockedOn=null)}for(;0<mi.length&&(s=mi[0],s.blockedOn===null);)Cv(s),s.blockedOn===null&&mi.shift();if(s=(e.ownerDocument||e).$$reactFormReplay,s!=null)for(o=0;o<s.length;o+=3){var u=s[o],h=s[o+1],S=u[je]||null;if(typeof h=="function")S||kv(s);else if(S){var M=null;if(h&&h.hasAttribute("formAction")){if(u=h,S=h[je]||null)M=S.formAction;else if(gm(u)!==null)continue}else M=S.action;typeof M=="function"?s[o+1]=M:(s.splice(o,3),o-=3),kv(s)}}}function Av(){function e(h){h.canIntercept&&h.info==="react-transition"&&h.intercept({handler:function(){return new Promise(function(S){return u=S})},focusReset:"manual",scroll:"manual"})}function t(){u!==null&&(u(),u=null),o||setTimeout(s,20)}function s(){if(!o&&!navigation.transition){var h=navigation.currentEntry;h&&h.url!=null&&navigation.navigate(h.url,{state:h.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var o=!1,u=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(s,100),function(){o=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),u!==null&&(u(),u=null)}}}function xm(e){this._internalRoot=e}Yu.prototype.render=xm.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(r(409));var s=t.current,o=ka();vv(s,o,e,t,null,null)},Yu.prototype.unmount=xm.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;vv(e.current,2,null,e,null,null),Mu(),t[Le]=null}};function Yu(e){this._internalRoot=e}Yu.prototype.unstable_scheduleHydration=function(e){if(e){var t=en();e={blockedOn:null,target:e,priority:t};for(var s=0;s<mi.length&&t!==0&&t<mi[s].priority;s++);mi.splice(s,0,e),s===0&&Cv(e)}};var Mv=a.version;if(Mv!=="19.2.7")throw Error(r(527,Mv,"19.2.7"));K.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error(r(188)):(e=Object.keys(e).join(","),Error(r(268,e)));return e=g(t),e=e!==null?w(e):null,e=e===null?null:e.stateNode,e};var Fb={bundleType:0,version:"19.2.7",rendererPackageName:"react-dom",currentDispatcherRef:z,reconcilerVersion:"19.2.7"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Wu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Wu.isDisabled&&Wu.supportsFiber)try{ps=Wu.inject(Fb),mt=Wu}catch{}}return cc.createRoot=function(e,t){if(!c(e))throw Error(r(299));var s=!1,o="",u=_p,h=zp,S=Op;return t!=null&&(t.unstable_strictMode===!0&&(s=!0),t.identifierPrefix!==void 0&&(o=t.identifierPrefix),t.onUncaughtError!==void 0&&(u=t.onUncaughtError),t.onCaughtError!==void 0&&(h=t.onCaughtError),t.onRecoverableError!==void 0&&(S=t.onRecoverableError)),t=pv(e,1,!1,null,null,s,o,null,u,h,S,Av),e[Le]=t.current,Jf(e),new xm(t)},cc.hydrateRoot=function(e,t,s){if(!c(e))throw Error(r(299));var o=!1,u="",h=_p,S=zp,M=Op,B=null;return s!=null&&(s.unstable_strictMode===!0&&(o=!0),s.identifierPrefix!==void 0&&(u=s.identifierPrefix),s.onUncaughtError!==void 0&&(h=s.onUncaughtError),s.onCaughtError!==void 0&&(S=s.onCaughtError),s.onRecoverableError!==void 0&&(M=s.onRecoverableError),s.formState!==void 0&&(B=s.formState)),t=pv(e,1,!0,t,s??null,o,u,B,h,S,M,Av),t.context=gv(null),s=t.current,o=ka(),o=Mn(o),u=Ee(o),u.callback=null,$e(s,u,o),s=o,t.current.lanes=s,vs(t,s),Ls(t),e[Le]=t.current,Jf(e),new Yu(t)},cc.version="19.2.7",cc}var Fv;function bS(){if(Fv)return bm.exports;Fv=1;function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(a){console.error(a)}}return n(),bm.exports=wS(),bm.exports}var SS=bS();function CS(){if(typeof window>"u")return"";const n=window.location.port;return n==="5198"||n==="5179"?window.location.origin:"http://127.0.0.1:5198"}function jS(n){if(!n)return"-";const a=Date.parse(n);return Number.isFinite(a)?new Date(a).toLocaleString():n}function kS({ok:n}){return n?l.jsx(On,{size:17,"aria-hidden":"true"}):l.jsx(yh,{size:17,"aria-hidden":"true"})}function pi({label:n,value:a,ok:i}){return l.jsxs("div",{className:"client-status-card",children:[l.jsx("span",{children:n}),l.jsx("strong",{children:i===void 0?a:l.jsxs(l.Fragment,{children:[l.jsx(kS,{ok:i})," ",a]})})]})}function AS(){const[n,a]=f.useState(null),[i,r]=f.useState(""),[c,d]=f.useState(""),[m,p]=f.useState(!1),[v,g]=f.useState(!1),w=f.useMemo(CS,[]),y=async()=>{g(!0);try{const A=await fetch(`${w}/api/client/status`,{cache:"no-store"});if(!A.ok)throw new Error(`Client runtime returned HTTP ${A.status}.`);const T=await A.json();if(String(T.role||"").toLowerCase()==="hub")throw new Error("This computer is assigned to the Hub role.");a(T),r("")}catch(A){r(A instanceof Error?A.message:String(A))}finally{g(!1)}};f.useEffect(()=>{y();const A=window.setInterval(()=>{y()},5e3);return()=>window.clearInterval(A)},[w]);const b=async()=>{if(window.confirm("Switch this computer to the Hub role? The Client runtime will stop and LiveDesk will restart as Hub.")){p(!0),d(""),r("");try{const A=await fetch(`${w}/api/client/role`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:"hub"})}),T=await A.json().catch(()=>({}));if(!A.ok||T?.ok===!1)throw new Error(T?.error||`Role change failed with HTTP ${A.status}.`);d("Hub role accepted. LiveDesk is restarting this computer with the Hub Wall.")}catch(A){r(A instanceof Error?A.message:String(A)),p(!1)}}},C=!!n?.manager,j=!!n?.runtimeStarted;return l.jsxs("main",{className:"client-app-shell",children:[l.jsxs("header",{className:"client-app-header",children:[l.jsxs("div",{children:[l.jsx("p",{className:"client-eyebrow",children:"LiveDesk Client Runtime"}),l.jsx("h1",{children:n?.deviceName||"This Computer"}),l.jsx("p",{className:"client-subtitle",children:"This computer is running as a Client. The Hub Wall and management tools are available only after this computer becomes the Hub."})]}),l.jsxs("button",{className:"client-refresh-button",type:"button",onClick:()=>{y()},disabled:v,children:[l.jsx(Oc,{size:16,className:v?"client-spin":""}),"Refresh"]})]}),l.jsx("nav",{className:"client-app-nav","aria-label":"Client navigation",children:l.jsxs("button",{className:"active",type:"button",onClick:()=>{b()},disabled:m,children:[l.jsx(yc,{size:17}),m?"Switching to Hub…":"Sync Server"]})}),i&&l.jsxs("aside",{className:"client-error",role:"alert",children:[l.jsx(yh,{size:18})," ",i]}),l.jsxs("section",{className:"client-app-content",children:[l.jsxs("div",{className:"client-page-heading",children:[l.jsxs("div",{children:[l.jsx("p",{className:"client-eyebrow",children:"Client"}),l.jsx("h2",{children:"Sync Server"})]}),l.jsxs("span",{className:`client-runtime-pill ${j?"online":"offline"}`,children:[l.jsx("span",{className:"client-runtime-dot"}),n?.statusLabel||(j?"Running":"Starting")]})]}),l.jsxs("section",{className:"client-panel client-role-panel",children:[l.jsx("h3",{children:"Make this computer the Hub"}),l.jsx("p",{className:"client-muted",children:"Sync Server stops the Client runtime, registers this computer as the Hub, and restarts LiveDesk with the Hub Wall."}),l.jsxs("div",{className:"client-card-grid",children:[l.jsx(pi,{label:"Current role",value:"Client",ok:!0}),l.jsx(pi,{label:"Assigned Hub",value:n?.manager||"Not connected",ok:C}),l.jsx(pi,{label:"Client runtime",value:j?"Running":"Starting",ok:j}),l.jsx(pi,{label:"Last connected",value:jS(n?.connectedAt)})]}),c&&l.jsx("p",{className:"client-success",children:c}),l.jsx("button",{className:"client-primary-button",type:"button",onClick:()=>{b()},disabled:m,children:m?"Switching to Hub…":"Sync Server"})]}),l.jsxs("section",{className:"client-panel client-capability-panel",children:[l.jsx("h3",{children:"Client status"}),l.jsxs("div",{className:"client-card-grid",children:[l.jsx(pi,{label:"Device ID",value:n?.deviceId||"-"}),l.jsx(pi,{label:"LiveDesk version",value:n?.appVersion||"-"}),l.jsx(pi,{label:"Screen sharing",value:j?"Ready":"Starting",ok:j}),l.jsx(pi,{label:"Remote input",value:j?"Ready":"Waiting",ok:j})]})]})]})]})}const MS="https://otbyfkjxrkngvjziawki.supabase.co",NS="sb_publishable_NpUs0RDJH2YnllsqTKO6TQ_1jTdSsNQ",fs=pS(MS,NS,{auth:{autoRefreshToken:!0,persistSession:!0,detectSessionInUrl:!0,flowType:"pkce",storageKey:"livedesk.mindexec.supabase.auth"}});function vi(n,a,i){if(i<0||a<0||a+i>n.length)throw new Error("Invalid LZO1X block: input overrun.")}function jm(n,a,i){let r=0;for(;vi(n,a.inputIndex,1),n[a.inputIndex]===0;)r+=1,a.inputIndex+=1;const c=r*255+i+n[a.inputIndex];return a.inputIndex+=1,c}function Ku(n,a,i,r){if(vi(n,a.inputIndex,r),a.outputIndex+r>i.length)throw new Error("Invalid LZO1X block: output overrun.");i.set(n.subarray(a.inputIndex,a.inputIndex+r),a.outputIndex),a.inputIndex+=r,a.outputIndex+=r}function TS(n,a,i,r){const c=a-i;if(c<=0||r<=0)throw new Error("Invalid LZO1X block: invalid match distance.");let d=Math.min(c,r);for(n.set(n.subarray(i,i+d),a);d<r;){const m=Math.min(d,r-d);n.copyWithin(a+d,a,a+m),d+=m}return a+r}function my(n,a){if(!(n instanceof Uint8Array)||n.length<3||a<0)throw new Error("Invalid LZO1X block.");const i=new Uint8Array(a),r={inputIndex:0,outputIndex:0};let c=0,d=0;if(n[r.inputIndex]>=22){const m=n[r.inputIndex]-17;r.inputIndex+=1,Ku(n,r,i,m),c=4}else n[r.inputIndex]>=18&&(c=n[r.inputIndex]-17,r.inputIndex+=1,Ku(n,r,i,c));for(;;){vi(n,r.inputIndex,1);const m=n[r.inputIndex];r.inputIndex+=1;let p,v;if((m&192)!==0)vi(n,r.inputIndex,1),v=r.outputIndex-((n[r.inputIndex]<<3)+(m>>2&7)+1),r.inputIndex+=1,d=(m>>5)+1,p=m&3;else if((m&32)!==0){d=(m&31)+2,d===2&&(d+=jm(n,r,31)),vi(n,r.inputIndex,2);const g=n[r.inputIndex]|n[r.inputIndex+1]<<8;r.inputIndex+=2,v=r.outputIndex-((g>>2)+1),p=g&3}else if((m&16)!==0){d=(m&7)+2,d===2&&(d+=jm(n,r,7)),vi(n,r.inputIndex,2);const g=n[r.inputIndex]|n[r.inputIndex+1]<<8;if(r.inputIndex+=2,v=r.outputIndex-(((m&8)<<11)+(g>>2)),p=g&3,v===r.outputIndex)break;v-=16384}else if(c===0){let g=m+3;g===3&&(g+=jm(n,r,15)),Ku(n,r,i,g),c=4;continue}else c!==4?(vi(n,r.inputIndex,1),p=m&3,v=r.outputIndex-((m>>2)+(n[r.inputIndex]<<2)+1),r.inputIndex+=1,d=2):(vi(n,r.inputIndex,1),p=m&3,v=r.outputIndex-((m>>2)+(n[r.inputIndex]<<2)+2049),r.inputIndex+=1,d=3);if(v<0||r.outputIndex+d+p>i.length)throw new Error("Invalid LZO1X block: lookbehind overrun.");r.outputIndex=TS(i,r.outputIndex,v,d),c=p,Ku(n,r,i,p)}if(d!==3||r.inputIndex!==n.length||r.outputIndex!==i.length)throw new Error("Invalid LZO1X block: incomplete output.");return i}const Hv=16,$v=8,RS=24*1024*1024,hy=new Uint8Array(new Uint32Array([16909060]).buffer)[0]===4,eh=new Uint32Array(65536);for(let n=0;n<eh.length;n+=1){const a=Math.round((n>>11&31)*255/31),i=Math.round((n>>5&63)*255/63),r=Math.round((n&31)*255/31);eh[n]=hy?(a|i<<8|r<<16|4278190080)>>>0:(a<<24|i<<16|r<<8|255)>>>0}function gi(n,a){return n[a]|n[a+1]<<8}function ES(n,a){const i=Number(a);if(!Number.isSafeInteger(i)||i<Hv||i>RS)throw new Error(`Invalid Mode 5 packet length: ${a}.`);const r=my(new Uint8Array(n),i);if(r[0]!==76||r[1]!==68||r[2]!==53||r[3]!==68)throw new Error("Invalid Mode 5 packet magic.");if(r[4]!==1)throw new Error(`Unsupported Mode 5 packet version: ${r[4]}.`);const c=(r[5]&1)!==0,d=gi(r,6),m=gi(r,8),p=gi(r,10),v=gi(r,12);if(d<=0||m<=0||d>3840||m>2160)throw new Error(`Invalid Mode 5 frame size: ${d}x${m}.`);if(p<=0||p>256||v>8192)throw new Error(`Invalid Mode 5 tile header: ${p}/${v}.`);const g=[];let w=Hv;for(let y=0;y<v;y+=1){if(w+$v>r.length)throw new Error("Mode 5 tile header is truncated.");const b=gi(r,w),C=gi(r,w+2),j=gi(r,w+4),A=gi(r,w+6);w+=$v;const T=j*A*2;if(j<=0||A<=0||j>p||A>p||b+j>d||C+A>m||w+T>r.length)throw new Error(`Invalid Mode 5 tile ${y}.`);g.push({x:b,y:C,width:j,height:A,pixels:r.subarray(w,w+T)}),w+=T}if(w!==r.length)throw new Error(`Mode 5 packet has ${r.length-w} trailing bytes.`);return{keyFrame:c,width:d,height:m,tileSize:p,tiles:g}}function DS(n,a,i,r){if(!(n instanceof Uint8ClampedArray)||n.length!==a*i*4||r.width!==a||r.height!==i)throw new Error("Mode 5 canvas state does not match the packet dimensions.");let c=a,d=i,m=0,p=0;const v=new Uint32Array(n.buffer,n.byteOffset,n.byteLength>>>2);for(const g of r.tiles){const w=hy&&(g.pixels.byteOffset&1)===0?new Uint16Array(g.pixels.buffer,g.pixels.byteOffset,g.pixels.byteLength>>>1):null;let y=0;for(let b=0;b<g.height;b+=1){let C=(g.y+b)*a+g.x;for(let j=0;j<g.width;j+=1){const A=y<<1,T=w?w[y]:g.pixels[A]|g.pixels[A+1]<<8;v[C]=eh[T],y+=1,C+=1}}c=Math.min(c,g.x),d=Math.min(d,g.y),m=Math.max(m,g.x+g.width),p=Math.max(p,g.y+g.height)}return r.tiles.length>0?{x:c,y:d,width:m-c,height:p-d}:null}const ga=new WeakMap,Dc=new WeakMap,th=new WeakMap,Lc=new Set,sr=new Set,jd=new WeakMap,nh=new WeakMap,ah=new WeakMap,kd=new WeakMap,jh=32,LS=2,_S=2,zS=2,OS=18,IS=40,BS=0,FS=750,py=80,Uv=5,HS=150,$S=24,US=180,PS=1200,qS=18,GS=.65,VS=2e3,YS=500,gy=250;let Ad=!1;function WS(){return typeof navigator>"u"?!1:/mac/i.test(`${navigator.platform||""} ${navigator.userAgent||""}`)}function KS(){const n=Math.max(1,Number(navigator.hardwareConcurrency||8));return Math.max(4,Math.min(16,Math.round(n/2)))}let or={h264DecodeAcceleration:"prefer-hardware",h264HardwareDecoderBudget:KS()};function QS(n){n.h264DecodeAcceleration&&(or={...or,h264DecodeAcceleration:n.h264DecodeAcceleration}),Number.isFinite(Number(n.h264HardwareDecoderBudget))&&(or.h264HardwareDecoderBudget=Math.max(1,Math.min(64,Math.round(Number(n.h264HardwareDecoderBudget)))))}function vy(n,a=or.h264DecodeAcceleration){const i=jd.get(n);return i?.requested===a?(i.actual!=="prefer-hardware"&&sr.delete(n),i.actual):(i&&jd.delete(n),a!=="prefer-hardware"?(sr.delete(n),a):sr.has(n)?"prefer-hardware":sr.size<or.h264HardwareDecoderBudget?(sr.add(n),"prefer-hardware"):"prefer-software")}function _d(n,a){return a!=="prefer-hardware"?!1:(jd.set(n,{requested:a,actual:"prefer-software"}),sr.delete(n),!0)}function XS(n,a,i,r=64){try{let c=nh.get(n);c||(c={canvas:document.createElement("canvas"),lastHash:"",initialized:!1},nh.set(n,c));const d=Math.max(8,Math.min(64,Math.round(r))),m=Math.max(1,Math.round(d*Math.max(1,i)/Math.max(1,a)));(c.canvas.width!==d||c.canvas.height!==m)&&(c.canvas.width=d,c.canvas.height=m);const p=c.canvas.getContext("2d",{willReadFrequently:!0});if(!p)return{visualHash:"",visualChanged:!0};p.drawImage(n,0,0,Math.max(1,a),Math.max(1,i),0,0,d,m);const v=p.getImageData(0,0,d,m).data;let g=2166136261;for(let b=0;b<v.length;b+=4)g^=v[b],g=Math.imul(g,16777619),g^=v[b+1],g=Math.imul(g,16777619),g^=v[b+2],g=Math.imul(g,16777619);const w=(g>>>0).toString(16).padStart(8,"0"),y=!c.initialized||w!==c.lastHash;return c.initialized=!0,c.lastHash=w,{visualHash:w,visualChanged:y}}catch{return{visualHash:"",visualChanged:!0}}}function sh(n,a,i,r=gy,c=64){let d=ah.get(n);d||(d={lastHash:"",initialized:!1,lastCanvasSampleAt:0},ah.set(n,d));const m=performance.now();if(d.initialized&&r>0&&m-d.lastCanvasSampleAt<r)return{visualHash:d.lastHash,visualChanged:!1};const p=XS(n,a,i,c);return d.initialized=!0,d.lastHash=p.visualHash,d.lastCanvasSampleAt=m,p}function ZS(n,a){let i=kd.get(n);i||(i={lastHash:"",initialized:!1},kd.set(n,i));const r=String(a.contentHash||""),c=!i.initialized||!r||r!==i.lastHash;return i.initialized=!0,i.lastHash=r,{visualHash:r,visualChanged:c}}function xy(n,a){const i=th.get(n);if(i)return i;const r=n.getContext("2d",{alpha:!1,desynchronized:a==="interactive"});if(r){const c=r.getContextAttributes?.(),d={context:r,presentation:c?.desynchronized?"desync":"sync"};return th.set(n,d),d}return null}function JS(n){const a=String(n.frameMode||n.mode||"").toLowerCase(),i=String(n.compression||"").toLowerCase(),r=String(n.mimeType||"").toLowerCase();return a==="mode2-lzo"||i==="lzo1x"||r==="application/vnd.livedesk.lzo-rgb565"||a==="mode2-lz4"||String(n.compression||"").toLowerCase()==="lz4"||r==="application/vnd.livedesk.lz4-raw"}function e0(n){return String(n.frameMode||n.mode||"").toLowerCase()==="mode3-h264-hw"||String(n.codec||"").toLowerCase()==="h264"||String(n.mimeType||"").toLowerCase()==="video/h264"}function t0(n){const a=String(n.frameMode||n.mode||"").toLowerCase(),i=String(n.mimeType||"").toLowerCase();return a==="mode5-lzo-delta"||i==="application/vnd.livedesk.lzo-rgb565-delta"}function Pv(n,a,i){let r=i,c=a;if(r===15){let d=255;for(;d===255;){if(c>=n.length)throw new Error("Invalid LZ4 block: length overrun.");d=n[c],c+=1,r+=d}}return{length:r,cursor:c}}function n0(n,a){const i=new Uint8Array(a);let r=0,c=0;for(;r<n.length;){const d=n[r];r+=1;const m=Pv(n,r,d>>4);r=m.cursor;const p=m.length;if(r+p>n.length||c+p>i.length)throw new Error("Invalid LZ4 block: literal overrun.");if(i.set(n.subarray(r,r+p),c),r+=p,c+=p,r>=n.length)break;if(r+2>n.length)throw new Error("Invalid LZ4 block: missing offset.");const v=n[r]|n[r+1]<<8;if(r+=2,v<=0||v>c)throw new Error("Invalid LZ4 block: bad match offset.");const g=Pv(n,r,d&15);r=g.cursor;const w=g.length+4;if(c+w>i.length)throw new Error("Invalid LZ4 block: match overrun.");let y=c-v;for(let b=0;b<w;b+=1)i[c]=i[y],c+=1,y+=1}if(c!==i.length)throw new Error("Invalid LZ4 block: incomplete output.");return i}function a0(n){const a=Math.max(1,Math.floor(n.width||0)),i=Math.max(1,Math.floor(n.height||0)),r=String(n.compression||"").toLowerCase(),c=String(n.pixelFormat||n.codec||"").toLowerCase();if(r==="lzo1x"||String(n.frameMode||n.mode||"").toLowerCase()==="mode2-lzo"||String(n.mimeType||"").toLowerCase()==="application/vnd.livedesk.lzo-rgb565"){const w=Math.max(1,Math.floor(n.bytesPerPixel||2)),y=a*i*2,b=Math.floor(n.uncompressedByteLength||y);if(w!==2||b!==y)throw new Error(`Invalid mode2 RGB565 frame size: ${b} for ${a}x${i}.`);if(c&&c!=="rgb565le"&&c!=="rgb565")throw new Error(`Unsupported mode2 pixel format: ${c}`);const C=my(new Uint8Array(n.payload),y),j=new Uint8ClampedArray(a*i*4);for(let A=0,T=0;A<C.length;A+=2,T+=4){const k=C[A]|C[A+1]<<8,R=k>>11&31,E=k>>5&63,$=k&31;j[T]=R<<3|R>>2,j[T+1]=E<<2|E>>4,j[T+2]=$<<3|$>>2,j[T+3]=255}return new ImageData(j,a,i)}const m=Math.max(1,Math.floor(n.bytesPerPixel||4)),p=Math.max(a*i*m,Math.floor(n.uncompressedByteLength||0)),v=n0(new Uint8Array(n.payload),p);if(m!==4)throw new Error(`Unsupported mode2 pixel size: ${m}`);const g=new Uint8ClampedArray(a*i*4);if(c==="rgba32"||c==="rgba")g.set(v.subarray(0,g.length));else for(let w=0,y=0;y<g.length;w+=4,y+=4)g[y]=v[w+2],g[y+1]=v[w+1],g[y+2]=v[w],g[y+3]=v[w+3];return new ImageData(g,a,i)}function qv(n,a="smooth"){const i=window.VideoDecoder;if(!i||!window.EncodedVideoChunk)throw new Error("WebCodecs H.264 decode is not supported in this browser.");const r=ga.get(n);if(r&&r.decoder.state!=="closed"&&r.latencyMode===a)return r;r&&ms(n);let c;return c={decoder:new i({output:m=>{if(ga.get(n)!==c){m.close();return}const p=Number(m.timestamp||0);c.outputSerial+=1;let v=c.pendingFrames.get(p);if(v)c.pendingFrames.delete(p);else if(c.pendingFrames.size>0){const j=c.pendingFrames.entries().next().value;j&&(c.pendingFrames.delete(j[0]),v=j[1],c.timestampFallbacks+=1)}const g=m.displayWidth||m.codedWidth||n.width||960,w=m.displayHeight||m.codedHeight||n.height||540,y=Number(v?.frame.durationUs||0),b=Number(m.duration||0),C=Math.max(16,Math.min(250,(y>0?y:b||83333)/1e3));for(c.targetPaintIntervalMs=C,c.decodedFrames.push({videoFrame:m,pending:v,decodedAt:performance.now(),width:g,height:w,durationMs:C}),c.lastOutputAt=performance.now();c.decodedFrames.length>yy(c);)Md(c,c.decodedFrames.shift());wy(c),c.renderTimer!==null&&c.renderScheduledAt>0&&performance.now()-c.renderScheduledAt>YS&&(typeof document>"u"||document.visibilityState==="visible")&&(window.cancelAnimationFrame(c.renderTimer),c.renderTimer=null,c.renderScheduledAt=0),c.renderTimer!==null&&c.decodedFrames.length>=jh&&(window.cancelAnimationFrame(c.renderTimer),c.renderTimer=null,c.renderScheduledAt=0),Nd(n,c)},error:()=>{ga.get(n)===c&&(_d(n,c.hardwareAcceleration),kh(c),Lc.delete(n),ga.delete(n))}}),configured:!1,configKey:"",codec:"",hardwareAcceleration:vy(n),latencyMode:a,keyFrameSeen:!1,droppedForLatency:0,pendingFrames:new Map,decodedFrames:[],renderTimer:null,renderScheduledAt:0,flushTimer:null,flushInFlight:!1,flushCount:0,timestampFallbacks:0,inputSerial:0,outputSerial:0,lastFlushInputSerial:0,lastOutputAt:0,lastPaintAt:0,lastInputAt:0,interactiveBufferPrimed:!1,interactiveBufferStartedAt:0,interactiveBufferWaitCount:0,interactiveBufferWaitMs:0,interactiveQueueDrainCount:0,lastInputFrameSeq:void 0,targetPaintIntervalMs:1e3/12,nextChunkTimestampUs:0,healthSampleStartedAt:performance.now(),healthInputSerial:0,healthOutputSerial:0},ga.set(n,c),Lc.add(n),c}function kh(n){n.renderTimer!==null&&(window.cancelAnimationFrame(n.renderTimer),n.renderTimer=null),n.renderScheduledAt=0,n.flushTimer!==null&&(window.clearTimeout(n.flushTimer),n.flushTimer=null),n.flushInFlight=!1;for(const a of n.decodedFrames)a.videoFrame.close();n.decodedFrames=[],n.interactiveBufferPrimed=!1,n.interactiveBufferStartedAt=0}function Md(n,a){a&&(a.videoFrame.close(),n.droppedForLatency+=1)}function yy(n){return n.latencyMode==="interactive"?_S:String(n.decodedFrames[0]?.pending?.frame.frameMode||n.decodedFrames[0]?.pending?.frame.mode||"").toLowerCase()==="mode4-h264-atlas"?LS:jh}function wy(n,a=performance.now()){const i=yy(n);for(;n.decodedFrames.length>i;)Md(n,n.decodedFrames.shift());const r=n.latencyMode==="interactive"?py:FS;let c=n.decodedFrames[0];for(;n.decodedFrames.length>1&&c?.pending&&a-c.pending.queuedAt>r;)Md(n,n.decodedFrames.shift()),c=n.decodedFrames[0]}function by(n,a){if(a.hardwareAcceleration!=="prefer-hardware"||a.flushTimer!==null||a.flushInFlight)return;const i=a.latencyMode==="interactive"?$S:HS,r=a.latencyMode==="interactive";a.flushTimer=window.setTimeout(async()=>{a.flushTimer=null;const c=performance.now();for(const[p,v]of a.pendingFrames.entries())c-v.queuedAt>VS&&a.pendingFrames.delete(p);if(ga.get(n)!==a||a.decoder.state!=="configured"||a.pendingFrames.size===0||a.inputSerial<=a.lastFlushInputSerial||!r&&a.lastOutputAt>0&&c-a.lastOutputAt<i)return;const d=a.inputSerial,m=performance.now();a.flushInFlight=!0,a.flushCount+=1;try{await a.decoder.flush(),a.lastFlushInputSerial=Math.max(a.lastFlushInputSerial,d)}catch{ga.get(n)===a&&pd(a)}finally{a.flushInFlight=!1;const p=performance.now()-m;if(r&&p>=US&&a.hardwareAcceleration==="prefer-hardware"){Ad=!0,_d(n,a.hardwareAcceleration),ms(n);return}ga.get(n)===a&&a.inputSerial>d&&a.pendingFrames.size>0&&(r||performance.now()-a.lastOutputAt>=i)&&by(n,a)}},i)}function Gv(n,a,i){const r=performance.now();try{(n.width!==i.width||n.height!==i.height)&&(n.width=i.width,n.height=i.height);const c=xy(n,a.latencyMode);if(c?.context.drawImage(i.videoFrame,0,0,i.width,i.height),i.pending){const d=performance.now(),p=a.latencyMode==="interactive"?ZS(n,i.pending.frame):sh(n,i.width,i.height,gy,64);try{a.onPaint?.(i.pending.frame,{deviceId:i.pending.frame.deviceId,frameSeq:i.pending.frame.frameSeq,mode:i.pending.frame.frameMode||i.pending.frame.mode||i.pending.frame.codec||i.pending.frame.mimeType,width:i.width,height:i.height,byteLength:i.pending.frame.byteLength,queuedForMs:Math.max(0,r-i.pending.queuedAt),decodedForMs:Math.max(0,i.decodedAt-i.pending.queuedAt),scheduledForMs:Math.max(0,r-i.decodedAt),drawMs:Math.max(0,d-r),queueSize:i.pending.queueSize,renderQueueSize:a.decodedFrames.length,droppedForLatency:a.droppedForLatency,h264DecodeAcceleration:a.hardwareAcceleration,decoderLabel:a.hardwareAcceleration,decoderFlushCount:a.flushCount,decoderTimestampFallbacks:a.timestampFallbacks,decoderInputCount:a.inputSerial,decoderOutputCount:a.outputSerial,targetPaintIntervalMs:a.targetPaintIntervalMs,canvasPresentation:c?.presentation||"sync",interactiveBufferWaitCount:a.interactiveBufferWaitCount,interactiveBufferWaitMs:a.interactiveBufferWaitMs,interactiveQueueDrainCount:a.interactiveQueueDrainCount,visualHash:p.visualHash,visualChanged:p.visualChanged,paintedAt:d})}catch{}}a.lastPaintAt=performance.now()}finally{i.videoFrame.close()}}function Nd(n,a){if(a.renderTimer!==null||a.decodedFrames.length===0)return;const i=Math.max(16,Math.min(250,a.targetPaintIntervalMs||1e3/12)),r=()=>{if(a.renderTimer=null,a.renderScheduledAt=0,a.decodedFrames.length===0)return;const c=performance.now();if(wy(a,c),a.decodedFrames.length===0)return;if(a.latencyMode==="interactive"){const v=a.targetPaintIntervalMs<=IS,g=a.targetPaintIntervalMs<=20;if(g&&!a.interactiveBufferPrimed){a.interactiveBufferStartedAt<=0&&(a.interactiveBufferStartedAt=c,a.interactiveBufferWaitCount+=1);const A=a.decodedFrames.length>=zS,T=c-a.interactiveBufferStartedAt>=OS;if(!A&&!T){a.renderScheduledAt=performance.now(),a.renderTimer=window.requestAnimationFrame(r);return}a.interactiveBufferWaitMs+=Math.max(0,c-a.interactiveBufferStartedAt),a.interactiveBufferPrimed=!0}else g||(a.interactiveBufferPrimed=!0);const w=a.decodedFrames[0],y=w?.pending?Math.max(0,c-w.pending.queuedAt):0,b=a.lastPaintAt>0?a.lastPaintAt+i:c;if(!(!v||c+Uv>=b||y>=py)){a.renderScheduledAt=performance.now(),a.renderTimer=window.requestAnimationFrame(r);return}const j=a.decodedFrames.shift();if(j)try{Gv(n,a,j)}catch{}a.decodedFrames.length===0&&(a.interactiveQueueDrainCount+=1,a.interactiveBufferPrimed=!1,a.interactiveBufferStartedAt=0),Nd(n,a);return}const d=a.lastPaintAt>0?a.lastPaintAt+i:c+BS;if(!(c+Uv>=d||a.decodedFrames.length>=jh-1)){a.renderScheduledAt=performance.now(),a.renderTimer=window.requestAnimationFrame(r);return}const p=a.decodedFrames.shift();if(p)try{Gv(n,a,p)}catch{}Nd(n,a)};a.renderScheduledAt=performance.now(),a.renderTimer=window.requestAnimationFrame(r)}function Sy(n,a){if(ga.get(n)!==a||a.decoder.state==="closed")return!1;for(a.renderTimer!==null&&(window.cancelAnimationFrame(a.renderTimer),a.renderTimer=null),a.renderScheduledAt=0;a.decodedFrames.length>1;)Md(a,a.decodedFrames.shift());return a.lastPaintAt=0,a.interactiveBufferPrimed=!1,a.interactiveBufferStartedAt=0,Nd(n,a),!0}function km(){if(!(typeof document>"u"||document.visibilityState!=="visible"))for(const n of Lc){const a=ga.get(n);if(!a||a.decoder.state==="closed"){Lc.delete(n);continue}Sy(n,a)}}typeof document<"u"&&typeof window<"u"&&(document.addEventListener("visibilitychange",km),window.addEventListener("focus",km),window.addEventListener("pageshow",km));function ms(n){sr.delete(n),Lc.delete(n),kd.delete(n);const a=ga.get(n);if(a){ga.delete(n);try{kh(a),a.decoder.state!=="closed"&&a.decoder.close()}catch{}}}function uc(n){n&&(jd.delete(n),th.delete(n),ah.delete(n),nh.delete(n),kd.delete(n),Dc.delete(n),ms(n))}function pd(n,a=1){try{n.decoder.state!=="closed"&&n.decoder.reset()}catch{}n.configured=!1,n.configKey="",n.keyFrameSeen=!1,n.pendingFrames.clear(),kh(n),n.lastPaintAt=0,n.lastOutputAt=0,n.lastInputAt=0,n.interactiveBufferPrimed=!1,n.interactiveBufferStartedAt=0,n.lastInputFrameSeq=void 0,n.nextChunkTimestampUs=0,n.healthSampleStartedAt=performance.now(),n.healthInputSerial=n.inputSerial,n.healthOutputSerial=n.outputSerial,n.droppedForLatency+=Math.max(1,Math.min(1e4,Math.floor(a)))}function Qu(n,a,i,r){n.decoder.configure(a),n.configured=!0,n.configKey=i,n.codec=a.codec,n.hardwareAcceleration=r,n.keyFrameSeen=!1,n.nextChunkTimestampUs=0,n.lastInputFrameSeq=void 0}function s0(n,a){if(a.latencyMode!=="interactive"||a.hardwareAcceleration!=="prefer-hardware")return!1;const i=performance.now();if(i-a.healthSampleStartedAt<PS)return!1;const r=a.inputSerial-a.healthInputSerial,c=a.outputSerial-a.healthOutputSerial;return a.healthSampleStartedAt=i,a.healthInputSerial=a.inputSerial,a.healthOutputSerial=a.outputSerial,r<qS||c/Math.max(1,r)>=GS?!1:(Ad=!0,_d(n,a.hardwareAcceleration),ms(n),!0)}function Am(n,a=1){if(!n)return!1;const i=ga.get(n);return i?(i.droppedForLatency+=Math.max(1,Math.min(1e4,Math.floor(a))),ms(n),!0):!1}function l0(n){if(!n)return!1;const a=ga.get(n);return a?Sy(n,a):!1}function i0(n,a,i,r="interactive"){ms(n);const c=performance.now(),d=ES(a.payload,a.uncompressedByteLength||0),m=String(a.streamId||"mode5");let p=Dc.get(n);if(!p||p.streamId!==m||p.width!==d.width||p.height!==d.height){const A=new Uint8ClampedArray(d.width*d.height*4);for(let T=3;T<A.length;T+=4)A[T]=255;p={streamId:m,width:d.width,height:d.height,rgba:A,imageData:new ImageData(A,d.width,d.height),keyFrameSeen:!1,inputSerial:0,outputSerial:0},Dc.set(n,p)}if(!p)throw new Error("Mode 5 canvas state could not be initialized.");p.inputSerial+=1;const g=Number(a.streamFrameSeq||0);if(g>0&&(p.lastStreamFrameSeq=g),!d.keyFrame&&!p.keyFrameSeen)return;d.keyFrame&&(p.keyFrameSeen=!0);const w=DS(p.rgba,p.width,p.height,d),y=performance.now();(n.width!==p.width||n.height!==p.height)&&(n.width=p.width,n.height=p.height);const b=xy(n,r),C=performance.now();w&&b?.context.putImageData(p.imageData,0,0,w.x,w.y,w.width,w.height);const j=performance.now();p.outputSerial+=1,i?.(a,{deviceId:a.deviceId,frameSeq:a.frameSeq,mode:a.frameMode||a.mode||a.mimeType,width:p.width,height:p.height,byteLength:a.byteLength,queuedForMs:Math.max(0,j-c),decodedForMs:Math.max(0,y-c),scheduledForMs:0,drawMs:Math.max(0,j-C),queueSize:0,renderQueueSize:0,droppedForLatency:0,h264DecodeAcceleration:"prefer-software",decoderLabel:"lzo-rgb565-delta",decoderFlushCount:0,decoderTimestampFallbacks:0,decoderInputCount:p.inputSerial,decoderOutputCount:p.outputSerial,targetPaintIntervalMs:Math.max(1,Number(a.durationUs||0)/1e3||1e3/30),canvasPresentation:b?.presentation||"sync",interactiveBufferWaitCount:0,interactiveBufferWaitMs:0,interactiveQueueDrainCount:0,visualHash:String(a.contentHash||""),visualChanged:Number(a.deltaVisualTileCount||0)>0,paintedAt:j})}const Mm=[{code:30,maxFrameSize:1620,maxMacroblocksPerSecond:40500},{code:31,maxFrameSize:3600,maxMacroblocksPerSecond:108e3},{code:32,maxFrameSize:5120,maxMacroblocksPerSecond:216e3},{code:40,maxFrameSize:8192,maxMacroblocksPerSecond:245760},{code:41,maxFrameSize:8192,maxMacroblocksPerSecond:245760},{code:42,maxFrameSize:8704,maxMacroblocksPerSecond:522240},{code:50,maxFrameSize:22080,maxMacroblocksPerSecond:589824},{code:51,maxFrameSize:36864,maxMacroblocksPerSecond:983040},{code:52,maxFrameSize:36864,maxMacroblocksPerSecond:2073600}];function Vv(n,a){for(let i=Math.max(0,a);i+3<n.length;i+=1)if(!(n[i]!==0||n[i+1]!==0)){if(n[i+2]===1)return{index:i,length:3};if(n[i+2]===0&&n[i+3]===1)return{index:i,length:4}}return null}function r0(n){const a=new Uint8Array(n);let i=0;for(;i<a.length;){const r=Vv(a,i);if(!r)break;const c=r.index+r.length,d=Vv(a,c),m=d?.index??a.length;if(c<m&&(a[c]&31)===7){const p=[];let v=0;for(let g=c+1;g<m;g+=1){const w=a[g];if(v>=2&&w===3){v=0;continue}p.push(w),v=w===0?v+1:0}if(p.length>=3)return`avc1.${p.slice(0,3).map(g=>g.toString(16).toUpperCase().padStart(2,"0")).join("")}`}i=d?d.index:a.length}return""}function o0(n,a,i,r,c=""){const d=Math.ceil(n/16)*Math.ceil(a/16),m=i>0?1e6/i:30,p=d*m,v=Mm.find(g=>d<=g.maxFrameSize&&p<=g.maxMacroblocksPerSecond)||Mm[Mm.length-1];return r0(r)||c||`avc1.42E0${v.code.toString(16).toUpperCase().padStart(2,"0")}`}function c0(n,a,i,r,c="smooth"){Dc.delete(n);const d=String(a.h264Format||"").toLowerCase()==="avc"?"avc":"annexb",m=Math.max(1,Math.floor(a.width||960)),p=Math.max(1,Math.floor(a.height||540)),v=Math.max(1,Math.floor(a.durationUs||1e6/12));let g=qv(n,c);const w=o0(m,p,v,a.payload,g.codec),y=String(a.frameMode||a.mode||"").toLowerCase(),b=c==="interactive"&&r==="prefer-hardware"&&WS(),j=y==="mode4-h264-atlas"?"prefer-software":vy(n,c==="interactive"&&(Ad||b)?"prefer-software":r),A=[a.streamId||"",a.commandId||"",m,p,w,d,j,c].join("|");g.onPaint=i,g.configured&&g.decoder.state!=="configured"&&(g.configured=!1,g.configKey=""),g.configured&&g.configKey!==A&&(ms(n),g=qv(n,c),g.onPaint=i);const T={codec:w,codedWidth:m,codedHeight:p,hardwareAcceleration:j,optimizeForLatency:!0,avc:{format:d}};g.configured||Qu(g,T,A,j);const k=a.isKeyFrame===!0||String(a.chunkType||"").toLowerCase()==="key";Number(a.frameSeq||0);const R=Number(a.streamFrameSeq||0);if(R>0&&g.lastInputFrameSeq!==void 0){if(R<=g.lastInputFrameSeq){if(!k||R===g.lastInputFrameSeq)return;pd(g,g.lastInputFrameSeq-R+1),Qu(g,T,A,j)}if(R>g.lastInputFrameSeq+1){if(pd(g,R-g.lastInputFrameSeq-1),!k)return;Qu(g,T,A,j)}}if(R>0&&(g.lastInputFrameSeq=R),!k&&!g.keyFrameSeen)return;k&&(g.keyFrameSeen=!0);const E=Number(g.decoder.decodeQueueSize||0);if(E>8){if(g.latencyMode==="interactive"&&g.hardwareAcceleration==="prefer-hardware"){Ad=!0,_d(n,g.hardwareAcceleration),ms(n);return}if(pd(g),!k)return;Qu(g,T,A,j),g.keyFrameSeen=!0}const $=g.nextChunkTimestampUs;g.nextChunkTimestampUs+=v,g.pendingFrames.set($,{frame:a,queuedAt:performance.now(),queueSize:E}),g.inputSerial+=1,g.lastInputAt=performance.now();const F=new EncodedVideoChunk({type:k?"key":"delta",timestamp:$,duration:v,data:a.payload});try{g.decoder.decode(F)}catch(q){throw ms(n),q}by(n,g),s0(n,g)}async function Nm(n,a,i,r,c,d="smooth"){if(t0(a)){i()||i0(n,a,r,d);return}if(e0(a)){i()||c0(n,a,r,c,d);return}if(Dc.delete(n),JS(a)){ms(n);const y=a0(a);if(i())return;(n.width!==y.width||n.height!==y.height)&&(n.width=y.width,n.height=y.height);const b=n.getContext("2d"),C=performance.now();b?.putImageData(y,0,0);const j=performance.now(),A=sh(n,y.width,y.height);r?.(a,{deviceId:a.deviceId,frameSeq:a.frameSeq,mode:a.frameMode||a.mode||a.codec||a.mimeType,width:y.width,height:y.height,byteLength:a.byteLength,queuedForMs:0,decodedForMs:0,scheduledForMs:0,drawMs:Math.max(0,j-C),queueSize:0,renderQueueSize:0,droppedForLatency:0,h264DecodeAcceleration:or.h264DecodeAcceleration,decoderLabel:"lzo-rgb565",decoderFlushCount:0,decoderTimestampFallbacks:0,decoderInputCount:0,decoderOutputCount:0,targetPaintIntervalMs:0,canvasPresentation:"sync",interactiveBufferWaitCount:0,interactiveBufferWaitMs:0,interactiveQueueDrainCount:0,visualHash:A.visualHash,visualChanged:A.visualChanged,paintedAt:j});return}ms(n);const m=new Blob([a.payload],{type:a.mimeType}),p=await createImageBitmap(m);if(i()){p.close();return}const v=a.width||p.width||960,g=a.height||p.height||540;(n.width!==v||n.height!==g)&&(n.width=v,n.height=g);const w=n.getContext("2d");if(w){const y=performance.now();w.clearRect(0,0,v,g),w.drawImage(p,0,0,v,g);const b=performance.now(),C=sh(n,v,g);r?.(a,{deviceId:a.deviceId,frameSeq:a.frameSeq,mode:a.frameMode||a.mode||a.codec||a.mimeType,width:v,height:g,byteLength:a.byteLength,queuedForMs:0,decodedForMs:0,scheduledForMs:0,drawMs:Math.max(0,b-y),queueSize:0,renderQueueSize:0,droppedForLatency:0,h264DecodeAcceleration:or.h264DecodeAcceleration,decoderLabel:"image",decoderFlushCount:0,decoderTimestampFallbacks:0,decoderInputCount:0,decoderOutputCount:0,targetPaintIntervalMs:0,canvasPresentation:"sync",interactiveBufferWaitCount:0,interactiveBufferWaitMs:0,interactiveQueueDrainCount:0,visualHash:C.visualHash,visualChanged:C.visualChanged,paintedAt:b})}p.close()}const jc=5179,bn=Si(`http://127.0.0.1:${jc}`);function u0(n){const a=n.split(".").map(i=>Number(i));return a.length===4&&a.every(i=>Number.isInteger(i)&&i>=0&&i<=255)?a:[]}function d0(n){const a=n.trim().toLowerCase();return a==="localhost"||a==="127.0.0.1"||a==="::1"||a==="[::1]"}function f0(n){const a=n.trim().toLowerCase();return!a||a==="0.0.0.0"||a==="::"||a==="[::]"}function m0(n){const a=u0(n);return a.length===0?!1:a[0]===10||a[0]===172&&a[1]>=16&&a[1]<=31||a[0]===192&&a[1]===168}function h0(n){return n.includes(":")&&!n.startsWith("[")?`[${n}]`:n}function p0(n){const a=String(n||"").trim();if(!a)return null;const i=/^[a-z][a-z\d+.-]*:\/\//i.test(a)?a:`tcp://${a}`;try{const r=new URL(i),c=r.hostname.replace(/^\[|\]$/g,""),d=Number(r.port);return!c||!Number.isInteger(d)||d<1||d>65535||f0(c)?null:{host:c,port:d}}catch{return null}}function Si(n){const a=String(n||"").trim()||`http://127.0.0.1:${jc}`,i=/^[a-z][a-z\d+.-]*:\/\//i.test(a)?a:`http://${a}`;try{const r=new URL(i);return r.port||(r.port=String(jc)),r.hash="",r.search="",r.toString().replace(/\/+$/,"")}catch{return`http://127.0.0.1:${jc}`}}function g0(n){const a=p0(n);return a?Si(`http://${h0(a.host)}:${jc}`):""}function Yv(n){const i=[n?.endpoint,...Array.isArray(n?.endpoint_candidates)?n.endpoint_candidates:[]].map(r=>g0(String(r||""))).filter(Boolean);return[...new Set(i)]}function kc(n=bn){if(!(typeof window>"u"||window.location.protocol!=="https:"))try{const a=new URL(n);if(a.protocol!=="http:")return;if(d0(a.hostname))return"loopback";if(m0(a.hostname))return"local"}catch{return}}function zd(n,a=bn){const i=new URL(n,Si(a));return i.protocol=i.protocol==="https:"?"wss:":"ws:",i.toString()}async function Be(n,a,i=bn){const r=Si(i),c={...a,headers:{"Content-Type":"application/json",...a?.headers||{}},cache:"no-store"},d=kc(r);d&&(c.targetAddressSpace=d);let m;try{m=await fetch(`${r}${n}`,c)}catch(v){throw d?new Error("LiveDesk Hub is not reachable at this local network address. If Chrome shows a local network prompt, allow it; otherwise restart the Hub so port 5179 is open on the network."):v}let p=null;try{p=await m.json()}catch{p=null}if(!m.ok){const v=p&&typeof p=="object"&&"error"in p?String(p.error||""):"";throw new Error(`${m.status} ${v||m.statusText}`)}return p}function lh(n){if(!n)return"-";const a=Date.now()-Date.parse(n);return Number.isFinite(a)?a<1e3?"now":a<6e4?`${Math.round(a/1e3)}s`:a<36e5?`${Math.round(a/6e4)}m`:`${Math.round(a/36e5)}h`:"-"}async function ar(n){await navigator.clipboard.writeText(n)}const Wv="livedesk_remote_host_targets",v0="livedesk_entitlements";function x0(n){const i=(Array.isArray(n)?n:[n||bn]).map(r=>Si(r||bn));return[...new Set(i.filter(Boolean))]}function y0(){const[n,a]=f.useState(null),[i,r]=f.useState(!0);return f.useEffect(()=>{let c=!0;fs.auth.getSession().then(({data:m})=>{c&&(a(m.session??null),r(!1))});const{data:{subscription:d}}=fs.auth.onAuthStateChange((m,p)=>{a(p),r(!1)});return()=>{c=!1,d.unsubscribe()}},[]),{session:n,loading:i}}function w0(n,a=!0){const[i,r]=f.useState(null),[c,d]=f.useState([]),[m,p]=f.useState(""),[v,g]=f.useState(""),[w,y]=f.useState(0),b=f.useRef(new Map),C=Array.isArray(n)?n.join(`
|
|
10
|
+
`):String(n||""),j=f.useMemo(()=>x0(n),[C]),A=f.useMemo(()=>j.find(R=>kc(R)==="loopback")||j[0]||bn,[j]),T=f.useCallback(async()=>{if(!a){r(null),d([]),g(""),p("");return}let R=null;const E=Date.now(),$=j.filter(F=>(b.current.get(F)||0)<=E);if($.length===0)throw new Error("No LiveDesk Hub endpoint is reachable. Retrying shortly.");for(const F of $)try{const[q,I]=await Promise.all([Be("/api/remote/status",void 0,F),Be("/api/remote/devices",void 0,F)]);if(!Array.isArray(I.devices))throw new Error("Invalid Hub devices response.");b.current.delete(F),r(q),d(I.devices),g(F),p("");return}catch(q){R=q,b.current.set(F,Date.now()+1e4)}throw g(""),R||new Error("No LiveDesk Hub endpoint is reachable.")},[a,j]),k=f.useCallback(()=>{b.current.clear(),T().catch(R=>{p(R instanceof Error?R.message:String(R))}),y(R=>R+1)},[T]);return f.useEffect(()=>{if(!a){r(null),d([]),g(""),p("");return}let R=!0;const E=async()=>{try{await T()}catch(F){R&&p(F instanceof Error?F.message:String(F))}};E();const $=window.setInterval(E,2500);return()=>{R=!1,window.clearInterval($)}},[a,T,w]),{status:i,devices:c,error:m,refresh:k,hubBaseUrl:v||A,hubCandidates:j}}function b0(n){const[a,i]=f.useState(null),[r,c]=f.useState(""),d=n?.user?.id||"",m=f.useCallback(async()=>{if(!d){i(null);return}const{data:p,error:v}=await fs.from(Wv).select("*").eq("user_id",d).maybeSingle();if(v){c(v.message);return}i(p),c("")},[d]);return f.useEffect(()=>{m()},[m]),f.useEffect(()=>{if(!d)return;const p=fs.channel(`livedesk-remote-host-targets-${d.replace(/[^a-zA-Z0-9]/g,"")}`).on("postgres_changes",{event:"*",schema:"public",table:Wv,filter:`user_id=eq.${d}`},v=>i(v.new)).subscribe();return()=>{fs.removeChannel(p)}},[d]),{target:a,error:r,refresh:m}}function S0(n){const[a,i]=f.useState(null),[r,c]=f.useState(!1),[d,m]=f.useState(""),p=n?.user?.id||"",v=f.useCallback(async()=>{if(!p){i(null),m(""),c(!1);return}c(!0);const{data:w,error:y}=await fs.from(v0).select("*").eq("user_id",p).eq("product_key","livedesk").maybeSingle();if(y){m(y.message),c(!1);return}i(w),m(""),c(!1)},[p]);f.useEffect(()=>{v()},[v]);const g=f.useMemo(()=>!a||a.status!=="active"?!1:a.expires_at?new Date(a.expires_at).getTime()>Date.now():!0,[a]);return{entitlement:a,licensed:g,loading:r,error:d,refresh:v}}const Ac={totalFrames:0,totalBytes:0,framesPerSecond:0,bytesPerSecond:0,sampleMs:0,lastUpdatedAt:0},C0=2500,j0=3e4,k0=64*1024,A0=6,M0=A0,Cy=new Map;function N0(n){return Cy.get(n)}const Kv={totalSent:0,totalDropped:0,sentPerSecond:0,droppedPerSecond:0,bufferedAmount:0,lastInputType:"",lastInputSeq:0,lastRoundTripMs:0,lastAgentApplyMs:0,lastUpdatedAt:0};function Qv(n){const a=Date.parse(String(n||""));if(!Number.isFinite(a))return 0;const i=Date.now()-a;return i>0&&i<=j0?i:0}function Xv(n,a,i=bn,r={}){const[c,d]=f.useState(new Map),[m,p]=f.useState("idle"),[v,g]=f.useState(""),[w,y]=f.useState(Ac),b=f.useRef(new Map),C=f.useRef(new Map),j=f.useRef(0),A=f.useRef(new Map),T=f.useRef({enabled:!1,token:"",reason:""}),k=f.useRef(new Set),[R,E]=f.useState(0),$=f.useRef(r.onFrame),F=f.useRef({totalFrames:0,totalBytes:0,sampleFrames:0,sampleBytes:0,sampleStartedAt:0}),q=f.useMemo(()=>[...n].sort().join(","),[n]),I=Number.isFinite(r.fps)?Number(r.fps):2,_=Number.isFinite(r.maxWidth)?Number(r.maxWidth):640,fe=Number.isFinite(r.maxHeight)?Number(r.maxHeight):360,G=Number.isFinite(r.quality)?Number(r.quality):45,ue=String(r.frameMode||r.mode||"mode3-h264-hw").trim()||"mode3-h264-hw",Y=r.streamPurpose==="control"?"control":"wall",ae=r.forceRestart===!0,le=String(r.forceRestartToken||"").trim(),V=String(r.restartReason||"").trim();T.current={enabled:ae,token:le,reason:V};const z=f.useMemo(()=>{const Z=Object.entries(r.monitorSelections||{}).filter(([ye])=>!!ye).sort(([ye],[be])=>ye.localeCompare(be));return JSON.stringify(Object.fromEntries(Z))},[r.monitorSelections]);f.useEffect(()=>{$.current=r.onFrame},[r.onFrame]);const K=f.useCallback((Z,ye="livedesk-frame-socket-release")=>{Z.disposed=!0;try{Z.socket.readyState===WebSocket.CONNECTING||Z.socket.readyState===WebSocket.OPEN?Z.socket.close(1e3,ye):Z.socket.close()}catch{}},[]),Q=f.useCallback(()=>{const Z=[...C.current.values()].map(ye=>ye.socket);if(Z.length===0){p("idle");return}if(Z.some(ye=>ye.readyState===WebSocket.OPEN)){p("open");return}if(Z.some(ye=>ye.readyState===WebSocket.CONNECTING)){p("connecting");return}p("closed")},[]),P=f.useCallback((Z,ye,be,de)=>{if(ye.disposed||ye.socket.readyState!==WebSocket.OPEN)return!1;try{return ye.socket.send(JSON.stringify({...ye.payload,type:"restart-live",deviceIds:[Z],forceRestart:!0,restartReason:be,restartToken:de})),!0}catch{return!1}},[]),ie=f.useCallback((Z,ye)=>{if(!Z||Z.byteLength<5)return;const be=Date.now(),Ne=new DataView(Z).getUint32(0,!1);if(Ne<=0||Ne+4>Z.byteLength)return;const Ie=new Uint8Array(Z.slice(4,4+Ne)),re=JSON.parse(new TextDecoder().decode(Ie));if(Math.max(Qv(re.receivedAt),Qv(re.capturedAt))>C0)return;const De=Z.slice(4+Ne),Qe={deviceId:String(re.deviceId||""),kind:re.kind==="thumbnail"?"thumbnail":"live",frameSeq:Number(re.frameSeq||0),streamFrameSeq:Number(re.streamFrameSeq||0)||void 0,streamId:String(re.streamId||""),commandId:re.commandId?String(re.commandId):void 0,width:Number(re.width||0),height:Number(re.height||0),sourceWidth:Number(re.sourceWidth||0)||void 0,sourceHeight:Number(re.sourceHeight||0)||void 0,mimeType:String(re.mimeType||"image/jpeg"),mode:re.mode?String(re.mode):void 0,frameMode:re.frameMode?String(re.frameMode):void 0,frameProfile:re.frameProfile?String(re.frameProfile):void 0,encoding:re.encoding?String(re.encoding):void 0,codec:re.codec?String(re.codec):void 0,compression:re.compression?String(re.compression):void 0,pixelFormat:re.pixelFormat?String(re.pixelFormat):void 0,bytesPerPixel:Number(re.bytesPerPixel||0)||0,uncompressedByteLength:Number(re.uncompressedByteLength||0)||0,h264Format:re.h264Format?String(re.h264Format):void 0,isKeyFrame:re.isKeyFrame===!0,chunkType:re.chunkType?String(re.chunkType):void 0,timestampUs:Number(re.timestampUs||0)||0,durationUs:Number(re.durationUs||0)||0,sourceGapMs:Number(re.sourceGapMs||0)||0,agentSendGapMs:Number(re.agentSendGapMs||0)||0,agentSendDurationMs:Number(re.agentSendDurationMs||0)||0,agentSendDurationFrameSeq:Number(re.agentSendDurationFrameSeq||0)||0,agentPaceMs:Number(re.agentPaceMs||0)||0,agentQueueBeforePaceMs:Number(re.agentQueueBeforePaceMs||0)||0,agentFrameAgeMs:Number(re.agentFrameAgeMs||0)||0,droppedByAgent:Number(re.droppedByAgent||0)||0,hubIngressDropped:Number(re.hubIngressDropped||0)||0,hubClientDropped:Number(re.hubClientDropped||0)||0,hardwareEncoder:re.hardwareEncoder?String(re.hardwareEncoder):void 0,platformProfile:re.platformProfile?String(re.platformProfile):void 0,monitorIndex:Number.isFinite(Number(re.monitorIndex))?Number(re.monitorIndex):void 0,monitorCount:Number.isFinite(Number(re.monitorCount))?Number(re.monitorCount):void 0,requestedFps:Number(re.requestedFps||0)||0,effectiveFps:Number(re.effectiveFps||0)||0,captureAverageMs:Number(re.captureAverageMs||0)||0,captureP95Ms:Number(re.captureP95Ms||0)||0,slowFrameCount:Number(re.slowFrameCount||0)||0,captureHelperRestarts:Number(re.captureHelperRestarts||0)||0,capturedAt:String(re.capturedAt||""),receivedAt:String(re.receivedAt||""),hubPacketAt:re.hubPacketAt?String(re.hubPacketAt):void 0,hubPacketEpochMs:Number.isFinite(Number(re.hubPacketEpochMs))?Number(re.hubPacketEpochMs):void 0,browserReceivedEpochMs:be,byteLength:Number(re.byteLength||De.byteLength),contentHash:re.contentHash?String(re.contentHash):void 0,captureMs:Number(re.captureMs||0)||0,captureStageMs:Number(re.captureStageMs||0)||0,convertMs:Number(re.convertMs||0)||0,compressMs:Number(re.compressMs||0)||0,captureSourceSerial:Number(re.captureSourceSerial||0)||0,captureSourceSkipped:Number(re.captureSourceSkipped||0)||0,deltaTileSize:Number(re.deltaTileSize||0)||0,deltaTileCount:Number(re.deltaTileCount||0)||0,deltaVisualTileCount:Number(re.deltaVisualTileCount||0)||0,deltaRefreshTileCount:Number(re.deltaRefreshTileCount||0)||0,deltaTotalTiles:Number(re.deltaTotalTiles||0)||0,payload:De};if(!Qe.deviceId)return;const ne={streamId:ye.lastFrameStreamId,commandId:ye.lastFrameCommandId,order:ye.lastFrameOrder},ge=Number(Qe.streamFrameSeq||Qe.frameSeq||0),Re=!!ne.commandId&&!!Qe.commandId,te=ne.streamId===Qe.streamId&&(!Re||ne.commandId===Qe.commandId),oe=ne.order;if(te&&oe>=ge&&(oe===ge||Re))return;ye.lastFrameStreamId=Qe.streamId,ye.lastFrameCommandId=Qe.commandId||"",ye.lastFrameOrder=ge;const Ae=F.current;Ae.totalFrames+=1,Ae.totalBytes+=De.byteLength,Ae.sampleFrames+=1,Ae.sampleBytes+=De.byteLength;const Ce=!b.current.has(Qe.deviceId);b.current.set(Qe.deviceId,Qe),Ce&&d(new Map(b.current)),$.current?.(Qe)},[]);f.useEffect(()=>{const Z=window.setInterval(()=>{const ye=performance.now(),be=F.current,de=Math.max(1,ye-be.sampleStartedAt);y({totalFrames:be.totalFrames,totalBytes:be.totalBytes,framesPerSecond:be.sampleFrames*1e3/de,bytesPerSecond:be.sampleBytes*1e3/de,sampleMs:de,lastUpdatedAt:Date.now()}),d(new Map(b.current)),be.sampleFrames=0,be.sampleBytes=0,be.sampleStartedAt=ye},2e3);return()=>{window.clearInterval(Z)}},[]),f.useEffect(()=>{const Z=q?q.split(",").filter(Boolean):[],ye=new Set(Z),be=performance.now();for(const[de,Ne]of C.current.entries())ye.has(de)||(K(Ne,"livedesk-device-unsubscribed"),C.current.delete(de),A.current.delete(de),b.current.delete(de));if(Z.length===0){for(const de of C.current.values())K(de,"livedesk-no-devices");C.current.clear(),A.current.clear(),b.current=new Map,d(new Map),g(""),F.current={totalFrames:0,totalBytes:0,sampleFrames:0,sampleBytes:0,sampleStartedAt:0},y(Ac),Q();return}F.current.sampleStartedAt<=0&&(F.current.sampleStartedAt=be,y({...Ac,lastUpdatedAt:Date.now()}));for(const de of Z){const Ne=r.monitorSelections?.[de],Ie=Number.isFinite(Number(Ne))?{[de]:Number(Ne)}:{},re={type:"subscribe",deviceIds:[de],autoStartLive:a,fps:I,maxWidth:_,maxHeight:fe,quality:G,mode:ue,frameMode:ue,streamPurpose:Y,monitorSelections:Ie},Ke=JSON.stringify(re),De=C.current.get(de);if(De){const Re=De.socket.readyState===WebSocket.CONNECTING||De.socket.readyState===WebSocket.OPEN;if(De.payloadKey===Ke&&Re&&!De.disposed)continue}const Qe=De&&(De.socket.readyState===WebSocket.CONNECTING||De.socket.readyState===WebSocket.OPEN)&&!De.disposed?De.handoffFrom&&!De.handoffCompleted?De.handoffFrom:De:void 0;De&&De!==Qe&&K(De,"livedesk-subscription-superseded");const ne=new WebSocket(zd(`/api/remote/frames/ws?devices=${encodeURIComponent(de)}`,i));ne.binaryType="arraybuffer";const ge={socket:ne,payload:re,payloadKey:Ke,generation:j.current+1,disposed:!1,handoffFrom:Qe,handoffCompleted:!1,lastFrameStreamId:"",lastFrameCommandId:"",lastFrameOrder:-1};j.current=ge.generation,C.current.set(de,ge),ne.addEventListener("open",()=>{if(ge.disposed||C.current.get(de)!==ge){K(ge,"livedesk-stale-frame-socket");return}g("");const Re=T.current,te=Re.enabled&&(!Re.token||A.current.get(de)!==Re.token);ne.send(JSON.stringify({...ge.payload,forceRestart:te,restartReason:te?Re.reason:"",restartToken:te?Re.token:""})),te&&Re.token&&A.current.set(de,Re.token);const oe=ge.handoffFrom;ge.handoffFrom=void 0,ge.handoffCompleted=!0,oe&&!oe.disposed&&K(oe,"livedesk-subscription-replaced"),Q()}),ne.addEventListener("message",Re=>{if(ge.disposed||C.current.get(de)!==ge)return;if(typeof Re.data=="string"){try{const oe=JSON.parse(Re.data);if(oe?.type==="RemoteFrameSubscriptionError")g(String(oe.error||"control-stream-start-failed"));else if(oe?.type==="RemoteFrameLiveAutoStart"){const Ce=(Array.isArray(oe.skipped)?oe.skipped:[]).find(st=>st?.deviceId===de);Ce?g(String(Ce.reason||"control-stream-start-failed")):Array.isArray(oe.started)&&oe.started.some(st=>st?.deviceId===de)&&g("")}}catch{}return}const te=Re.data instanceof ArrayBuffer?Re.data:null;te&&(g(""),ie(te,ge))}),ne.addEventListener("error",()=>{ge.disposed||C.current.get(de)!==ge||(g("frame-socket-error"),p("error"))}),ne.addEventListener("close",()=>{const Re=!ge.disposed;ge.disposed=!0;const te=C.current.get(de);let oe=!1;if(te===ge){const Ae=ge.handoffFrom;ge.handoffFrom=void 0,Ae&&!Ae.disposed&&(Ae.socket.readyState===WebSocket.CONNECTING||Ae.socket.readyState===WebSocket.OPEN)?(C.current.set(de,Ae),oe=!0):C.current.delete(de)}if(Q(),Re&&te===ge&&!oe){const Ae=window.setTimeout(()=>{k.current.delete(Ae),E(Ce=>Ce+1)},750);k.current.add(Ae)}})}Q()},[a,K,q,I,ue,ie,i,fe,_,z,r.monitorSelections,G,R,Y,Q]),f.useEffect(()=>{if(!ae||!le)return;const Z=q?q.split(",").filter(Boolean):[];for(const ye of Z){if(A.current.get(ye)===le)continue;const be=C.current.get(ye);!be||!P(ye,be,V,le)||A.current.set(ye,le)}},[q,ae,le,V,P]),f.useEffect(()=>()=>{for(const Z of C.current.values())K(Z,"livedesk-hook-unmount");C.current.clear();for(const Z of k.current)window.clearTimeout(Z);k.current.clear()},[K]);const Se=f.useCallback((Z,ye="browser-stale")=>{const be=Array.isArray(Z)&&Z.length>0?Z:q.split(",").filter(Boolean);if(be.length===0)return!1;let de=!1;for(const Ne of be){const Ie=C.current.get(Ne);!Ie||Ie.socket.readyState!==WebSocket.OPEN||(de=P(Ne,Ie,ye,`${Date.now()}-${Math.random().toString(36).slice(2)}`)||de)}return de},[q,P]),D=f.useCallback((Z,ye="browser-reconnect")=>{const be=Array.isArray(Z)&&Z.length>0?Z:q.split(",").filter(Boolean);if(be.length===0)return!1;let de=!1;for(const Ne of be){const Ie=C.current.get(Ne);Ie&&(K(Ie,`livedesk-${ye}`),C.current.delete(Ne),A.current.delete(Ne),b.current.delete(Ne),de=!0)}return de&&d(new Map(b.current)),E(Ne=>Ne+1),Q(),!0},[K,q,Q]);return{frames:c,state:m,error:v,stats:w,restartLive:Se,reconnectLive:D}}function T0(n,a,i=bn,r={}){const[c,d]=f.useState(null),[m,p]=f.useState(null),[v,g]=f.useState("idle"),[w,y]=f.useState(Ac),b=f.useRef(null),C=f.useRef(r.onFrame),j=f.useRef(null),A=f.useRef(0),T=f.useRef({totalFrames:0,totalBytes:0,sampleFrames:0,sampleBytes:0,sampleStartedAt:0}),k=f.useMemo(()=>[...new Set(n.filter(Boolean))].join(","),[n]),R=f.useMemo(()=>[...new Set((r.captureDeviceIds||n).filter(Boolean))].join(","),[n,r.captureDeviceIds]),E=f.useMemo(()=>JSON.stringify(r.monitorSelections||{}),[r.monitorSelections]),$=f.useMemo(()=>({deviceIds:k.split(",").filter(Boolean),captureDeviceIds:R.split(",").filter(Boolean),fps:Number(r.fps||20),width:Number(r.width||1920),height:Number(r.height||1080),tileWidth:Number(r.tileWidth||320),tileHeight:Number(r.tileHeight||180),monitorSelections:r.monitorSelections||{}}),[R,k,E,r.fps,r.height,r.monitorSelections,r.tileHeight,r.tileWidth,r.width]),F=f.useMemo(()=>JSON.stringify($),[$]),q=f.useRef($);q.current=$;const I=a&&$.deviceIds.length>0,_=f.useCallback(G=>G.readyState!==WebSocket.OPEN?!1:(G.send(JSON.stringify({type:"configure",...q.current})),!0),[]);f.useEffect(()=>{C.current=r.onFrame},[r.onFrame]),f.useEffect(()=>{const G=window.setInterval(()=>{const ue=T.current,Y=performance.now(),ae=Math.max(1,Y-ue.sampleStartedAt);y({totalFrames:ue.totalFrames,totalBytes:ue.totalBytes,framesPerSecond:ue.sampleFrames*1e3/ae,bytesPerSecond:ue.sampleBytes*1e3/ae,sampleMs:ae,lastUpdatedAt:Date.now()});const le=j.current;le&&le.frameSeq!==A.current&&(A.current=le.frameSeq,d(le)),ue.sampleFrames=0,ue.sampleBytes=0,ue.sampleStartedAt=Y},1e3);return()=>window.clearInterval(G)},[]),f.useEffect(()=>{if(!I){b.current?.close(),b.current=null,d(null),j.current=null,A.current=0,p(null),g("idle"),y(Ac);return}let G=!1,ue=0;const Y=()=>{if(G)return;const ae=new WebSocket(zd("/api/remote/atlas/ws",i));ae.binaryType="arraybuffer",b.current=ae,g("connecting"),ae.addEventListener("open",()=>{T.current.sampleStartedAt=performance.now(),g("open"),_(ae)}),ae.addEventListener("message",le=>{if(typeof le.data=="string"){try{const z=JSON.parse(le.data);z?.type==="Mode4AtlasLayout"&&p({layoutVersion:Number(z.layoutVersion||0),width:Number(z.width||1920),height:Number(z.height||1080),columns:Number(z.columns||1),rows:Number(z.rows||1),tiles:Array.isArray(z.tiles)?z.tiles:[]})}catch{}return}const V=le.data instanceof ArrayBuffer?le.data:null;if(!(!V||V.byteLength<5))try{const z=Date.now(),Q=new DataView(V).getUint32(0,!1);if(Q<=0||Q+4>V.byteLength)return;const P=JSON.parse(new TextDecoder().decode(new Uint8Array(V,4,Q))),ie=V.slice(4+Q),Se={deviceId:String(P.deviceId||"__livedesk_mode4_atlas__"),kind:"live",frameSeq:Number(P.frameSeq||0),streamFrameSeq:Number(P.streamFrameSeq||0)||void 0,streamId:String(P.streamId||"mode4-atlas"),commandId:P.commandId?String(P.commandId):void 0,width:Number(P.width||1920),height:Number(P.height||1080),sourceWidth:Number(P.sourceWidth||P.width||1920),sourceHeight:Number(P.sourceHeight||P.height||1080),mimeType:String(P.mimeType||"video/h264"),mode:String(P.mode||"mode4-h264-atlas"),frameMode:String(P.frameMode||"mode4-h264-atlas"),frameProfile:String(P.frameProfile||"mode4-h264-atlas-v1"),encoding:String(P.encoding||"video-atlas"),codec:String(P.codec||"h264"),compression:String(P.compression||"video/h264"),h264Format:String(P.h264Format||"annexb"),isKeyFrame:P.isKeyFrame===!0,chunkType:String(P.chunkType||""),timestampUs:Number(P.timestampUs||0),durationUs:Number(P.durationUs||0),hardwareEncoder:P.hardwareEncoder?String(P.hardwareEncoder):void 0,platformProfile:P.platformProfile?String(P.platformProfile):void 0,capturedAt:String(P.capturedAt||""),receivedAt:String(P.receivedAt||""),hubPacketAt:P.hubPacketAt?String(P.hubPacketAt):void 0,hubPacketEpochMs:Number(P.hubPacketEpochMs||0)||void 0,browserReceivedEpochMs:z,byteLength:ie.byteLength,layoutVersion:Number(P.layoutVersion||0),atlasComposeMs:Number(P.atlasComposeMs||0),atlasPoolStarved:Number(P.atlasPoolStarved||0),atlasReadyTiles:Number(P.atlasReadyTiles||0),atlasTileCount:Number(P.atlasTileCount||0),payload:ie},D=T.current;D.totalFrames+=1,D.totalBytes+=ie.byteLength,D.sampleFrames+=1,D.sampleBytes+=ie.byteLength,j.current=Se,A.current===0&&(A.current=Se.frameSeq,d(Se)),C.current?.(Se)}catch{}}),ae.addEventListener("error",()=>g("error")),ae.addEventListener("close",()=>{b.current===ae&&(b.current=null),!G&&(g("closed"),ue=window.setTimeout(Y,1200))})};return Y(),()=>{G=!0,window.clearTimeout(ue),b.current?.close(),b.current=null}},[I,i,_]),f.useEffect(()=>{if(!I)return;const G=b.current;G&&_(G)},[F,I,_]);const fe=f.useCallback(()=>{const G=b.current;return G?_(G):!1},[_]);return{frame:c,layout:m,state:v,stats:w,refreshInputs:fe}}function R0(n,a=bn){const i=f.useRef(null),r=f.useRef(0),c=f.useRef(0),d=f.useRef(new Map),[m,p]=f.useState("idle"),[v,g]=f.useState(""),[w,y]=f.useState(Kv),b=f.useRef({totalSent:0,totalDropped:0,sampleSent:0,sampleDropped:0,sampleStartedAt:0,lastInputType:"",lastInputSeq:0,lastRoundTripMs:0,lastAgentApplyMs:0});f.useEffect(()=>{if(!n){i.current?.close(),i.current=null,c.current=0,p("idle"),g(""),y(Kv);return}const j=new WebSocket(zd("/api/remote/input/ws",a));return i.current=j,b.current.sampleStartedAt=performance.now(),p("connecting"),g(""),j.addEventListener("open",()=>{g(""),p("open")}),j.addEventListener("message",A=>{if(typeof A.data=="string")try{const T=JSON.parse(A.data);if(T?.type==="RemoteInputError"){g(String(T.error||T.result?.error||"Remote input failed.")),p("error");return}if(T?.type!=="RemoteInputApplied")return;const k=Number(T.inputSeq||0),R=d.current.get(k);R!==void 0&&(b.current.lastRoundTripMs=Math.max(0,performance.now()-R),d.current.delete(k)),b.current.lastInputSeq=k,b.current.lastAgentApplyMs=Math.max(0,Number(T.agentApplyMs||0))}catch{}}),j.addEventListener("close",()=>p("closed")),j.addEventListener("error",()=>p("error")),()=>{j.close(),d.current.clear(),i.current===j&&(i.current=null)}},[n,a]),f.useEffect(()=>{if(!n)return;const j=window.setInterval(()=>{const A=performance.now(),T=b.current,k=Math.max(1,A-T.sampleStartedAt);y({totalSent:T.totalSent,totalDropped:T.totalDropped,sentPerSecond:T.sampleSent*1e3/k,droppedPerSecond:T.sampleDropped*1e3/k,bufferedAmount:i.current?.bufferedAmount||0,lastInputType:T.lastInputType,lastInputSeq:T.lastInputSeq,lastRoundTripMs:T.lastRoundTripMs,lastAgentApplyMs:T.lastAgentApplyMs,lastUpdatedAt:Date.now()}),T.sampleSent=0,T.sampleDropped=0,T.sampleStartedAt=A},1e3);return()=>window.clearInterval(j)},[n]);const C=f.useCallback((j,A)=>{const T=i.current;if(!T||T.readyState!==WebSocket.OPEN||!j)return!1;const k=String(A.type||"").toLowerCase(),R=k==="pointermove",$=R||k==="wheel",F=b.current;if(R&&T.bufferedAmount>k0)return F.totalDropped+=1,F.sampleDropped+=1,F.lastInputType="pointermove-drop",!1;const q=r.current+1;r.current=q;const I=Date.now(),_=!$||q-c.current>=M0;for(_&&(d.current.set(q,performance.now()),$&&(c.current=q)),R||Cy.set(j,{inputSeq:q,inputType:k||"input",sentAt:performance.now()});d.current.size>256;){const fe=d.current.keys().next().value;if(fe===void 0)break;d.current.delete(fe)}return T.send(JSON.stringify({type:"input",requestId:$?"":crypto.randomUUID(),fireAndForget:$,deviceId:j,input:{...A,inputSeq:q,requestAck:_,issuedAtEpochMs:I,issuedAt:new Date(I).toISOString()}})),F.totalSent+=1,F.sampleSent+=1,F.lastInputType=k||"input",!0},[]);return{state:m,sendInput:C,stats:w,error:v}}function E0(n){const a=String(n||"").toLowerCase();return a.includes("audio/pcm")||a.includes("audio/l16")||a.includes("f32le")||a.includes("s16le")}const Xu={queuedMs:0,browserAgeMs:0,captureAgeMs:0,captureStatusAgeMs:0,silentForMs:0,captureAlive:!1,helperAlive:!1,captureRestartCount:0,localProcessingAgeMs:0,lastPacketAgeMs:0,lastAcceptedAgeMs:0,framesReceived:0,drops:0,resyncs:0,pendingDecodes:0,lastFrameSeq:0,audioContextState:"closed",stalledCount:0,automaticRestarts:0,lastUpdatedAt:0},D0=.08,L0=.25,_0=.02,Zv=300,z0=4,Zu=1500,Tm=5e3,O0=2e3,I0=1e4,Ju=[0,1e3,3e3];function Jv(n){const a=Date.parse(String(n||""));return Number.isFinite(a)?Math.max(0,Date.now()-a):0}function B0(n,a,i){const r=Math.max(1,Math.min(8,Math.floor(a.channels||2))),c=Math.max(8e3,Math.min(192e3,Math.floor(a.sampleRate||48e3))),d=String(a.mimeType||"").toLowerCase(),m=d.includes("s16le")||d.includes("audio/l16"),p=m?2:4,v=Math.floor(i.byteLength/p),g=Math.floor(v/r),w=n.createBuffer(r,g,c),y=new DataView(i);for(let b=0;b<r;b+=1){const C=w.getChannelData(b);for(let j=0;j<g;j+=1){const T=(j*r+b)*p;C[j]=m?Math.max(-1,Math.min(1,y.getInt16(T,!0)/32768)):Math.max(-1,Math.min(1,y.getFloat32(T,!0)))}}return w}function F0(n,a,i=bn){const r=f.useRef(null),c=f.useRef(0),[d,m]=f.useState("idle"),[p,v]=f.useState(null),[g,w]=f.useState(Xu),[y,b]=f.useState("");return f.useEffect(()=>{if(!a||!n){m("idle"),v(null),w(Xu),b("");return}m("connecting"),v(null),w(Xu),b("");const C=window.AudioContext||window.webkitAudioContext;if(!C){m("unsupported"),w(Xu),b("Audio playback is not supported in this browser.");return}const j=new C;r.current=j,c.current=j.currentTime;const A=new WebSocket(zd("/api/remote/audio/ws?devices="+encodeURIComponent(n),i));A.binaryType="arraybuffer";const T=new Set,k={browserAgeMs:0,captureAgeMs:0,captureStatusAgeMs:0,silentForMs:0,captureAlive:!1,helperAlive:!1,captureRestartCount:0,localProcessingAgeMs:0,lastPacketAt:0,lastAcceptedAt:0,framesReceived:0,drops:0,resyncs:0,pendingDecodes:0,lastFrameSeq:0,audioContextState:String(j.state),stalledCount:0,automaticRestarts:0,activeStreamId:"",lastCaptureStatusAt:0,lastPcmAtEpochMs:0};let R=!1,E=0,$=!1,F=0,q=0;const I=(z=!0)=>{for(const K of T)try{K.stop()}catch{}T.clear(),z&&(c.current=j.currentTime+D0)},_=()=>{k.audioContextState=String(j.state),!R&&(k.audioContextState==="suspended"||k.audioContextState==="interrupted"?m("suspended"):k.audioContextState==="closed"&&(m("error"),b("The browser audio context is closed. Toggle Remote Audio off and on to recover.")))},fe=async()=>{if(R||String(j.state)==="closed")return!1;try{if(String(j.state)!=="running"&&await j.resume(),k.audioContextState=String(j.state),!R&&!$&&k.audioContextState==="running"){const z=k.lastAcceptedAt>0&&performance.now()-k.lastAcceptedAt<=Zu,K=k.lastCaptureStatusAt>0&&performance.now()-k.lastCaptureStatusAt<=Tm&&k.captureAlive&&k.helperAlive;m(z?"playing":K?"silent":"open")}return k.audioContextState==="running"}catch(z){return R||(m("suspended"),b(z instanceof Error?"Audio playback is suspended: "+z.message:"Audio playback is suspended.")),!1}},G=async()=>{if(R||$||A.readyState!==WebSocket.OPEN)return;if(F>=Ju.length){m("error"),b("Remote audio stopped sending frames. Toggle Audio off and on to retry.");return}const z=F;F+=1,$=!0,k.stalledCount+=1,k.automaticRestarts+=1,m("reconnecting");try{const K=await Be("/api/remote/devices/"+encodeURIComponent(n)+"/audio/stop",{method:"POST",body:JSON.stringify({})},i);if(K.ok===!1)throw new Error(K.error||"Remote audio stop failed.");if(R)return;const Q=await Be("/api/remote/devices/"+encodeURIComponent(n)+"/audio/start",{method:"POST",body:JSON.stringify({streamId:"audio-restart-"+Date.now(),mimeType:"audio/pcm;format=f32le",sampleRate:48e3,channels:2})},i);if(Q.ok===!1)throw new Error(Q.error||"Remote audio start failed.");const P=performance.now();E=P,k.lastPacketAt=P,k.lastAcceptedAt=0,k.lastCaptureStatusAt=0,k.lastPcmAtEpochMs=0,k.captureAlive=!1,k.helperAlive=!1,k.silentForMs=0,q=P+(Ju[z+1]??3e3),b(""),R||m("open")}catch(K){R||(q=performance.now()+(Ju[z+1]??3e3),m("error"),b(K instanceof Error?"Remote audio restart failed: "+K.message:"Remote audio restart failed."))}finally{$=!1}},ue=()=>{k.drops+=1},Y=window.setInterval(()=>{if(R)return;const z=performance.now(),K=k.lastPacketAt>0?Math.max(0,z-k.lastPacketAt):E>0?Math.max(0,z-E):0,Q=k.lastAcceptedAt>0?Math.max(0,z-k.lastAcceptedAt):0,P=k.lastCaptureStatusAt>0?Math.max(0,z-k.lastCaptureStatusAt):0,ie=A.readyState===WebSocket.OPEN,Se=k.lastCaptureStatusAt>0,D=Se&&P<=Tm,Z=Se&&(!k.captureAlive||!k.helperAlive)&&P>O0,ye=Se&&P>Tm,be=!Se&&E>0&&z-E>I0,de=E>0&&(k.lastAcceptedAt<=0?z-E>Zu:Q>Zu);ie&&E>0&&(Z||ye||be)?F>=Ju.length&&!$?(m("error"),b("Remote audio capture heartbeat stopped. Toggle Audio off and on to retry.")):!$&&z>=q?G():$||m("stalled"):ie&&de&&!$&&k.audioContextState!=="suspended"&&k.audioContextState!=="interrupted"&&m(D?"silent":"open"),w({queuedMs:Math.max(0,(c.current-j.currentTime)*1e3),browserAgeMs:k.browserAgeMs,captureAgeMs:k.captureAgeMs,captureStatusAgeMs:P,silentForMs:k.silentForMs,captureAlive:k.captureAlive,helperAlive:k.helperAlive,captureRestartCount:k.captureRestartCount,localProcessingAgeMs:k.localProcessingAgeMs,lastPacketAgeMs:K,lastAcceptedAgeMs:Q,framesReceived:k.framesReceived,drops:k.drops,resyncs:k.resyncs,pendingDecodes:k.pendingDecodes,lastFrameSeq:k.lastFrameSeq,audioContextState:k.audioContextState,stalledCount:k.stalledCount,automaticRestarts:k.automaticRestarts,lastUpdatedAt:Date.now()})},250),ae=()=>{_(),(String(j.state)==="suspended"||String(j.state)==="interrupted")&&fe()},le=()=>{document.visibilityState==="visible"&&fe()},V=()=>{fe()};return j.addEventListener("statechange",ae),document.addEventListener("visibilitychange",le),window.addEventListener("pageshow",V),window.addEventListener("pointerdown",V),window.addEventListener("keydown",V),m("connecting"),b(""),_(),A.addEventListener("open",()=>{R||(E=performance.now(),k.lastPacketAt=E,k.lastAcceptedAt=0,k.lastCaptureStatusAt=0,k.lastPcmAtEpochMs=0,k.captureAlive=!1,k.helperAlive=!1,k.silentForMs=0,m("open"),A.send(JSON.stringify({type:"subscribe",deviceIds:[n]})),fe())}),A.addEventListener("message",z=>{if(typeof z.data=="string")return;const K=z.data instanceof ArrayBuffer?z.data:null;if(!K||K.byteLength<5)return;const Q=performance.now();k.lastPacketAt=Q,(async()=>{try{const ie=new DataView(K).getUint32(0,!1);if(ie<=0||ie+4>K.byteLength){ue();return}const Se=new Uint8Array(K.slice(4,4+ie)),D=JSON.parse(new TextDecoder().decode(Se)),Z=K.slice(4+ie),ye=String(D.frameKind||D.kind||"").toLowerCase();if(D.type==="remote.audio.status"||ye==="audio-status"){if(k.lastCaptureStatusAt=Q,k.captureAlive=D.captureAlive===!0,k.helperAlive=D.helperAlive===!0,k.captureRestartCount=Math.max(0,Number(D.restartCount||0)||0),k.lastPcmAtEpochMs=Math.max(0,Number(D.lastPcmAtEpochMs||0)||0),k.silentForMs=Math.max(0,Number(D.silentForMs||0)||0),k.captureAgeMs=k.lastPcmAtEpochMs>0?Math.max(0,Date.now()-k.lastPcmAtEpochMs):k.silentForMs,k.captureAlive&&k.helperAlive){if(F=0,q=0,!$){b("");const de=String(j.state)==="running",Ne=k.lastAcceptedAt>0&&performance.now()-k.lastAcceptedAt<=Zu;m(de?Ne?"playing":"silent":"suspended")}}else $||m("stalled");return}const be={deviceId:String(D.deviceId||""),frameSeq:Number(D.frameSeq||0),streamId:String(D.streamId||""),mimeType:String(D.mimeType||"audio/webm;codecs=opus"),sampleRate:Number(D.sampleRate||48e3),channels:Number(D.channels||2),capturedAt:String(D.capturedAt||""),receivedAt:String(D.receivedAt||""),byteLength:Number(D.byteLength||Z.byteLength),payload:Z};if(!be.deviceId||R)return;if(performance.now()-Q>Zv){ue();return}if(k.pendingDecodes>=z0){ue();return}k.pendingDecodes+=1;try{const de=E0(be.mimeType)?B0(j,be,Z):await j.decodeAudioData(Z.slice(0));if(k.localProcessingAgeMs=Math.max(0,performance.now()-Q),R)return;if(k.localProcessingAgeMs>Zv){ue();return}if(be.frameSeq>0&&be.frameSeq<=k.lastFrameSeq){ue();return}if(k.activeStreamId&&be.streamId!==k.activeStreamId&&be.frameSeq<=k.lastFrameSeq){ue();return}be.streamId&&be.streamId!==k.activeStreamId&&(k.activeStreamId=be.streamId,k.lastFrameSeq=0,I());const Ne=j.currentTime;Math.max(0,c.current-Ne)>L0&&(I(),k.resyncs+=1);const re=j.createBufferSource();re.buffer=de,re.connect(j.destination),T.add(re),re.onended=()=>{T.delete(re),re.onended=null};const Ke=Math.max(j.currentTime+_0,c.current);re.start(Ke),c.current=Ke+de.duration,k.browserAgeMs=Jv(be.receivedAt),k.captureAgeMs=Jv(be.capturedAt),k.lastAcceptedAt=performance.now(),k.framesReceived+=1,k.lastFrameSeq=be.frameSeq,F=0,q=0,v(be),fe();const De=String(j.state)==="running";De&&b(""),m(De?"playing":"suspended")}finally{k.pendingDecodes=Math.max(0,k.pendingDecodes-1)}}catch(P){R||(m("error"),b(P instanceof Error?P.message:String(P)))}})()}),A.addEventListener("error",()=>{R||(m("error"),b("Remote audio WebSocket error."))}),A.addEventListener("close",()=>{R||m("closed")}),()=>{R=!0,window.clearInterval(Y),j.removeEventListener("statechange",ae),document.removeEventListener("visibilitychange",le),window.removeEventListener("pageshow",V),window.removeEventListener("pointerdown",V),window.removeEventListener("keydown",V),I(!1),A.close(),j.close().catch(()=>{}),r.current===j&&(r.current=null)}},[n,a,i]),{state:d,lastFrame:p,stats:g,error:y}}const ih={revision:0,settings:{connection:{usePinToAddDevices:!0,pinValidityMinutes:30,rotatePinAfterPairing:!0,allowNewDevices:!0,approveNewDevices:!0,startWithComputer:!0,keepRunningInTray:!0,showConnectionNotifications:!0},security:{accessMode:"trusted-only",requireEncryptedConnections:!0,allowInternetConnections:!1,allowLanConnections:!0,allowUnencryptedLanFallback:!1,requireNewDeviceApproval:!0,requireAdministratorForSecurityChanges:!0,visibleControlIndicator:!0,lockOnControlEnd:!0,disconnectIdleControlSessions:!0,idleControlMinutes:30,keepSessionHistory:!0,sessionHistoryDays:30},control:{allowKeyboardMouse:!0,allowSystemShortcuts:!0,allowClipboardText:!0,allowRemoteRestart:!1,reconnectAfterRemoteRestart:!0,allowSwitchingMonitors:!0,showConnectionToolbar:!0,showRemoteCursor:!0,openControlOnDoubleClick:!0,startRemoteAudioWithControl:!1,fitRemoteScreen:!0,rememberLastMonitor:!0,keepControlReadyBetweenPages:!0},wall:{performanceMode:"auto",autoStart:!0,connectedOnly:!1,keepEmptySlots:!0,showDeviceStatus:!0,showPerformanceDetails:!1,pauseHiddenTiles:!0,reduceWhenHidden:!0,autoAdjustTileQuality:!0,rememberDevicePositions:!0},filesAudio:{allowFileTransfer:!0,allowFolderSync:!1,askBeforeReceivingFiles:!0,openReceivedFolder:!1,notifyTransferComplete:!0,allowOverwrite:!1,defaultReceiveFolder:"Desktop/LiveDeskFiles",maxFileSizeBytes:1073741824,allowRemoteAudio:!0,startAudioMuted:!1,rememberVolume:!0,automaticallyRecoverAudio:!0,showAudioTroubleshooting:!1,rollingBufferEnabled:!1,recordingQuality:"standard",timelapseIntervalSeconds:10,includeRemoteCursor:!0,captureSaveLocation:"LiveDesk Captures",captureAutoDelete:"never"},agent:{enabled:!1,defaultPermissionMode:"safe-auto",askBeforeDestructive:!0,allowProcessManagement:!0,allowServiceManagement:!0,allowFileChanges:!0,allowCommandExecution:!1,allowSoftwareInstallation:!1,allowPowerActions:!1,keepAuditHistory:!0,timeoutMinutes:10},advanced:{wallFrameMode:"auto",wallFps:20,wallMaxWidth:960,wallMaxHeight:540,wallQuality:55,controlFrameMode:"mode3-h264-hw",controlFps:30,controlMaxWidth:1920,controlMaxHeight:1080,controlQuality:60,transport:"auto",allowPlainLanFallback:!1,verboseLogs:!1,frameStatistics:!1}}},H0=[{id:"connection",label:"Connection",icon:wc},{id:"security",label:"Security",icon:wn},{id:"control",label:"Control",icon:Jt},{id:"wall",label:"Wall",icon:Rc},{id:"files-audio",label:"Files & Audio",icon:ao},{id:"agent",label:"Agent",icon:ir},{id:"advanced",label:"Advanced",icon:bd}];function Zi(n,a){return n?.settings?.[a]||ih.settings[a]}function tt({icon:n,title:a,description:i,children:r,disabled:c=!1,recommended:d=!1}){return l.jsxs("div",{className:`product-setting-row ${c?"disabled":""}`,children:[l.jsx("div",{className:"product-setting-control",children:r}),n&&l.jsx("span",{className:"product-setting-icon",children:l.jsx(n,{size:17})}),l.jsxs("div",{className:"product-setting-copy",children:[l.jsx("strong",{children:a}),d&&l.jsx("em",{children:"Recommended"}),l.jsx("small",{children:i})]})]})}function ft({checked:n,onChange:a,disabled:i=!1,label:r}){return l.jsxs("label",{className:"product-switch",children:[l.jsx("input",{"aria-label":r,type:"checkbox",checked:n,disabled:i,onChange:c=>a(c.target.checked)}),l.jsx("span",{})]})}function vl({value:n,onChange:a,options:i,disabled:r=!1,label:c}){return l.jsx("select",{"aria-label":c,value:String(n),disabled:r,onChange:d=>a(d.target.value),children:i.map(([d,m])=>l.jsx("option",{value:d,children:m},d))})}function $0({hubUrl:n="",runtimeRole:a="hub",runtimeDeviceId:i="",sessionAccessToken:r="",initialTab:c="connection",pin:d,wall:m,control:p,agent:v,advancedExtras:g,captureGallery:w}){const[y,b]=f.useState(c),[C,j]=f.useState(null),[A,T]=f.useState("loading"),[k,R]=f.useState(""),[E,$]=f.useState("idle"),[F,q]=f.useState("");f.useEffect(()=>{let de=!0;return T("loading"),Be("/api/settings",void 0,n).then(Ne=>{de&&(j({revision:Number(Ne.revision||0),updatedAt:Ne.updatedAt,settings:Ne.settings}),T("saved"))}).catch(Ne=>{de&&(R(Ne instanceof Error?Ne.message:String(Ne)),j(ih),T("failed"))}),()=>{de=!1}},[n]);const I=async(de,Ne,Ie)=>{const re=C||ih,Ke=re,De={...re,settings:{...re.settings,[de]:{...Zi(re,de),[Ne]:Ie}}};j(De),T("saving"),R("");try{const Qe=await Be("/api/settings",{method:"PATCH",body:JSON.stringify({revision:re.revision,[de]:{[Ne]:Ie}})},n);j({revision:Qe.revision,updatedAt:Qe.updatedAt,settings:Qe.settings}),T("saved")}catch(Qe){j(Ke),T("failed"),R(Qe instanceof Error?Qe.message:String(Qe))}},_=(de,Ne)=>Ie=>{I(de,Ne,Ie)},fe=async()=>{if(a!=="hub"||!i||!r){$("failed"),q("Sign in to this Hub before changing its runtime role.");return}if(window.confirm("Switch this computer to the Client role? The Hub will stop and LiveDesk will restart as Client.")){$("changing"),q("");try{await Be("/api/runtime/role",{method:"POST",headers:{Authorization:`Bearer ${r}`},body:JSON.stringify({role:"client"})},n),$("accepted")}catch(de){$("failed"),q(de instanceof Error?de.message:String(de))}}},G=Zi(C,"security"),ue=Zi(C,"connection"),Y=Zi(C,"control"),ae=Zi(C,"wall"),le=Zi(C,"filesAudio"),V=Zi(C,"agent"),z=f.useMemo(()=>G.allowInternetConnections===!1?{label:"Local only",tone:"local",detail:"Internet connections are disabled."}:G.requireEncryptedConnections&&G.requireNewDeviceApproval&&G.accessMode==="trusted-only"?{label:"Protected",tone:"protected",detail:"Encrypted connections and trusted-device approval are active."}:{label:"Needs attention",tone:"attention",detail:"Review access and encryption settings before sharing this Hub."},[G]),K=`settings-panel-${y}`,Q=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"product-settings-hero",children:[l.jsxs("div",{children:[l.jsxs("span",{className:"settings-eyebrow",children:[l.jsx(wc,{size:14})," Connection"]}),l.jsx("h2",{children:"Connect a device"}),l.jsx("p",{children:"Use the short PIN on the computer you want to add. The PIN is temporary and can be replaced at any time."})]}),l.jsxs("div",{className:"product-save-state",role:"status",children:[l.jsx(ly,{size:14})," ",A==="saving"?"Saving":A==="failed"?"Failed":A==="loading"?"Loading":"Saved"]})]}),d,l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Connection behavior"}),l.jsx("h3",{children:"New device access"})]}),l.jsx(bc,{size:20})]}),l.jsx(tt,{icon:bc,title:"Use PIN to add new devices",description:"Allow temporary PIN pairing from the client.",recommended:!0,children:l.jsx(ft,{checked:!!ue.usePinToAddDevices,onChange:_("connection","usePinToAddDevices"),label:"Use PIN to add new devices"})}),l.jsx(tt,{icon:wn,title:"Approve new devices on this Hub",description:"Ask for approval before an unfamiliar computer becomes trusted.",children:l.jsx(ft,{checked:!!ue.approveNewDevices,onChange:_("connection","approveNewDevices"),label:"Approve new devices"})}),l.jsx(tt,{icon:Zt,title:"Show connection notifications",description:"Show a short notice when a computer connects or leaves.",children:l.jsx(ft,{checked:!!ue.showConnectionNotifications,onChange:_("connection","showConnectionNotifications"),label:"Show connection notifications"})})]}),l.jsxs("section",{className:"settings-section-card runtime-role-settings",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Runtime role"}),l.jsx("h3",{children:"Use this computer as a Client"})]}),l.jsx(bd,{size:20})]}),l.jsx("p",{className:"settings-help",children:"This stops the Hub listener, saves the Client role in Supabase, and restarts LiveDesk through the unified launcher."}),E==="accepted"?l.jsx("p",{className:"settings-help runtime-role-success",children:"Role change accepted. LiveDesk is restarting as Client."}):F?l.jsx("p",{className:"settings-help runtime-role-error",role:"alert",children:F}):null,l.jsx("button",{className:"settings-reset",onClick:()=>{fe()},disabled:E==="changing"||a!=="hub",type:"button",children:E==="changing"?"Switching role…":"Switch this computer to Client"})]})]}),P=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:`security-status-card ${z.tone}`,children:[l.jsxs("div",{children:[l.jsx("span",{children:"Security status"}),l.jsx("strong",{children:z.label}),l.jsx("small",{children:z.detail})]}),l.jsx(wn,{size:28})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Access mode"}),l.jsx("h3",{children:"Who may use this Hub?"})]}),l.jsx(Tc,{size:20})]}),l.jsx(tt,{icon:wn,title:"Access mode",description:"Choose the default boundary for remote sessions.",recommended:!0,children:l.jsx(vl,{value:String(G.accessMode),onChange:_("security","accessMode"),label:"Access mode",options:[["trusted-only","Trusted devices only"],["ask-every-time","Ask every time"],["view-only","View only"],["block-remote-access","Block remote access"]]})}),l.jsx(tt,{icon:wc,title:"Require encrypted connections",description:"External connections cannot disable this protection.",recommended:!0,children:l.jsx(ft,{checked:!!G.requireEncryptedConnections,onChange:_("security","requireEncryptedConnections"),label:"Require encrypted connections"})}),l.jsx(tt,{icon:wc,title:"Allow internet connections",description:"Keep off unless you intentionally expose this Hub beyond the LAN.",children:l.jsx(ft,{checked:!!G.allowInternetConnections,onChange:_("security","allowInternetConnections"),label:"Allow internet connections"})}),l.jsx(tt,{icon:Jt,title:"Allow LAN connections",description:"Permit connections from the local network.",children:l.jsx(ft,{checked:!!G.allowLanConnections,onChange:_("security","allowLanConnections"),label:"Allow LAN connections"})}),l.jsx(tt,{icon:wn,title:"Require approval for new devices",description:"New computers must be approved before remote access is granted.",children:l.jsx(ft,{checked:!!G.requireNewDeviceApproval,onChange:_("security","requireNewDeviceApproval"),label:"Require approval for new devices"})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Session protection"}),l.jsx("h3",{children:"End sessions safely"})]}),l.jsx(Zt,{size:20})]}),l.jsx(tt,{icon:Jt,title:"Show an indicator while Control is active",description:"Make active remote control visible on the local computer.",children:l.jsx(ft,{checked:!!G.visibleControlIndicator,onChange:_("security","visibleControlIndicator"),label:"Show Control indicator"})}),l.jsx(tt,{icon:Tc,title:"Lock the remote computer when Control ends",description:"Protect the local screen after a Control session.",children:l.jsx(ft,{checked:!!G.lockOnControlEnd,onChange:_("security","lockOnControlEnd"),label:"Lock after Control ends"})}),l.jsx(tt,{icon:Zt,title:"Disconnect idle Control sessions",description:"Automatically close inactive Control sessions.",children:l.jsx(ft,{checked:!!G.disconnectIdleControlSessions,onChange:_("security","disconnectIdleControlSessions"),label:"Disconnect idle sessions"})}),l.jsx(tt,{icon:Zt,title:"Idle timeout",description:"Time before an inactive Control session closes.",disabled:!G.disconnectIdleControlSessions,children:l.jsx(vl,{value:Number(G.idleControlMinutes),onChange:de=>_("security","idleControlMinutes")(Number(de)),disabled:!G.disconnectIdleControlSessions,label:"Idle timeout",options:[["5","5 minutes"],["15","15 minutes"],["30","30 minutes"],["60","1 hour"],["1440","Never"]]})})]})]}),ie=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Remote use"}),l.jsx("h3",{children:"What can a connected user do?"})]}),l.jsx(Jt,{size:20})]}),l.jsx(tt,{icon:Jt,title:"Keyboard and mouse control",description:"Allow the Hub to send keyboard and pointer input.",recommended:!0,children:l.jsx(ft,{checked:!!Y.allowKeyboardMouse,onChange:_("control","allowKeyboardMouse"),label:"Keyboard and mouse control"})}),l.jsx(tt,{icon:Ub,title:"System shortcuts",description:"Allow shortcut keys such as Alt-Tab and the system key.",children:l.jsx(ft,{checked:!!Y.allowSystemShortcuts,onChange:_("control","allowSystemShortcuts"),label:"System shortcuts"})}),l.jsx(tt,{icon:bc,title:"Clipboard text sharing",description:"Share plain text through the remote session.",children:l.jsx(ft,{checked:!!Y.allowClipboardText,onChange:_("control","allowClipboardText"),label:"Clipboard text sharing"})}),l.jsx(tt,{icon:Zt,title:"Remote restart",description:"Allow restart requests from Control.",disabled:!Y.allowKeyboardMouse,children:l.jsx(ft,{checked:!!Y.allowRemoteRestart,onChange:_("control","allowRemoteRestart"),disabled:!Y.allowKeyboardMouse,label:"Remote restart"})}),l.jsx(tt,{icon:Jt,title:"Switching monitors",description:"Allow the viewer to select another connected display.",children:l.jsx(ft,{checked:!!Y.allowSwitchingMonitors,onChange:_("control","allowSwitchingMonitors"),label:"Switching monitors"})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Session behavior"}),l.jsx("h3",{children:"Make Control predictable"})]}),l.jsx(On,{size:20})]}),l.jsx(tt,{icon:Jt,title:"Open Control on double-click",description:"Double-clicking a Wall tile opens its Control view.",children:l.jsx(ft,{checked:!!Y.openControlOnDoubleClick,onChange:_("control","openControlOnDoubleClick"),label:"Open Control on double-click"})}),l.jsx(tt,{icon:Zt,title:"Start audio with Control",description:"Keep audio muted by default for new sessions.",children:l.jsx(ft,{checked:!!Y.startRemoteAudioWithControl,onChange:_("control","startRemoteAudioWithControl"),label:"Start audio with Control"})}),l.jsx(tt,{icon:Jt,title:"Fit remote screen to window",description:"Scale the remote display to the available Control area.",children:l.jsx(ft,{checked:!!Y.fitRemoteScreen,onChange:_("control","fitRemoteScreen"),label:"Fit remote screen"})}),l.jsx(tt,{icon:Zt,title:"Keep Control ready between pages",description:"Faster reconnection for 1 minute.",recommended:!0,children:l.jsx(ft,{checked:!!Y.keepControlReadyBetweenPages,onChange:_("control","keepControlReadyBetweenPages"),label:"Keep Control ready between pages"})})]})]}),Se=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Performance mode"}),l.jsx("h3",{children:"Let LiveDesk choose the best path"})]}),l.jsx(Rc,{size:20})]}),l.jsx(tt,{icon:ir,title:"Performance mode",description:"Automatic mode balances responsiveness and image quality.",recommended:!0,children:l.jsx(vl,{value:String(ae.performanceMode),onChange:_("wall","performanceMode"),label:"Performance mode",options:[["auto","Auto"],["responsive","Prioritize responsiveness"],["quality","Prioritize image quality"],["custom","Custom"]]})}),l.jsx("p",{className:"settings-help",children:"Streaming details are available under Advanced for diagnostics and development."})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Wall behavior"}),l.jsx("h3",{children:"What should the Wall show?"})]}),l.jsx(Zt,{size:20})]}),[["autoStart","Start Wall automatically","Start a live view when a computer connects."],["connectedOnly","Show only connected devices","Hide disconnected slots."],["keepEmptySlots","Keep empty slots visible","Preserve the layout when a device leaves."],["showDeviceStatus","Show device status on tiles","Display compact machine status."],["showPerformanceDetails","Show performance details","Show advanced frame diagnostics on tiles."],["pauseHiddenTiles","Pause hidden tiles","Reduce capture work for tiles outside the visible area."],["reduceWhenHidden","Reduce activity when the window is hidden","Lower background work when the browser is not visible."],["autoAdjustTileQuality","Automatically adjust tile quality","Adapt tile quality to Wall size and load."]].map(([de,Ne,Ie])=>l.jsx(tt,{icon:Jt,title:Ne,description:Ie,children:l.jsx(ft,{checked:!!ae[de],onChange:_("wall",de),label:Ne})},de))]})]}),D=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"File permissions"}),l.jsx("h3",{children:"Move files deliberately"})]}),l.jsx(ao,{size:20})]}),l.jsx(tt,{icon:ao,title:"Allow file transfer",description:"Permit Hub-to-device file delivery.",recommended:!0,children:l.jsx(ft,{checked:!!le.allowFileTransfer,onChange:_("filesAudio","allowFileTransfer"),label:"Allow file transfer"})}),l.jsx(tt,{icon:Rc,title:"Allow folder sync",description:"Enable recurring folder synchronization.",disabled:!le.allowFileTransfer,children:l.jsx(ft,{checked:!!le.allowFolderSync,onChange:_("filesAudio","allowFolderSync"),disabled:!le.allowFileTransfer,label:"Allow folder sync"})}),l.jsx(tt,{icon:wn,title:"Ask before receiving files",description:"Require local confirmation before a transfer is written.",children:l.jsx(ft,{checked:!!le.askBeforeReceivingFiles,onChange:_("filesAudio","askBeforeReceivingFiles"),label:"Ask before receiving files"})}),l.jsx(tt,{icon:ao,title:"Allow overwrite",description:"Permit replacing an existing destination file.",children:l.jsx(ft,{checked:!!le.allowOverwrite,onChange:_("filesAudio","allowOverwrite"),label:"Allow overwrite"})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Audio permissions"}),l.jsx("h3",{children:"Remote sound"})]}),l.jsx(Zt,{size:20})]}),l.jsx(tt,{icon:Zt,title:"Allow remote audio",description:"Permit audio capture from connected computers.",recommended:!0,children:l.jsx(ft,{checked:!!le.allowRemoteAudio,onChange:_("filesAudio","allowRemoteAudio"),label:"Allow remote audio"})}),l.jsx(tt,{icon:Zt,title:"Start audio muted",description:"New audio sessions begin silent.",children:l.jsx(ft,{checked:!!le.startAudioMuted,onChange:_("filesAudio","startAudioMuted"),label:"Start audio muted"})}),l.jsx(tt,{icon:Zt,title:"Automatically recover audio",description:"Recover from temporary capture or transport stalls.",children:l.jsx(ft,{checked:!!le.automaticallyRecoverAudio,onChange:_("filesAudio","automaticallyRecoverAudio"),label:"Automatically recover audio"})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Capture defaults"}),l.jsx("h3",{children:"Screen recording"})]}),l.jsx(Jt,{size:20})]}),l.jsx(tt,{icon:Zt,title:"Keep a Last 30s buffer",description:"Keep recent video in memory only until you explicitly save it.",children:l.jsx(ft,{checked:!!le.rollingBufferEnabled,onChange:_("filesAudio","rollingBufferEnabled"),label:"Keep a Last 30s buffer"})}),l.jsx(tt,{icon:Zt,title:"Recording quality",description:"Choose the WebM bitrate profile.",children:l.jsx(vl,{value:String(le.recordingQuality),onChange:_("filesAudio","recordingQuality"),label:"Recording quality",options:[["standard","Standard"],["high","High"]]})}),l.jsx(tt,{icon:Zt,title:"Timelapse interval",description:"Capture one frame at the selected interval.",children:l.jsx(vl,{value:Number(le.timelapseIntervalSeconds),onChange:de=>_("filesAudio","timelapseIntervalSeconds")(Number(de)),label:"Timelapse interval",options:[["5","5 seconds"],["10","10 seconds"],["30","30 seconds"],["60","60 seconds"]]})}),l.jsx(tt,{icon:Jt,title:"Include remote cursor",description:"Include the cursor indicator when the source provides it.",children:l.jsx(ft,{checked:!!le.includeRemoteCursor,onChange:_("filesAudio","includeRemoteCursor"),label:"Include remote cursor"})}),l.jsx(tt,{icon:ao,title:"Capture save location",description:"Captures are stored inside the Hub capture library.",children:l.jsx(vl,{value:String(le.captureSaveLocation),onChange:_("filesAudio","captureSaveLocation"),label:"Capture save location",options:[[String(le.captureSaveLocation||"LiveDesk Captures"),"LiveDesk Captures"]]})}),l.jsx(tt,{icon:ao,title:"Automatic deletion",description:"Keep saved captures until you delete them.",children:l.jsx(vl,{value:String(le.captureAutoDelete),onChange:_("filesAudio","captureAutoDelete"),label:"Automatic deletion",options:[["never","Never"],["7-days","After 7 days"],["30-days","After 30 days"]]})})]}),w]}),Z=l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Agent safety"}),l.jsx("h3",{children:"AI workstation operations"})]}),l.jsx(ir,{size:20})]}),l.jsx(tt,{icon:ir,title:"Enable AI Agent on devices",description:"Allow Agent runs to reach connected workstations.",recommended:!0,children:l.jsx(ft,{checked:!!V.enabled,onChange:_("agent","enabled"),label:"Enable AI Agent"})}),l.jsx(tt,{icon:wn,title:"Default permission mode",description:"Safe Auto keeps destructive operations behind approval.",children:l.jsx(vl,{value:String(V.defaultPermissionMode),onChange:_("agent","defaultPermissionMode"),label:"Default Agent permission mode",options:[["ask","Ask"],["safe-auto","Safe Auto"],["full-access","Full Access"],["custom","Custom"]]})}),l.jsx(tt,{icon:wn,title:"Ask before destructive operations",description:"Locked on for Safe Auto and destructive actions.",disabled:!V.enabled,children:l.jsx(ft,{checked:!!V.askBeforeDestructive,onChange:_("agent","askBeforeDestructive"),disabled:!V.enabled,label:"Ask before destructive operations"})}),l.jsx(tt,{icon:Zt,title:"Keep Agent audit history",description:"Retain an inspectable record of Agent runs.",children:l.jsx(ft,{checked:!!V.keepAuditHistory,onChange:_("agent","keepAuditHistory"),label:"Keep Agent audit history"})}),l.jsx(tt,{icon:Zt,title:"Stop Agent tasks after timeout",description:"Maximum runtime for one task.",children:l.jsx(vl,{value:Number(V.timeoutMinutes),onChange:de=>_("agent","timeoutMinutes")(Number(de)),label:"Agent task timeout",options:[["1","1 minute"],["5","5 minutes"],["10","10 minutes"],["30","30 minutes"],["60","1 hour"]]})})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Detailed permissions"}),l.jsx("h3",{children:"Capabilities"})]}),l.jsx(wn,{size:20})]}),[["allowProcessManagement","Allow process management"],["allowServiceManagement","Allow service management"],["allowFileChanges","Allow file changes"],["allowCommandExecution","Allow command execution"],["allowSoftwareInstallation","Allow software installation"],["allowPowerActions","Allow power actions"]].map(([de,Ne])=>l.jsx(tt,{icon:wn,title:Ne,description:de.includes("allowCommand")||de.includes("Installation")||de.includes("Power")?"Disabled by default for safety.":"Applied by the Hub and checked again by the Client.",children:l.jsx(ft,{checked:!!V[de],onChange:_("agent",de),label:Ne})},de))]}),l.jsx("p",{className:"settings-help",children:"The existing Codex runtime and audit controls remain available below in Advanced and the Agent diagnostics panel."})]}),be=y==="connection"?Q:y==="security"?P:y==="control"?ie:y==="wall"?Se:y==="files-audio"?D:y==="agent"?l.jsxs(l.Fragment,{children:[Z,v]}):l.jsxs("div",{className:"settings-tab-content product-settings-content",children:[g,l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Developer controls"}),l.jsx("h3",{children:"Streaming and diagnostics"})]}),l.jsx(bd,{size:20})]}),l.jsx("p",{className:"settings-help",children:"Codec, frame rate, resolution, quality, Atlas layout, and decoder preferences are intentionally kept here."}),m,p]})]});return l.jsxs("section",{className:"settings-page",children:[l.jsx("div",{className:"settings-page-tabs",role:"tablist","aria-label":"LiveDesk settings",children:H0.map(({id:de,label:Ne,icon:Ie})=>l.jsxs("button",{className:y===de?"active":"",id:`settings-tab-${de}`,role:"tab","aria-selected":y===de,"aria-controls":`settings-panel-${de}`,tabIndex:y===de?0:-1,onClick:()=>b(de),type:"button",children:[l.jsx(Ie,{size:16}),Ne]},de))}),k&&l.jsx("div",{className:"agent-settings-alert error",role:"alert",children:k}),l.jsx("section",{className:"settings-page-panel",id:K,role:"tabpanel","aria-labelledby":`settings-tab-${y}`,tabIndex:0,children:be})]})}function U0({children:n}){return l.jsx("div",{className:"settings-tab-content",children:n})}function P0({children:n}){return l.jsx("div",{className:"settings-tab-content",children:n})}function q0({children:n}){return l.jsx("div",{className:"settings-tab-content",children:n})}const jy={enabled:!0,provider:"codex",codexModelId:"",codexReasoningEffort:"medium",codexTaskTimeoutMs:6e5,codexMaxToolCalls:20,codexWorkingDirectory:"",codexResumeSessions:!0,codexShowDetailedEvents:!0,deterministicParserFirst:!0,generateSummary:!0,fallbackSummary:!0,includeRawDeviceDetails:!1,baseUrl:"https://opencode.ai/zen/go/v1",defaultModelId:"deepseek-v4-flash"};function ex(n){return{...jy,...n||{}}}function G0({hubUrl:n}){const[a,i]=f.useState(jy),[r,c]=f.useState(null),[d,m]=f.useState(""),[p,v]=f.useState(""),[g,w]=f.useState(""),[y,b]=f.useState("");f.useEffect(()=>{let _=!0;return Be("/api/settings/agent",void 0,n).then(fe=>{_&&(c(fe.settings),i(ex(fe.settings)))}).catch(fe=>{_&&b(fe instanceof Error?fe.message:String(fe))}),()=>{_=!1}},[n]);const C=(_,fe)=>i(G=>({...G,[_]:fe})),j=_=>{c(_),i(ex(_))},A=async()=>{v("save"),b(""),w("");try{const _={...a};d.trim()&&(_.apiKey=d.trim());const fe=await Be("/api/settings/agent",{method:"PUT",body:JSON.stringify(_)},n);j(fe.settings),m(""),w("Agent settings saved.")}catch(_){b(_ instanceof Error?_.message:String(_))}finally{v("")}},T=async()=>{v("reset"),b("");try{const _=await Be("/api/settings/agent/reset",{method:"POST",body:JSON.stringify({})},n);j(_.settings),w("Codex defaults restored.")}catch(_){b(_ instanceof Error?_.message:String(_))}finally{v("")}},k=async()=>{v("test"),b(""),w("");try{const _=await Be("/api/settings/agent/test",{method:"POST",body:JSON.stringify({})},n),fe=await Be("/api/settings/agent",void 0,n);j(fe.settings),w(`Codex connection verified with ${_.connection?.modelName||"the configured model"}${_.connection?.latencyMs?` in ${_.connection.latencyMs} ms.`:"."}`)}catch(_){b(_ instanceof Error?_.message:String(_))}finally{v("")}},R=async()=>{v("clear-key"),b("");try{const _=await Be("/api/settings/agent/api-key",{method:"DELETE"},n);j(_.settings),m(""),w("The optional OpenCode Go key was removed.")}catch(_){b(_ instanceof Error?_.message:String(_))}finally{v("")}},E=r?.codexInstallation==="installed"&&r.codexAuth==="signed-in",$=r?.securityStatus,F=$?.state||"unavailable",q=F==="verified"?"Verified":F==="configured"?"Configured":"Unavailable",I=[["Codex home",$?.isolatedCodexHome],["Environment variables",$?.restrictedEnvironment],["LiveDesk MCP only",$?.livedeskMcpOnly],["Selected-device scope",$?.selectedDeviceScopeEnforced],["Fail-closed execution",$?.failClosed]];return l.jsxs("div",{className:"settings-tab-content agent-settings-content",children:[l.jsxs("header",{className:"agent-settings-header",children:[l.jsxs("div",{children:[l.jsxs("span",{className:"settings-eyebrow",children:[l.jsx(Nv,{size:14})," Agent AI"]}),l.jsx("h2",{children:"Codex SDK"}),l.jsx("p",{children:"Codex owns the agent reasoning loop. LiveDesk keeps the existing task manager and exposes only safe, read-only workstation tools."})]}),l.jsxs("label",{className:"settings-toggle agent-enable-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.enabled,onChange:_=>C("enabled",_.target.checked)}),l.jsx("span",{children:"Enable Agent AI"})]})]}),y&&l.jsx("div",{className:"agent-settings-alert error",role:"alert",children:y}),g&&l.jsx("div",{className:"agent-settings-alert success",role:"status",children:g}),l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Provider"}),l.jsx("h3",{children:"Codex is the default"})]}),l.jsx(bc,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Agent provider"}),l.jsxs("select",{value:a.provider,onChange:_=>C("provider",_.target.value),children:[l.jsx("option",{value:"codex",children:"Codex SDK"}),l.jsx("option",{value:"opencode-go",children:"OpenCode Go (optional legacy)"})]})]}),l.jsxs("div",{className:"agent-connection-row",children:[l.jsx("span",{className:`agent-connection-dot ${E?"connected":r?.codexAuth==="not-signed-in"?"unavailable":""}`}),l.jsx("span",{children:r?.codexInstallation==="not-installed"?"Codex SDK not installed":r?.codexAuth==="signed-in"?"Codex CLI signed in":r?.codexAuth==="not-signed-in"?"Codex CLI sign-in required":"Codex status not tested"}),l.jsxs("button",{className:"settings-reset",onClick:()=>{k()},disabled:p!==""||a.provider!=="codex",type:"button",children:[l.jsx(Pb,{size:15})," ",p==="test"?"Testing":"Test connection"]})]}),l.jsxs("p",{className:"settings-help",children:[l.jsx(qb,{size:12})," Authentication is owned by the installed Codex CLI. LiveDesk never asks for or stores a ChatGPT token."]}),r?.codexPath&&l.jsxs("p",{className:"settings-help",children:["CLI: ",r.codexPath]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Codex runtime"}),l.jsx("h3",{children:"Model and reasoning"})]}),l.jsx(Nv,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Model"}),l.jsx("input",{value:a.codexModelId,onChange:_=>C("codexModelId",_.target.value),placeholder:"Codex default",disabled:a.provider!=="codex"})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Reasoning effort"}),l.jsxs("select",{value:a.codexReasoningEffort,onChange:_=>C("codexReasoningEffort",_.target.value),disabled:a.provider!=="codex",children:[l.jsx("option",{value:"minimal",children:"Minimal"}),l.jsx("option",{value:"low",children:"Low"}),l.jsx("option",{value:"medium",children:"Medium"}),l.jsx("option",{value:"high",children:"High"}),l.jsx("option",{value:"xhigh",children:"Extra high"})]})]}),l.jsxs("div",{className:"settings-field-grid",children:[l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Task timeout (ms)"}),l.jsx("input",{type:"number",min:"30000",max:"1800000",step:"10000",value:a.codexTaskTimeoutMs,onChange:_=>C("codexTaskTimeoutMs",Number(_.target.value)),disabled:a.provider!=="codex"})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Max tool calls"}),l.jsx("input",{type:"number",min:"1",max:"100",value:a.codexMaxToolCalls,onChange:_=>C("codexMaxToolCalls",Number(_.target.value)),disabled:a.provider!=="codex"})]})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Workspace"}),l.jsx("h3",{children:"Restricted execution context"})]}),l.jsx(wn,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Working directory"}),l.jsx("input",{value:r?.agentWorkspacePath||a.codexWorkingDirectory,readOnly:!0})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.codexResumeSessions,onChange:_=>C("codexResumeSessions",_.target.checked),disabled:a.provider!=="codex"}),l.jsx("span",{children:"Allow session resume"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.codexShowDetailedEvents,onChange:_=>C("codexShowDetailedEvents",_.target.checked),disabled:a.provider!=="codex"}),l.jsx("span",{children:"Show detailed Codex events"})]}),l.jsx("p",{className:"settings-help",children:"The agent receives no project path or arbitrary filesystem directory. It can call LiveDesk MCP tools only."})]})]}),a.provider==="opencode-go"&&l.jsxs("section",{className:"settings-section-card agent-legacy-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Developer fallback"}),l.jsx("h3",{children:"OpenCode Go"})]}),l.jsx(bc,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Base URL"}),l.jsx("input",{value:a.baseUrl,onChange:_=>C("baseUrl",_.target.value)})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"API key"}),l.jsx("input",{type:"password",value:d,onChange:_=>m(_.target.value),placeholder:r?.hasApiKey?r.apiKeyPreview:"Stored only in the Hub",autoComplete:"new-password"})]}),l.jsxs("div",{className:"settings-action-row",children:[l.jsxs("button",{className:"settings-reset",onClick:()=>{R()},disabled:p!==""||!r?.hasApiKey,type:"button",children:[l.jsx(wh,{size:15})," Clear key"]}),l.jsx("span",{className:"settings-help",children:"This provider does not run the Codex MCP tool loop."})]})]}),l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Agent behavior"}),l.jsx("h3",{children:"Predictable operation"})]}),l.jsx(On,{size:20})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.deterministicParserFirst,onChange:_=>C("deterministicParserFirst",_.target.checked)}),l.jsx("span",{children:"Use deterministic parser before Codex"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.generateSummary,onChange:_=>C("generateSummary",_.target.checked)}),l.jsx("span",{children:"Generate task summaries"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.fallbackSummary,onChange:_=>C("fallbackSummary",_.target.checked)}),l.jsx("span",{children:"Fallback to deterministic summaries"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:a.includeRawDeviceDetails,onChange:_=>C("includeRawDeviceDetails",_.target.checked)}),l.jsx("span",{children:"Include raw device details in summaries"})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Safety"}),l.jsx("h3",{children:"Locked execution boundary"})]}),l.jsx(wn,{size:20})]}),["Arbitrary shell commands","PowerShell and Bash","Filesystem writes, deletes, and installs","Reboot, shutdown, and process termination","Network access and web search"].map(_=>l.jsxs("div",{className:"agent-safety-row",children:[l.jsx(yh,{size:15}),l.jsx("span",{children:_}),l.jsx("strong",{children:"Blocked"})]},_)),I.map(([_])=>l.jsxs("div",{className:"agent-safety-row",children:[l.jsx(wn,{size:15}),l.jsx("span",{children:_}),l.jsx("strong",{className:F==="unavailable"?"agent-safety-failed":F==="configured"?"agent-safety-configured":"agent-safety-verified",children:q})]},_)),l.jsx("p",{className:"settings-help",children:"Configured means the boundary is present but has not completed runtime verification. Test the connection or start an Agent run to verify it."})]})]}),l.jsxs("div",{className:"settings-action-row agent-settings-actions",children:[l.jsxs("button",{className:"settings-reset",onClick:()=>{T()},disabled:p!=="",type:"button",children:[l.jsx(Sc,{size:15})," Reset defaults"]}),l.jsxs("button",{className:"text-button primary",onClick:()=>{A()},disabled:p!=="",type:"button",children:[l.jsx(ly,{size:15})," ",p==="save"?"Saving":"Save Agent settings"]})]})]})}new Date().valueOf();function _s(n){const[a,i]=f.useState(n),r=f.useRef(n);return f.useEffect(()=>{if(r.current!==n){if(Array.isArray(r.current)&&Array.isArray(n)&&r.current.length===0&&n.length===0)return;r.current=n,i(n)}},[n]),[a,i]}function Ah(n,a){return typeof n=="function"?typeof a=="object"?n(a):n():n}function ro(n,a="data-id"){let i=n;for(!i.tagName&&n.target&&(i=n.target);i;){if(i.getAttribute&&i.getAttribute(a))return i;i=i.parentNode}return null}function V0(n,a="data-id"){const i=ro(n,a);return i?i.getAttribute(a):null}function _c(n,a="data-id"){const i=ro(n,a);return i?Od(i,a):null}function Od(n,a="data-id"){const i=n.getAttribute(a);return i?Y0(i):null}function Sn(n){return typeof n=="string"?":"+n:n}function Y0(n){if(n.startsWith(":"))return n.substring(1);const a=n*1;return isNaN(a)?n:a}function W0(){return{detect:()=>!0,addEvent:function(n,a,i){return n.addEventListener(a,i),()=>n.removeEventListener(a,i)},addGlobalEvent:function(n,a){return document.addEventListener(n,a),()=>document.removeEventListener(n,a)},getTopNode:function(){return window.document.body}}}var va=W0();function Mh(n){Object.assign(va,n)}function tx(n,a,i){function r(c){const d=ro(c);if(!d)return;const m=Od(d);if(typeof a=="function")return a(m,c);let p,v=c.target;for(;v!=d;){if(p=v.dataset?v.dataset.action:null,p&&a[p]){a[p](m,c);return}v=v.parentNode}a[i]&&a[i](m,c)}va.addEvent(n,i,r)}function oo(n,a){tx(n,a,"click"),a.dblclick&&tx(n,a.dblclick,"dblclick")}function K0(n,a){for(let i=n.length-1;i>=0;i--)if(n[i]===a){n.splice(i,1);break}}function Q0(n,a,i){for(let r=0;r<yl.length;r++){if(r===i)continue;const c=yl[r],d=c.props.parent?.();if(d&&n.contains(d)&&c.node.contains(a))return!0}return!1}var ky=new Date,Td=!1,ed=[],yl=[],nx=n=>{const a=n.target;if(Td||!a.isConnected){Td=!1;return}for(let i=yl.length-1;i>=0;i--){const{node:r,date:c,props:d}=yl[i];if(!(c>ky)&&!r.contains(a)&&r!==a&&(Q0(r,a,i)||(d.callback&&d.callback(n),d.modal||n.defaultPrevented)))break}},X0=n=>{ky=new Date,Td=!0;for(let a=yl.length-1;a>=0;a--){const{node:i}=yl[a];if(!i.contains(n.target)&&i!==n.target){Td=!1;break}}};function zs(n,a){ed.length||(ed=[va.addGlobalEvent("click",nx,n),va.addGlobalEvent("contextmenu",nx,n),va.addGlobalEvent("mousedown",X0,n)]),typeof a!="object"&&(a={callback:a});const i={node:n,date:new Date,props:a};return yl.push(i),{destroy(){K0(yl,i),yl.length||(ed.forEach(r=>r()),ed=[])}}}var td=n=>n.indexOf("bottom")!==-1,nd=n=>n.indexOf("left")!==-1,ad=n=>n.indexOf("right")!==-1,Rm=n=>n.indexOf("top")!==-1,ax=n=>n.indexOf("fit")!==-1,dc=n=>n.indexOf("overlap")!==-1,Z0=n=>n.split("-").every(a=>["center","fit"].indexOf(a)>-1),J0=n=>{const a=n.match(/(start|center|end)/);return a?a[0]:null};function e1(n,a){let i=0;const r=va.getTopNode(n);for(;n&&n!==r;){const c=getComputedStyle(n).position;if((c==="absolute"||c==="relative"||c==="fixed")&&(i=parseInt(getComputedStyle(n).zIndex)||0),n=n.parentNode,n===a)break}return i}var rn,Pn,fc,zn;function Ay(n,a,i="bottom",r=0,c=0){if(!n)return null;rn=r,Pn=c,fc="auto";let d=0,m=0,p=i;const v=My(n),g=dc(i)?va.getTopNode(n):v;if(!v)return null;const w=v.getBoundingClientRect(),y=n.getBoundingClientRect(),b=g.getBoundingClientRect(),C=window.getComputedStyle(g),j={left:0,top:0,bottom:0,right:0};for(const $ in j){const F=`border-${$}-width`;j[$]=parseFloat(C.getPropertyValue(F))}if(a){const $=e1(a,v);d=Math.max($+1,20)}if(a){if(zn=a.getBoundingClientRect(),ax(i)&&(fc=zn.width+"px"),i!=="point")if(Z0(i))ax(i)?rn=0:(rn=b.width/2,m=1),Pn=(b.height-y.height)/2;else{const $=dc(i)?0:1;rn=ad(i)?zn.right+$:zn.left-$,Pn=td(i)?zn.bottom+1:zn.top;const F=J0(i);F&&(ad(i)||nd(i)?F==="center"?Pn-=(y.height-zn.height)/2:F==="end"&&(Pn-=y.height-zn.height):(td(i)||Rm(i))&&(F==="center"?rn-=(y.width-zn.width)/2:F==="end"&&(rn-=y.width-zn.width),dc(i)||(rn+=1)))}}else zn={left:r,right:r,top:c,bottom:c};const A=(nd(i)||ad(i))&&(td(i)||Rm(i));nd(i)&&(m=2);const T=rn-y.width-b.left;a&&nd(i)&&!A&&T<0&&(rn=zn.right,m=0,p=p.replace("left","right"));const k=rn+y.width*(1-m/2)-b.right;if(k>0)if(!ad(i))rn=b.right-j.right-y.width;else{const $=zn.left-b.x-y.width;a&&!A&&$>=0?(rn=zn.left-y.width,p=p.replace("right","left")):rn-=k+j.right}m&&(rn=Math.round(rn-y.width*m/2));const R=T<0||k>0||!A;Rm(i)&&(Pn=zn.top-y.height,a&&Pn<b.y&&R&&(Pn=zn.bottom,p=p.replace("top","bottom")));const E=Pn+y.height-b.bottom;return E>0&&(a&&td(i)&&R?(Pn-=y.height+zn.height+1,p=p.replace("bottom","top")):Pn-=E+j.bottom),rn-=w.left+j.left,Pn-=w.top+j.top,rn=(dc(i)?rn:Math.max(rn,0))+g.scrollLeft,Pn=(dc(i)?Pn:Math.max(Pn,0))+g.scrollTop,fc=fc||"auto",{at:p,x:rn,y:Pn,z:d,width:fc}}function My(n){const a=va.getTopNode(n);for(n&&(n=n.parentElement);n;){const i=getComputedStyle(n).position;if(n===a||i==="relative"||i==="absolute"||i==="fixed")return n;n=n.parentNode}return null}function t1(n){const a=[];let i=n;const r=va.getTopNode(n);for(;i&&i!==r&&!i.getAttribute("data-wx-portal-root");)getComputedStyle(i).position==="absolute"&&a.push(i),i=i.parentNode;return a}var sx=new Date().valueOf();function Nh(){return sx+=1,sx}function Gn(n){return n<10?"0"+n:n.toString()}function n1(n){const a=Gn(n);return a.length==2?"0"+a:a}function Ny(n){const a=Math.floor(n/11)*11;return{start:a,end:a+11}}function Em(n){const a=(n.getDay()+6)%7,i=new Date(n.valueOf());i.setDate(n.getDate()+(3-a)),i.setHours(0,0,0,0);const r=new Date(i.getFullYear(),0,1),c=Math.round((i.getTime()-r.getTime())/864e5);return 1+Math.floor(c/7)}var lx=["",""];function a1(n,a,i){switch(n){case"%d":return Gn(a.getDate());case"%m":return Gn(a.getMonth()+1);case"%j":return a.getDate();case"%n":return a.getMonth()+1;case"%y":return Gn(a.getFullYear()%100);case"%Y":return a.getFullYear();case"%D":return i.dayShort[a.getDay()];case"%l":return i.dayFull[a.getDay()];case"%M":return i.monthShort[a.getMonth()];case"%F":return i.monthFull[a.getMonth()];case"%h":return Gn((a.getHours()+11)%12+1);case"%g":return(a.getHours()+11)%12+1;case"%G":return a.getHours();case"%H":return Gn(a.getHours());case"%i":return Gn(a.getMinutes());case"%a":return((a.getHours()>11?i.pm:i.am)||lx)[0];case"%A":return((a.getHours()>11?i.pm:i.am)||lx)[1];case"%s":return Gn(a.getSeconds());case"%S":return n1(a.getMilliseconds());case"%W":return Gn(Em(a));case"%w":{const r=i.weekStart??1;if(r===1)return Gn(Em(a));const c=(a.getDay()-r+7)%7,d=(1-r+7)%7,m=new Date(a.valueOf());return m.setDate(a.getDate()+(d-c)),Gn(Em(m))}case"%c":{let r=a.getFullYear()+"";return r+="-"+Gn(a.getMonth()+1),r+="-"+Gn(a.getDate()),r+="T",r+=Gn(a.getHours()),r+=":"+Gn(a.getMinutes()),r+=":"+Gn(a.getSeconds()),r}case"%Q":return Math.floor(a.getMonth()/3)+1;default:return n}}var s1=/%[a-zA-Z]/g;function so(n,a){return typeof n=="function"?n:function(i){return i?(i.getMonth||(i=new Date(i)),n.replace(s1,r=>a1(r,i,a))):""}}function ix(n){return n&&typeof n=="object"&&!Array.isArray(n)}function rh(n,a){for(const i in a){const r=a[i];ix(n[i])&&ix(r)?n[i]=rh({...n[i]},a[i]):n[i]=a[i]}return n}function Ic(n){return{getGroup(a){const i=n[a];return r=>i&&i[r]||r},getRaw(){return n},extend(a,i){if(!a)return this;let r;return i?r=rh({...a},n):r=rh({...n},a),Ic(r)}}}var l1=fy();const i1="en-US",r1={monthFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],hours:"Hours",minutes:"Minutes",done:"Done",clear:"Clear",today:"Today",am:["am","AM"],pm:["pm","PM"],weekStart:0,clockFormat:24},o1={ok:"OK",cancel:"Cancel",select:"Select","No data":"No data","Rows per page":"Rows per page","Total pages":"Total pages"},c1={timeFormat:"%H:%i",dateFormat:"%m/%d/%Y",monthYearFormat:"%F %Y",yearFormat:"%Y"},Ty={core:o1,calendar:r1,formats:c1,lang:i1},Th=f.createContext(""),Ry=f.createContext({}),hs=f.createContext(null),Ey=f.createContext(null),jn=Object.freeze(Object.defineProperty({__proto__:null,fieldId:Ey,helpers:Ry,i18n:hs,theme:Th},Symbol.toStringTag,{value:"Module"}));function Dy(n){const a=f.useContext(Ey),[i]=f.useState(()=>n||a||Nh());return i}function Mc({type:n="",css:a="",icon:i="",disabled:r=!1,title:c="",tooltip:d,text:m="",children:p,onClick:v}){const g=f.useMemo(()=>{let y=n?n.split(" ").filter(b=>b!=="").map(b=>"wx-"+b).join(" "):"";return a+(a?" ":"")+y},[n,a]),w=y=>{v&&v(y)};return l.jsxs("button",{title:c,className:`wx-2ZWgb4 wx-button ${g} ${i&&!p?"wx-icon":""}`,disabled:r,onClick:w,"data-tooltip-text":d,children:[i&&l.jsx("i",{className:"wx-2ZWgb4 "+i}),p||m||" "]})}function u1({id:n,label:a="",inputValue:i="",value:r=!1,onChange:c,disabled:d=!1,css:m=""}){const p=Dy(n),[v,g]=_s(r),w=({target:y})=>{const b=y.checked;g(b),c&&c({value:b,inputValue:i})};return l.jsxs("div",{className:`wx-2IvefP wx-checkbox ${m}`,children:[l.jsx("input",{type:"checkbox",id:p,disabled:d,className:"wx-2IvefP wx-check",checked:v,value:i,onChange:w}),l.jsxs("label",{htmlFor:p,className:"wx-2IvefP wx-label",children:[l.jsx("span",{className:"wx-2IvefP wx-before"}),a&&l.jsx("span",{className:"wx-2IvefP wx-after",children:a})]})]})}function Rh({theme:n="",target:a,children:i}){const r=f.useRef(null),c=f.useRef(null),[d,m]=f.useState(null);r.current||(r.current=document.createElement("div"));const p=f.useContext(Th);return f.useEffect(()=>{m(a||d1(c.current)||va.getTopNode(c.current))},[c.current]),l.jsxs(l.Fragment,{children:[l.jsx("span",{ref:c,style:{display:"none"}}),c.current&&d?l1.createPortal(l.jsx("div",{className:`wx-3ZWsT0 wx-${n||p}-theme`,children:i}),d):null]})}function d1(n){const a=va.getTopNode(n);for(;n&&n!==a&&!n.getAttribute("data-wx-portal-root");)n=n.parentNode;return n}function f1({left:n=0,top:a=0,at:i="bottom",parent:r=null,width:c="auto",css:d="",onCancel:m,children:p,trackScroll:v=!1}){const[g,w]=f.useState(0),[y,b]=f.useState(0),[C,j]=f.useState("auto"),[A,T]=f.useState(!1),k=f.useRef(null),R=f.useRef(null),E=f.useRef(m);f.useEffect(()=>{E.current=m},[m]);function $(q){return r&&(c+"").indexOf("%")>-1?c.replace(/(\d+)%/,(I,_)=>(_=_*r.offsetWidth/100+"px",c.replace(I,_))):c&&c!=="auto"?c:q}const F=f.useCallback(()=>{if(!k.current)return;const q=Ay(k.current,r,i,n,a);q&&(w(q.x),b(q.y),j($(q.width)))},[k,r,i,n,a,c]);return f.useLayoutEffect(()=>{const q=_=>{E.current&&_.target!==R.current&&k.current&&!k.current.contains(_.target)&&E.current(_)};let I;return requestAnimationFrame(()=>{F(),T(!0),v&&k.current&&(R.current=My(k.current),R.current&&R.current.addEventListener("scroll",q,!0)),r&&(I=new ResizeObserver(F),I.observe(r))}),()=>{v&&R.current&&R.current.removeEventListener("scroll",q,!0),I?.disconnect()}},[]),f.useLayoutEffect(()=>{F()},[r,i,n,a]),f.useEffect(()=>{const q=I=>{E.current&&E.current(I)};if(k.current)return zs(k.current,{callback:q,parent:()=>r}).destroy},[r]),l.jsx("div",{ref:k,className:["wx-37M6Fj","wx-popup",d].filter(Boolean).join(" "),style:{position:"absolute",visibility:A?"visible":"hidden",top:y+"px",left:g+"px",width:C},children:p})}function m1({position:n="bottom",align:a="start",autoFit:i=!0,onCancel:r=null,width:c="100%",css:d="",children:m}){const p=f.useRef(null),[v,g]=f.useState(n),[w,y]=f.useState(a),b=f.useRef(r);return f.useEffect(()=>{b.current=r},[r]),f.useEffect(()=>{if(i){const C=p.current;if(C){const j=C.getBoundingClientRect(),A=document.body.getBoundingClientRect();j.right>=A.right&&y("end"),j.bottom>=A.bottom&&g("top")}}},[]),f.useEffect(()=>{if(p.current){const C=j=>{b.current&&b.current(j)};return zs(p.current,C).destroy}},[]),l.jsx("div",{ref:p,className:["wx-dropdown",`wx-${v}-${w}`,d||"","wx-aaaVytZW"].filter(Boolean).join(" "),style:{width:c},children:m})}function Eh({position:n="bottom",align:a="start",autoFit:i=!0,inline:r=!1,onCancel:c,width:d="100%",children:m,...p}){const[v,g]=f.useState(void 0),w=f.useRef(null),y=f.useMemo(()=>`${n}-${a}`,[n,a]);return f.useLayoutEffect(()=>{w.current&&g(w.current.parentNode)},[]),l.jsxs(l.Fragment,{children:[v&&(r?l.jsx(m1,{onCancel:c,position:n,align:a,autoFit:i,width:d,...p,children:m}):l.jsx(Rh,{children:l.jsx(f1,{parent:v,at:y,onCancel:c,width:d,...p,children:m})})),l.jsx("span",{ref:w,className:"wx-portal-node wx-32GZ52"})]})}function Id(){return Ic(Ty)}function h1(){let n=null,a=!1,i=!1,r,c,d,m;const p=(y,b,C,j,A)=>{r=y,c=b,d=C,m=j,i=A},v=y=>{n=y,a=n!==null,d(n)},g=(y,b)=>{if(!i&&y!==null&&r){const C=r.querySelectorAll(".wx-list > .wx-item")[y];C&&(C.scrollIntoView({block:"nearest"}),b&&b.preventDefault())}},w=(y,b)=>{const C=y===null?null:Math.max(0,Math.min(n+y,c.length-1));C!==n&&(v(C),r?g(C,b):requestAnimationFrame(()=>g(C,b)))};return{move:y=>{const b=_c(y),C=c.findIndex(j=>j.id===b);C!==n&&v(C)},keydown:(y,b)=>{switch(y.code){case"Enter":a?m():v(0);break;case"Space":a||v(0);break;case"Escape":d(n=null);break;case"Tab":d(n=null);break;case"ArrowDown":w(a?1:b||0,y);break;case"ArrowUp":w(a?-1:b||0,y);break}},init:p,navigate:w}}const rx=10,p1=f.memo(function({data:n,checkboxes:a,itemTemplate:i,value:r}){return l.jsxs(l.Fragment,{children:[a&&l.jsx(u1,{id:n.id,css:"wx-list-checkbox",value:r&&r.includes(n.id)}),i?Ah(i,{option:n}):n.label]})});function ox({visibleItems:n,visibleRange:a,navIndex:i,checkboxes:r,itemTemplate:c,value:d,measureRefCallback:m}){return n.map((p,v)=>{const g=a.start+v;return l.jsx("div",{ref:v===0?m:void 0,className:`wx-233fr7 wx-item ${g===i?"wx-focus":""}`,"data-id":p.id,children:l.jsx(p1,{data:p,checkboxes:r,itemTemplate:c,value:d})},p.id)})}function Bd({items:n=[],children:a,onSelect:i,onReady:r,virtualized:c=!1,checkboxes:d,multiselect:m,value:p,...v}){const g=f.useRef(),w=f.useRef(!1),y=f.useRef(h1()),[b,C]=f.useState(null),j=f.useRef(b),[A,T]=f.useState(0),[k,R]=f.useState(24),E=f.useRef(!1),$=(f.useContext(hs)||Id()).getGroup("core"),F=f.useRef(n);f.useEffect(()=>{F.current=n},[n]);const q=f.useRef(p);f.useEffect(()=>{q.current=p},[p]);const I=f.useRef(0);f.useEffect(()=>{I.current=k},[k]);const _=f.useCallback(D=>{D&&D.stopPropagation();const Z=F.current,ye=q.current,be=j.current;let de;const Ne=Z[be]?.id;m?ye&&ye.includes(Ne)?de=ye.filter(Ie=>Ie!==Ne):de=[...ye||[],Ne]:de=Ne,i&&i({id:de})},[m,i]),fe=f.useRef(_);f.useEffect(()=>{fe.current=_},[_]);const G=f.useCallback(D=>{if(g.current){let Z=D*I.current-g.current.clientHeight+I.current;T(Z),g.current.scrollTop=Z}},[I.current]),ue=f.useCallback(D=>{g.current=D,c&&(D&&!w.current&&j.current!==null&&requestAnimationFrame(()=>{g.current&&(G(j.current),w.current=!0)}),D||(w.current=!1))},[G]),Y=f.useCallback(D=>{if(!D||E.current)return;const Z=D.getBoundingClientRect().height;Z&&(R(Z),I.current=Z,E.current=!0)},[]);f.useEffect(()=>{y.current.init(g.current,n,D=>{C(D),j.current=D},D=>fe.current(D),c)},[n,g.current,c]),f.useEffect(()=>{const D=(ye,be)=>{y.current.navigate(ye,be),G(j.current)},Z=(ye,be)=>{const de=j.current,Ne=F.current;if(de!==0&&de!==Ne.length-1&&(ye.key==="ArrowDown"||ye.key==="ArrowUp")&&ye.preventDefault(),y.current.keydown(ye,be),g.current){const Ie=g.current.scrollTop<=j.current*I.current,re=g.current.scrollTop+g.current.clientHeight>=j.current*I.current+I.current;Ie?re||G(j.current):(g.current.scrollTop=j.current*I.current,T(g.current.scrollTop))}};r&&r({navigate:c?D:y.current.navigate,keydown:c?Z:y.current.keydown,move:y.current.move})},[]);const ae=f.useRef(0),le=f.useRef(n);le.current!==n&&(le.current=n,ae.current+=1);const V=f.useCallback(()=>{y.current.navigate(null)},[y]),z=f.useCallback(D=>{c&&T(D.target.scrollTop)},[c]),K=f.useMemo(()=>Math.ceil((g.current?.clientHeight||0)/k),[k,A]),Q=f.useMemo(()=>{if(!c)return{start:0,end:n.length};if(!n.length)return{start:0,end:0};const D=Math.floor(A/k),Z=D+K;return{start:Math.max(0,D-rx),end:Math.min(n.length,Z+rx)}},[c,n,A,k,K]),P=f.useMemo(()=>{if(!c)return n;const{start:D,end:Z}=Q;return n.slice(D,Z).map(ye=>({...ye}))},[c,n,Q]),ie=Q.start*k,Se=n.length*k;return f.useEffect(()=>{c&&T(0)},[n,c]),f.useEffect(()=>{b===null&&(w.current=!1)},[b]),b===null?null:l.jsx(Eh,{onCancel:V,...v,children:l.jsx("div",{className:"wx-233fr7 wx-list",ref:ue,onClick:_,onMouseMove:y.current.move,onScroll:z,children:n.length?c?l.jsx("div",{className:"wx-233fr7 wx-list-wrapper",style:{height:`${Se}px`},children:l.jsx("div",{className:"wx-233fr7 wx-list-content",style:{transform:`translateY(${ie}px)`},children:l.jsx(ox,{visibleRange:Q,visibleItems:P,navIndex:b,measureRefCallback:Y,checkboxes:d,itemTemplate:a,value:p})})}):l.jsx(ox,{visibleRange:Q,visibleItems:P,navIndex:b,measureRefCallback:Y,checkboxes:d,itemTemplate:a,value:p}):l.jsx("div",{className:"wx-233fr7 wx-no-data",children:$("No data")})})},ae.current)}function Dh({value:n="",id:a,readonly:i=!1,focus:r=!1,select:c=!1,type:d="text",placeholder:m="",disabled:p=!1,error:v=!1,title:g="",tooltip:w,css:y="",icon:b="",clear:C=!1,onChange:j}){const A=Dy(a),[T,k]=_s(n),R=f.useRef(null),E=f.useMemo(()=>b&&y.indexOf("wx-icon-left")===-1?"wx-icon-right "+y:y,[b,y]),$=f.useMemo(()=>b&&y.indexOf("wx-icon-left")!==-1,[b,y]);f.useEffect(()=>{const fe=setTimeout(()=>{r&&R.current&&R.current.focus(),c&&R.current&&R.current.select()},1);return()=>clearTimeout(fe)},[r,c]);const F=f.useCallback(fe=>{const G=fe.target.value;k(G),j&&j({value:G,input:!0})},[j]),q=f.useCallback(fe=>j&&j({value:fe.target.value}),[j]);function I(fe){fe.stopPropagation(),k(""),j&&j({value:""})}let _=d;return d!=="password"&&d!=="number"&&(_="text"),f.useEffect(()=>{const fe=q,G=R.current;return G.addEventListener("change",fe),()=>{G&&G.removeEventListener("change",fe)}},[q]),l.jsxs("div",{className:`wx-hQ64J4 wx-text ${E} ${v?"wx-error":""} ${p?"wx-disabled":""} ${C?"wx-clear":""}`,"data-tooltip-text":w,children:[l.jsx("input",{className:"wx-hQ64J4 wx-input",ref:R,id:A,readOnly:i,disabled:p,placeholder:m,type:_,title:g,value:T,onInput:F}),C&&!p&&T?l.jsxs(l.Fragment,{children:[l.jsx("i",{className:"wx-hQ64J4 wx-icon wxi-close",onClick:I}),$&&l.jsx("i",{className:`wx-hQ64J4 wx-icon ${b}`})]}):b?l.jsx("i",{className:`wx-hQ64J4 wx-icon ${b}`}):null]})}function g1({date:n,type:a,part:i,onShift:r}){const{calendar:c,formats:d}=f.useContext(hs).getRaw(),m=n.getFullYear(),p=f.useMemo(()=>{switch(a){case"month":return so(d.monthYearFormat,c)(n);case"year":return so(d.yearFormat,c)(n);case"duodecade":{const{start:g,end:w}=Ny(m),y=so(d.yearFormat,c);return`${y(new Date(g,0,1))} - ${y(new Date(w,11,31))}`}default:return""}},[n,a,m,c,d]);function v(){r&&r({diff:0,type:a})}return l.jsxs("div",{className:"wx-8HQVQV wx-header",children:[i!=="right"?l.jsx("i",{className:"wx-8HQVQV wx-pager wxi-angle-left",onClick:()=>r&&r({diff:-1,type:a})}):l.jsx("span",{className:"wx-8HQVQV wx-spacer"}),l.jsx("span",{className:"wx-8HQVQV wx-label",onClick:v,children:p}),i!=="left"?l.jsx("i",{className:"wx-8HQVQV wx-pager wxi-angle-right",onClick:()=>r&&r({diff:1,type:a})}):l.jsx("span",{className:"wx-8HQVQV wx-spacer"})]})}function Lh({onClick:n,children:a}){return l.jsx("button",{className:"wx-3s8W4d wx-button",onClick:n,children:a})}function v1({value:n,current:a,part:i="",markers:r=null,css:c="",onCancel:d,onChange:m}){const p=(f.useContext(hs)||Id()).getRaw().calendar,v=(p.weekStart||7)%7,g=p.dayShort.slice(v).concat(p.dayShort.slice(0,v)),w=(F,q,I)=>new Date(F.getFullYear(),F.getMonth()+(q||0),F.getDate()+(I||0));let y=i!=="normal";function b(F){const q=F.getDay();return q===0||q===6}function C(){const F=w(a,0,1-a.getDate());return F.setDate(F.getDate()-(F.getDay()-(v-7))%7),F}function j(){const F=w(a,1,-a.getDate());return F.setDate(F.getDate()+(6-F.getDay()+v)%7),F}const A=f.useRef(0);function T(F,q){q.timeStamp!==A.current&&(A.current=q.timeStamp,q.stopPropagation(),m&&m(new Date(F)),d&&d())}const k=f.useMemo(()=>i=="normal"?[n?w(n).valueOf():0]:n?[n.start?w(n.start).valueOf():0,n.end?w(n.end).valueOf():0]:[0,0],[i,n]),R=f.useMemo(()=>{const F=C(),q=j(),I=a.getMonth();let _=[];for(let fe=F;fe<=q;fe.setDate(fe.getDate()+1)){const G={day:fe.getDate(),in:fe.getMonth()===I,date:fe.valueOf()};let ue="";if(ue+=G.in?"":" wx-inactive",ue+=k.indexOf(G.date)>-1?" wx-selected":"",y){const Y=G.date==k[0],ae=G.date==k[1];Y&&!ae?ue+=" wx-left":ae&&!Y&&(ue+=" wx-right"),G.date>k[0]&&G.date<k[1]&&(ue+=" wx-inrange")}if(ue+=b(fe)?" wx-weekend":"",r){const Y=r(fe);Y&&(ue+=" "+Y)}_.push({...G,css:ue})}return _},[a,k,y,r]),E=f.useRef(null);let $=f.useRef({});return $.current.click=T,f.useEffect(()=>{oo(E.current,$.current)},[]),l.jsxs("div",{className:`wx-398RBS wx-month ${c}`,children:[l.jsx("div",{className:"wx-398RBS wx-weekdays",children:g.map(F=>l.jsx("div",{className:"wx-398RBS wx-weekday",children:F},F))}),l.jsx("div",{className:"wx-398RBS wx-days",ref:E,children:R.map(F=>l.jsx("div",{className:`wx-398RBS wx-day ${F.css} ${F.in?"":"wx-out"}`,"data-id":F.date,children:F.day},F.date))})]})}function x1({value:n,current:a,part:i,onCancel:r,onChange:c,onShift:d}){const m=f.useRef(new Date),[p,v]=_s(n||m.current),[g,w]=_s(a||m.current),y=f.useContext(hs).getRaw().calendar,b=y.monthShort||[],C=f.useMemo(()=>g.getMonth(),[g]),j=f.useCallback((k,R)=>{if(k!=null){R.stopPropagation();const E=new Date(g);E.setMonth(k),w(E),d&&d({current:E})}i==="normal"&&v(new Date(g)),r&&r()},[g,i,d,r]),A=f.useCallback(()=>{const k=new Date(Ly(p,i)||g);k.setMonth(g.getMonth()),k.setFullYear(g.getFullYear()),c&&c(k)},[p,g,i,c]),T=f.useCallback(k=>{const R=k.target.closest("[data-id]");if(R){const E=parseInt(R.getAttribute("data-id"),10);j(E,k)}},[j]);return l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"wx-34U8T8 wx-months",onClick:T,children:b.map((k,R)=>l.jsx("div",{className:"wx-34U8T8 wx-month"+(C===R?" wx-current":""),"data-id":R,children:k},R))}),l.jsx("div",{className:"wx-34U8T8 wx-buttons",children:l.jsx(Lh,{onClick:A,children:y.done})})]})}const Dm="wx-1XEF33",y1=({value:n,current:a,onCancel:i,onChange:r,onShift:c,part:d})=>{const m=f.useContext(hs).getRaw().calendar,[p,v]=_s(a),[g,w]=_s(n),y=f.useMemo(()=>p.getFullYear(),[p]),b=f.useMemo(()=>{const{start:k,end:R}=Ny(y),E=[];for(let $=k;$<=R;++$)E.push($);return E},[y]),C={click:j};function j(k,R){if(k){R.stopPropagation();const E=new Date(p);E.setFullYear(k),v(E),c&&c({current:E})}d==="normal"&&w(new Date(p)),i&&i()}function A(){const k=new Date(Ly(g,d)||p);k.setFullYear(p.getFullYear()),r&&r(k)}const T=f.useRef(null);return f.useEffect(()=>{T.current&&oo(T.current,C)},[]),l.jsxs(l.Fragment,{children:[l.jsx("div",{className:Dm+" wx-years",ref:T,children:b.map((k,R)=>l.jsx("div",{className:Dm+` wx-year ${y==k?"wx-current":""} ${R===0?"wx-prev-decade":""} ${R===11?"wx-next-decade":""}`,"data-id":k,children:k},R))}),l.jsx("div",{className:Dm+" wx-buttons",children:l.jsx(Lh,{onClick:A,children:m.done})})]})},cx={month:{component:v1,next:b1,prev:w1},year:{component:x1,next:C1,prev:S1},duodecade:{component:y1,next:k1,prev:j1}};function w1(n){return n=new Date(n),n.setMonth(n.getMonth()-1),n}function b1(n){return n=new Date(n),n.setMonth(n.getMonth()+1),n}function S1(n){return n=new Date(n),n.setFullYear(n.getFullYear()-1),n}function C1(n){return n=new Date(n),n.setFullYear(n.getFullYear()+1),n}function j1(n){return n=new Date(n),n.setFullYear(n.getFullYear()-10),n}function k1(n){return n=new Date(n),n.setFullYear(n.getFullYear()+10),n}function Ly(n,a){let i;if(a==="normal")i=n;else{const{start:r,end:c}=n;a==="left"?i=r:a=="right"?i=c:i=r&&c}return i}const A1=["clear","today"];function M1(n){if(n==="done")return-1;if(n==="clear")return null;if(n==="today")return new Date}function N1({value:n,current:a,onCurrentChange:i,part:r="normal",markers:c=null,buttons:d,css:m="",onShift:p,onChange:v}){const g=f.useContext(hs).getGroup("calendar"),[w,y]=f.useState("month"),b=Array.isArray(d)?d:d?A1:[],C=(R,E)=>{R.preventDefault(),v&&v({value:E})},j=()=>{w==="duodecade"?y("year"):w==="year"&&y("month")},A=R=>{const{diff:E,current:$}=R;if(E===0){w==="month"?y("year"):w==="year"&&y("duodecade");return}if(E){const F=cx[w];i(E>0?F.next(a):F.prev(a))}else $&&i($);p&&p()},T=R=>{y("month"),v&&v({select:!0,value:R})},k=f.useMemo(()=>cx[w].component,[w]);return l.jsx("div",{className:`wx-2Gr4AS wx-calendar ${r!=="normal"&&r!=="both"?"wx-part":""} ${m}`,children:l.jsxs("div",{className:"wx-2Gr4AS wx-wrap",children:[l.jsx(g1,{date:a,part:r,type:w,onShift:A}),l.jsxs("div",{children:[l.jsx(k,{value:n,current:a,onCurrentChange:i,part:r,markers:c,onCancel:j,onChange:T,onShift:A}),w==="month"&&b.length>0&&l.jsx("div",{className:"wx-2Gr4AS wx-buttons",children:b.map(R=>l.jsx("div",{className:"wx-2Gr4AS wx-button-item",children:l.jsx(Lh,{onClick:E=>C(E,M1(R)),children:g(R)})},R))})]})]})})}function _h(n){let{words:a=null,optional:i=!1,children:r}=n,c=f.useContext(hs);const d=f.useMemo(()=>{let m=c;return(!m||!m.extend)&&(m=Ic(Ty)),a!==null&&(m=m.extend(a,i)),m},[a,i,c]);return l.jsx(hs.Provider,{value:d,children:r})}function ux(n,a,i,r){if(!n||r){const c=a?new Date(a):new Date;c.setDate(1),i(c)}else if(n.getDate()!==1){const c=new Date(n);c.setDate(1),i(c)}}const T1=["clear","today"];function _y({value:n,current:a,markers:i=null,buttons:r=T1,css:c="",onChange:d}){const[m,p]=_s(n),[v,g]=_s(a);f.useEffect(()=>{ux(v,m,g,!1)},[m,v]);const w=f.useCallback(b=>{const C=b.value;C?(p(new Date(C)),ux(v,new Date(C),g,!0)):p(null),d&&d({value:C?new Date(C):null})},[d,v]),y=f.useCallback(b=>{g(b)},[g]);return v?l.jsx(_h,{children:l.jsx(N1,{value:m,current:v,markers:i,buttons:r,css:c,onChange:w,onCurrentChange:y})}):null}function R1(n){return n||(n={}),n.width||(n.width="unset"),n}const E1=["clear","today"];function D1({value:n,id:a,disabled:i=!1,error:r=!1,placeholder:c="",format:d="",buttons:m=E1,css:p="",title:v="",tooltip:g,editable:w=!1,clear:y=!1,onChange:b,dropdown:C={}}){const{calendar:j,formats:A}=(f.useContext(hs)||Id()).getRaw(),T=d||A?.dateFormat;let k=typeof T=="function"?T:so(T,j);const[R,E]=f.useState(n),[$,F]=f.useState(!1);f.useEffect(()=>{E(n)},[n]);function q(){F(!1)}function I(G){const ue=G===R||G&&R&&G.valueOf()===R.valueOf()||!G&&!R;E(G),ue||b&&b({value:G}),setTimeout(q,1)}const _=f.useMemo(()=>R?k(R):"",[R,k]);function fe({value:G,input:ue}){if(!w&&!y||ue)return;let Y=typeof w=="function"?w(G):G?new Date(G):null;Y=isNaN(Y)?R||null:Y||null,I(Y)}return f.useEffect(()=>{const G=q;return window.addEventListener("scroll",G),()=>window.removeEventListener("scroll",G)},[]),l.jsxs("div",{className:"wx-1lKOFG wx-datepicker",onClick:()=>F(!0),children:[l.jsx(Dh,{css:`wx-date-input ${p}`,title:v,tooltip:g,value:_,id:a,readonly:!w,disabled:i,error:r,placeholder:c,onInput:q,onChange:fe,icon:"wxi-calendar",clear:y}),$&&!i&&l.jsx(Eh,{onCancel:q,...R1(C),children:l.jsx(_y,{buttons:m,value:R,onChange:G=>I(G.value)})})]})}function L1({value:n="",options:a=[],textOptions:i=null,placeholder:r="",disabled:c=!1,error:d=!1,title:m="",tooltip:p,textField:v="label",clear:g=!1,css:w="",children:y,onChange:b,dropdown:C={}}){const j=f.useRef(null),A=f.useRef(null);let[T,k]=_s(n);function R(I){j.current=I.navigate,A.current=I.keydown}const E=f.useMemo(()=>T||T===0?(i||a).find(I=>I.id===T):null,[T,i,a]),$=f.useCallback(({id:I})=>{(I||I===0)&&(k(I),j.current(null),b&&b({value:I}))},[k,b]),F=f.useCallback(I=>{I.stopPropagation(),k(""),b&&b({value:""})},[k,b]),q=f.useCallback(()=>a.findIndex(I=>I.id===T),[a,T]);return l.jsxs("div",{className:`wx-2YgblL wx-richselect ${w} ${d?"wx-2YgblL wx-error":""} ${c?"wx-2YgblL wx-disabled":""} ${y?"":"wx-2YgblL wx-nowrap"}`,title:m,onClick:()=>j.current(q()),onKeyDown:I=>A.current(I,q()),tabIndex:0,"data-tooltip-text":p,children:[l.jsx("div",{className:"wx-2YgblL wx-label",children:E?y?y(E):E[v]:r?l.jsx("span",{className:"wx-2YgblL wx-placeholder",children:r}):" "}),g&&!c&&T?l.jsx("i",{className:"wx-2YgblL wx-icon wxi-close",onClick:F}):l.jsx("i",{className:"wx-2YgblL wx-icon wxi-angle-down"}),!c&&l.jsx(Bd,{items:a,onReady:R,onSelect:$,...C,children:({option:I})=>y?y(I):I[v]})]})}const _1=({options:n=[],value:a="",css:i="",children:r,onChange:c})=>{const[d,m]=f.useState(a),p=v=>{m(v),c&&c({value:v})};return f.useEffect(()=>{m(a)},[a]),l.jsx("div",{className:`wx-0hMO7P wx-segmented ${i}`,children:n.map(v=>l.jsx("button",{className:`wx-0hMO7P wx-segment ${v.css} ${v.id===d?"wx-selected":""}`,title:v.title,onClick:()=>p(v.id),"data-tooltip-text":v.tooltip,children:r?Ah(r,{option:v}):l.jsxs(l.Fragment,{children:[v.icon&&l.jsx("i",{className:`wx-0hMO7P wx-icon ${v.icon} ${v.label?"":"wx-only"}`}),v.label&&l.jsx("span",{className:"wx-0hMO7P wx-label",children:v.label})]})},v.id))})};function z1({notice:n={}}){function a(){n.remove&&n.remove()}return l.jsxs("div",{className:`wx-11sNg5 wx-notice wx-${n.type?n.type:""}`,role:"status","aria-live":"polite",children:[l.jsx("div",{className:"wx-11sNg5 wx-text",children:n.text}),l.jsx("div",{className:"wx-11sNg5 wx-button",children:l.jsx("i",{className:"wx-11sNg5 wxi-close",onClick:a})})]})}function O1({data:n=[]}){return l.jsx("div",{className:"wx-3nwoO9 wx-notices",children:n.map(a=>l.jsx(z1,{notice:a},a.id))})}function oh({title:n="",buttons:a=["cancel","ok"],header:i,children:r,footer:c,css:d="",onConfirm:m,onCancel:p}){const v=(f.useContext(hs)||Id()).getGroup("core"),g=f.useRef(null);f.useEffect(()=>{g.current?.focus()},[]);function w(b){switch(b.code){case"Enter":{const C=b.target.tagName;if(C==="TEXTAREA"||C==="BUTTON")return;m&&m({event:b});break}case"Escape":p&&p({event:b});break}}function y(b,C){const j={event:b,button:C};C==="cancel"?p&&p(j):m&&m(j)}return l.jsx("div",{className:`wx-1FxkZa wx-modal ${d}`,ref:g,tabIndex:0,onKeyDown:w,children:l.jsxs("div",{className:"wx-1FxkZa wx-window",children:[i||(n?l.jsx("div",{className:"wx-1FxkZa wx-header",children:n}):null),l.jsx("div",{children:r}),c||a&&l.jsx("div",{className:"wx-1FxkZa wx-buttons",children:a.map(b=>l.jsx("div",{className:"wx-1FxkZa wx-button",children:l.jsx(Mc,{type:`block ${b==="ok"?"primary":"secondary"}`,onClick:C=>y(C,b),children:v(b)})},b))})]})})}function I1({children:n},a){const[i,r]=f.useState(null),[c,d]=f.useState([]);return f.useImperativeHandle(a,()=>({showModal:m=>{const p={...m};return r(p),new Promise((v,g)=>{p.resolve=w=>{r(null),v(w)},p.reject=w=>{r(null),g(w)}})},showNotice:m=>{m={...m},m.id=m.id||Nh(),m.remove=()=>d(p=>p.filter(v=>v.id!==m.id)),m.expire!=-1&&setTimeout(m.remove,m.expire||5100),d(p=>[...p,m])}}),[]),l.jsxs(l.Fragment,{children:[n,i&&l.jsx(oh,{title:i.title,buttons:i.buttons,onConfirm:i.resolve,onCancel:i.reject,children:i.message}),l.jsx(O1,{data:c})]})}const B1=f.forwardRef(I1);function F1(n){let{children:a}=n,i=f.useRef();const r=f.useMemo(()=>({showNotice:c=>i.current.showNotice(c),showModal:c=>i.current.showModal(c)}),[]);return l.jsx(Ry.Provider,{value:r,children:l.jsx(B1,{ref:i,children:a})})}const H1=({value:n=!1,type:a="",icon:i="",disabled:r=!1,iconActive:c="",onClick:d,title:m="",tooltip:p,css:v="",text:g="",textActive:w="",children:y,active:b,onChange:C})=>{const[j,A]=_s(n),T=f.useMemo(()=>(j?"pressed":"")+(a?" "+a:""),[j,a]),k=f.useCallback(R=>{let E=!j;d&&d(R),R.defaultPrevented||(A(E),C&&C({value:E}))},[j,d,C]);return j&&b?l.jsx(Mc,{title:m,tooltip:p,text:j&&w||g,css:v,type:T,icon:j&&c||i,onClick:k,disabled:r,children:Ah(b,{value:j})}):y?l.jsx(Mc,{title:m,tooltip:p,text:j&&w||g,css:v,type:T,icon:j&&c||i,onClick:k,disabled:r,children:y}):l.jsx(Mc,{title:m,tooltip:p,text:j&&w||g,css:v,type:T,icon:j&&c||i,onClick:k,disabled:r})};function $1(){return l.jsx(l.Fragment,{})}function dx(n){const{fonts:a=!0,children:i}=n;return l.jsx(Th.Provider,{value:"willow",children:l.jsxs(l.Fragment,{children:[i&&i&&l.jsx("div",{className:"wx-theme wx-willow-theme",children:i}),a&&l.jsxs(l.Fragment,{children:[l.jsx("link",{rel:"preconnect",href:"https://cdn.svar.dev",crossOrigin:"true"}),l.jsx($1,{}),l.jsx("link",{rel:"stylesheet",href:"https://cdn.svar.dev/fonts/wxi/wx-icons.css"})]})]})})}Mh(va);const zh={grid:{"Add before":"Add before","Add after":"Add after",Copy:"Copy",Cut:"Cut",Paste:"Paste",Delete:"Delete","New row":"New row","Move up":"Move up","Move down":"Move down",Undo:"Undo",Redo:"Redo",selected:"selected"}};new Date().valueOf();var zy=class{constructor(n){this._nextHandler=null,this._dispatch=n,this.exec=this.exec.bind(this)}async exec(n,a){return this._dispatch(n,a),this._nextHandler&&await this._nextHandler.exec(n,a),a}setNext(n){return this._nextHandler=n}};new Date().valueOf();var U1=class{constructor(n){const a={id:0,$level:0,data:[],parent:null},i=new Map;i.set(0,a),this._pool=i,n&&n.length&&this.parse(n,0)}parse(n,a){const i=this._pool;for(let c=0;c<n.length;c++){const d=n[c];d.parent=d.parent||a,d.data=null,i.set(d.id,d)}for(let c=0;c<n.length;c++){const d=n[c],m=i.get(d.parent);m&&(m.data||(m.data=[]),m.data.push(d))}const r=i.get(a);this.setLevel(r,r.$level+1,!1)}add(n,a){const i=this._pool.get(n.parent||0);n.$level=i.$level+1,this._pool.set(n.id,n),i.data?a===-1?i.data=[...i.data,n]:fx(i,a,n):i.data=[n]}addAfter(n,a){if(!a)return this.add(n,-1);const i=this.byId(a),r=this.byId(i.parent),c=sd(r,i.id)+1;n.parent=r.id,n.$level=r.$level+1,this.add(n,c)}remove(n){const a=this._pool.get(n);this._remove(a);const i=this._pool.get(a.parent);i.data=i.data.filter(r=>r.id!=n),this._clearBranch(i)}_remove(n){n.data&&n.data.forEach(a=>this._remove(a)),this._pool.delete(n.id)}update(n,a){let i=this._pool.get(n);const r=this._pool.get(i.parent),c=sd(r,i.id);i={...i,...a},r&&c>=0&&(r.data[c]=i,r.data=[...r.data]),this._pool.set(i.id,i)}move(n,a,i){const r=this._pool.get(n),c=a==="child",d=this._pool.get(i),m=d.$level+(c?1:0);if(!r||!d)return;const p=this._pool.get(r.parent),v=c?d:this._pool.get(d.parent);v.data||(v.data=[]);const g=sd(p,r.id);P1(p,g);const w=c?v.data.length:sd(v,d.id)+(a==="after"?1:0);if(fx(v,w,r),p.id===v.id&&g===w)return null;r.parent=v.id,r.$level!==m&&(r.$level=m,this.setLevel(r,m+1,!0)),this.update(r.id,r),this._clearBranch(p)}_clearBranch(n){n.data&&!n.data.length&&(n.open&&delete n.open,this.update(n.id,{data:null}))}toArray(){const n=[],a=this._pool.get(0).data;return a&&Oy(a,n),n}byId(n){return this._pool.get(n)}getBranch(n){return this._pool.get(n).data}forEach(n){this._pool.forEach((a,i)=>{i!==0&&n(a)})}eachChild(n,a){const i=this.byId(a);!i||!i.data||i.data.forEach((r,c)=>{n(this.byId(r.id),c),this.eachChild(n,r.id)})}setLevel(n,a,i){n.data&&(n.data=n.data.map(r=>(i&&(r={...r},this._pool.set(r.id,r)),r.$level=a,r.data&&this.setLevel(r,a+1,i),r)))}};function Oy(n,a){n.forEach(i=>{a.push(i),i.open===!0&&Oy(i.data,a)})}function P1(n,a){const i=[...n.data];i.splice(a,1),n.data=i}function fx(n,a,i){const r=[...n.data];r.splice(a,0,i),n.data=r}function sd(n,a){return n?.data.findIndex(i=>i.id===a)}var Iy=2,q1=class{constructor(a){a&&(this._writable=a.writable,this._async=a.async),this._values={},this._state={}}setState(a,i=0){const r={};return this._wrapProperties(a,this._state,this._values,"",r,i),r}getState(){return this._values}getReactive(){return this._state}_wrapProperties(a,i,r,c,d,m){for(const p in a){const v=i[p],g=r[p],w=a[p];if(v&&(g===w&&typeof w!="object"||w instanceof Date&&g instanceof Date&&g.getTime()===w.getTime()))continue;const y=c+(c?".":"")+p;v?(v.__parse(w,y,d,m)&&(r[p]=w),m&Iy?d[y]=v.__trigger:v.__trigger()):(w&&w.__reactive?i[p]=this._wrapNested(w,w,y,d):i[p]=this._wrapWritable(w),r[p]=w),d[y]=d[y]||null}}_wrapNested(a,i,r,c){const d=this._wrapWritable(a);return this._wrapProperties(a,d,i,r,c,0),d.__parse=(m,p,v,g)=>(this._wrapProperties(m,d,i,p,v,g),!1),d}_wrapWritable(a){const i=[],r=function(){for(let c=0;c<i.length;c++)i[c](a)};return{subscribe:c=>(i.push(c),this._async?setTimeout(c,1,a):c(a),()=>{const d=i.indexOf(c);d>=0&&i.splice(d,1)}),__trigger:()=>{i.length&&(this._async?setTimeout(r,1):r())},__parse:function(c){return a=c,!0}}}};function mx(n,a){return Object.defineProperty(n,"__reactive",{value:!0,enumerable:!1,writable:!1}),n}var G1=class{constructor(a,i,r,c){typeof a=="function"?this._setter=a:this._setter=a.setState.bind(a),this._routes=i,this._parsers=r,this._prev={},this._triggers=new Map,this._sources=new Map,this._routes.forEach(d=>{d.in.forEach(m=>{const p=this._triggers.get(m)||[];p.push(d),this._triggers.set(m,p)}),d.out.forEach(m=>{const p=this._sources.get(m)||{};d.in.forEach(v=>p[v]=!0),this._sources.set(m,p)})}),this._routes.forEach(d=>{d.length=Math.max(...d.in.map(m=>By(m,this._sources,1)))}),this._bus=c}init(a){const i={};for(const r in a)if(this._prev[r]!==a[r]){const c=this._parsers[r];i[r]=c?c(a[r]):a[r]}this._prev=this._prev?{...this._prev,...a}:{...a},this.setState(i),this._bus&&this._bus.exec("init-state",i)}setStateAsync(a){const i=this._setter(a,Iy);return this._async?Object.assign(this._async.signals,i):this._async={signals:i,timer:setTimeout(this._applyState.bind(this),1)},i}_applyState(){const a=this._async;if(a){this._async=null,this._triggerUpdates(a.signals,[]);for(const i in a.signals){const r=a.signals[i];r&&r()}}}setState(a,i=[]){const r=this._setter(a);return this._triggerUpdates(r,i),r}_triggerUpdates(a,i){const r=Object.keys(a),c=!i.length;i=i||[];for(let d=0;d<r.length;d++){const m=r[d],p=this._triggers.get(m);p&&p.forEach(v=>{i.indexOf(v)==-1&&i.push(v)})}c&&this._execNext(i)}_execNext(a){for(;a.length;){a.sort((r,c)=>r.length<c.length?1:-1);const i=a[a.length-1];a.splice(a.length-1),i.exec(a)}}};function By(n,a,i){const r=a.get(n);if(!r)return i;const c=Object.keys(r).map(d=>By(d,a,i+1));return Math.max(...c)}var V1=class{constructor(){this._nextHandler=null,this._handlers={},this._tag=new WeakMap,this.exec=this.exec.bind(this)}on(a,i,r){let c=this._handlers[a];c?r&&r.intercept?c.unshift(i):c.push(i):c=this._handlers[a]=[i],r&&r.tag&&this._tag.set(i,r.tag)}intercept(a,i,r){this.on(a,i,{...r,intercept:!0})}detach(a){for(const i in this._handlers){const r=this._handlers[i];for(let c=r.length-1;c>=0;c--)this._tag.get(r[c])===a&&r.splice(c,1)}}async exec(a,i){const r=this._handlers[a];if(r)for(let c=0;c<r.length;c++){const d=r[c](i);if(d===!1||d&&d.then&&await d===!1)return}return this._nextHandler&&await this._nextHandler.exec(a,i),i}setNext(a){return this._nextHandler=a}};const eo=1024;function zc(n){return n<eo?`${n} B`:n<eo**2?`${(n/eo).toFixed(1)} KB`:n<eo**3?`${(n/eo**2).toFixed(1)} MB`:`${(n/eo**3).toFixed(1)} GB`}function hx(n,a){a||(a={key:"name",order:"asc"});const i=n.filter(m=>m.type==="folder"),r=n.filter(m=>m.type!=="folder"),c=i.sort(px(a)),d=r.sort(px(a));return[...c,...d]}function Y1(n,a){return typeof n=="string"?n.localeCompare(a,void 0,{numeric:!0}):typeof n=="object"?n.getTime()-a.getTime():(n??0)-(a??0)}function W1(n,a){return typeof n=="string"?-n.localeCompare(a,void 0,{numeric:!0}):typeof a=="object"?a.getTime()-n.getTime():(a??0)-(n??0)}function px({key:n,order:a}){const i=a==="asc"?Y1:W1;return(r,c)=>i(r[n],c[n])}function Oh(n,a){const i=n==="/"?1:n.split("/").length;return i>=a.length?null:a[i].id}function K1(n){return n.length>1?n[n.length-2].id:null}let Q1=class extends U1{constructor(a){const i={id:"/",name:"My files",open:!0,$level:1,parent:0,ext:"",type:"folder"};super([i]),this.parse(a,"/")}parse(a,i,r){!a||!a.length||(a.forEach(c=>this.parseId(c,r?i:void 0)),super.parse(a,i))}parseId(a,i){if(a.parent===0)return;const r=a.id,c=r.lastIndexOf("/");if(a.parent=i??(c===0?"/":r.slice(0,c)),a.name=r.slice(c+1),a.type=a.type||"file",a.type!=="folder"){const d=a.name.lastIndexOf("."),m=d!==-1?a.name.slice(d+1):"";a.ext=m!=="new"?m?.toLocaleLowerCase():""}}getParents(a){const i=[];let r=this.byId(a);if(!r)return i;for(;r.id!==0;)i.push(r),r=this.byId(r.parent);return i.reverse()}findFiles(a,i="/"){const r=[],c=a.toLocaleLowerCase();return this.eachChild(d=>{d.name.toLowerCase().indexOf(c)!==-1&&r.push(d)},i),r}add(a,i){const r=this.byId(a.parent||"/"),c=a.data?[...a.data]:null;a.data=null,super.add(a,i??r.data?r.data.length:0),c&&c.forEach(d=>this.add(d))}renameFiles(a,i,r){const c=this.byId(a),d=this.normalizeFile(c,i),m=[];return d.data?.forEach(p=>m.push(this.renameFiles(p.id,d.id,r))),m.length&&(d.data=m),r[a]=d.id,d}copyFiles(a,i,r){const c={};return a.forEach(d=>{const m=this.renameFiles(d,i,c);this.add(m),r&&this.remove(d),c[d]=m.id}),c}moveFiles(a,i){if(this.byId(a[0]).parent!==i)return this.copyFiles(a,i,!0)}serialize(a="/"){const i=[],r=this.byId(a);return r?(r.data?.forEach(c=>{const{id:d,date:m,type:p,size:v,lazy:g}=c,w={id:d,date:m,type:p??"file"};g&&(w.lazy=g),v&&(w.size=v),i.push(w);const y=this.serialize(d);y.length&&i.push(...y)}),i):null}normalizeFile(a,i){const r=a.name,c=r.lastIndexOf("."),d=c!==-1?r.slice(c+1):"",m=d?`.${d}`:"";let p=c!==-1?r.slice(0,c):r,v=i+(i==="/"?"":"/")+p;for(;this.byId(v+m);){const g=".new";v+=g,p+=g}return{...a,id:v+m,name:p+m,parent:i,ext:d.toLocaleLowerCase()}}},X1=class extends q1{in;_router;constructor(a){super({writable:a,async:!1});const i=[];for(let d=0;d<2;d++)i.push({in:["data",`panels.${d}.path`],out:[`panels.${d}._crumbs`],exec:m=>{const{data:p,panels:v}=this.getState(),g=[];g[d]={_crumbs:p.getParents(v[d].path)},this.setState({panels:g},m)}}),i.push({in:["data",`panels.${d}.path`,`panels.${d}._sorts`,"search"],out:[`panels.${d}._files`],exec:m=>{const{data:p,panels:v,search:g}=this.getState();let w;g?w=p.findFiles(g,v[d].path):w=p.byId(v[d].path)?.data||[];const{path:y,_sorts:b}=v[d];w=hx(w,b[y]);const C=[];C[d]={_files:w},this.setState({panels:C},m)}}),i.push({in:["data",`panels.${d}.selected`,`panels.${d}._sorts`],out:[`panels.${d}._selected`],exec:m=>{const{data:p,panels:v}=this.getState(),g=[];v[d].selected.forEach(j=>{const A=p.byId(j);A&&g.push(A)});const{path:w,_sorts:y}=v[d],b=hx(g,y[w]),C=[];C[d]={_selected:b},this.setState({panels:C},m)}});this._router=new G1(super.setState.bind(this),i,{data:d=>new Q1(d)});const r=this.in=new V1;r.on("select-file",({id:d,toggle:m,range:p,panel:v,type:g})=>{const{panels:w,activePanel:y}=this.getState();typeof v>"u"&&(v=y),d||(m=p=!1);let b=[...w[v].selected];if(m){const j=b.indexOf(d);j===-1?b.push(d):b.splice(j,1)}else if(p&&w[v]._lastSelected){const j=w[v]._files;let A=j.findIndex(R=>R.id==w[v]._lastSelected),T=j.findIndex(R=>R.id==d);T<A&&([A,T]=[T,A]);const k=j.slice(A,T+1).map(R=>R.id);b=[...new Set([...b,...k])]}else b=d?[d]:[];const C=[];C[v]={selected:b,_lastSelected:d,_selectNavigation:g==="navigation"},this.setState({panels:C})}),r.on("set-path",({id:d,panel:m,selected:p})=>{const{data:v,activePanel:g}=this.getState(),w=v.byId(d);if(w){const y=[];typeof m>"u"&&(m=g),y[m]={path:d},this.setState({panels:y}),r.exec("select-file",{panel:m}),p&&p.forEach(b=>r.exec("select-file",{id:b,panel:m,toggle:!0})),w.lazy&&r.exec("request-data",{id:d})}}),r.on("provide-data",({id:d,data:m})=>{const{mode:p,data:v}=this.getState(),g=v.byId(d);g&&(g.lazy||(g.data=[]),g.lazy=!1,v.parse(m,d,p==="search"),this.setState({data:v}))}),r.on("open-tree-folder",({id:d,mode:m})=>{const{data:p}=this.getState();p.update(d,{open:m}),this.setState({data:p})}),r.on("show-preview",({mode:d})=>{this.setState({preview:d})}),r.on("rename-file",d=>{const{id:m,name:p}=d,{data:v,panels:g}=this.getState(),w=v.byId(m);if(w.name!==p){w.name=p;const y=v.normalizeFile(w,w.parent);d.newId=y.id,y.data=null,v.add(y);let b={[m]:y.id};w.data?.forEach(j=>b={...v.moveFiles([j.id],y.id),...b});const C=g.map(j=>({selected:j.selected,_crumbs:j._crumbs,_lastSelected:j._lastSelected,_sorts:j._sorts}));v.remove(m),this._updatePanels(C,b),this.setState({data:v,panels:C})}}),r.on("create-file",d=>{const{file:m,parent:p}=d,{data:v}=this.getState(),g=v.normalizeFile(m,p);g.type=m.type||"file",d.newId=g.id,v.add(g),this.setState({data:v}),r.exec("select-file",{id:g.id})}),r.on("delete-files",({ids:d})=>{const{data:m,panels:p}=this.getState(),v=p.map(g=>({selected:g.selected,_crumbs:g._crumbs,_lastSelected:g._lastSelected,_sorts:g._sorts}));d.forEach(g=>m.remove(g)),this._updatePanels(v,{}),this.setState({data:m,panels:v})}),r.on("copy-files",d=>{const{ids:m,target:p}=d;if(this._isPlacedIntoSelf(m,p)){console.error("You cannot copy a folder into itself"),d.skipProvider=!0;return}const{data:v,panels:g,activePanel:w}=this.getState(),y=v.copyFiles(m,p);d.newIds=m.map(b=>y[b]),this.setState({data:v}),g[w].path==p&&(r.exec("select-file",{}),m.forEach(b=>{r.exec("select-file",{id:y[b],toggle:!0})}))}),r.on("move-files",d=>{const{ids:m,target:p}=d;if(this._isPlacedIntoSelf(m,p)){console.error("You cannot move a folder into itself"),d.skipProvider=!0;return}const{data:v,panels:g,activePanel:w}=this.getState(),y=v.moveFiles(m,p);if(y){d.newIds=m.map(C=>y[C]);const b=g.map(C=>({selected:C.selected,_crumbs:C._crumbs,_lastSelected:C._lastSelected,_sorts:C._sorts}));this._updatePanels(b,y,!0),this.setState({data:v,panels:b}),g[w].path==p&&(r.exec("select-file",{}),m.forEach(C=>{r.exec("select-file",{id:y[C],toggle:!0})}))}});let c=null;r.on("filter-files",({text:d})=>{if(!d){c&&this.setState({...c});return}r.exec("select-file",{});const{panels:m,mode:p}=this.getState();c||(c={panels:m,mode:p,search:""}),this.setState({mode:"search",search:d})}),r.on("set-mode",({mode:d})=>{const{activePanel:m}=this.getState(),p=[];p[m]={_selectNavigation:!1};const v={mode:d,search:"",panels:p};c=null,this.setState(v)}),r.on("set-active-panel",({panel:d})=>{this.setState({activePanel:d})}),r.on("sort-files",({key:d,order:m,panel:p,path:v})=>{const{activePanel:g,panels:w}=this.getState();p=p??g,v=v??w[p].path;const y=[];y[p]={_sorts:{...w[p]._sorts,[v]:{key:d,order:m}}},this.setState({panels:y})}),this.initOnce()}initOnce(){const a=[];for(let r=0;r<2;r++)a[r]=mx({_crumbs:[],_files:[],_selected:[],_sorts:{},path:"/",selected:[],...a[r]});const i={panels:mx(a),data:[],search:""};this._router.init(i)}init(a){const i={...a};this._router.init(i)}setState(a,i){return this._router.setState(a,i)}getFile(a){const{data:i}=this.getState();return i.byId(a)||null}serialize(a){const{data:i}=this.getState();return i.serialize(a)}_updatePanels(a,i,r){const{data:c}=this.getState();a.forEach(d=>{const m=[];d.selected.forEach(g=>{c.byId(g)?m.push(g):!r&&i[g]&&m.push(i[g])}),d.selected=m,c.byId(d._lastSelected)||(d._lastSelected=r?null:i[d._lastSelected]||null);const p={};Object.keys(d._sorts).forEach(g=>{c.byId(g)?p[g]=d._sorts[g]:i[g]&&!r&&(p[i[g]]=d._sorts[g])}),d._sorts=p;const v=d._crumbs[d._crumbs.length-1];v?.id!=="/"&&(i[v.id]?d.path=i[v.id]:c.byId(v.id)||(d.path="/"))})}_isPlacedIntoSelf(a,i){return a.some(r=>r===i||this.getState().data.getParents(i).some(c=>c.id===r))}};function Z1(n){switch(n){case"body":return[{icon:"wxi-content-paste",text:"Paste",hotkey:"Ctrl+V",id:"paste"}];case"add":return[{icon:"mdi mdi-folder-plus-outline",text:"Add new file",id:"add-file"},{icon:"mdi mdi-file-plus-outline",text:"Add new folder",id:"add-folder"},{icon:"mdi mdi-file-upload-outline",text:"Upload file",id:"upload",comp:"upload"}];case"multiselect":return[{icon:"wxi-content-copy",text:"Copy",hotkey:"Ctrl+C",id:"copy"},{icon:"wxi-content-cut",text:"Cut",hotkey:"Ctrl+X",id:"move"},{comp:"separator"},{icon:"wxi-close",text:"Delete",hotkey:"Delete",id:"delete"}];default:return[n==="folder"?null:{icon:"wxi-download",text:"Download",hotkey:"Ctrl+D",id:"download"},{icon:"wxi-content-copy",text:"Copy",hotkey:"Ctrl+C",id:"copy"},{icon:"wxi-content-cut",text:"Cut",hotkey:"Ctrl+X",id:"move"},{icon:"wxi-content-paste",text:"Paste",hotkey:"Ctrl+V",id:"paste"},{comp:"separator"},{icon:"wxi-edit",text:"Rename",hotkey:"Ctrl+R",id:"rename"},{icon:"wxi-close",text:"Delete",hotkey:"Delete",id:"delete"}].filter(a=>a!==null)}}function J1(n,a="data-id"){let i=n;for(!i.tagName&&n.target&&(i=n.target);i;){if(i.getAttribute&&i.getAttribute(a))return i;i=i.parentNode}return null}function eC(n,a="data-id"){const i=J1(n,a);return i?i.getAttribute(a):null}new Date().valueOf();function tC(n,a){const{api:i}=a;function r(d,m){const p=a.getPanel(),v=p.selected,g=m.ctrlKey||m.metaKey,w=m.shiftKey;let y;const b=v?.[0]?i.getFile(v[0]):null;v?.length?v.length>1?y=a.menuOptions("multiselect"):y=a.menuOptions(b.type,b):y=a.menuOptions("body");const C=`${g?"ctrl+":""}${w?"shift+":""}${d}`,j=y?y.find(T=>T.hotkey?.toLowerCase()===C):!1,A=a.performAction;if(j)switch(C){case"ctrl+c":A("copy");break;case"ctrl+x":A("move");break;case"ctrl+v":A("paste",b);break;case"delete":A("delete");break;case"ctrl+r":m.preventDefault(),A("rename",b);break;case"ctrl+d":m.preventDefault(),A("download",b);break;default:j.handler?.({context:b})}switch(d){case"enter":{if(g||w)break;const{_crumbs:T,_selectNavigation:k}=p;if(k){const R=K1(T);if(R){const E=Oh(R,T);i.exec("set-path",{id:R,selected:[E]})}}else if(v.length===1){const R=i.getFile(v[0]);R&&i.exec(R.type==="folder"?"set-path":"open-file",{id:R.id})}break}case"arrowup":case"arrowleft":{const{_files:T,_selected:k,path:R,_selectNavigation:E}=p;let $;if(k.length){const F=k.at(0).id,q=T.findIndex(I=>I.id===F);if(q!==-1){const I=q-1;T[I]?$=T[I].id:R!=="/"&&!(g||w)&&i.exec("select-file",{type:"navigation"})}}else{if(E)break;if(R!=="/"){i.exec("select-file",{type:"navigation"});break}$=T.at(0)?.id}$&&i.exec("select-file",{id:$,toggle:g,range:w});break}case"arrowdown":case"arrowright":{const{_files:T,_selected:k,path:R,_selectNavigation:E}=p;let $;if(k.length){const F=k.at(-1).id,q=T.findIndex(I=>I.id===F);if(q!==-1){const I=q+1;T[I]&&($=T[I].id)}}else{if(R!=="/"&&!E){i.exec("select-file",{type:"navigation"});break}$=T.at(0)?.id}$&&i.exec("select-file",{id:$,toggle:g,range:w});break}}}function c(d){const m=d.code.replace("Key","").toLowerCase();r(m,d),m=="tab"&&setTimeout(()=>{const p=document.activeElement;p.className.indexOf("table")!=-1&&i.exec("set-active-panel",{panel:+eC(p,"data-panel")})})}return n.addEventListener("keydown",c),{destroy:()=>{n.removeEventListener("keydown",c)}}}function nC(n,a="data-id"){let i=n;for(!i.tagName&&n.target&&(i=n.target);i;){if(i.getAttribute&&i.getAttribute(a))return i;i=i.parentNode}return null}function aC(n,a="data-id"){const i=n.getAttribute(a);return i?sC(i):null}function sC(n){if(n.startsWith(":"))return n.substring(1);const a=n*1;return isNaN(a)?n:a}function lC(){return{detect:()=>!0,addEvent:function(n,a,i){return n.addEventListener(a,i),()=>n.removeEventListener(a,i)},addGlobalEvent:function(n,a){return document.addEventListener(n,a),()=>document.removeEventListener(n,a)},getTopNode:function(){return window.document.body}}}var iC=lC();new Date().valueOf();function Fy(n){const[a,i]=f.useState(n),r=f.useRef(n);return f.useEffect(()=>{if(r.current!==n){if(Array.isArray(r.current)&&Array.isArray(n)&&r.current.length===0&&n.length===0)return;r.current=n,i(n)}},[n]),[a,i]}function rC(n,a,i){const[r,c]=f.useState(()=>a);return n||console.warn(`Writable ${i} is not defined`),f.useEffect(()=>n?n.subscribe(m=>{c(()=>m)}):void 0,[n]),r}function Ze(n,a){const i=n.getState(),r=n.getReactiveState();return rC(r[a],i[a],a)}function oC(n,a){const i=f.useRef(a);i.current=a;const[r,c]=f.useState(1);return f.useEffect(()=>n.subscribe(m=>{i.current=m,c(p=>p+1)}),[n]),[i.current,r]}function Ya(n,a){const i=n.getState(),r=n.getReactiveState();return oC(r[a],i[a])}function Hy(n){const a={};return n.split(";").forEach(i=>{const[r,c]=i.split(":");if(c){let d=r.trim();d.indexOf("-")&&(d=d.replace(/-([a-z])/g,(m,p)=>p.toUpperCase())),a[d]=c.trim()}}),a}function $y(n){let a=n,i=[];return{subscribe:p=>{i.push(p),p(a)},unsubscribe:p=>{i=i.filter(v=>v!==p)},set:p=>{a=p,i.forEach(v=>v(a))},update:p=>{a=p(a),i.forEach(v=>v(a))}}}function gx(n,a,i){function r(c){const d=nC(c);if(!d)return;const m=aC(d);if(typeof a=="function")return a(m,c);let p,v=c.target;for(;v!=d;){if(p=v.dataset?v.dataset.action:null,p&&a[p]){a[p](m,c);return}v=v.parentNode}a[i]&&a[i](m,c)}return iC.addEvent(n,i,r)}function cC(n,a){const i=[gx(n,a,"click")];return a.dblclick&&i.push(gx(n,a.dblclick,"dblclick")),()=>{i.forEach(r=>r())}}function Uy(n,a){return n.map((i,r)=>{const c=a(i,r);return i.data&&i.data.length&&(c.data=Uy(i.data,a)),c}).filter(Boolean)}function Py(n,a){const i=[];return n.forEach(r=>{if(r.data){const c=Py(r.data,a);c.length&&i.push({...r,data:c})}else a(r)&&i.push(r)}),i}function uC(n){return Uy(n,(a,i)=>{const r={...a,id:a.id||Nh()};return r.type&&(r.comp=r.type),r.comp==="separator"&&n[i-1]?.comp==="separator"?null:r})}const qy={};function dC(n){return qy[n]||n}function fC(n,a){qy[n]=a}function mC({onClick:n,onShow:a,option:i}){const r=f.useRef(null),c=f.useCallback(()=>{a(i.data?i.id:!1,r.current)},[a,i]),d=f.useCallback(p=>{if(i.data){p.stopPropagation(),a(i.id,r.current);return}n(p)},[n,a,i]),m=f.useMemo(()=>i&&i.comp?dC(i.comp):null,[i]);return l.jsxs("div",{ref:r,className:`wx-cDCz9rZQ wx-option ${i.css||""} ${i.disabled?"wx-disabled":""}`,"data-id":Sn(i.id),onMouseEnter:c,onClick:d,children:[i.icon?l.jsx("i",{className:`wx-cDCz9rZQ wx-icon ${i.icon}`}):null,i.comp?m?l.jsx(m,{item:i,option:i}):null:l.jsxs("span",{className:"wx-cDCz9rZQ wx-value",children:[" ",i.text," "]}),i.subtext?l.jsx("span",{className:"wx-cDCz9rZQ wx-subtext",children:i.subtext}):null,i.data?l.jsx("i",{className:"wx-cDCz9rZQ wx-sub-icon wxi-angle-right"}):null]})}function Ih({options:n,left:a=0,top:i=0,at:r="bottom",parent:c=null,mount:d=null,context:m=null,css:p="",onClick:v,onCancel:g}){const[w,y]=f.useState(-1e4),[b,C]=f.useState(-1e4),[j,A]=f.useState(20),[T,k]=f.useState(),R=f.useRef(null),[E,$]=f.useState(!1),[F,q]=f.useState(null),I=f.useCallback(()=>{const le=Ay(R.current,c,r,a,i);le&&(y(le.x),C(le.y),k(le.width));let V=le?.z??20;const z=c?t1(c):[];let K=0;for(const Q of z){const P=parseInt(getComputedStyle(Q).zIndex,10);P>K&&(K=P)}K>=V&&(V=K+1),A(V)},[c,r,a,i]);f.useEffect(()=>{d&&d(I)},[]);const _=f.useCallback(()=>{$(!1)},[]),fe=f.useCallback((le,V)=>{$(le),q(V)},[]),G=f.useMemo(()=>uC(n),[n]);f.useEffect(()=>{I()},[c,I]);const ue=f.useRef(v),Y=f.useRef(g),ae=f.useRef(c);return f.useEffect(()=>{ue.current=v},[v]),f.useEffect(()=>{Y.current=g},[g]),f.useEffect(()=>{ae.current=c},[c]),f.useEffect(()=>{if(!R.current)return;function le(V){Y.current?Y.current(V):ue.current&&ue.current({action:null,option:null})}return zs(R.current,{callback:le,modal:!0,parent:()=>ae.current}).destroy},[]),l.jsx("div",{ref:R,"data-wx-menu":"true",className:`wx-XMmAGqVx wx-menu ${p}`,style:{position:"absolute",top:b+"px",left:w+"px",width:T,zIndex:j},onMouseLeave:_,children:G.map(le=>l.jsxs(f.Fragment,{children:[le.comp==="separator"?l.jsx("div",{className:"wx-XMmAGqVx wx-separator"}):l.jsx(mC,{option:le,onShow:fe,onClick:V=>{if(!le.data&&!V.defaultPrevented){const z={context:m,action:le,option:le,event:V};le.handler&&le.handler(z),v&&v(z),V.stopPropagation()}}}),le.data&&E===le.id?l.jsx(Ih,{css:p,options:le.data,at:"right-overlap",parent:F,context:m,onClick:v,onCancel:g}):null]},le.id))})}const Gy=f.forwardRef(function(n,a){const{options:i,at:r="bottom",resolver:c=null,dataKey:d="contextId",filter:m=null,css:p="",children:v,onClick:g}=n,[w,y]=f.useState(null),[b,C]=f.useState(null),[j,A]=f.useState(0),[T,k]=f.useState(0),R=f.useRef(null),E=f.useMemo(()=>`data-${d.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,[d]),$=f.useMemo(()=>w!==null&&m?Py(i,_=>m(_,w)):i,[w,m,i]);function F(_){C(null),g&&g(_)}function q(_){if(R.current===_){R.current=null;return}C(null),g&&g({action:null,option:null})}const I=f.useCallback((_,fe)=>{if(!_){C(null);return}if(_.defaultPrevented)return;const G=_.target;if(G&&G.dataset&&G.dataset.menuIgnore)return;if(b&&b===G){C(null),_.preventDefault();return}A(_.clientX+1),k(_.clientY+1);let ue=typeof fe<"u"?fe:_c(G,E);c&&(ue=c(ue,_),!ue)||(y(ue),C(G),R.current=_.nativeEvent||_,_.preventDefault())},[b,E,c]);return f.useImperativeHandle(a,()=>({show:I}),[I]),l.jsxs(l.Fragment,{children:[v?l.jsx("span",{onClick:I,"data-menu-ignore":"true",children:typeof v=="function"?v():v}):null,b?l.jsx(Rh,{children:l.jsx(Ih,{css:p,at:r,top:T,left:j,parent:b,context:w,onClick:F,onCancel:q,options:$},b)}):null]})}),hC=f.forwardRef(function(n,a){const{options:i,at:r="bottom",css:c="",children:d,onClick:m}=n,[p,v]=f.useState(null),g=f.useRef(null);function w(j){v(null),m&&m(j)}function y(j){if(g.current===j){g.current=null;return}v(null),m&&m({action:null,option:null})}const b=f.useCallback(j=>{v(j.target),g.current=j.nativeEvent||j,j.preventDefault()},[]);f.useImperativeHandle(a,()=>({show:b}),[b]);function C(j){let A=j.target;for(;!A.dataset.menuIgnore;)v(A),A=A.parentNode}return l.jsxs(l.Fragment,{children:[l.jsx("span",{onClick:C,"data-menu-ignore":"true",children:d}),p?l.jsx(Rh,{children:l.jsx(Ih,{css:c,at:r,parent:p,options:i,onClick:w,onCancel:y})}):null]})}),pC=f.forwardRef(function(n,a){const{options:i,at:r="bottom",resolver:c=null,dataKey:d="contextId",filter:m=null,css:p="",children:v,onClick:g}=n,w=f.useRef(null),y=f.useCallback((b,C)=>{w.current.show(b,C)},[]);return f.useImperativeHandle(a,()=>({show:y}),[y]),l.jsxs(l.Fragment,{children:[v?l.jsx("span",{onContextMenu:y,"data-menu-ignore":"true",children:v}):null,l.jsx(Gy,{css:p,at:r,options:i,resolver:c,dataKey:d,filter:m,ref:w,onClick:g})]})}),gC={uploader:{B:"B",KB:"KB",MB:"MB",GB:"GB",TB:"TB",PB:"PB",EB:"EB","Drop files here or":"Drop files here or","select files":"select files"}};let vC=class{constructor(a,i,r,c,d){this.setFiles=a,this.setReady=i,this.setSignal=r,this.setDrag=c,d&&d.length&&this.setFiles(d)}open(a){this.setSignal(["click",a||{}])}getState(){let a="server";const i=this.files;for(let r=0;r<i.length;r++){if(i[r].status==="client")return"client";i[r].status==="error"&&(a="error")}return a}droparea(a,i){i=i||{};const r=()=>{i.dragEnter&&i.dragEnter(),this.setDrag(!0)},c=()=>{i.dragLeave&&i.dragLeave(),this.setDrag(!1)},d=p=>{p.preventDefault()},m=p=>{p.preventDefault(),this.setDrag(!1),this.setSignal(["drop",i,p]),i.dragLeave&&i.dragLeave(),i.drop&&i.drop()};return a.addEventListener("dragenter",r),a.addEventListener("dragleave",c),a.addEventListener("dragover",d,!0),a.addEventListener("drop",m,!0),()=>{a.removeEventListener("dragenter",r),a.removeEventListener("dragleave",c),a.removeEventListener("dragover",d,!0),a.removeEventListener("drop",m,!0)}}updateFile(a,i){const r=this.files.findIndex(d=>d.id===a);if(r===-1)return;const c=[...this.files];return c[r]={...c[r],...i},this.files=c,this.setFiles(this.files),this.files[r]}deleteFile(a){this.files=this.files.filter(i=>i.id!==a),this.setFiles(this.files)}addFile(a,i){i?this.files=[...this.files,a]:this.files=[a],this.setFiles(this.files)}deleteAll(){this.files=[],this.setFiles(this.files)}};function Vy(n){const[a,i]=f.useState([]),[r,c]=f.useState(Promise.resolve(null)),[d,m]=f.useState(null),[p,v]=f.useState(!1),g=f.useRef();return g.current||(g.current=new vC(i,c,m,v,n)),g.current.files=a,g.current.ready=r,g.current.signal=d,g.current.drag=p,g.current}function xC(n,a){{if(n){const i=n.getGroup(a);if(i)return i}return Ic(gC).getGroup(a)}}const yC=()=>Math.random().toString(36).substr(2,9),wC=({data:n,accept:a="",multiple:i=!0,folder:r=!1,uploadURL:c="",apiOnly:d=!1,disabled:m=!1,children:p,onChange:v,onUpload:g})=>{const w=f.useRef(null),y=f.useRef(null),[b,C]=f.useState({}),j=Vy(),A=n||j,T=f.useContext(jn.i18n),k=xC(T,"uploader");f.useEffect(()=>{w.current&&r&&(w.current.webkitdirectory=!0)},[r]),f.useEffect(()=>{if(!d&&y.current&&!m)return A.droparea(y.current)},[d,m,y]);const R=G=>{const ue=new FormData;return ue.append("upload",G.file),fetch(c,{method:"POST",body:ue}).then(Y=>Y.json()).then(Y=>({id:G.id,...Y}),()=>({id:G.id,status:"error"})).catch(Y=>(console.log(Y),{id:G.id,status:"error"}))},E=(G,ue)=>{const Y=A.updateFile(G,ue),ae={...Y,status:A.getState()};Y&&Y.uploaded&&Y.uploaded(ae),g&&g(ae),Y.temp&&A.deleteFile(Y.id)},$=G=>{if(!G)return;const ue=typeof c=="function"?c(G):R(G);A.setReady(ue.then(Y=>{Y.status=Y.status||"server",E(G.id,Y)}).catch(Y=>{E(G.id,{status:"error",error:Y})}))},F=(G,ue)=>{const Y={...ue||b,id:yC(),status:"client",name:G.name,file:G};Y.selected&&Y.selected(Y),v&&v(Y),A.addFile(Y,i),$(Y),w.current&&(w.current.value="")},q=(G,ue,Y)=>{G.isFile?G.file(ae=>{F(ae,Y)}):G.isDirectory&&G.createReader().readEntries(ae=>{ae.forEach(le=>{q(le,ue+le.name+"/",Y)})})},I=G=>{Array.from(G.target.files).forEach(ue=>F(ue))},_=(G,ue)=>{Array.from(G.dataTransfer.items).forEach(Y=>{const ae=Y.webkitGetAsEntry();ae&&q(ae,"",ue)})},fe=()=>{w.current&&w.current.click()};return f.useEffect(()=>{if(A.signal){const[G,ue,Y]=A.signal;C(ue),G==="click"?fe():G==="drop"&&_(Y,ue),A.setSignal(null)}},[A.signal]),d?l.jsxs(l.Fragment,{children:[l.jsx("input",{type:"file",className:"wx-at1A8tb8 wx-input",ref:w,onChange:I,accept:a,multiple:i,disabled:m}),p]}):l.jsxs("div",{className:`wx-at1A8tb8 wx-label ${A.drag?"wx-active":""} ${m?"wx-disabled":""}`,ref:y,children:[l.jsx("input",{type:"file",className:"wx-at1A8tb8 wx-input",ref:w,onChange:I,accept:a,multiple:i,disabled:m}),p||l.jsx("div",{className:"wx-at1A8tb8 wx-dropzone",children:l.jsxs("span",{children:[k("Drop files here or")," ",l.jsx("span",{className:"wx-at1A8tb8 wx-action",onClick:fe,children:k("select files")})]})})]})};new Date().valueOf();function bC(n,a){if(Object.keys(n).length!==Object.keys(a).length)return!1;for(const i in a){const r=n[i],c=a[i];if(!Fd(r,c))return!1}return!0}function Fd(n,a){if(typeof n=="number"||typeof n=="string"||typeof n=="boolean"||n===null)return n===a;if(typeof n!=typeof a||(n===null||a===null)&&n!==a||n instanceof Date&&a instanceof Date&&n.getTime()!==a.getTime())return!1;if(typeof n=="object")if(Array.isArray(n)&&Array.isArray(a)){if(n.length!==a.length)return!1;for(let i=n.length-1;i>=0;i--)if(!Fd(n[i],a[i]))return!1;return!0}else return bC(n,a);return n===a}function ch(n){if(typeof n!="object"||n===null)return n;if(n instanceof Date)return new Date(n);if(n instanceof Array)return n.map(ch);const a={};for(const i in n)a[i]=ch(n[i]);return a}var Yy=2,SC=class{constructor(n){n&&(this._writable=n.writable,this._async=n.async),this._values={},this._state={}}setState(n,a=0){const i={};return this._wrapProperties(n,this._state,this._values,"",i,a),i}getState(){return this._values}getReactive(){return this._state}_wrapProperties(n,a,i,r,c,d){for(const m in n){const p=a[m],v=i[m],g=n[m];if(p&&(v===g&&typeof g!="object"||g instanceof Date&&v instanceof Date&&v.getTime()===g.getTime()))continue;const w=r+(r?".":"")+m;p?(p.__parse(g,w,c,d)&&(i[m]=g),d&Yy?c[w]=p.__trigger:p.__trigger()):(g&&g.__reactive?a[m]=this._wrapNested(g,g,w,c):a[m]=this._wrapWritable(g),i[m]=g),c[w]=c[w]||null}}_wrapNested(n,a,i,r){const c=this._wrapWritable(n);return this._wrapProperties(n,c,a,i,r,0),c.__parse=(d,m,p,v)=>(this._wrapProperties(d,c,a,m,p,v),!1),c}_wrapWritable(n){const a=[],i=function(){for(let r=0;r<a.length;r++)a[r](n)};return{subscribe:r=>(a.push(r),this._async?setTimeout(r,1,n):r(n),()=>{const c=a.indexOf(r);c>=0&&a.splice(c,1)}),__trigger:()=>{a.length&&(this._async?setTimeout(i,1):i())},__parse:function(r){return n=r,!0}}}},CC=class{constructor(n,a,i,r){typeof n=="function"?this._setter=n:this._setter=n.setState.bind(n),this._routes=a,this._parsers=i,this._prev={},this._triggers=new Map,this._sources=new Map,this._routes.forEach(c=>{c.in.forEach(d=>{const m=this._triggers.get(d)||[];m.push(c),this._triggers.set(d,m)}),c.out.forEach(d=>{const m=this._sources.get(d)||{};c.in.forEach(p=>m[p]=!0),this._sources.set(d,m)})}),this._routes.forEach(c=>{c.length=Math.max(...c.in.map(d=>Wy(d,this._sources,1)))}),this._bus=r}init(n){const a={};for(const i in n)if(this._prev[i]!==n[i]){const r=this._parsers[i];a[i]=r?r(n[i]):n[i]}this._prev=this._prev?{...this._prev,...n}:{...n},this.setState(a),this._bus&&this._bus.exec("init-state",a)}setStateAsync(n){const a=this._setter(n,Yy);return this._async?Object.assign(this._async.signals,a):this._async={signals:a,timer:setTimeout(this._applyState.bind(this),1)},a}_applyState(){const n=this._async;if(n){this._async=null,this._triggerUpdates(n.signals,[]);for(const a in n.signals){const i=n.signals[a];i&&i()}}}setState(n,a=[]){const i=this._setter(n);return this._triggerUpdates(i,a),i}_triggerUpdates(n,a){const i=Object.keys(n),r=!a.length;a=a||[];for(let c=0;c<i.length;c++){const d=i[c],m=this._triggers.get(d);m&&m.forEach(p=>{a.indexOf(p)==-1&&a.push(p)})}r&&this._execNext(a)}_execNext(n){for(;n.length;){n.sort((i,r)=>i.length<r.length?1:-1);const a=n[n.length-1];n.splice(n.length-1),a.exec(n)}}};function Wy(n,a,i){const r=a.get(n);if(!r)return i;const c=Object.keys(r).map(d=>Wy(d,a,i+1));return Math.max(...c)}var jC=class{constructor(){this._nextHandler=null,this._handlers={},this._tag=new WeakMap,this.exec=this.exec.bind(this)}on(n,a,i){let r=this._handlers[n];r?i&&i.intercept?r.unshift(a):r.push(a):r=this._handlers[n]=[a],i&&i.tag&&this._tag.set(a,i.tag)}intercept(n,a,i){this.on(n,a,{...i,intercept:!0})}detach(n){for(const a in this._handlers){const i=this._handlers[a];for(let r=i.length-1;r>=0;r--)this._tag.get(i[r])===n&&i.splice(r,1)}}async exec(n,a){const i=this._handlers[n];if(i)for(let r=0;r<i.length;r++){const c=i[r](a);if(c===!1||c&&c.then&&await c===!1)return}return this._nextHandler&&await this._nextHandler.exec(n,a),a}setNext(n){return this._nextHandler=n}};function kC(n){return a=>a[n]}function AC(n){return(a,i)=>a[n]=i}function bi(n,a){return(a.getter||kC(a.id))(n)}function Lm(n,a,i){return(a.setter||AC(a.id))(n,i)}function MC(n,a){const i=document.createElement("a");i.href=URL.createObjectURL(n),i.download=a,document.body.appendChild(i),i.click(),document.body.removeChild(i)}function wi(n,a){let i=bi(n,a)??"";return a.template?i=a.template(i,n,a):a.optionsMap&&(Array.isArray(i)?i=i.map(r=>a.optionsMap.get(r)).join(", "):i=a.optionsMap.get(i)),typeof i>"u"?"":i+""}function NC(n,a){const i=/\n|"|;|,/;let r="";const c=a.rows||`
|
|
11
|
+
`,d=a.cols||" ",m=n._columns,p=n.flatData;a.header!==!1&&m[0].header&&(r=vx("header",m,r,d,c));for(let v=0;v<p.length;v++){const g=[];for(let w=0;w<m.length;w++){let y=wi(p[v],m[w]);i.test(y)&&(y='"'+y.replace(/"/g,'""')+'"'),g.push(y)}r+=(r?c:"")+g.join(d)}return a.footer!==!1&&m[0].footer&&(r=vx("footer",m,r,d,c)),r}function vx(n,a,i,r,c){const d=/\n|"|;|,/;for(let m=0;m<a[0][n].length;m++){const p=[];for(let v=0;v<a.length;v++){let g=(a[v][n][m].text||"")+"";d.test(g)&&(g='"'+g.replace(/"/g,'""')+'"'),p.push(g)}i+=(i?c:"")+p.join(r)}return i}const TC="portrait",RC=100,EC="a4",DC={a3:{width:11.7,height:16.5},a4:{width:8.27,height:11.7},letter:{width:8.5,height:11}};function LC(n,a){const i=[];let r=[],c=0;const d=n.filter(p=>!p.hidden),m=_C(a);return d.forEach((p,v)=>{c+p.width<=m?(c+=p.width,r.push(p)):(r.length&&i.push(r),r=[p],c=p.width),v===d.length-1&&r.length&&i.push(r)}),i}function xx(n,a,i){const r=[];return n.forEach((c,d)=>{const m=c[a];for(let p=0;p<i.length;p++){r[p]||(r[p]=[]);const v={...m[p]};if(r[p][d]!==null){if(!d&&!v.rowspan&&!v.colspan){let g=1,w=n[d+g][a][p],y=v.width;for(;!w.rowspan&&!w.colspan;)g++,w=n[d+g][a][p],y+=w.width;v.colspan=g,v.width=y,v.height=i[p]}if(r[p].push(v),!v.collapsed&&v.colspan>1){let g=v.colspan-1;if(v.colspan+d>n.length){const w=v.colspan-(v.colspan+d-n.length);v.colspan=w,v.width=n.slice(d,d+g+1).reduce((y,b)=>y+b.width,0),w>1&&(g=w-1)}for(let w=0;w<g;w++)r[p].push(null)}if(v.rowspan>1){const g=v.rowspan;for(let w=1;w<g;w++)r[p+w]||(r[p+w]=[]),r[p+w].push(null)}}}if(c.collapsed)for(let p=0;p<r.length;p++){const v=r[p],g=v[d];if(g&&g.collapsed){if(v[d]=null,!p)break}else{const w=g||v.findLast(y=>y?.colspan>=1);w&&(w.colspan=w.colspan-1,w.width=w.width-c.width)}}}),r.map(c=>c.filter(d=>d&&d.colspan!==0))}function _C(n){const{mode:a,ppi:i,paper:r}=n,{width:c,height:d}=DC[r];return zC(a==="portrait"?c:d,i)}function zC(n,a){return n*a}function OC(n={}){const{mode:a,ppi:i,paper:r}=n;return{mode:a||TC,ppi:i||RC,paper:r||EC}}function Ky(n,a){return n.flexgrow?`min-width:${a}px;width:auto`:`width:${n.width}px; max-width:${n.width}px; height:${n.height}px`}function IC(n,a,i){let r=n[i.id];if(i.filter.type==="richselect"&&r){const c=i.filter.config?.options||a.find(({id:d})=>d==i.id).options;c&&(r=c.find(({id:d})=>d==r).label)}return r??""}const yx=["resize-column","hide-column","update-cell"],BC=["delete-row","update-row","update-cell"],FC=["move-item"],HC=["resize-column","move-item"];class $C{undo=[];redo=[];progress={};in;getState;setState;_previousValues={};constructor(a,i,r){this.in=a,this.getState=i,this.setState=r,this.setHandlers(),this.resetStateHistory()}getHandlers(){return{"add-row":{handler:a=>({action:"delete-row",data:{id:a.id},source:{action:"add-row",data:a}})},"delete-row":{handler:a=>{const{id:i}=a,{data:r}=this.getPrev(),c=r.findIndex(d=>d.id===i);return{action:"add-row",data:{id:i,row:r[c],before:c<r.length-1?r[c+1].id:void 0},source:{action:"delete-row",data:a}}}},"update-cell":{handler:a=>{const{id:i,column:r}=a,c=this.getRow(i),d=this.getColumn(r),m=bi(c,d);return Fd(m,a.value)?null:{action:"update-cell",data:{id:i,column:r,value:m},source:{action:"update-cell",data:a}}}},"update-row":{handler:a=>{const{id:i,row:r}=a,c=this.getRow(i);for(const d in r)Object.keys(c).includes(d)||(c[d]=void 0);return{action:"update-row",data:{id:i,row:c},source:{action:"update-row",data:a}}}},"copy-row":{handler:a=>{const{id:i}=a,{data:r}=this.getState(),c=r.findIndex(m=>m.id===i),d=r[c];return{action:"delete-row",data:{id:i},source:{action:"add-row",data:{id:i,row:d,before:c<r.length-1?r[c+1].id:void 0}}}}},"resize-column":{handler:a=>{const{id:i,width:r}=a,c=this.getColumn(i),{_sizes:d}=this.getState();return{action:"resize-column",data:{id:i,width:c.width??d.columnWidth},source:{action:"resize-column",data:{id:i,width:r}}}}},"hide-column":{handler:a=>{const{id:i}=a,r=this.getColumn(i);return{action:"hide-column",data:{id:i,mode:r.hidden},source:{action:"hide-column",data:a}}}},"collapse-column":{handler:a=>{const{id:i,row:r,mode:c}=a;return{action:"collapse-column",data:{id:i,row:r,mode:typeof c=="boolean"?!c:c},source:{action:"collapse-column",data:a}}}},"move-item":{handler:a=>{const{id:i,target:r,mode:c}=a,{flatData:d}=this.getPrev(),m=d.findIndex(p=>p.id===i);return{action:"move-item",data:{id:i,target:d[m+(m?-1:1)].id,mode:m?"after":"before"},source:{action:"move-item",data:{id:i,target:r,mode:c}}}}},"open-row":{handler:a=>{const{id:i,nested:r}=a;return{action:"close-row",data:{id:i,nested:r},source:{action:"open-row",data:a}}}},"close-row":{handler:a=>{const{id:i,nested:r}=a;return{action:"open-row",data:{id:i,nested:r},source:{action:"close-row",data:a}}}}}}resetHistory(){this.undo=[],this.redo=[],this.progress={},this.resetStateHistory()}getPrev(){return this._previousValues}setHandlers(){const a=this.getHandlers();for(const i in a)this.in.intercept(i,r=>{if(!(r.eventSource==="undo"||r.eventSource==="redo"||r.skipUndo)){if(HC.includes(i)){(r.inProgress&&!this.progress[i]||typeof r.inProgress!="boolean")&&(FC.includes(i)&&this.setPrev("flatData"),yx.includes(i)&&this.setPrev("columns")),this.progress[i]=r.inProgress;return}BC.includes(i)&&this.setPrev("data"),yx.includes(i)&&this.setPrev("columns")}}),this.in.on(i,r=>{if(r.eventSource==="undo"||r.eventSource==="redo"||r.skipUndo||r.inProgress)return;const c=a[i].handler(r);c&&this.addToHistory(c)})}setPrev(a){this._previousValues[a]=ch(this.getState()[a])}addToHistory(a){this.undo.push(a),this.redo=[],this.setStateHistory()}handleUndo(){if(!this.undo.length)return;const a=this.undo.pop();this.redo.push({...a.source,source:a}),this.in.exec(a.action,{...a.data,eventSource:"undo"}),this.setStateHistory()}handleRedo(){if(!this.redo.length)return;const a=this.redo.pop();this.undo.push({...a.source,source:a}),this.in.exec(a.action,{...a.data,eventSource:"redo"}),this.setStateHistory()}resetStateHistory(){this.setState({history:{undo:0,redo:0}})}setStateHistory(){this.setState({history:{undo:this.undo.length,redo:this.redo.length}})}getRow(a){const{data:i}=this.getPrev();return this.getState().tree?this.getTreeRow(i,a):i.find(r=>r.id===a)}getTreeRow(a,i){for(let r=0;r<a.length;r++){if(a[r].id===i)return a[r];if(a[r].data){const c=this.getTreeRow(a[r].data,i);if(c)return c}}return null}getColumn(a){const{columns:i}=this.getPrev();return i.find(r=>r.id===a)}}function Qy(n,a){return typeof n>"u"||n===null?-1:typeof a>"u"||a===null?1:n===a?0:n>a?1:-1}function UC(n,a){return-Qy(n,a)}function PC(n,a){if(typeof a.sort=="function")return function(r,c){const d=a.sort(r,c);return n==="asc"?d:-d};const i=n==="asc"?Qy:UC;return function(r,c){return i(bi(r,a),bi(c,a))}}function qC(n,a){if(!n||!n.length)return;const i=n.map(r=>{const c=a.find(d=>d.id==r.key);return PC(r.order,c)});return n.length===1?i[0]:function(r,c){for(let d=0;d<i.length;d++){const m=i[d](r,c);if(m!==0)return m}return 0}}const ld=28,GC=20;function VC(){if(typeof document>"u")return"willow";const n=document.querySelector('[class^="wx"][class$="theme"]');return n?n.className.substring(3,n.className.length-6):"willow"}function Rd(n,a,i,r,c){const d=document.createElement("div"),m=document.createElement("div"),p=document.body;c=c?`${c}px`:"auto";let v,g;m.className=a,d.classList.add(`wx-${i}-theme`),d.style.cssText=`height:auto;position:absolute;top:0px;left:100px;overflow:hidden;width=${c};white-space:nowrap;`,d.appendChild(m),p.appendChild(d),typeof n!="object"&&(n=[n]);for(let w=0;w<n.length;w++){m.innerText=n[w]+"";const y=d.getBoundingClientRect(),b=Math.ceil(y.width)+(r&&r.length?r[w]:0),C=Math.ceil(y.height);v=Math.max(v||0,b),g=Math.max(g||0,C)}return d.remove(),{width:v,height:g}}function wx(n,a,i,r,c){const d=[];for(let m=0;m<n.length;m++){const p=n[m][a],v=p.length;for(let g=0;g<v;g++){const{text:w,vertical:y,collapsed:b,rowspan:C,css:j}=p[g];if(!w){d[g]=Math.max(d[g]||0,r);continue}let A=0;if(y&&!b){let T=`wx-measure-cell-${a}`;if(T+=j?` ${j}`:"",A=Rd(w,T,c).width,(C>1||!p[g+1])&&i>g+1){const k=C||i-g,R=d.slice(g,g+k).reduce((E,$)=>E+$,0);if(R<A){const E=Math.ceil((A-R)/k);for(let $=g;$<g+k;$++)d[$]=(d[$]||r)+E}continue}}d[g]=Math.max(d[g]||r,A)}}return d}function YC(n,a,i){const r=[],c=[];let d="wx-measure-cell-body";d+=n.css?` ${n.css}`:"";for(let m=0;m<a.length;m++){const p=a[m],v=wi(p,n);v&&(r.push(v),n.treetoggle?c.push(a[m].$level*ld+(a[m].$count?ld:0)+(n.draggable?ld:0)):n.draggable&&c.push(ld))}return Rd(r,d,i,c).width}function WC(n,a){const i="wx-measure-cell-header",r=n.sort?GC:0;let c=n.header;if(typeof c=="string")return Rd(c,i,a).width+r;let d;Array.isArray(c)||(c=[c]);for(let m=0;m<c.length;m++){const p=c[m],v=typeof p=="string"?p:p.text,g=i+(typeof p=="string"?"":` ${p.css}`);let w=Rd(v,g,a).width;m===c.length-1&&(w+=r),d=Math.max(d||0,w)}return d}const KC={text:(n,a)=>n?n.toString().toLowerCase().indexOf(a.toLowerCase())!==-1:!a,richselect:(n,a)=>typeof a!="number"&&!a?!0:n==a,datepicker:(n,a)=>a?n&&XC(n,a):!0,multiselect:(n,a)=>!a||a?.length===0?!0:Array.isArray(n)?n?.some(i=>a.includes(i)):n&&a.includes(n)};function Xy(n){return KC[n]}function QC(n,a){const i=[];for(const r in n){const c=a.find(v=>v.id==r),{config:d,type:m}=c.header.find(v=>v.filter).filter,p=n[r];i.push(v=>{const g=bi(v,c);return d?.handler?d.handler(g,p):Xy(m)(g,p)})}return r=>{for(let c=0;c<i.length;c++)if(!i[c](r))return!1;return!0}}function XC(n,a){return n.getFullYear()===a.getFullYear()&&n.getMonth()===a.getMonth()&&n.getDate()===a.getDate()}let ZC=class extends SC{in;_router;_branches;_xlsxWorker;_historyManager;constructor(a){super({writable:a,async:!1});const i={rowHeight:37,columnWidth:160,headerHeight:36,footerHeight:36};this._router=new CC(super.setState.bind(this),[{in:["columns","sizes","_skin"],out:["_columns","_sizes"],exec:c=>{const{columns:d,sizes:m,_skin:p}=this.getState(),v=this.copyColumns(d),g=v.reduce((b,C)=>Math.max(C.header.length,b),0),w=v.reduce((b,C)=>Math.max(C.footer.length,b),0);v.forEach(this.setCollapsibleColumns);const y=this.normalizeSizes(v,m,g,w,p);for(let b=0;b<v.length;b++)this.normalizeColumns(v,b,"header",g,y),this.normalizeColumns(v,b,"footer",w,y);this.setState({_columns:v,_sizes:y},c)}},{in:["data","tree","_filterIds"],out:["flatData","_rowHeightFromData"],exec:c=>{const{data:d,tree:m,dynamic:p,_filterIds:v}=this.getState(),g=v&&new Set(v),w=m?this.flattenRows(d,[],v):g?d.filter(b=>g.has(b.id)):d,y=!p&&w.some(b=>b.rowHeight);this.setState({flatData:w,_rowHeightFromData:y},c)}}],{sizes:c=>({...i,...c})});const r=this.in=new jC;r.on("close-editor",({ignore:c})=>{const{editor:d}=this.getState();d&&(c||r.exec("update-cell",d),this.setState({editor:null}))}),r.on("open-editor",({id:c,column:d})=>{let m=this.getState().editor;m&&r.exec("close-editor",{});const p=this.getRow(c),v=d?this.getColumn(d):this.getNextEditor(p);if(v?.editor){let g=v.editor;if(typeof g=="function"&&(g=g(p,v)),!g)return;m={column:v.id,id:c,value:bi(p,v)??"",renderedValue:wi(p,v),type:g.type||g},typeof g=="object"&&g.config&&(m.config=g.config,g.config.options&&(m.options=g.config.options)),v.options&&!m.options&&(m.options=v.options),this.setState({editor:m})}}),r.on("editor",({value:c})=>{let d=this.getState().editor;if(d){d={...d},d.value=c;const m=this.getColumn(d.column),p={...this.getRow(d.id)};Lm(p,m,c),d.renderedValue=wi(p,m),this.setState({editor:d})}}),r.on("add-row",c=>{const d=this.getState();let{data:m}=d;const{select:p,_filterIds:v}=d,{row:g,before:w,after:y,select:b}=c;if(c.id=g.id=c.id||g.id||id(),w||y){const j=w||y,A=m.findIndex(T=>T.id===j);m=[...m],m.splice(A+(y?1:0),0,c.row)}else m=[...m,c.row];const C={data:m};v&&(C._filterIds=[...v,c.id]),this.setState(C),!(typeof b=="boolean"&&!b)&&(b||p)&&r.exec("select-row",{id:g.id,show:!0})}),r.on("delete-row",c=>{const{data:d,selectedRows:m,focusCell:p,editor:v}=this.getState(),{id:g}=c,w={data:d.filter(y=>y.id!==g)};this.isSelected(g)&&(w.selectedRows=m.filter(y=>y!==g)),v?.id===g&&(w.editor=null),this.setState(w),p?.row===g&&this.in.exec("focus-cell",{eventSource:"delete-row"})}),r.on("update-cell",c=>{const d=this.getState();let{data:m}=d;m=[...m];const{tree:p}=d,{id:v,column:g,value:w}=c,y=this.getColumn(g);if(p){const b={...this._branches[v]};Lm(b,y,w);const C=this.updateTreeRow(b);b.$parent===0&&(m=C)}else{const b=m.findIndex(j=>j.id===v),C={...m[b]};Lm(C,y,w),m[b]=C}this.setState({data:m})}),r.on("update-row",c=>{let{data:d}=this.getState();const{id:m,row:p}=c,v=d.findIndex(g=>g.id===m);d=[...d],d[v]={...d[v],...p},this.setState({data:d})}),r.on("select-row",({id:c,toggle:d,range:m,mode:p,show:v,column:g})=>{const w=this.getState(),{focusCell:y}=w;let{selectedRows:b}=w;if(b.length||(m=d=!1),m){const{data:C}=this.getState();let j=C.findIndex(T=>T.id===b[b.length-1]),A=C.findIndex(T=>T.id===c);j>A&&([j,A]=[A,j]),C.slice(j,A+1).forEach(T=>{this.isSelected(T.id)||b.push(T.id)})}else if(d&&this.isSelected(c)){if(p===!0)return;b=b.filter(C=>C!==c)}else if(d){if(p===!1)return;b.push(c)}else b=[c];this.setState({selectedRows:[...b]}),y?.row!==c&&this.in.exec("focus-cell",{eventSource:"select-row"}),v&&this.in.exec("scroll",{row:c,column:g})}),this.in.on("focus-cell",c=>{const{row:d,column:m,eventSource:p}=c,{_columns:v,split:g}=this.getState();d&&m?(this.setState({focusCell:{row:d,column:m}}),p!=="click"&&((!g.left||v.findIndex(w=>w.id===c.column)>=g.left)&&(!g.right||v.findIndex(w=>w.id===c.column)<v.length-g.right)?this.in.exec("scroll",{row:d,column:m}):this.in.exec("scroll",{row:d}))):this.setState({focusCell:null})}),r.on("resize-column",c=>{const{id:d,auto:m,maxRows:p,inProgress:v}=c;if(v===!1)return;let g=c.width||0;const w=[...this.getState().columns],y=this.getColumn(d);if(m){if(m==="data"||m===!0){const{flatData:b,_skin:C}=this.getState();let j=b.length;p&&(j=Math.min(p,j));const A=b.slice(0,j);g=YC(y,A,C)}if(m==="header"||m===!0){const{_skin:b}=this.getState();g=Math.max(WC(y,b),g)}}y.width=Math.max(17,g),delete y.flexgrow,this.setState({columns:w})}),r.on("hide-column",c=>{const{id:d,mode:m}=c,p=[...this.getState().columns],v=this.getColumn(d),g=p.reduce((w,y)=>w+(y.hidden?0:1),0);!m||g>1?(v.hidden=!v.hidden,this.setState({columns:p})):c.skipUndo=!0}),r.on("sort-rows",c=>{const{key:d,add:m,sort:p}=c,v=this.getState(),{columns:g,data:w,tree:y}=v;if(p){const R=[...w];R.sort(p),this.setState({data:R});return}const{order:b="asc"}=c;let C=v.sortMarks;const j=Object.keys(C),A=j.length;!m||!A||A===1&&C[d]?C={[d]:{order:b}}:(A===1&&(C[j[0]]={...C[j[0]],index:0}),C={...C,[d]:{order:b,index:typeof m=="number"?m:C[d]?.index??A}});const T=Object.keys(C).sort((R,E)=>C[R].index-C[E].index).map(R=>({key:R,order:C[R].order}));this.setState({sortMarks:C});const k=qC(T,g);if(k){const R=[...w];y?this.sortTree(R,k):R.sort(k),this.setState({data:R})}}),r.on("filter-rows",c=>{const{value:d,key:m,filter:p}=c;if(!Object.keys(c).length){this.setState({filterValues:{},_filterIds:null});return}const v=this.getState(),{data:g,tree:w,_columns:y}=v;let b=v.filterValues;const C={};m&&(b={...b,[m]:d},C.filterValues=b);const j=p??QC(b,y);let A=[];w?A=this.filterTree(g,j,A):g.forEach(T=>{j(T)&&A.push(T.id)}),C._filterIds=A,this.setState(C)}),r.on("collapse-column",c=>{const{id:d,row:m,mode:p}=c,v=[...this.getState().columns],g=this.getColumn(d).header,w=Array.isArray(g)?g[m]:g;typeof w=="object"&&(w.collapsed=p??!w.collapsed,this.setState({columns:v}))}),r.on("move-item",c=>{const{id:d,inProgress:m}=c;let{target:p,mode:v="after"}=c;const{data:g,flatData:w,tree:y}=this.getState(),b=w.findIndex(A=>A.id===d);let C;if(v==="up"||v==="down"){if(v==="up"){if(b===0)return;C=b-1,v="before"}else if(v==="down"){if(b===w.length-1)return;C=b+1,v="after"}p=w[C]&&w[C].id}else C=w.findIndex(A=>A.id===p);if(b===-1||C===-1||m===!1)return;let j;y||(j=this.moveItem(d,p,g,v)),this.setState({data:y?this.normalizeTreeRows(j):j})}),r.on("copy-row",c=>{const{id:d,target:m,mode:p="after"}=c,v=this.getState(),{flatData:g,_filterIds:w}=v;let{data:y}=v;const b=this.getRow(d);if(!b)return;const C={...b,id:id()};c.id=C.id;const j=g.findIndex(T=>T.id===m);if(j===-1)return;y.splice(j+(p==="after"?1:0),0,C),y=[...y];const A={data:y};w&&(A._filterIds=[...w,C.id]),this.setState(A)}),r.on("open-row",c=>{const{id:d,nested:m}=c;this.toggleBranch(d,!0,m)}),r.on("close-row",c=>{const{id:d,nested:m}=c;this.toggleBranch(d,!1,m)}),r.on("export-data",c=>new Promise((d,m)=>{const p=c.format||"csv",v=`${c.fileName||"data"}.${p}`;if(p==="csv"){const g=NC(this.getState(),c.csv||{});c.download!==!1?MC(new Blob(["\uFEFF"+g],{type:"text/csv"}),v):c.result=g,d(!0)}else m()})),r.on("hotkey",({key:c,event:d,isInput:m})=>{switch(c){case"arrowup":{const{flatData:p,focusCell:v,select:g}=this.getState();if(d.preventDefault(),m)return;const w=v?v.column:this._getFirstVisibleColumn()?.id,y=v?this.getPrevRow(v.row)?.id:p[p.length-1]?.id;w&&y&&(this.in.exec("focus-cell",{row:y,column:w,eventSource:"key"}),g&&this.in.exec("select-row",{id:y}));break}case"arrowdown":{const{flatData:p,focusCell:v,select:g}=this.getState();if(d.preventDefault(),m)return;const w=v?v.column:this._getFirstVisibleColumn()?.id,y=v?this.getNextRow(v.row)?.id:p[0]?.id;w&&y&&(this.in.exec("focus-cell",{row:y,column:w,eventSource:"key"}),g&&this.in.exec("select-row",{id:y}));break}case"arrowright":{const{focusCell:p}=this.getState();if(m)return;if(d.preventDefault(),p){const v=this.getNextColumn(p.column,!0)?.id;v&&this.in.exec("focus-cell",{row:p.row,column:v,eventSource:"key"})}break}case"arrowleft":{const{focusCell:p}=this.getState();if(m)return;if(d.preventDefault(),p){const v=this.getPrevColumn(p.column,!0)?.id;v&&this.in.exec("focus-cell",{row:p.row,column:v,eventSource:"key"})}break}case"tab":{const{editor:p,focusCell:v,select:g}=this.getState();if(p){d.preventDefault();const w=p.column;let y=p.id,b=this.getNextEditor(this.getRow(y),this.getColumn(w));if(!b){const C=this.getNextRow(y);C&&(y=C.id,b=this.getNextEditor(C))}b&&(this.in.exec("open-editor",{id:y,column:b.id}),this.in.exec("focus-cell",{row:y,column:b.id,eventSource:"key"}),g&&!this.isSelected(y)&&this.in.exec("select-row",{id:y}))}else v&&this.in.exec("focus-cell",{eventSource:"key"});break}case"shift+tab":{const{editor:p,focusCell:v,select:g}=this.getState();if(p){d.preventDefault();const w=p.column;let y=p.id,b=this.getPrevEditor(this.getRow(y),this.getColumn(w));if(!b){const C=this.getPrevRow(y);C&&(y=C.id,b=this.getPrevEditor(C))}b&&(this.in.exec("open-editor",{id:y,column:b.id}),this.in.exec("focus-cell",{row:y,column:b.id,eventSource:"key"}),g&&!this.isSelected(y)&&this.in.exec("select-row",{id:y}))}else v&&this.in.exec("focus-cell",{eventSource:"key"});break}case"escape":{const{editor:p}=this.getState();p&&(this.in.exec("close-editor",{ignore:p.type!="multiselect"}),this.in.exec("focus-cell",{row:p.id,column:p.column,eventSource:"key"}));break}case"f2":{const{editor:p,focusCell:v}=this.getState();!p&&v&&this.in.exec("open-editor",{id:v.row,column:v.column});break}case"enter":{const{focusCell:p,tree:v}=this.getState();if(!m&&v&&p&&this.getColumn(p.column).treetoggle){const g=this.getRow(p.row);if(!g.data)return;this.in.exec(g.open?"close-row":"open-row",{id:p.row,nested:!0})}break}case"home":{const{editor:p,focusCell:v}=this.getState();if(!p&&v){d.preventDefault();const g=this._getFirstVisibleColumn()?.id;this.in.exec("focus-cell",{row:v.row,column:g,eventSource:"key"})}break}case"ctrl+home":{const{editor:p,focusCell:v,flatData:g,select:w}=this.getState();if(!p&&v){d.preventDefault();const y=g[0]?.id,b=this._getFirstVisibleColumn()?.id;y&&b&&(this.in.exec("focus-cell",{row:y,column:b,eventSource:"key"}),w&&!this.isSelected(y)&&this.in.exec("select-row",{id:y}))}break}case"end":{const{editor:p,focusCell:v}=this.getState();if(!p&&v){d.preventDefault();const g=this._getLastVisibleColumn()?.id,w=v.row;this.in.exec("focus-cell",{row:w,column:g,eventSource:"key"})}break}case"ctrl+end":{const{editor:p,focusCell:v,flatData:g,select:w}=this.getState();if(!p&&v){d.preventDefault();const y=g.at(-1).id,b=this._getLastVisibleColumn()?.id;y&&b&&(this.in.exec("focus-cell",{row:y,column:b,eventSource:"key"}),w&&!this.isSelected(y)&&this.in.exec("select-row",{id:y}))}break}case"ctrl+z":{this.in.exec("undo",{});break}case"ctrl+y":{this.in.exec("redo",{});break}}}),r.on("scroll",c=>{const{_columns:d,split:m,_sizes:p,flatData:v,dynamic:g,_rowHeightFromData:w}=this.getState();let y=-1,b=-1,C=0,j=0;if(c.column){y=0;const A=d.findIndex(T=>T.id===c.column);C=d[A].width;for(let T=m.left??0;T<A;T++){const k=d[T];k.hidden||(y+=k.width)}}if(c.row&&!g){const A=v.findIndex(T=>T.id===c.row);A>=0&&(w?(b=v.slice(0,A).reduce((T,k)=>T+(k.rowHeight||p.rowHeight),0),j=v[A].rowHeight):b=p.rowHeight*A)}this.setState({scroll:{top:b,left:y,width:C,height:j||p.rowHeight}})}),r.on("scroll-to",c=>{const d={};c.top!==void 0&&(d.scrollTop=c.top),c.left!==void 0&&(d.scrollLeft=c.left),Object.keys(d).length&&this.setState(d)}),r.on("print",c=>{const d=OC(c);this.setState({_print:d}),this.setStateAsync({_print:null})}),r.on("undo",()=>{this._historyManager?.handleUndo()}),r.on("redo",()=>{this._historyManager?.handleRedo()}),this.initOnce()}getXlsxWorker(a){if(!this._xlsxWorker){const i=window.URL.createObjectURL(new Blob([`importScripts('${a}');`],{type:"text/javascript"}));this._xlsxWorker=new Promise(r=>{const c=new Worker(i);c.addEventListener("message",d=>{d.data.type==="init"&&r(c)})})}return this._xlsxWorker}initOnce(){const a={sortMarks:{},_filterIds:null,data:[],filterValues:{},scroll:null,scrollLeft:0,scrollTop:0,editor:null,focusCell:null,_print:null,history:{undo:0,redo:0},search:null};this._router.init(a)}init(a){a.hasOwnProperty("_skin")&&!a._skin&&(a._skin=VC()),a.columns&&a.columns.forEach(i=>{i.options&&(i.optionsMap=new Map(i.options.map(r=>[r.id,r.label])))}),Fd(this.getState().data,a.data)||(a.tree?a.data=this.normalizeTreeRows(a.data):a.data=this.normalizeRows(a.data),this.setState({_filterIds:null,filterValues:{},sortMarks:{},search:null}),this._historyManager&&this._historyManager.resetHistory()),a.tree&&(a.undo=!1,a.reorder=!1),a.split?.right&&(a.split.right=0),a.undo&&!this._historyManager&&(this._historyManager=new $C(this.in,this.getState.bind(this),this.setState.bind(this))),this._router.init({...a})}setState(a,i){return this._router.setState(a,i)}setStateAsync(a){this._router.setStateAsync(a)}getRow(a){const{tree:i}=this.getState();return i?this._branches[a]:this.getState().data.find(r=>r.id===a)}getRowIndex(a,i){return i||(i=this.getState().flatData),i.findIndex(r=>r.id===a)}getNextRow(a){const i=this.getState().flatData,r=this.getRowIndex(a,i);return i[r+1]}getPrevRow(a){const i=this.getState().flatData,r=this.getRowIndex(a,i);return i[r-1]}getColumn(a){return this.getState().columns.find(i=>i.id===a)}getNextColumn(a,i){const r=this.getState()._columns,c=r.findIndex(d=>d.id===a);return i?this._getFirstVisibleColumn(c+1):r[c+1]}getPrevColumn(a,i){const r=this.getState()._columns,c=r.findIndex(d=>d.id===a);return i?this._getLastVisibleColumn(c-1):r[c-1]}_getFirstVisibleColumn(a){const i=this.getState()._columns;let r=a??0;for(;r<i.length&&(i[r]?.hidden||i[r]?.collapsed);)r++;return i[r]}_getLastVisibleColumn(a){const i=this.getState()._columns;let r=a??i.length-1;for(;r<i.length&&(i[r]?.hidden||i[r]?.collapsed);)r--;return i[r]}isCellEditable(a,i){const{editor:r,hidden:c}=i;return!r||c?!1:typeof r=="function"?r(a,i):!0}getNextEditor(a,i){let r=this.getState().columns;if(i){const c=r.findIndex(d=>d.id===i.id);r=r.slice(c+1)}return r.find(c=>this.isCellEditable(a,c))}getPrevEditor(a,i){let r=this.getState().columns;if(i){const c=r.findLastIndex(d=>d.id===i.id);r=r.slice(0,c)}return r.findLast(c=>this.isCellEditable(a,c))}toggleBranch(a,i,r){let c=this._branches[a],{data:d}=this.getState();if(d=[...d],a!==0){c={...c,open:i};const m=this.updateTreeRow(c);c.$parent===0&&(d=m)}r&&c.data?.length&&c.data.forEach(m=>{const p=this.toggleKids(m,i,r);a===0&&(d=p)}),this.setState({data:d})}toggleKids(a,i,r){a={...a,open:i};const c=this.updateTreeRow(a);return r&&a.data?.length&&a.data.forEach(d=>{this.toggleKids(d,i,r)}),c}updateTreeRow(a){const i=a.id;this._branches[i]=a;const r=this._branches[a.$parent],c=r.data.findIndex(d=>d.id===i);return r.data=[...r.data],r.data[c]=a,r.data}isSelected(a){return this.getState().selectedRows.indexOf(a)!==-1}findAndRemove(a,i){for(let r=0;r<a.length;r++){if(a[r].id===i)return a.splice(r,1)[0];if(a[r].data){const c=[...a[r].data],d=this.findAndRemove(c,i);if(d)return a[r]={...a[r],data:c},d}}return null}insertItem(a,i,r,c){for(let d=0;d<a.length;d++){if(a[d].id===i){const m=a[d],p=c==="before"?d:d+1;if(m.data){if(c==="before"){const v=d>0?a[d-1]:null;return v?.data&&v.open?a[d-1]={...v,data:[...v.data,r]}:a.splice(p,0,r),!0}else if(m.open)return a[d]={...m,data:[r,...m.data]},!0}return a.splice(p,0,r),!0}if(a[d].data&&(a[d]={...a[d],data:[...a[d].data]},this.insertItem(a[d].data,i,r,c)))return!0}return!1}moveItem(a,i,r,c){const d=[...r],m=this.findAndRemove(d,a);return this.insertItem(d,i,m,c),d}copyColumns(a){const i=[];for(let r=0;r<a.length;r++){const c={...a[r]};this.copyHeaderFooter(c,"header"),this.copyHeaderFooter(c,"footer"),i[r]=c}return i}copyHeaderFooter(a,i){let r=a[i];r=Array.isArray(r)?[...r]:[r],r.forEach((c,d)=>{r[d]=typeof c=="string"?{text:c}:{...c}}),a[i]=r}setCollapsibleColumns(a,i,r){let c=a.header;for(let d=0;d<c.length;d++){const m=c[d];if(m.collapsible&&m.collapsed){if(m.collapsible!=="first"){a.collapsed=!0,a.width=36,m.vertical=!0;const v=c.length-d;c=c.slice(0,d+1),c[d].rowspan=v}const p=m.colspan;if(p){const v=c[d+1];let g=1;v&&v.colspan&&!v.collapsed&&(g=v.colspan);for(let w=g;w<p;w++){const y=r[i+w];y&&(y.hidden=!0)}}}}}normalizeColumns(a,i,r,c,d){const m=a[i];m.width||(m.width=m.flexgrow?17:d.columnWidth),m._colindex=i+1;const p=m[r],v=d[`${r}RowHeights`];for(let g=0;g<c;g++){const w=p[g];w.id=m.id,g===p.length-1&&(w.rowspan=w.rowspan?Math.min(w.rowspan,c-g):c-g);for(let y=1;y<w.rowspan;y++){p.splice(g+y,0,{_hidden:!0});for(let b=1;b<w.colspan;b++)a[i+b][r].splice(g+y,0,{})}if(w.rowspan){const y=(w.rowspan===c?v:v.slice(g,w.rowspan+g)).reduce((b,C)=>b+C,0);w.height=y,g+w.rowspan!=c&&w.height--}if(w.colspan){let y=m.width,b=m.flexgrow||0;const C=w.colspan;for(let j=1;j<C;j++){const A=a[i+j];A&&(A.hidden?w.colspan-=1:A.flexgrow?b+=A.flexgrow:y+=A.width||d.columnWidth),b?w.flexgrow=b:w.width=y}}else w.width=m.width,w.flexgrow=m.flexgrow;r==="header"&&w.filter&&typeof w.filter=="string"&&(w.filter={type:w.filter})}p.length>c&&(p.length=c),m[r]=p}normalizeRows(a){for(let i=0;i<a.length;i++)a[i].id||(a[i].id=id());return a}normalizeTreeRows(a,i,r){return!i&&!r&&(this._branches={0:{data:a}}),a.forEach(c=>{c.id||(c.id=id()),c.$level=i||0,c.$parent=r||0,this._branches[c.id]=c,c.data&&(c.data.length?(c.$count=c.data.length,this.normalizeTreeRows(c.data,c.$level+1,c.id)):(delete c.data,delete c.$count,delete c.open))}),a}sortTree(a,i){a.sort(i),a.forEach(r=>{r.data&&this.sortTree(r.data,i)})}filterTree(a,i,r){return a.forEach(c=>{i(c)&&r.push(c.id),c.data&&this.filterTree(c.data,i,r)}),r}flattenRows(a,i,r){const c=i;return a.forEach(d=>{(!r||r.includes(d.id))&&c.push(d),d.data?.length&&d.open!==!1&&this.flattenRows(d.data,c,r)}),c}createFilter(a){const{_columns:i}=this.getState(),r=[];for(const c in a){const d=i.find(g=>g.id==c),{config:m,type:p}=d.header.find(g=>g.filter).filter,v=a[c];r.push(g=>{const w=bi(g,d);return m?.handler?m.handler(w,v):Xy(p)(w,v)})}return c=>{for(let d=0;d<r.length;d++)if(!r[d](c))return!1;return!0}}searchRows(a,i){a=a.trim().toLowerCase();const r={};if(!a)return r;const{flatData:c,columns:d}=this.getState(),m=i?d.filter(p=>i[p.id]):d;return c.forEach(p=>{const v={};m.forEach(g=>{const w=wi(p,g);String(w).toLowerCase().includes(a)&&(v[g.id]=!0)}),Object.keys(v).length&&(r[p.id]=v)}),r}normalizeSizes(a,i,r,c,d){const m=wx(a,"header",r,i.headerHeight,d),p=wx(a,"footer",c,i.footerHeight,d),v=m.reduce((w,y)=>w+y,0),g=p.reduce((w,y)=>w+y,0);return{...i,headerRowHeights:m,footerRowHeights:p,headerHeight:v,footerHeight:g}}},JC=new Date().valueOf();function id(){return"temp://"+JC++}function ej(n,a="data-id"){let i=n;for(!i.tagName&&n.target&&(i=n.target);i;){if(i.getAttribute&&i.getAttribute(a))return i;i=i.parentNode}return null}new Date().valueOf();var tj=class{constructor(){this.store=new Map}configure(n,a){this.node=a;for(const i in n)if(n[i]){const r=i.toLowerCase().replace(/[ ]/g,""),c=n[i];this.store.set(r,c)}}},lo=[],nj={subscribe:n=>{aj();const a=new tj;return lo.push(a),n(a),()=>{const i=lo.findIndex(r=>r===a);i>=0&&lo.splice(i,1)}}},bx=!1;function aj(){bx||(bx=!0,document.addEventListener("keydown",n=>{if(lo.length&&(n.ctrlKey||n.altKey||n.metaKey||n.shiftKey||n.key.length>1||n.key===" ")){const a=[];n.ctrlKey&&a.push("ctrl"),n.altKey&&a.push("alt"),n.metaKey&&a.push("meta"),n.shiftKey&&a.push("shift");let i=n.code.replace("Key","").toLocaleLowerCase();n.key===" "&&(i="space"),a.push(i);const r=a.join("+");for(let c=lo.length-1;c>=0;c--){const d=lo[c],m=d.store.get(r)||d.store.get(i);m&&d.node.contains(n.target)&&m(n,{key:r,evKey:i})}}}))}const sj={tab:!0,"shift+tab":!0,arrowup:!0,arrowdown:!0,arrowright:!0,arrowleft:!0,enter:!0,escape:!0,f2:!0,home:!0,end:!0,"ctrl+home":!0,"ctrl+end":!0,"ctrl+z":!0,"ctrl+y":!0};function lj(n,{keys:a,exec:i}){if(!a)return;function r(m){const p=m.target;return p.tagName==="INPUT"||p.tagName==="TEXTAREA"||ej(p,"data-header-id")?.classList.contains("wx-filter")||!!p.closest(".wx-cell.wx-editor")}const c={};for(const m in a){const p=a[m];typeof p<"u"&&(typeof p=="function"?c[m]=p:p&&(c[m]=v=>{const g=r(v);i({key:m,event:v,isInput:g})}))}const d=nj.subscribe(m=>{m.configure(c,n)});return{destroy:()=>{d()}}}function ij(n,a){let i=null;a.scroll.subscribe(r=>{if(!r||r===i)return;i=r;const{left:c,top:d,height:m,width:p}=r,v=a.getHeight(),g=a.getWidth(),w=a.getScrollMargin();if(d>=0){const y=n.scrollTop;d<y?n.scrollTop=d:d+m>y+v&&(n.scrollTop=d-v+m)}if(c>=0){const y=n.scrollLeft;c<y?n.scrollLeft=c:c+p>y+g-w&&(n.scrollLeft=c-g+p+w)}}),a.scrollLeft?.subscribe?.(r=>{requestAnimationFrame(()=>{Math.abs(n.scrollLeft-r)>1&&(n.scrollLeft=r)})}),a.scrollTop?.subscribe?.(r=>{requestAnimationFrame(()=>{Math.abs(n.scrollTop-r)>1&&(n.scrollTop=r)})})}const Ma=f.createContext(null);function rj(n,a){const i=new ResizeObserver(r=>{requestAnimationFrame(()=>a(r[0].contentRect))});return i.observe(n.parentNode),{destroy(){i.disconnect()}}}const Sx=5,oj=700;function gd(n){const a=n.getBoundingClientRect(),i=document.body,r=a.top+i.scrollTop-i.clientTop||0,c=a.left+i.scrollLeft-i.clientLeft||0;return{y:Math.round(r),x:Math.round(c),width:n.offsetWidth,height:n.offsetHeight}}function uh(n,a){const i=gd(a);return{x:n.clientX-i.x,y:n.clientY-i.y}}function cj(n,a){const i=a.current;let r=null,c,d,m=!1,p=!1;const v=document.createElement("DIV");v.className="wx-drag-zone",v.setAttribute("tabindex",-1);function g(){clearTimeout(c),c=null}function w(I){const _=ro(I);_&&(r={container:v,sourceNode:I.target,from:Od(_),pos:uh(I,n)},d=r.pos,y(I))}function y(I){if(!r)return;const _=r.pos=uh(I,n);if(!m){if(!p&&!I?.target?.getAttribute("draggable-data")&&Math.abs(d.x-_.x)<Sx&&Math.abs(d.y-_.y)<Sx)return;if(F(I)===!1)return q()}if(p){const fe=window.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft,G=window.scrollY||document.documentElement.scrollTop||document.body.scrollTop;r.targetNode=document.elementFromPoint(I.pageX-fe,I.pageY-G)}else r.targetNode=I.target;i.move&&i.move(I,r),v.style.left=-(r.offset?r.offset.x:0)+"px",v.style.top=r.pos.y+(r.offset?r.offset.y:0)+"px"}function b(I){v.parentNode&&v.parentNode.removeChild(v),v.innerHTML="",m&&i.end&&i.end(I,r),r=d=null,q()}function C(I){i.getReorder&&!i.getReorder()||I.button===0&&($(I),window.addEventListener("mousemove",j),window.addEventListener("mouseup",A),w(I))}function j(I){y(I)}function A(I){b(I)}function T(I){if(i.getReorder&&!i.getReorder())return;c=setTimeout(()=>{p=!0,w(I.touches[0])},oj),$(I);function _(){c&&g(),I.target.removeEventListener("touchmove",k),I.target.removeEventListener("touchend",_),b(I)}I.target.addEventListener("touchmove",k),I.target.addEventListener("touchend",_),n.addEventListener("contextmenu",R)}function k(I){m?(I.preventDefault(),y(I.touches[0])):c&&g()}function R(I){if(m||c)return I.preventDefault(),!1}function E(I){I.preventDefault()}function $(I){if(!i.getDraggableInfo)return;const{hasDraggable:_}=i.getDraggableInfo();(!_||I.target.getAttribute("draggable-data"))&&(document.body.style.userSelect="none",document.body.style.webkitUserSelect="none")}function F(I){if(m=!0,i.start){if(i.start(I,r)===!1)return!1;n.appendChild(v),document.body.style.cursor="move"}}function q(I){m=p=!1,document.body.style.cursor="",document.body.style.userSelect="",document.body.style.webkitUserSelect="",window.removeEventListener("mousemove",j),window.removeEventListener("mouseup",A),I&&(n.removeEventListener("mousedown",C),n.removeEventListener("touchstart",T),n.removeEventListener("dragstart",E))}return n.addEventListener("mousedown",C),n.addEventListener("touchstart",T),n.addEventListener("dragstart",E),{destroy(){q(!0)}}}const uj=.004;function dj(){return{dirX:0,dirY:0,scrollSpeedFactor:1}}function fj(n,a,i,r){const{node:c,left:d,top:m,bottom:p,sense:v,xScroll:g,yScroll:w}=r,y=uh(n,c);i.scrollState||(i.scrollState=dj());let b=0,C=0;y.x<d+v?b=-1:y.x>a.width-v&&(b=1),y.y<m+Math.round(v/2)?C=-1:y.y>a.height-p-Math.round(v/2)&&(C=1),(i.scrollState.dirX!==b||i.scrollState.dirY!==C)&&(Zy(i),i.scrollState.dirX=b,i.scrollState.dirY=C),(g&&i.scrollState.dirX!==0||w&&i.scrollState.dirY!==0)&&mj(i,r,{x:i.scrollState.dirX,y:i.scrollState.dirY})}function mj(n,a,i){n.autoScrollTimer||(n.autoScrollTimer=setTimeout(()=>{n.activeAutoScroll=setInterval(hj,15,n,a,i)},250))}function Zy(n){n.scrollSpeedFactor=1,n.autoScrollTimer&&(n.autoScrollTimer=clearTimeout(n.autoScrollTimer),n.activeAutoScroll=clearInterval(n.activeAutoScroll))}function hj(n,a,i){const{x:r,y:c}=i;n.scrollSpeedFactor+=uj,r!==0&&gj(n,a,r),c!==0&&pj(n,a,c)}function pj(n,a,i){const r=a.node.scrollTop;Jy(r+Math.round(a.sense/3)*n.scrollSpeedFactor*i,"scrollTop",a)}function gj(n,a,i){const r=a.node.scrollLeft;Jy(r+Math.round(a.sense/3)*n.scrollSpeedFactor*i,"scrollLeft",a)}function Jy(n,a,i){i.node[a]=n}function Hd(n,a,i,r,c,d){const m={};return n&&(m.width=`${n}px`,m.minWidth=`${n}px`),a&&(m.flexGrow=a),d&&(m.height=`${d}px`),i&&(m.position="sticky",i.left&&(m.left=`${r}px`),i.right&&(m.right=`${c}px`)),m}function ew(n,a,i){let r="";if(n.fixed)for(const c in n.fixed){let d=n.fixed[c]===-1;!d&&n.fixed.leftSize&&a.colspan&&(d=a.colspan+n._colindex-1===n.fixed.leftSize),r+=d?"wx-shadow ":"wx-fixed "}return r+=a.rowspan>1?"wx-rowspan ":"",r+=a.colspan>1?"wx-colspan ":"",r+=a.vertical?"wx-vertical ":"",r+=i?i(n)+" ":"",r}function vj(n){const{row:a,column:i,cellStyle:r=null,columnStyle:c=null,children:d,focusable:m}=n,p=f.useContext(Ma),v=Ze(p,"focusCell"),g=Ze(p,"search"),w=Ze(p,"reorder"),y=f.useMemo(()=>g?.rows[a.id]&&g.rows[a.id][i.id],[g,a.id,i.id]),b=f.useMemo(()=>Hd(i.width,i.flexgrow,i.fixed,i.left,i.right),[i.width,i.flexgrow,i.fixed,i.left,i.right]);function C(F,q){let I="wx-cell";return I+=i.fixed?" "+(i.fixed===-1?"wx-shadow":"wx-fixed"):"",I+=F?" "+F(i):"",I+=q?" "+q(a,i):"",I+=i.treetoggle?" wx-tree-cell":"",I}const j=f.useMemo(()=>C(c,r),[c,r,i,a]),A=f.useMemo(()=>typeof i.draggable=="function"?i.draggable(a,i)!==!1:i.draggable,[i,a]),T=f.useRef(null);f.useEffect(()=>{T.current&&m&&v?.row===a.id&&v?.column===i.id&&T.current.focus()},[v,m,a.id,i.id]);const k=f.useCallback(()=>{m&&!v&&p.exec("focus-cell",{row:a.id,column:i.id,eventSource:"focus"})},[p,m,v,a.id,i.id]);function R(F){const q=new RegExp(`(${g.value.trim()})`,"gi");return String(F).split(q).map(I=>({text:I,highlight:q.test(I)}))}const E=f.useMemo(()=>{const F=i.fixed&&i.fixed.left===-1||i.fixed.right===-1,q=i.fixed&&i.fixed.right;return[j,F?"wx-shadow":"",q?"wx-fixed-right":""].filter(Boolean).join(" ")},[j,i]),$=i.cell;return l.jsxs("div",{className:"wx-TSCaXsGV "+E,ref:T,onFocus:k,style:b,"data-row-id":Sn(a.id),"data-col-id":Sn(i.id),tabIndex:m?"0":"-1",role:"gridcell","aria-colindex":i._colindex,"aria-readonly":i.editor?void 0:!0,children:[w&&i.draggable?A?l.jsx("i",{"draggable-data":"true",className:"wx-TSCaXsGV wx-draggable wxi-drag"}):l.jsx("i",{className:"wx-TSCaXsGV wx-draggable-stub"}):null,i.treetoggle?l.jsxs(l.Fragment,{children:[l.jsx("span",{style:{marginLeft:`${a.$level*28}px`}}),a.$count?l.jsx("i",{"data-action":"toggle-row",className:`wx-TSCaXsGV wx-table-tree-toggle wxi-menu-${a.open!==!1?"down":"right"}`}):null]}):null,$?l.jsx($,{api:p,row:a,column:i,onAction:({action:F,data:q})=>p.exec(F,q)}):d?d():y?l.jsx("span",{children:R(wi(a,i)).map(({highlight:F,text:q},I)=>F?l.jsx("mark",{className:"wx-TSCaXsGV wx-search",children:q},I):l.jsx("span",{children:q},I))}):wi(a,i)]})}function Cx(n,a){let i,r;function c(p){i=p.clientX,n.style.opacity=1,document.body.style.cursor="ew-resize",document.body.style.userSelect="none",window.addEventListener("mousemove",d),window.addEventListener("mouseup",m),a&&a.down&&a.down(n)}function d(p){r=p.clientX-i,a&&a.move&&a.move(r)}function m(){n.style.opacity="",document.body.style.cursor="",document.body.style.userSelect="",a&&a.up&&a.up(r),window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",m)}return n.addEventListener("mousedown",c),{destroy(){n.removeEventListener("mousedown",c)}}}function xj({filter:n,column:a,action:i,filterValue:r}){function c({value:d}){i({value:d,key:a.id})}return l.jsx(Dh,{...n.config??{},value:r,onChange:c})}function yj({filter:n,column:a,action:i,filterValue:r}){const c=f.useContext(Ma),d=Ze(c,"flatData"),m=f.useMemo(()=>n?.config?.options||a?.options||v(),[n,a,d]),p=f.useMemo(()=>n?.config?.template,[n]);function v(){const y=[];return d.forEach(b=>{const C=bi(b,a);y.includes(C)||y.push(C)}),y.map(b=>({id:b,label:b}))}function g({value:y}){i({value:y,key:a.id})}function w(y){y.key!=="Tab"&&y.preventDefault()}return l.jsx("div",{style:{width:"100%"},onKeyDown:w,children:l.jsx(L1,{placeholder:"",clear:!0,...n?.config??{},options:m,value:r,onChange:g,children:y=>p?p(y):y.label})})}function wj({filter:n,column:a,action:i,filterValue:r}){function c({value:d}){i({value:d,key:a.id})}return l.jsx("div",{className:"wx-aaaK5VYO",style:{width:"100%"},children:l.jsx(D1,{placeholder:"",clear:!0,...n?.config??{},value:r,onChange:c})})}function tw(n){const{value:a,options:i=[],placeholder:r="",clear:c=!1,text:d=null,template:m=null,cell:p=null,dropdown:v={},autoOpen:g=!1,onChange:w,onAction:y}=n,[b,C]=Fy(a||[]),j=f.useMemo(()=>(b||[]).map(G=>i.find(ue=>ue.id===G)).filter(Boolean),[b,i]),A=f.useRef(null),T=f.useRef(null),[k,R]=f.useState(null),E=()=>{const G=b||[];if(!G.length)return 0;const ue=i.find(Y=>G.includes(Y.id));return ue?i.indexOf(ue):0};function $(G){T.current=G.navigate,R(()=>G.keydown),g&&G.navigate(E())}f.useEffect(()=>{g&&(A.current?.focus(),typeof window<"u"&&window.getSelection&&window.getSelection().removeAllRanges())},[]);function F({id:G}){C(G),w&&w({value:G})}function q(G){G.stopPropagation(),C([]),w&&w({value:[]})}function I(){T.current?.(E())}function _(){T.current?.(null)}function fe(G){k?.(G,E())}return l.jsxs("div",{ref:A,className:"wx-multiselect wx-aadNNOwy",onClick:I,onKeyDown:fe,tabIndex:0,children:[l.jsx("div",{className:"wx-label wx-aadNNOwy",children:m?m(j):p?l.jsx(p,{data:j,onAction:y}):d?l.jsx("span",{className:"wx-text wx-aadNNOwy",children:d}):j.length?l.jsx("span",{className:"wx-text wx-aadNNOwy",children:j.map(G=>G.label).join(", ")}):r?l.jsx("span",{className:"wx-placeholder wx-aadNNOwy",children:r}):" "}),c&&b?.length?l.jsx("i",{className:"wx-icon wxi-close wx-aadNNOwy",onClick:q}):l.jsx("i",{className:"wx-icon wxi-angle-down wx-aadNNOwy"}),l.jsx(Bd,{items:i,onReady:$,onSelect:F,multiselect:!0,checkboxes:!0,value:b||[],onCancel:_,...v,children:({option:G})=>l.jsx("div",{className:"wx-option wx-aadNNOwy",children:m?m(G):p?l.jsx(p,{data:G,onAction:y}):G.label})})]})}function bj({filter:n,column:a,action:i,filterValue:r}){const c=f.useContext(jn.i18n)?.getGroup("grid")||Ic(zh).getGroup("grid"),d=f.useMemo(()=>({clear:!0,...n?.config||{}}),[n]),m=f.useMemo(()=>d.options||a.options,[d,a]),p=f.useMemo(()=>{const w=r?.length;return w?w<3?r.map(y=>a.optionsMap.get(y)).join(", "):w+" "+c("selected"):""},[r,a,c]);function v({value:w}){i({value:w,key:a.id})}function g(w){w.key!=="Tab"&&w.preventDefault()}return l.jsx("div",{style:{width:"100%"},onKeyDown:g,children:l.jsx(tw,{placeholder:"",...d,options:m,value:r||[],text:p,onChange:v})})}const Sj={text:xj,richselect:yj,datepicker:wj,multiselect:bj};function Cj({filter:n,column:a}){const i=f.useContext(Ma),r=Ze(i,"filterValues");function c(m){i.exec("filter-rows",m)}const d=f.useMemo(()=>Sj[n.type],[n.type]);return l.jsx(d,{filter:n,column:a,action:c,filterValue:r[a.id]})}function jj(n){const{cell:a,column:i,row:r,lastRow:c,sortRow:d,columnStyle:m,bodyHeight:p,hasSplit:v}=n,g=f.useContext(Ma),w=Ze(g,"sortMarks"),y=f.useMemo(()=>w?w[i.id]:void 0,[w,i.id]),b=f.useRef(),C=f.useCallback(le=>{b.current=a.flexgrow?le.parentNode.clientWidth:a.width},[a.flexgrow,a.width]),j=f.useCallback((le,V)=>{g.exec("resize-column",{id:a.id,width:Math.max(1,(b.current||0)+le),inProgress:V})},[g,a.id]),A=f.useCallback(le=>j(le,!0),[j]),T=f.useCallback(le=>j(le,!1),[j]),k=f.useCallback(le=>{if(!i.sort||a.filter)return;let V=y?.order;V&&(V=V==="asc"?"desc":"asc"),g.exec("sort-rows",{key:a.id,add:le.ctrlKey||le.metaKey,order:V})},[g,a.id,a.filter,i.sort,y?.order]),R=f.useCallback(le=>{le&&le.stopPropagation(),g.exec("collapse-column",{id:a.id,row:r})},[g,a.id,r]),E=f.useCallback(le=>{le.key==="Enter"&&R()},[R]),$=f.useCallback(le=>{le.key==="Enter"&&!a.filter&&k(le)},[k,a.filter]),F=f.useMemo(()=>a.collapsed&&i.collapsed,[a.collapsed,i.collapsed]),q=f.useMemo(()=>F&&!v&&a.collapsible!=="header",[F,v,a.collapsible]),I=f.useMemo(()=>q?{top:-p/2,position:"absolute"}:{},[q,p]),_=f.useMemo(()=>Hd(a.width,a.flexgrow,i.fixed,i.left,a.right??i.right,a.height+(F&&q?p:0)),[a.width,a.flexgrow,i.fixed,i.left,a.right,i.right,a.height,F,q,p]),fe=f.useMemo(()=>ew(i,a,m),[i,a,m]),G=f.useCallback(()=>Object.fromEntries(Object.entries(a).filter(([le])=>le!=="cell")),[a]),ue=`wx-cell ${fe} ${a.css||""} wx-collapsed`,Y=["wx-cell",fe,a.css||"",a.filter?"wx-filter":"",i.fixed&&i.fixed.right?"wx-fixed-right":""].filter(Boolean).join(" "),ae=f.useRef(null);return f.useEffect(()=>{const le=ae.current;if(!le)return;const V=Cx(le,{down:C,move:A,up:T});return()=>{typeof V=="function"&&V()}},[C,A,T,Cx]),F?l.jsx("div",{className:"wx-RsQD74qC "+ue,style:_,role:"button","aria-label":`Expand column ${a.text||""}`,"aria-expanded":!a.collapsed,tabIndex:0,onKeyDown:E,onClick:R,"data-header-id":Sn(i.id),children:l.jsx("div",{className:"wx-RsQD74qC wx-text",style:I,children:a.text||""})}):l.jsxs("div",{className:"wx-RsQD74qC "+Y,style:_,onClick:k,"data-header-id":Sn(i.id),tabIndex:!a._hidden&&i.sort&&!a.filter?0:void 0,role:"columnheader","aria-colindex":i._colindex,"aria-colspan":a.colspan>1?a.colspan:void 0,"aria-rowspan":a.rowspan>1?a.rowspan:void 0,"aria-sort":!y?.order||a.filter?"none":y?.order==="asc"?"ascending":"descending",onKeyDown:$,children:[a.collapsible?l.jsx("div",{className:"wx-RsQD74qC wx-collapse",role:"button","aria-label":a.collapsed?"Expand column":"Collapse column","aria-expanded":!a.collapsed,tabIndex:0,onKeyDown:E,onClick:R,children:l.jsx("i",{className:`wx-RsQD74qC wxi-angle-${a.collapsed?"down":"right"}`})}):null,a.cell?(()=>{const le=a.cell;return l.jsx(le,{api:g,cell:G(),column:i,row:r,onAction:({action:V,data:z})=>g.exec(V,z)})})():a.filter?l.jsx(Cj,{filter:a.filter,column:i}):l.jsx("div",{className:"wx-RsQD74qC wx-text",children:a.text||""}),i.resize&&c&&!a._hidden?l.jsx("div",{className:"wx-RsQD74qC wx-grip",role:"presentation","aria-label":"Resize column",ref:ae,onClick:le=>le.stopPropagation(),children:l.jsx("div",{})}):null,d?l.jsx("div",{className:"wx-RsQD74qC wx-sort",children:y?l.jsxs(l.Fragment,{children:[typeof y.index<"u"?l.jsx("div",{className:"wx-RsQD74qC wx-order",children:y.index+1}):null,l.jsx("i",{className:`wx-RsQD74qC wxi-arrow-${y.order==="asc"?"up":"down"}`})]}):null}):null]})}function kj({cell:n,column:a,row:i,columnStyle:r}){const c=f.useContext(Ma),d=f.useMemo(()=>Hd(n?.width,n?.flexgrow,a?.fixed,a?.left,n?.right??a?.right,n?.height),[n?.width,n?.flexgrow,a?.fixed,a?.left,n?.right,a?.right,n?.height]),m=f.useMemo(()=>ew(a,n,r),[a,n,r]),p=f.useCallback(()=>Object.fromEntries(Object.entries(n||{}).filter(([g])=>g!=="cell")),[n]),v=`wx-6Sdi3Dfd wx-cell ${m||""} ${n?.css||""}`+(a?.fixed&&a?.fixed.right?" wx-fixed-right":"");return l.jsx("div",{className:v,style:d,children:!a?.collapsed&&!n?.collapsed?n?.cell?bh.createElement(n.cell,{api:c,cell:p(),column:a,row:i,onAction:({action:g,data:w})=>c.exec(g,w)}):l.jsx("div",{className:"wx-6Sdi3Dfd wx-text",children:n?.text||""}):null})}function jx({deltaLeft:n,contentWidth:a,columns:i,type:r="header",columnStyle:c,bodyHeight:d}){const m=f.useContext(Ma),p=Ze(m,"_sizes"),v=Ze(m,"split"),g=f.useMemo(()=>p?.[`${r}RowHeights`],[p,r]),w=f.useMemo(()=>{let A=[];if(i&&i.length){const T=i[0][r].length;for(let k=0;k<T;k++){let R=0;A.push([]),i.forEach((E,$)=>{const F={...E[r][k]};R||A[k].push(F),F.colspan>1?R=F.colspan-1:R&&R--})}}return A},[i,r]),y=f.useMemo(()=>v?.left||v?.right,[v]);function b(A){return i.find(T=>T.id===A)}function C(A,T){let k=T;return A.rowspan&&(k+=A.rowspan-1),k===w.length-1}function j(A,T,k){if(!k.sort)return!1;for(let R=w.length-1;R>=0;R--){const E=k.header[R];if(!E.filter&&!E._hidden)return T===R}return C(A,T)}return l.jsx("div",{className:`wx-sAsPVaUK wx-${r}`,style:{paddingLeft:`${n}px`,width:`${a}px`},role:"rowgroup",children:w.map((A,T)=>l.jsx("div",{className:r==="header"?"wx-sAsPVaUK wx-h-row":"wx-sAsPVaUK wx-f-row",style:{height:`${g?.[T]}px`,display:"flex"},role:"row",children:A.map(k=>{const R=b(k.id);return r==="header"?l.jsx(jj,{cell:k,columnStyle:c,column:R,row:T,lastRow:C(k,T),bodyHeight:d,sortRow:j(k,T,R),hasSplit:y},k.id):l.jsx(kj,{cell:k,columnStyle:c,column:b(k.id),row:T},k.id)})},T))})}function Aj({overlay:n}){const a=f.useContext(Ma);function i(c){return typeof c=="function"}const r=n;return l.jsx("div",{className:"wx-1ty666CQ wx-overlay",children:i(n)?l.jsx(r,{onAction:({action:c,data:d})=>a.exec(c,d)}):n})}function Mj(n){const{editor:a,onSave:i,onApply:r}=n,[c,d]=f.useState(a?.value||""),{type:m="text"}=f.useMemo(()=>a?.config||{},[a]),p=f.useRef(null);f.useEffect(()=>{p.current&&p.current.focus()},[]),f.useEffect(()=>{if(!p.current)return;const w=zs(p.current,()=>i(!0));return()=>w.destroy()},[i]);function v(){p.current&&(d(p.current.value),r(p.current.value))}function g({key:w}){w==="Enter"&&i()}return l.jsx("input",{className:"wx-e7Ao5ejY wx-text",onInput:v,onKeyDown:g,ref:p,type:m,value:c})}function Nj({editor:n,onAction:a,onSave:i,onApply:r,onCancel:c}){const[d,m]=f.useState(n?.value),[p,v]=f.useState(n?.renderedValue),[g,w]=f.useState(n?.options||[]),y=f.useMemo(()=>n?.config?.template,[n]),b=f.useMemo(()=>n?.config?.cell,[n]),C=f.useMemo(()=>n?.config?.dropdown||{},[n]),j=f.useMemo(()=>({trackScroll:!0,...C}),[C]),A=f.useMemo(()=>(g||[]).findIndex(I=>I.id===d),[g,d]),T=f.useRef(null),k=f.useRef(null),R=f.useCallback(I=>{T.current=I.navigate,k.current=I.keydown,T.current(A)},[A,T]),E=f.useCallback(I=>{const _=I?.target?.value??"";v(_);const fe=_?(n?.options||[]).filter(G=>(G.label||"").toLowerCase().includes(_.toLowerCase())):n?.options||[];w(fe),fe.length?T.current(-1/0):T.current(null)},[n]),$=f.useRef(null);f.useEffect(()=>{$.current&&$.current.focus()},[]);const F=f.useRef(i);f.useEffect(()=>{F.current=i},[i]),f.useEffect(()=>{if(!$.current)return;const I=zs($.current,()=>F.current(!0));return()=>I.destroy()},[]),f.useEffect(()=>{m(n?.value),v(n?.renderedValue),w(n?.options||[])},[n]);const q=f.useCallback(({id:I})=>{r(I),i()},[r,i]);return l.jsxs(l.Fragment,{children:[l.jsx("input",{className:"wx-0UYfSd1x wx-input",ref:$,value:p??"",onChange:E,onKeyDown:I=>k.current?k.current(I,A):void 0}),l.jsx(Bd,{items:g,onReady:R,onSelect:q,...j,onCancel:c,children:({option:I})=>y?y(I):b?l.jsx(b,{data:I,onAction:a}):I.label})]})}function Tj({editor:n,onAction:a,onSave:i,onApply:r,onCancel:c}){const[d]=f.useState(()=>n.value||new Date),{template:m,cell:p,dropdown:v={}}=n?.config||{},g=f.useMemo(()=>({trackScroll:!0,width:"auto",...v}),[v]);function w({value:j}){r(j),i()}const y=f.useRef(null),[b,C]=f.useState(null);return f.useEffect(()=>{y.current&&y.current.focus(),typeof window<"u"&&window.getSelection&&window.getSelection().removeAllRanges()},[]),f.useEffect(()=>{if(!b)return;const j=zs(b,()=>i(!0));return()=>j.destroy()},[b,i]),l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"wx-lNWNYUb6 wx-value",ref:y,tabIndex:0,onClick:c,onKeyDown:j=>j.preventDefault(),children:m?m(d):p?l.jsx(p,{data:n.value,onAction:a}):l.jsx("span",{className:"wx-lNWNYUb6 wx-text",children:n.renderedValue})}),l.jsx(Eh,{...g,onCancel:c,children:l.jsx("div",{ref:C,className:"wx-lNWNYUb6",children:l.jsx(_y,{value:d,onChange:w,buttons:n.config?.buttons})})})]})}function Rj(n){const{editor:a}=n,i=n.onAction??n.onaction,r=n.onSave??n.onsave,c=n.onApply??n.onapply,d=n.onCancel??n.oncancel,m=a.config||{},{dropdown:p={}}=m,v=f.useMemo(()=>({trackScroll:!0,...p}),[p]),[g]=f.useState(a.options.find(E=>E.id===a.value)),[w]=f.useState(a.value),[y]=f.useState(a.options),b=f.useMemo(()=>y.findIndex(E=>E.id===w),[y,w]);function C({id:E}){c(E),r()}let j;const[A,T]=f.useState();function k(E){j=E.navigate,T(()=>E.keydown),j(b)}const R=f.useRef(null);return f.useEffect(()=>{R.current&&R.current.focus(),typeof window<"u"&&window.getSelection&&window.getSelection().removeAllRanges()},[]),f.useEffect(()=>{if(!R.current)return;const E=zs(R.current,()=>r(!0));return()=>E.destroy()},[r]),l.jsxs(l.Fragment,{children:[l.jsx("div",{ref:R,className:"wx-ywGRk611 wx-value",tabIndex:0,onClick:d,onKeyDown:E=>{A(E,b),E.preventDefault()},children:m.template?m.template(g):m.cell?(()=>{const E=m.cell;return l.jsx(E,{data:g,onAction:i})})():l.jsx("span",{className:"wx-ywGRk611 wx-text",children:a.renderedValue})}),l.jsx(Bd,{items:y,onReady:k,onSelect:C,...v,onCancel:d,children:({option:E})=>m.template?m.template(E):m.cell?(()=>{const $=m.cell;return l.jsx($,{data:E,onAction:i})})():E.label})]})}function Ej(n){const{editor:a,onAction:i,onSave:r,onApply:c}=n,d=a?.config||{},m=a?.options??[],p=a?.value||[],v=a?.renderedValue,g=f.useMemo(()=>({trackScroll:!0,...d.dropdown||{}}),[d]);function w({value:b}){c(b)}const y=f.useRef(null);return f.useEffect(()=>{if(!y.current)return;const b=zs(y.current,()=>r(!0));return()=>b.destroy()},[r]),l.jsx("div",{ref:y,className:"wx-value wx-aacZ4gNU",onClick:()=>r(!0),children:l.jsx(tw,{value:p,options:m,text:v,template:d.template,cell:d.cell,clear:d.clear,dropdown:g,autoOpen:!0,onChange:w,onAction:i})})}const Dj={text:Mj,combo:Nj,datepicker:Tj,richselect:Rj,multiselect:Ej};function Lj({column:n,row:a}){const i=f.useContext(Ma),r=Ze(i,"editor"),c=f.useCallback((j,A)=>{i.exec("close-editor",{ignore:j}),A&&i.exec("focus-cell",{...A,eventSource:"click"})},[i]),d=f.useCallback(j=>{const A=j?null:{row:r?.id,column:r?.column};c(!1,A)},[r,c]),m=f.useCallback(()=>{c(!0,{row:r?.id,column:r?.column})},[r,c]),p=f.useCallback(j=>{i.exec("editor",{value:j})},[i]),v=f.useCallback(j=>{j.key==="Enter"&&r&&(n.editor.type==="multiselect"?p(r.value):m())},[r,n.editor,m,p]),g=f.useMemo(()=>Hd(n.width,n.flexgrow,n.fixed,n.left,n.right),[n.width,n.flexgrow,n.fixed,n.left,n.right]),w=f.useMemo(()=>{let j=n.editor;if(typeof j=="function"&&(j=j(a,n)),!j)return null;let A=typeof j=="string"?j:j.type;return Dj[A]},[n,a]),y=f.useRef(null);f.useEffect(()=>{y.current&&typeof g=="string"&&y.current.setAttribute("style",g)},[g]);const b=typeof a.$parent<"u"?"gridcell":"cell",C=typeof a.$parent<"u"?!n.editor:void 0;return l.jsx("div",{className:"wx-8l724t2g wx-cell wx-editor",ref:y,style:typeof g=="object"&&g!==null?g:void 0,role:b,"aria-readonly":C,tabIndex:-1,onClick:j=>j.stopPropagation(),onDoubleClick:j=>j.stopPropagation(),onKeyDown:v,children:w?l.jsx(w,{editor:r,onSave:d,onApply:p,onCancel:m,onAction:({action:j,data:A})=>i.exec(j,A)}):null})}function kx(n){const{columns:a,type:i,columnStyle:r}=n,c=f.useContext(Ma),{filterValues:d,_columns:m,_sizes:p}=c.getState();function v(g){return r?" "+r(g):""}return l.jsx(l.Fragment,{children:a.map((g,w)=>l.jsx("tr",{children:g.map(y=>{const b=m.find(A=>A.id===y.id),C=`wx-print-cell-${i}${v(b)}${y.filter?" wx-print-cell-filter":""}${y.vertical?" wx-vertical":""}`,j=y.cell;return l.jsx("th",{style:Hy(Ky(y,p.columnWidth)),className:"wx-Gy81xq2u "+C,rowSpan:y.rowspan,colSpan:y.colspan,children:j?l.jsx(j,{api:c,cell:Object.fromEntries(Object.entries(y).filter(([A])=>A!=="cell")),column:b,row:w}):y.filter?l.jsx("div",{className:"wx-Gy81xq2u wx-print-filter",children:IC(d,m,y)}):l.jsx("div",{className:"wx-Gy81xq2u wx-text",children:y.text??""})},y.id)})},w))})}function _j(n){const{columns:a,rowStyle:i,columnStyle:r,cellStyle:c,header:d,footer:m,reorder:p}=n,v=f.useContext(Ma),{flatData:g,_sizes:w}=v.getState(),y=d&&xx(a,"header",w.headerRowHeights),b=m&&xx(a,"footer",w.footerRowHeights);function C(A,T){let k="";return k+=r?" "+r(T):"",k+=c?" "+c(A,T):"",k}function j(A,T){return typeof T.draggable=="function"?T.draggable(A,T)!==!1:T.draggable}return l.jsxs("table",{className:`wx-8NTMLH0z wx-print-grid ${a.some(A=>A.flexgrow)?"wx-flex-columns":""}`,children:[d?l.jsx("thead",{children:l.jsx(kx,{columns:y,type:"header",columnStyle:r})}):null,l.jsx("tbody",{children:g.map((A,T)=>l.jsx("tr",{className:"wx-8NTMLH0z wx-row"+(i?" "+i(A):""),style:{height:`${A.rowHeight||w.rowHeight}px`},children:a.map(k=>k.collapsed?null:l.jsxs("td",{className:`wx-8NTMLH0z wx-print-cell wx-cell ${C(A,k)}`,style:Hy(Ky(k,w.columnWidth)),children:[p&&k.draggable?l.jsx("span",{className:"wx-8NTMLH0z wx-print-draggable",children:j(A,k)?l.jsx("i",{className:"wx-8NTMLH0z wxi-drag"}):null}):null,k.treetoggle?l.jsxs(l.Fragment,{children:[l.jsx("span",{style:{marginLeft:A.$level*28+"px"}}),A.$count?l.jsx("i",{className:`wx-8NTMLH0z wx-print-grid-tree-toggle wxi-menu-${A.open!==!1?"down":"right"}`}):null]}):null,k.cell?(()=>{const R=k.cell;return l.jsx(R,{api:v,row:A,column:k})})():l.jsx("span",{children:wi(A,k)})]},k.id))},T))}),m?l.jsx("tfoot",{children:l.jsx(kx,{columns:b,type:"footer",columnStyle:r})}):null]})}function zj(n){const{config:a,...i}=n,r=f.useContext(Ma),{_skin:c,_columns:d}=r.getState(),m=f.useMemo(()=>LC(d,a),[]),p=f.useRef(null);return f.useEffect(()=>{const v=document.body;v.classList.add("wx-print");const g=p.current;if(!g)return;const w=g.cloneNode(!0);v.appendChild(w);const y=`@media print { @page { size: ${a.paper} ${a.mode}; }`,b=document.createElement("style");b.setAttribute("type","text/css"),b.setAttribute("media","print"),document.getElementsByTagName("head")[0].appendChild(b),b.appendChild(document.createTextNode(y)),window.print(),b.remove(),v.classList.remove("wx-print"),w.remove()},[]),l.jsx("div",{className:`wx-4zwCKA7C wx-${c}-theme wx-print-container`,ref:p,children:m.map((v,g)=>l.jsx("div",{className:"wx-4zwCKA7C wx-print-grid-wrapper",children:l.jsx(_j,{columns:v,...i})},g))})}function Oj(n){const{header:a,footer:i,overlay:r,multiselect:c,onreorder:d,rowStyle:m,columnStyle:p,cellStyle:v,autoRowHeight:g,resize:w,clientWidth:y,clientHeight:b,responsiveLevel:C,hotkeys:j}=n,A=f.useContext(Ma),T=Ze(A,"dynamic"),k=Ze(A,"_columns"),R=Ze(A,"flatData"),E=Ze(A,"split"),$=Ze(A,"_sizes"),[F,q]=Ya(A,"selectedRows"),I=Ze(A,"select"),_=Ze(A,"editor"),fe=Ze(A,"scrollLeft"),G=Ze(A,"scrollTop"),ue=Ze(A,"tree"),Y=Ze(A,"focusCell"),ae=Ze(A,"_print"),le=Ze(A,"undo"),V=Ze(A,"reorder"),z=Ze(A,"_rowHeightFromData"),[K,Q]=f.useState(0);f.useEffect(()=>{Q(gs())},[]);const[P,ie]=f.useState(0),Se=f.useMemo(()=>(k||[]).some(X=>!X.hidden&&X.flexgrow),[k]),D=f.useMemo(()=>$?.rowHeight||0,[$]),Z=f.useRef(null),[ye,be]=f.useState(null),[de,Ne]=f.useState(null),Ie=f.useMemo(()=>{let X=[],je=0;return E&&E.left&&(X=(k||[]).slice(0,E.left).filter(Le=>!Le.hidden).map(Le=>({...Le})),X.forEach(Le=>{Le.fixed={left:1,leftSize:E.left},Le.left=je,je+=Le.width}),X.length&&(X[X.length-1].fixed.left=-1)),{columns:X,width:je}},[E,k]),re=f.useMemo(()=>{let X=[],je=0;if(E&&E.right){X=(k||[]).slice(E.right*-1).filter(Le=>!Le.hidden).map(Le=>({...Le}));for(let Le=X.length-1;Le>=0;Le--){const We=X[Le];We.fixed={right:1},We.right=je,je+=We.width}X.length&&(X[0].fixed={right:-1})}return{columns:X,width:je}},[E,k]),Ke=f.useMemo(()=>{const X=(k||[]).slice(E?.left||0,(k||[]).length-(E?.right??0)).filter(je=>!je.hidden);return X.forEach(je=>{je.fixed=0}),X},[k,E]),De=f.useMemo(()=>(k||[]).reduce((X,je)=>(je.hidden||(X+=je.width),X),0),[k]),Qe=1;function ne(X,je,Le){let We=je,xt=X;if(Ke.length){let gt=Ke.length;for(let Ue=X;Ue>=0;Ue--)Ke[Ue][Le].forEach(dt=>{dt.colspan>1&&Ue>X-dt.colspan&&Ue<gt&&(gt=Ue)});if(gt!==Ke.length&><X){for(let Ue=gt;Ue<X;Ue++)We-=Ke[Ue].width;xt=gt}}return{index:xt,delta:We}}const ge=f.useMemo(()=>{let X,je,Le;const We=fe||0,xt=(fe||0)+(y||0);let gt=0,Ue=0,dt=0,tn=0;Ke.forEach((Gt,bt)=>{We>dt&&(gt=bt,tn=dt),dt=dt+Gt.width,xt>dt&&(Ue=bt+Qe)});const Ft={header:0,footer:0};for(let Gt=Ue;Gt>=gt;Gt--)["header","footer"].forEach(bt=>{Ke[Gt]&&Ke[Gt][bt].forEach(Da=>{const Wa=Da.colspan;if(Wa&&Wa>1){const Ka=Wa-(Ue-Gt+1);Ka>0&&(Ft[bt]=Math.max(Ft[bt],Ka))}})});const Tn=ne(gt,tn,"header"),Mt=ne(gt,tn,"footer"),Ht=Tn.delta,Et=Tn.index,ys=Mt.delta,pn=Mt.index;return Se&&De>(y||0)?X=je=Le=[...Ie.columns,...Ke,...re.columns]:(X=[...Ie.columns,...Ke.slice(gt,Ue+1),...re.columns],je=[...Ie.columns,...Ke.slice(Et,Ue+Ft.header+1),...re.columns],Le=[...Ie.columns,...Ke.slice(pn,Ue+Ft.footer+1),...re.columns]),{data:X||[],header:je||[],footer:Le||[],d:tn,df:ys,dh:Ht}},[Ke,Ie,re,fe,y,Se,De]),Re=f.useMemo(()=>a&&$?.headerHeight||0,[a,$]),te=f.useMemo(()=>i&&$?.footerHeight||0,[i,$]),oe=f.useMemo(()=>y&&b?De>=y:!1,[y,b,De]),[Ae,Ce]=f.useState(!1),st=f.useMemo(()=>(b||0)-Re-te-(oe?K:0),[b,Re,te,oe,K]),me=f.useMemo(()=>Math.ceil((st||0)/(D||1))+1,[st,D]),He=f.useRef([]),[_e,Ge]=f.useState(0),[na,hn]=f.useState(void 0),kn=f.useMemo(()=>{let X=0,je=0;const Le=2,We=G||0;if(g){let Ue=We;for(;Ue>0;)Ue-=He.current[X]||D,X++;je=We-Ue;for(let dt=Math.max(0,X-Le-1);dt<X;dt++)je-=He.current[X-dt]||D;X=Math.max(0,X-Le)}else{if(z){let Ue=0,dt=0;for(let Mt=0;Mt<(R||[]).length;Mt++){const Ht=R[Mt].rowHeight||D;if(dt+Ht>We){Ue=Mt;break}dt+=Ht}X=Math.max(0,Ue-Le);for(let Mt=0;Mt<X;Mt++)je+=R[Mt].rowHeight||D;let tn=0,Ft=0;for(let Mt=Ue+1;Mt<(R||[]).length;Mt++){const Ht=R[Mt].rowHeight||D;if(tn++,Ft+Ht>st)break;Ft+=Ht}const Tn=Math.min(T?T.rowCount:(R||[]).length,Ue+tn+Le);return{d:je,start:X,end:Tn}}X=Math.floor(We/(D||1)),X=Math.max(0,X-Le),je=X*(D||0)}const xt=T?T.rowCount:(R||[]).length,gt=Math.min(xt,X+(me||0)+Le);return{d:je,start:X,end:gt}},[g,z,G,D,T,R,me,st]),Wn=f.useMemo(()=>{const X=T?T.rowCount:(R||[]).length;if(g)return _e+kn.d+(X-(na||0))*(D||0);if(!z)return X*(D||0);let je=0;for(let Le=0;Le<X;Le++)je+=R[Le]?.rowHeight||D;return je},[T,R,D,g,z,_e,kn.d,na]),Ci=f.useRef({});Ci.current={clientWidth:y,clientHeight:b,fullHeight:Wn,headerHeight:Re,footerHeight:te,fullWidth:De,SCROLLSIZE:K};const Na=f.useCallback(()=>{const X=Ci.current;Ce(X.clientWidth&&X.clientHeight?X.fullHeight+X.headerHeight+X.footerHeight>=X.clientHeight-(X.fullWidth>=X.clientWidth?X.SCROLLSIZE:0):!1)},[]);f.useEffect(()=>{const X=requestAnimationFrame(Na);return()=>window.cancelAnimationFrame(X)},[P,Na]),f.useEffect(()=>{Na()},[b,Na]);const In=f.useMemo(()=>Se&&De<=(y||0)?(y||0)-0-(Ae?K:0):De,[Se,De,y,Ae,K,oe]),dr=f.useMemo(()=>Se&&De<=(y||0)?y||0:In<(y||0)?De+(Ae?K:0):-1,[Se,De,y,In,Ae,K]),ps=f.useRef({});f.useEffect(()=>{if(T&&(ps.current.start!==kn.start||ps.current.end!==kn.end)){const{start:X,end:je}=kn;ps.current={start:X,end:je},A&&A.exec&&A.exec("request-data",{row:{start:X,end:je}})}},[T,kn,A]);const mt=f.useMemo(()=>T?R||[]:(R||[]).slice(kn.start,kn.end),[T,R,kn]),An=f.useMemo(()=>(F||[]).filter(X=>(mt||[]).some(je=>je.id===X)),[q,mt]),Me=f.useMemo(()=>kn.start,[kn.start]),ji=f.useRef({top:G,left:fe});ji.current={top:G,left:fe};const Je=f.useCallback(X=>{const je=X.target.scrollTop,Le=X.target.scrollLeft,We=ji.current;(je!==We.top||Le!==We.left)&&A.exec("scroll-to",{top:je,left:Le})},[A]),fr=f.useCallback(X=>{X.shiftKey&&X.preventDefault(),Z.current&&Z.current.focus&&Z.current.focus()},[]),At=f.useCallback(()=>!!(k||[]).find(X=>!!X.draggable),[k]),Ta=f.useRef(null),Pt=f.useRef(null),Kn=f.useRef({dblclick:(X,je)=>{const Le={id:X,column:_c(je,"data-col-id")};A.exec("open-editor",Le)},click:(X,je)=>{if(je.target.closest("input")||Ta.current)return;const Le=_c(je,"data-col-id");if(Y?.id!==X&&A.exec("focus-cell",{row:X,column:Le,eventSource:"click"}),I===!1)return;const We=c&&(je.ctrlKey||je.metaKey),xt=c&&je.shiftKey;(We||F.length>1||!F.includes(X))&&A.exec("select-row",{id:X,toggle:We,range:xt})},"toggle-row":X=>{const je=A.getRow(X);A.exec(je.open!==!1?"close-row":"open-row",{id:X})},"ignore-click":()=>!1}),xa=f.useMemo(()=>({top:Re,bottom:te,left:Ie.width,xScroll:oe,yScroll:Ae,sense:g&&de?de.offsetHeight:Math.max($?.rowHeight||0,40),node:Z.current&&Z.current.firstElementChild}),[Re,te,Ie.width,oe,Ae,g,de,$]);function Ra(X,je){const{container:Le,sourceNode:We,from:xt}=je;if(At()&&!We.getAttribute("draggable-data"))return!1;be(xt),ue&&A.getRow(xt).open&&A.exec("close-row",{id:xt,nested:!0});const gt=ro(We),Ue=gt.cloneNode(!0);Ue.classList.remove("wx-selected"),Ue.querySelectorAll("[tabindex]").forEach(Tn=>Tn.setAttribute("tabindex","-1")),Le.appendChild(Ue),Ne(Ue);const dt=(fe||0)-ge.d,tn=Ae?K:0;Le.style.width=Math.min((y||0)-tn,Se&&De<=(y||0)?In:In-tn)+dt+"px";const Ft=gd(gt);je.offset={x:dt,y:-Math.round(Ft.height/2)},Pt.current||(Pt.current=X.clientY)}function qt(X,je){const{from:Le}=je,We=je.pos,xt=gd(Z.current);We.x=xt.x;const gt=xa.top;if(We.y<gt)We.y=gt;else{const Ue=xt.height-(oe&&K>0?K:Math.round(xa.sense/2))-xa.bottom;We.y>Ue&&(We.y=Ue)}if(Z.current.contains(je.targetNode)){const Ue=ro(je.targetNode),dt=Ue&&Od(Ue);if(dt&&dt!==Le){je.to=dt;const tn=g?de?.offsetHeight:$?.rowHeight;if(de&&((G||0)===0||We.y>gt+tn-1)){const Ft=Ue.getBoundingClientRect(),Tn=gd(de).y,Mt=Ft.y,Ht=Tn>Mt?-1:1,Et=Ht===1?"after":"before",ys=A.getState().flatData,pn=Math.abs(ys.findIndex(bt=>bt.id===Le)-ys.findIndex(bt=>bt.id===dt)),Gt=pn!==1?Et==="before"?"after":"before":Et;if(pn===1&&(Ht===-1&&X.clientY>Pt.current||Ht===1&&X.clientY<Pt.current))return;Pt.current=X.clientY,A.exec("move-item",{id:Le,target:dt,mode:Gt,inProgress:!0})}}d&&d({event:X,context:je})}fj(X,xt,je,xa)}function Os(X,je){const{from:Le,to:We}=je;A.exec("move-item",{id:Le,target:We,inProgress:!1}),Ta.current=setTimeout(()=>{Ta.current=0},1),be(null),Ne(null),Pt.current=null,Zy(je)}function gs(){const X=document.createElement("div");X.style.cssText="position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;min-height:100px;overflow-y:scroll;",document.body.appendChild(X);const je=X.offsetWidth-X.clientWidth;return document.body.removeChild(X),je}const vs=f.useMemo(()=>dr>0?{width:`${dr}px`}:void 0,[dr]),mr=f.useRef(null);function hr(){Promise.resolve().then(()=>{let X=0,je=Me;const Le=mr.current;Le&&(Array.from(Le.children).forEach((We,xt)=>{He.current[Me+xt]=We.offsetHeight,X+=We.offsetHeight,je++}),Ge(X),hn(je))})}f.useEffect(()=>{mt&&g&&hr()},[mt,g,Me]);let[Ea,xs]=f.useState();f.useEffect(()=>{if(Y&&(!I||!An.length||An.includes(Y.row)))xs({...Y});else if(mt.length&&ge.data.length){if(!Ea||An.length&&!An.includes(Ea.row)||mt.findIndex(X=>X.id===Ea.row)===-1||ge.data.findIndex(X=>X.id===Ea.column&&!X.collapsed)===-1){const X=An[0]||mt[0].id,je=ge.data.findIndex(Le=>!Le.collapsed);xs(je!==-1?{row:X,column:ge.data[je].id}:null)}}else xs(null)},[Y]);const Mn=f.useRef(null);f.useEffect(()=>{const X=Z.current;if(!X)return;const je=rj(X,w);return()=>{typeof je=="function"&&je()}},[w]);const aa=f.useRef({});Object.assign(aa.current,{start:Ra,move:qt,end:Os,getReorder:()=>V,getDraggableInfo:()=>({hasDraggable:At()})}),f.useEffect(()=>{const X=Z.current;return X?cj(X,aa).destroy:void 0},[V,Z.current]),f.useEffect(()=>{const X=Z.current;return X?lj(X,{keys:j!==!1&&{...sj,"ctrl+z":le,"ctrl+y":le,...j},exec:je=>A.exec("hotkey",je)}).destroy:void 0},[A,le,j]);const en=f.useRef({scroll:A.getReactiveState().scroll,scrollLeft:A.getReactiveState().scrollLeft,scrollTop:A.getReactiveState().scrollTop});en.current.getWidth=()=>(y||0)-(Ae?K:0),en.current.getHeight=()=>st,en.current.getScrollMargin=()=>Ie.width+re.width,f.useEffect(()=>{ij(Mn.current,en.current)},[]);const Is=f.useRef(null);f.useEffect(()=>{const X=Is.current;if(!X)return;const je=[];je.push(zs(X,()=>Y&&A.exec("focus-cell",{eventSource:"click"})).destroy),je.push(cC(X,Kn.current)),ie(X.clientHeight);const Le=new ResizeObserver(()=>{ie(X.clientHeight)});return Le.observe(X),je.push(()=>Le.disconnect()),()=>je.forEach(We=>We())},[]);const Nn=`wx-grid ${C?`wx-responsive-${C}`:""}`;return f.useEffect(()=>{Y&&(mt.some(X=>X.id===Y.row)&&ge.data.some(X=>X.id===Y.column&&!X.collapsed)||A.exec("focus-cell",{eventSource:"destroy"}))},[Y,mt,ge.data,A]),l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"wx-4VuBwK2D "+Nn,style:{"--header-height":`${Re}px`,"--footer-height":`${te}px`,"--split-left-width":`${Ie.width}px`,"--split-right-width":`${re.width}px`},children:l.jsx("div",{ref:Z,className:"wx-4VuBwK2D wx-table-box",style:vs,role:ue?"treegrid":"grid","aria-colcount":ge.data.length,"aria-rowcount":mt.length,"aria-multiselectable":ue&&c?!0:void 0,tabIndex:-1,children:l.jsxs("div",{ref:Mn,className:"wx-4VuBwK2D wx-scroll",style:{overflowX:oe?"scroll":"hidden",overflowY:Ae?"scroll":"hidden"},onScroll:Je,children:[a?l.jsx("div",{className:"wx-4VuBwK2D wx-header-wrapper",children:l.jsx(jx,{contentWidth:In,deltaLeft:ge.dh,columns:ge.header,columnStyle:p,bodyHeight:st-+i})}):null,l.jsxs("div",{ref:Is,className:"wx-4VuBwK2D wx-body",style:{width:`${In}px`,height:`${Wn}px`},onMouseDown:X=>fr(X),children:[r?l.jsx(Aj,{overlay:r}):null,l.jsx("div",{ref:mr,className:"wx-4VuBwK2D wx-data",style:{paddingTop:`${kn.d}px`,paddingLeft:`${ge.d}px`},children:mt.map((X,je)=>{const Le=F.indexOf(X.id)!==-1,We=ye===X.id,xt="wx-row"+(g?" wx-autoheight":"")+(m?" "+m(X):"")+(Le?" wx-selected":"")+(We?" wx-inactive":""),gt=g?{minHeight:`${X.rowHeight||D}px`}:{height:`${X.rowHeight||D}px`};return l.jsx("div",{className:"wx-4VuBwK2D "+xt,"data-id":Sn(X.id),"data-context-id":Sn(X.id),style:gt,role:"row","aria-rowindex":je,"aria-expanded":X.open,"aria-level":ue?X.$level+1:void 0,"aria-selected":ue?Le:void 0,tabIndex:-1,children:ge.data.map(Ue=>Ue.collapsed?l.jsx("div",{className:"wx-4VuBwK2D wx-cell wx-collapsed"},Ue.id):_?.id===X.id&&_.column===Ue.id?l.jsx(Lj,{row:X,column:Ue},Ue.id):l.jsx(vj,{row:X,column:Ue,columnStyle:p,cellStyle:v,reorder:V,focusable:Ea?.row===X.id&&Ea?.column===Ue.id},Ue.id))},X.id)})})]}),i&&(R||[]).length?l.jsx(jx,{type:"footer",contentWidth:In,deltaLeft:ge.df,columns:ge.footer,columnStyle:p}):null]})})}),ae?l.jsx(zj,{config:ae,rowStyle:m,columnStyle:p,cellStyle:v,header:a,footer:i,reorder:V}):null]})}const Ij=n=>n.split("-").map(a=>a?a.charAt(0).toUpperCase()+a.slice(1):"").join(""),Bj=f.forwardRef(function({data:n=[],columns:a=[],rowStyle:i=null,columnStyle:r=null,cellStyle:c=null,selectedRows:d,select:m=!0,multiselect:p=!1,header:v=!0,footer:g=!1,dynamic:w=null,overlay:y=null,reorder:b=!1,onReorder:C=null,autoRowHeight:j=!1,sizes:A,split:T,tree:k=!1,autoConfig:R=!1,init:E=null,responsive:$=null,sortMarks:F,undo:q=!1,hotkeys:I=null,filterValues:_,...fe},G){const ue=f.useRef();ue.current=fe;const Y=f.useMemo(()=>new ZC($y),[]),ae=f.useMemo(()=>Y.in,[Y]),le=f.useRef(null);le.current===null&&(le.current=new zy((re,Ke)=>{const De="on"+Ij(re);ue.current&&ue.current[De]&&ue.current[De](Ke)}),ae.setNext(le.current));const V=f.useMemo(()=>({getState:Y.getState.bind(Y),getReactiveState:Y.getReactive.bind(Y),getStores:()=>({data:Y}),exec:ae.exec,setNext:re=>(le.current=le.current.setNext(re),le.current),intercept:ae.intercept.bind(ae),on:ae.on.bind(ae),detach:ae.detach.bind(ae),getRow:Y.getRow.bind(Y),getColumn:Y.getColumn.bind(Y)}),[Y,ae]),[z,K]=f.useState(0),[Q,P]=f.useState(0),[ie,Se]=f.useState(null),[D,Z]=f.useState(null),ye=f.useMemo(()=>{if(R&&!a.length&&n.length){const re=n[0],Ke=[];for(let De in re)if(De!=="id"&&De[0]!=="$"){let Qe={id:De,header:De[0].toUpperCase()+De.slice(1)};typeof R=="object"&&(Qe={...Qe,...R}),Ke.push(Qe)}return Ke}return(D&&D.columns)??a},[R,a,n,D]),be=f.useMemo(()=>(D&&D.sizes)??A,[D,A]),de=f.useCallback(re=>{if(K(re.width),P(re.height),$){const Ke=Object.keys($).map(Number).sort((De,Qe)=>De-Qe).find(De=>re.width<=De)??null;Ke!==ie&&(Z($[Ke]),Se(Ke))}},[$,ie]),Ne=f.useContext(jn.theme),Ie=f.useRef(0);return f.useEffect(()=>{if(!Ie.current)E&&E(V);else{const re=Y.getState();Y.init({data:n,columns:ye,split:T||re.split,sizes:be||re.sizes,selectedRows:d||re.selectedRows,dynamic:w,tree:k,sortMarks:F||re.sortMarks,filterValues:_||re.filterValues,undo:q,reorder:b,_skin:Ne,_select:m})}Ie.current++},[Y,n,ye,T,be,d,w,k,F,_,q,b,Ne,m,E,V]),Ie.current===0&&Y.init({data:n,columns:ye,split:T||{left:0},sizes:be||{},selectedRows:d||[],dynamic:w,tree:k,sortMarks:F||{},filterValues:_||{},undo:q,reorder:b,_skin:Ne,select:m}),f.useImperativeHandle(G,()=>({...V}),[V]),l.jsx(Ma.Provider,{value:V,children:l.jsx(_h,{words:zh,optional:!0,children:l.jsx(Oj,{header:v,footer:g,overlay:y,rowStyle:i,columnStyle:r,cellStyle:c,onReorder:C,multiselect:p,autoRowHeight:j,clientWidth:z,clientHeight:Q,responsiveLevel:ie,resize:de,hotkeys:I})})})});Mh(va);const Cn=f.createContext(null),Bh=f.createContext(null),Fh=f.createContext(null);function Fj({children:n}){const a=f.useContext(jn.i18n),i=f.useMemo(()=>a.getGroup("filemanager"),[a]),r=f.useContext(Cn),[c]=Ya(r,"panels"),d=Ze(r,"activePanel"),m=c[d].path,[p,v]=f.useState(null),[g,w]=f.useState(null),[y,b]=f.useState(""),[C,j]=f.useState(""),[A,T]=f.useState(!1);function k(){const F=y.trim();if(!F){T(!0);return}p.add?r.exec("create-file",{file:{...p.item,name:F},parent:m}):C!==F&&r.exec("rename-file",{id:p.item.id,name:F}),R()}function R(){v(null),T(null),j(""),b("")}function E(){r.exec("delete-files",{ids:g.selected}),w(null)}const $=f.useMemo(()=>({showPrompt(F){const q=F.item.name||(F.item.type==="folder"?i("New folder"):`${i("New file")}.txt`);j(q),b(q),v({...F})},showConfirm(F){w({...F})}}),[i]);return l.jsxs(Bh.Provider,{value:$,children:[l.jsx(F1,{children:n}),p?l.jsx(oh,{title:i(`Enter ${p.item.type} name`),onConfirm:k,onCancel:R,children:l.jsx(Dh,{error:A,select:!0,focus:!0,value:y,onChange:({value:F})=>b(F)})}):null,g?l.jsx(oh,{title:i("Are you sure you want to delete these items:"),onConfirm:E,onCancel:()=>w(null),children:g.selected?l.jsx("ul",{className:"wx-gq7BMzEP wx-list",children:g.selected.map((F,q)=>l.jsx("li",{children:F},q))}):null}):null]})}let Ax={"7z":!0,rar:!0,zip:!0,css:!0,html:!0,js:!0,php:!0,md:!0,xml:!0,sql:!0,aif:!0,mid:!0,mp3:!0,waw:!0,wma:!0,doc:!0,docx:!0,txt:!0,avi:!0,mov:!0,mp4:!0,mpeg:!0,mpg:!0,pdf:!0,xls:!0,xlsx:!0,gif:!0,jpg:!0,jpeg:!0,png:!0,psd:!0,tiff:!0,svg:!0,folder:!0,file:!0,multiple:!0,search:!0,none:!0};function Hj(n){const a=n.lastIndexOf("."),i=a>0&&a<n.length-1?Math.min(10,n.length-a):Math.min(5,n.length),r=n.slice(0,-i),c=n.slice(-i);return[r,c]}function $j({item:n}){const a=f.useContext(Cn),i=f.useContext(jn.i18n).getGroup("filemanager"),r=f.useContext(Cn).templates,[c]=Ya(a,"panels"),d=Ze(a,"activePanel"),m=Ze(a,"mode"),p=c[d].selected,v=f.useMemo(()=>r.preview(n,214,163),[r,n]),g=f.useMemo(()=>r.icon(n,"big"),[r,n]),[w,y]=f.useMemo(()=>Hj(n.name),[n.name]);return l.jsx(l.Fragment,{children:n.id==="/wx-filemanager-parent-link"?m!=="search"?l.jsx("div",{className:"wx-GAOa4kDV wx-back-item",children:l.jsxs("div",{className:`wx-GAOa4kDV wx-back ${n.navigation?"wx-selected":""}`,"data-id":Sn("/wx-filemanager-parent-link"),children:[l.jsx("i",{className:"wx-GAOa4kDV wxi-arrow-left"}),l.jsx("span",{children:i("Back to parent folder")})]})}):null:l.jsxs("div",{className:`wx-GAOa4kDV wx-item ${p?.length&&p.indexOf(n.id)>=0?"wx-selected":""}`,"data-id":Sn(n.id),children:[v?l.jsx("div",{className:"wx-GAOa4kDV wx-preview wx-file-preview",children:l.jsx("img",{className:"wx-GAOa4kDV wx-card-preview",alt:i("A miniature file preview"),src:v})}):g?l.jsx("div",{className:"wx-GAOa4kDV wx-preview wx-file-icon",children:l.jsx("img",{className:"wx-GAOa4kDV wx-card-preview",alt:"",src:g})}):l.jsx("div",{className:"wx-GAOa4kDV wx-preview",children:l.jsx("i",{className:`wx-GAOa4kDV wxi-${n.type}`})}),n.type==="folder"?l.jsxs("div",{className:"wx-GAOa4kDV wx-info",children:[l.jsxs("div",{className:"wx-GAOa4kDV wx-folder-name",children:[l.jsx("span",{className:"wx-GAOa4kDV wx-type",children:i("Folder")}),l.jsxs("span",{className:"wx-GAOa4kDV wx-name",children:[l.jsx("span",{children:w}),l.jsx("span",{children:y})]})]}),l.jsx("div",{"data-action-id":Sn(n.id),className:"wx-GAOa4kDV wx-more",children:l.jsx("i",{className:"wx-GAOa4kDV wxi-dots-v"})})]}):l.jsxs("div",{className:"wx-GAOa4kDV wx-info",children:[l.jsx("div",{className:"wx-GAOa4kDV wx-file-name",children:l.jsxs("span",{className:"wx-GAOa4kDV wx-name",children:[l.jsx("span",{children:w}),l.jsx("span",{children:y})]})}),l.jsx("div",{"data-action-id":Sn(n.id),className:"wx-GAOa4kDV wx-more",children:l.jsx("i",{className:"wx-GAOa4kDV wxi-dots-v"})})]})]})})}function nw(){const n=f.useContext(Cn),a=f.useContext(jn.i18n),i=f.useMemo(()=>a.getGroup("filemanager"),[a]),[r]=Ya(n,"panels"),c=Ze(n,"activePanel"),d=Ze(n,"mode"),m=r[c]._files,p=r[c].selected,v=r[c].path,g=r[c]._crumbs,w=r[c]._selectNavigation,y=f.useCallback((R,E)=>{const $=E&&(E.ctrlKey||E.metaKey),F=E&&E.shiftKey;if(R==="/wx-filemanager-parent-link"){if(p.length&&($||F))return;n.exec("select-file",{type:"navigation"});return}let q=R==="body"&&E?null:R;const I=E.target.className.indexOf("wx-more")!==-1||E.target.className.indexOf("wxi-dots-v")!==-1;setTimeout(()=>{n.exec("select-file",{id:q,toggle:$&&!I,range:F&&!I,panel:c})},1)},[n,p,c]),b=f.useCallback(()=>{g.length>1&&n.exec("set-path",{id:g[g.length-2].id,panel:c,selected:[g[g.length-1].id]})},[n,g,c]),C=f.useCallback(R=>{if(R==="/wx-filemanager-parent-link")return b();d==="search"&&n.exec("filter-files",{text:""});const E=m.find($=>$.id===R);E&&(E.type=="folder"?n.exec("set-path",{id:E.id,panel:c}):n.exec("open-file",{id:E.id}))},[n,b,d,m,c]),j=f.useCallback((R,E)=>{(!p?.length||!p.filter($=>$?.id===R).length>0)&&y(R,E)},[p,y]),A=f.useMemo(()=>v!=="/"?[{id:"/wx-filemanager-parent-link",name:i("Back to parent folder"),navigation:w},...m]:m,[v,i,w,m]),T=f.useRef(null),k=f.useRef();return f.useEffect(()=>{T.current&&(k.current?(k.current.click=y,k.current._dblclick=C,k.current.context=j):(k.current={click:y,dblclick:R=>k.current._dblclick(R),_dblclick:C,context:j},oo(T.current,k.current)))},[y,C,j]),d=="search"&&!A.length?l.jsx("div",{className:"wx-iyjASZCY wx-not-found",children:l.jsx("div",{className:"wx-iyjASZCY wx-not-found-text",children:i("Looks like nothing is here")})}):l.jsx("div",{tabIndex:0,className:"wx-iyjASZCY "+("wx-cards"+(v!=="/"&&d!=="search"?" wx-has-back-link":"")),"data-id":Sn("body"),ref:T,children:A.map(R=>l.jsx($j,{item:R},R.id))})}function cr({name:n="",spin:a=!1,onClick:i}){return l.jsx("i",{"data-menu-ignore":"true",className:`wx-uwcvNSAG wx-icon wxi-${n} ${a?"wx-spin":""} ${i?"wx-clickable":""}`,onClick:()=>{i&&i()}})}function Uj(){const n=f.useContext(jn.i18n).getGroup("filemanager"),a=f.useContext(Cn),i=Ze(a,"activePanel"),[r]=Ya(a,"panels"),c=f.useMemo(()=>r[i]._crumbs,[r,i]);function d(){a.exec("filter-files",{text:""})}return l.jsxs("div",{className:"wx-GDJvtROw wx-search",children:[l.jsxs("div",{className:"wx-GDJvtROw wx-toolbar",children:[l.jsx("div",{className:"wx-GDJvtROw wx-back-icon",children:l.jsx(cr,{name:"angle-left",onClick:d})}),l.jsxs("div",{className:"wx-GDJvtROw wx-text",children:[n("Search results in")," ",Array.isArray(c)&&c.map((m,p)=>l.jsxs(f.Fragment,{children:[p?"/":null,m.id=="/"?n(m.name):m.name]},p))]})]}),l.jsx(nw,{})]})}function _m({narrowMode:n,extraInfo:a}){const i=f.useContext(Cn),{preview:r,icon:c}=i.templates,d=f.useContext(jn.i18n),m=f.useMemo(()=>d.getGroup("filemanager"),[d]),p=f.useMemo(()=>so("%D, %d %F %Y, %H:%i",d.getRaw().calendar),[d]),[v,g]=Ya(i,"panels"),w=Ze(i,"activePanel"),y=Ze(i,"preview"),b=Ze(i,"search"),C=f.useMemo(()=>{const I=v&&w!=null&&v[w]?._selected?.length||0;return b&&!I},[b,g,w]),j=f.useMemo(()=>{const I=v&&w!=null?v[w]:null;return I?C?I._files:I._selected:[]},[C,g,w]),A=f.useCallback((I,_)=>(I?`${I} ${m(I>1?"folders":"folder")} `:"")+(_?`${_} ${m(_>1?"files":"file")}`:""),[m]),T=f.useCallback(()=>{i.exec("show-preview",{mode:!y})},[i,y]),k=f.useCallback(I=>I.type==="folder"?m("Folder"):I.ext||m("Unknown file"),[m]),R=f.useMemo(()=>{let I,_,fe,G,ue,Y,ae,le;if(j.length===1&&!C){_=j[0],I=_.name;const V=r(_,400,500);V?(fe=V,G=""):(G=c(_,"big"),fe=""),ue=_.type!=="folder"}else{if(_=ue=null,I="",j.length){let V=0,z=0,K=0,Q=[],P;j.forEach(Se=>{typeof Se.size>"u"&&(P=!0,V=void 0),P||(V+=Se.size),Q.push(k(Se)),Se.type==="folder"?z++:K++});const ie=new Set(Q);Y=ie.size>1?m("multiple"):[...ie][0],ae=A(z,K),le=V,C||(I=m("Multiple files"))}G=c({type:C?"search":j.length?"multiple":"none"},"big"),fe=""}return{name:I,item:_,previewSrc:fe,iconSrc:G,showDownloadIcon:ue,type:Y,totalCount:ae,totalSize:le}},[j,C,r,c,m,k,A]),E=f.useCallback(()=>{i.exec("download-file",{id:j[0].id})},[i,j]),$=f.useCallback(async I=>{if(!a||!I)return null;try{return await a(I)}catch(_){return console.log(_),null}},[a]),[F,q]=f.useState(null);return f.useEffect(()=>{let I=!1;return q(null),Promise.resolve($(R.item)).then(_=>{I||q(_)}).catch(()=>{I||q(null)}),()=>{I=!0}},[$,R.item]),l.jsx("div",{className:"wx-O0BTtRrH wx-wrapper",children:j&&j.length?l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"wx-O0BTtRrH wx-preview",children:[l.jsxs("div",{className:"wx-O0BTtRrH wx-toolbar",children:[l.jsx("div",{className:"wx-O0BTtRrH wx-name",children:R.name}),l.jsxs("div",{className:"wx-O0BTtRrH wx-icons",children:[R.showDownloadIcon?l.jsx(cr,{name:"download",onClick:E}):null,n?l.jsx(cr,{name:"close",onClick:T}):null]})]}),R.previewSrc?l.jsx("div",{className:"wx-O0BTtRrH wx-img-wrapper",children:l.jsx("img",{src:R.previewSrc,alt:m("A miniature file preview")})}):R.iconSrc?l.jsx("div",{className:"wx-O0BTtRrH wx-icon-wrapper",children:l.jsx("img",{src:R.iconSrc,alt:m("A miniature file preview")})}):l.jsx("div",{className:"wx-O0BTtRrH wx-icon-wrapper",children:R.item?l.jsx("i",{className:`wx-O0BTtRrH wx-icon wxi-${R.item.type}`}):l.jsx("i",{className:`wx-O0BTtRrH wx-icon wxi-${C?"search":"file-multiple-outline"}`})})]}),l.jsxs("div",{className:"wx-O0BTtRrH wx-info-panel",children:[l.jsx("div",{className:"wx-O0BTtRrH wx-title",children:m(C?"Found":"Information")}),l.jsxs("div",{className:"wx-O0BTtRrH wx-list",children:[R.item?l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Type")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:k(R.item)}),typeof R.item.size<"u"?l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Size")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:zc(R.item.size)})]}):null,l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Date")}),l.jsxs("span",{className:"wx-O0BTtRrH wx-value",children:[p(R.item.date)," "]})]}):l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Count")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:R.totalCount}),l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Type")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:R.type}),typeof R.totalSize<"u"?l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:m("Size")}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:zc(R.totalSize)})]}):null]}),F?Object.entries(F).map(([I,_])=>l.jsxs(bh.Fragment,{children:[l.jsx("span",{className:"wx-O0BTtRrH wx-name",children:I}),l.jsx("span",{className:"wx-O0BTtRrH wx-value",children:_})]},I)):null]})]})]}):l.jsxs("div",{className:"wx-O0BTtRrH wx-no-info-panel",children:[l.jsxs("div",{className:"wx-O0BTtRrH wx-toolbar",children:[l.jsx("div",{className:"wx-O0BTtRrH wx-name",children:R.name}),l.jsx("div",{className:"wx-O0BTtRrH wx-icons",children:n?l.jsx(cr,{name:"close",onClick:T}):null})]}),l.jsx("div",{className:"wx-O0BTtRrH wx-no-info-wrapper",children:l.jsxs("div",{className:"wx-O0BTtRrH wx-no-info",children:[R.previewSrc?l.jsx("div",{className:"wx-O0BTtRrH wx-img-wrapper",children:l.jsx("img",{src:R.previewSrc,alt:m("A miniature file preview")})}):R.iconSrc?l.jsx("div",{className:"wx-O0BTtRrH wx-icon-wrapper",children:l.jsx("img",{src:R.iconSrc,alt:m("A miniature file preview")})}):l.jsx("div",{className:"wx-O0BTtRrH wx-icon-wrapper",children:l.jsx("i",{className:`wx-O0BTtRrH wx-icon wxi-${C?"search":"message-question-outline"}`})}),l.jsx("span",{className:"wx-O0BTtRrH wx-text",children:C?"":m("Select file or folder to view details")})]})})]})})}function aw({panel:n}){const a=f.useContext(Cn),i=f.useContext(jn.i18n),r=f.useMemo(()=>i.getGroup("filemanager"),[i]),[c,d]=Ya(a,"panels"),m=f.useMemo(()=>c[n]._files,[d,n]),p=f.useMemo(()=>c[n]._crumbs||[],[d,n]);function v(j){const A=Oh(j,p);a.exec("set-path",{id:j,panel:n,...A&&{selected:[A]}})}const[g,w]=f.useState(null);f.useEffect(()=>{m&&w(null)},[m]);function y(){w(!0),a.exec("request-data",{id:p[p.length-1].id}),setTimeout(()=>{w(null)},5e3)}const b=f.useRef(null),C=f.useRef();return f.useEffect(()=>{C.current?C.current.click=v:(C.current={click:v},oo(b.current,C.current))},[v]),l.jsxs("div",{className:"wx-SNY5LTYx wx-breadcrumbs","data-menu-ignore":"true",ref:b,children:[l.jsx("div",{className:"wx-SNY5LTYx wx-refresh-icon",children:l.jsx(cr,{name:"refresh",spin:!!g,onClick:y})}),p.map((j,A)=>l.jsxs(bh.Fragment,{children:[A?l.jsx(cr,{name:"angle-right"}):null,l.jsx("div",{className:"wx-SNY5LTYx wx-item","data-id":Sn(j.id),"data-menu-ignore":"true",children:j.id=="/"?r(j.name):j.name})]},A))]})}function Pj({row:n}){const a=f.useContext(jn.i18n),[i]=f.useState(()=>a.getGroup("filemanager")),r=f.useContext(Cn).templates,[c]=f.useState(()=>r.icon(n,"small"));return l.jsx("div",{className:"wx-qgAqG6sL wx-name-cell",children:n.id==="/wx-filemanager-parent-link"?l.jsxs(l.Fragment,{children:[l.jsx("i",{className:"wx-qgAqG6sL wxi-arrow-left"}),l.jsxs("span",{className:"wx-qgAqG6sL wx-name",children:[" ",i("Back to parent folder")]})]}):l.jsxs(l.Fragment,{children:[c?l.jsx("img",{className:"wx-qgAqG6sL wx-icon",alt:"",src:c,height:"24px",width:"24px"}):l.jsx("i",{className:`wx-qgAqG6sL wxi-${n.type}`}),l.jsxs("span",{className:"wx-qgAqG6sL wx-name",children:[" ",n.name," "]})]})})}function sw({children:n}){const a=f.useContext(Cn),i=Ze(a,"activePanel"),r=f.useContext(Fh),c=f.useRef(null);let d=f.useRef({});return d.current.drop=()=>{const m=c.current,p=V0(m,"data-panel");p&&p!=i&&a.exec("set-active-panel",{panel:p*1})},d.current.dragEnter=()=>{const m=c.current;m&&m.classList.toggle("wx-active")},d.current.dragLeave=()=>{const m=c.current;m&&m.classList.toggle("wx-active")},f.useEffect(()=>{const m=c.current;return r.droparea(m,d.current)},[]),l.jsx("div",{className:"wx-LT9X7tb7 wx-upload-area",ref:c,children:n})}function dh({panel:n,active:a=!1,onClick:i,onContextMenu:r}){const c=f.useContext(Cn),d=f.useContext(jn.i18n),m=f.useMemo(()=>d.getGroup("filemanager"),[d]),p=f.useMemo(()=>so("%d %M %Y",d.getRaw().calendar),[d]),[v]=Ya(c,"panels"),g=v[n].selected,w=v[n].path,y=v[n]._crumbs,b=v[n]._sorts,C=v[n]._selectNavigation,j=v[n]._files,A=f.useMemo(()=>[{id:"name",header:m("Name"),flexgrow:3,sort:!0,resize:!0,cell:Pj},{id:"size",header:m("Size"),width:100,sort:!0,resize:!0,template:Y=>typeof Y=="number"?zc(Y):""},{id:"date",header:m("Date"),width:120,sort:!0,resize:!0,template:Y=>Y?p(Y):""}],[m,p]),T=f.useRef(null),k=f.useRef(null),R=f.useMemo(()=>C?["/wx-filemanager-parent-link"]:[...g],[C,g]);function E(Y,ae){if(ae&&ae.target&&ae.target.className&&ae.target.className.indexOf("wx-grip")!==-1)return;const le=ae&&(ae.ctrlKey||ae.metaKey),V=ae&&ae.shiftKey;if(Y==="/wx-filemanager-parent-link"){if(g.length&&(le||V))return;c.exec("select-file",{type:"navigation"});return}let z=Y==="body"&&ae?null:Y;!T.current&&!k.current?c.exec("select-file",{id:z,toggle:le,range:V,panel:n}):(T.current=null,k.current=null)}function $(){y.length>1&&c.exec("set-path",{id:y[y.length-2].id,panel:n,selected:[y[y.length-1].id]})}function F(Y){if(Y==="/wx-filemanager-parent-link")return $();const ae=j.find(le=>le.id===Y);ae&&(ae.type==="folder"?c.exec("set-path",{id:ae.id,panel:n}):c.exec("open-file",{id:ae.id}))}function q(Y){const ae=Y.key,le=b[w];let V=le?"asc":"desc";le&&le.key===ae&&(V=le.order==="asc"?"desc":"asc"),c.exec("sort-files",{key:ae,order:V,panel:n,path:w})}function I(Y){Y.intercept("sort-rows",ae=>(T.current=!0,q(ae),!1)),Y.intercept("select-row",()=>!1),Y.on("resize-column",()=>k.current=!0),Y.intercept("hotkey",()=>!1)}const _=f.useMemo(()=>w!=="/"?[{id:"/wx-filemanager-parent-link",name:m("Back to parent folder")},...j]:j,[w,j,m]),fe=f.useMemo(()=>{if(_&&b&&b[w]){const{key:Y,order:ae}=b[w];return{[Y]:{order:ae}}}},[_,b,w]),G=f.useRef(null),ue=f.useRef();return f.useEffect(()=>{ue.current?(ue.current.click=E,ue.current._dblclick=F):(ue.current={click:E,dblclick:Y=>ue.current._dblclick(Y),_dblclick:F},oo(G.current,ue.current))},[E,F]),l.jsxs("div",{onClick:i,onContextMenu:r,className:"wx-SSaVhET7 wx-wrapper",children:[l.jsx(aw,{panel:n}),l.jsx("div",{"data-id":Sn("body"),className:`wx-SSaVhET7 wx-list ${a?"wx-active":""}`,ref:G,children:l.jsx(sw,{children:l.jsx(Bj,{init:I,data:_,columns:A,selectedRows:R,columnStyle:()=>"wx-SSaVhET7 wx-each-cell",sizes:{rowHeight:42,headerHeight:42},sortMarks:fe})})})]})}function qj(){const n=f.useContext(Cn),a=Ze(n,"activePanel");function i(r){n.exec("set-active-panel",{panel:r})}return l.jsxs("div",{className:"wx-L55BfJa2 wx-panels","data-id":Sn("body"),children:[l.jsx("div",{className:"wx-L55BfJa2 wx-item","data-panel":0,children:l.jsx(dh,{panel:0,active:a==0,onClick:()=>i(0),onContextMenu:()=>i(0)})}),l.jsx("div",{className:"wx-L55BfJa2 wx-item","data-panel":1,children:l.jsx(dh,{panel:1,active:a==1,onClick:()=>i(1),onContextMenu:()=>i(1)})})]})}function lw({folderIcon:n=!1,folder:a={}}){const i=f.useContext(Cn),[r,c]=Ya(i,"panels"),d=Ze(i,"activePanel"),m=f.useMemo(()=>r[d].path,[c,d]),p=f.useContext(jn.i18n),v=f.useMemo(()=>p.getGroup("filemanager"),[p]),g=f.useMemo(()=>!!a.data?.find(C=>C.type==="folder"),[a]),w=f.useMemo(()=>a.id=="/"?v(a.name):a.name,[a,v]),y=f.useMemo(()=>a.$level>1?(a.$level-1)*20:0,[a]),b=a.open;return l.jsxs(l.Fragment,{children:[l.jsxs("li",{"data-id":Sn(a.id),className:`wx-NYfhvGIt wx-folder${m===a.id?" wx-selected":""}`,style:{paddingLeft:`${y}px`},children:[g?l.jsx("i",{className:`wx-NYfhvGIt wx-toggle wxi-${b?"angle-down":"angle-right"}`,"data-action":"toggle"}):l.jsx("span",{className:"wx-NYfhvGIt wx-toggle-placeholder"}),l.jsx("i",{className:"wx-NYfhvGIt "+(n||"wxi-folder")}),l.jsxs("span",{className:"wx-NYfhvGIt wx-name",children:[" ",w," "]})]}),b&&a.data&&a.data.length&&g?l.jsx(l.Fragment,{children:a.data.map(C=>C.type==="folder"?l.jsx(lw,{folder:C},C.id):null)}):null]})}function Gj(){const n=f.useContext(Cn),[a,i]=Ya(n,"data"),[r,c]=Ya(n,"panels"),d=Ze(n,"activePanel"),m=f.useMemo(()=>r[d]._crumbs,[c,d]),p=f.useCallback(C=>{n.exec("open-tree-folder",{id:C,mode:!a.byId(C).open})},[n,i]),v=f.useCallback(C=>{const j=Oh(C,m);n.exec("set-path",{id:C,panel:d,...j&&{selected:[j]}})},[n,m,d]),[g,w]=f.useState([]);f.useEffect(()=>{w(a.byId(0).data)},[i]);const y=f.useRef(null),b=f.useRef();return f.useEffect(()=>{b.current?(b.current.click=v,b.current.toggle=p):(b.current={click:v,toggle:p},oo(y.current,b.current))},[v,p]),l.jsx("ul",{ref:y,className:"wx-LyHJ6R6A",children:g.map(C=>C.type==="folder"?l.jsx(lw,{folder:C},C.id):null)})}function Vj(){const n=f.useContext(Cn),a=f.useContext(jn.i18n),i=f.useMemo(()=>a.getGroup("filemanager"),[a]),r=Ze(n,"drive"),c=r?r.used:"",d=r?r.total:"";return c&&d?l.jsxs("div",{className:"wx-DetSyKGG wx-drive",children:[l.jsx("progress",{value:c,max:d,className:"wx-DetSyKGG wx-progress"}),l.jsxs("p",{children:[zc(c)," ",i("of")," ",zc(d)," ",i("used")]})]}):null}function Yj({option:n}){const a=f.useContext(jn.i18n).getGroup("filemanager"),i=f.useContext(Fh),r=f.useCallback(()=>{i.open({})},[i]);return l.jsx("div",{className:"wx-9XiKcxq5 wx-upload-button",onClick:r,children:l.jsx("span",{children:a(n.text)})})}function Wj({readonly:n,menuOptions:a}){const i=f.useContext(jn.i18n).getGroup("filemanager"),{showPrompt:r}=f.useContext(Bh);f.useEffect(()=>{fC("upload",Yj)},[]);function c({action:m}){m&&(m.id==="add-file"?r({item:{type:"file",size:0,date:new Date},add:!0}):m.id==="add-folder"&&r({item:{type:"folder",date:new Date},add:!0}))}const d=f.useMemo(()=>a("add").map(m=>(m.text=i(m.text),m)),[a,i]);return l.jsxs("div",{className:"wx-FlucfALM wx-wrapper",children:[!n&&l.jsx("div",{className:"wx-FlucfALM wx-button",children:l.jsx(hC,{options:d,at:"bottom-fit",onClick:c,children:l.jsx(Mc,{type:"primary block",children:i("Add New")})})}),l.jsx("div",{className:"wx-FlucfALM wx-tree",children:l.jsx(Gj,{})}),l.jsx(Vj,{})]})}function Kj({value:n="",onSearch:a}){const[i,r]=Fy(n),c=f.useContext(jn.i18n).getGroup("filemanager"),d=f.useRef(null),m=f.useMemo(()=>i!==""?"wxi-close":"wxi-search",[i]);function p(g){const w=g.target.value;r(w),a&&a({value:w})}function v(){r(""),d.current&&d.current.focus(),a&&a({value:""})}return l.jsxs("div",{className:"wx-lUZMtgT1 wx-search-input",children:[l.jsx("i",{className:`wx-lUZMtgT1 wx-icon ${m}`,onClick:v}),l.jsx("input",{type:"text",className:"wx-lUZMtgT1 wx-text",ref:d,value:i,onInput:p,placeholder:c("Search")})]})}function Qj({narrowMode:n=!1,onShowTree:a}){const i=f.useContext(Cn),r=f.useContext(jn.i18n).getGroup("filemanager"),c=Ze(i,"mode"),d=Ze(i,"preview"),m=Ze(i,"search"),p=[{icon:"wxi-view-sequential",id:"table"},{icon:"wxi-view-grid",id:"cards"},{icon:"wxi-view-column",id:"panels"}];function v({value:y}){i.exec("set-mode",{mode:y})}function g(y){y.preventDefault(),i.exec("show-preview",{mode:!d})}function w(y){i.exec("filter-files",{text:y.value})}return l.jsxs("div",{className:"wx-5PZQQztG wx-toolbar",children:[l.jsxs("div",{className:"wx-5PZQQztG wx-left "+(n?"wx-left-narrow":""),children:[n?c==="panels"||c==="search"?null:l.jsx("div",{className:"wx-5PZQQztG wx-sidebar-icon","data-id":Sn("toggle-tree"),children:l.jsx(cr,{onClick:()=>a&&a(),name:"subtask"})}):l.jsx("div",{className:"wx-5PZQQztG wx-name",children:r("Files")}),l.jsx(Kj,{onSearch:w,value:m})]}),l.jsxs("div",{className:"wx-5PZQQztG wx-right",children:[n?null:l.jsx("div",{className:"wx-5PZQQztG wx-preview-icon",children:l.jsx(H1,{onClick:g,value:d,children:l.jsx("i",{className:"wx-5PZQQztG wxi-eye"})})}),l.jsx("div",{className:"wx-5PZQQztG wx-modes",children:l.jsx(_1,{value:c,options:p,onChange:v})})]})]})}function Xj(){const n=f.useContext(Cn),a=Ze(n,"activePanel");return l.jsxs("div",{className:"wx-NwohNJzN wx-wrapper",children:[l.jsx(aw,{panel:a}),l.jsx(sw,{children:l.jsx(nw,{})})]})}function Zj({readonly:n=!1,menuOptions:a,extraInfo:i}){const r=f.useRef(null),c=f.useRef(null),[d,m]=f.useState(void 0),[p,v]=f.useState(void 0),[g,w]=f.useState(!1),y=Vy(),b=f.useContext(Cn),{showPrompt:C,showConfirm:j}=f.useContext(Bh),A=f.useContext(jn.i18n),T=f.useMemo(()=>A.getGroup("filemanager"),[A]),k=Ze(b,"mode"),R=Ze(b,"preview"),E=Ze(b,"activePanel"),[$,F]=Ya(b,"panels"),q=f.useMemo(()=>($&&E!=null?$[E]:null)?.selected??[],[F,E]),I=f.useMemo(()=>($&&E!=null?$[E]:null)?.path,[F,E]),[_,fe]=f.useState([]);f.useEffect(()=>{const ie=r.current;if(!ie)return;const Se=new ResizeObserver(D=>{const Z=D[0]?.borderBoxSize?.[0]?.inlineSize;typeof Z=="number"&&v(Z<768)});return Se.observe(ie),()=>{Se.disconnect()}},[]);const G=f.useCallback(()=>{w(ie=>!ie)},[]),ue=f.useCallback(ie=>{p&&_c(ie)!=="toggle-tree"&&w(!1)},[p]);f.useEffect(()=>{const ie=c.current;if(ie)return zs(ie,ue).destroy},[ue]),f.useEffect(()=>{const ie=c.current;if(!ie)return;const Se=new ResizeObserver(()=>{ie&&m(ie.clientWidth)});return Se.observe(ie),ie&&m(ie.clientWidth),()=>{Se.disconnect()}},[]);const Y=f.useMemo(()=>({icon:"wxi-eye",text:"Preview",id:"preview"}),[]),ae=f.useCallback(ie=>{let Se=p?[Y]:[];return ie==="file"&&(Se=[...Se,...a().filter(D=>D.id==="download")]),Se},[p,Y,a]),le=f.useRef(null),V=f.useCallback((ie,Se,D)=>{const Z=D?[Se.id]:q;switch(ie){case"download":b.exec("download-file",{id:Se.id});break;case"copy":case"move":le.current={action:ie,ids:Z};break;case"paste":le.current&&b.exec(le.current.action==="copy"?"copy-files":"move-files",{ids:le.current.ids,target:Se?.type==="folder"?Se.id:I});break;case"rename":C({item:Se});break;case"delete":j({selected:Z});break;case"preview":b.exec("show-preview",{mode:!R});break}},[b,q,I,C,j,R]),z=f.useCallback(()=>$?.[E],[$,E]);f.useEffect(()=>{const ie=r.current;if(!ie)return;const Se=tC(ie,{api:b,menuOptions:n?ae:a,performAction:V,getPanel:z});return()=>{typeof Se=="function"?Se():Se&&typeof Se.destroy=="function"&&Se.destroy()}},[b,n,ae,a,V,z]);const K=f.useCallback((ie,Se)=>{const D=ie?b.getFile(ie):null,Z=Se.target.closest(".tree-item.folder");let ye;if(n)ye=ae(D?.type);else{switch(ie){case"body":ye=a(ie);break;default:if(D)if(!Z&&q.length>1)ye=p?[Y,...a("multiselect")]:a("multiselect");else if(ie==="/")ye=a("folder",D).filter(be=>be.id==="paste");else{const be=a(D.type,D);be&&(ye=p?[Y,...be]:be)}}k==="search"&&(ye=ye?.filter(be=>be.id!=="paste"))}if(D?.id&&(!q.length||!q.some(be=>be===D.id))&&!Z&&b.exec("select-file",{id:D.id}),ye?.length)return ye.forEach(be=>{Z&&(be.hotkey=""),be.text&&(be.text=T(be.text)),be.hotkey&&(be.subtext=be.hotkey)}),fe(ye),D||{}},[b,n,ae,a,q,p,Y,k,T]),Q=f.useCallback(ie=>{const{action:Se,context:D}=ie;Se&&V(Se.id,D,!Se.hotkey)},[V]);async function P(ie){await Promise.resolve();const{name:Se,size:D}=ie.file;b.exec("create-file",{file:{name:Se,size:D,date:new Date,file:ie.file},parent:I})}return l.jsx("div",{className:"wx-RJbNonjJ wx-filemanager wx-flex",ref:r,"data-menu-ignore":"false",children:p&&R?l.jsx("div",{className:"wx-RJbNonjJ wx-info-narrow",children:l.jsx(_m,{narrowMode:p,extraInfo:i})}):l.jsxs(l.Fragment,{children:[l.jsx(Qj,{narrowMode:p,onShowTree:G}),l.jsx(pC,{dataKey:"id",at:"point",options:_,resolver:K,onClick:Q,children:l.jsxs(Gy,{dataKey:"actionId",options:_,resolver:K,onClick:Q,children:[l.jsx(wC,{data:y,apiOnly:!0,uploadURL:P}),l.jsx(Fh.Provider,{value:y,children:l.jsx("div",{className:"wx-RJbNonjJ wx-content-wrapper wx-flex",children:k!=="panels"&&k!=="search"?l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"wx-RJbNonjJ "+["wx-sidebar",p?"wx-sidebar-narrow":"",g?"wx-sidebar-visible":""].filter(Boolean).join(" "),ref:c,children:l.jsx(Wj,{readonly:n,menuOptions:a})}),l.jsxs("div",{className:"wx-RJbNonjJ wx-content",style:{width:`calc(100% - ${d||0}px - 10px)`},children:[l.jsx("div",{className:`wx-RJbNonjJ wx-content-item${R?"":"-fit"}`,"data-id":Sn("body"),children:k==="table"?l.jsx(dh,{panel:E}):l.jsx(Xj,{})}),R?l.jsx("div",{className:"wx-RJbNonjJ wx-info",children:l.jsx(_m,{extraInfo:i})}):null]})]}):l.jsxs(l.Fragment,{children:[l.jsx("div",{className:`wx-RJbNonjJ wx-content-item${R?"":"-fit"}`,children:k==="panels"?l.jsx(qj,{}):l.jsx(Uj,{})}),R?l.jsx("div",{className:"wx-RJbNonjJ wx-info",children:l.jsx(_m,{extraInfo:i})}):null]})})})]})})]})})}const Jj=n=>n.split("-").map(a=>a?a.charAt(0).toUpperCase()+a.slice(1):"").join("");function ek(n,a){const{type:i,ext:r}=n;if(i==="folder")return!1;let c;return i&&i!=="file"&&Ax[i]?c=i:r?c=Ax[r]?r:"file":c="unknown",`https://cdn.svar.dev/icons/filemanager/vivid/${a}/${c}.svg`}const tk=f.forwardRef(function(n,a){const{data:i=[],mode:r="cards",drive:c=null,preview:d=!1,panels:m=null,activePanel:p=0,readonly:v=!1,menuOptions:g=Z1,extraInfo:w=null,init:y=null,icons:b=ek,previews:C=null,...j}=n,A=f.useRef();A.current=j;const T=f.useMemo(()=>new X1($y),[]),k=f.useMemo(()=>T.in,[T]),R=f.useRef(null);R.current===null&&(R.current=new zy((F,q)=>{const I="on"+Jj(F);A.current&&A.current[I]&&A.current[I](q)}),k.setNext(R.current));const E=f.useMemo(()=>({getState:T.getState.bind(T),getReactiveState:T.getReactive.bind(T),getStores:()=>({data:T}),exec:k.exec,setNext:F=>(R.current=R.current.setNext(F),R.current),intercept:k.intercept.bind(k),on:k.on.bind(k),detach:k.detach.bind(k),getFile:T.getFile.bind(T),serialize:T.serialize.bind(T),templates:{preview:C||(()=>null),icon:b==="simple"?(()=>null):b}}),[T,k]),$=f.useRef(0);return f.useEffect(()=>{if(!$.current)y&&y(E);else{const F=T.getState();T.init({data:i,mode:r,drive:c,preview:d,panels:m||F.panels||[],activePanel:p})}$.current++},[T,i,r,c,d,m,p,y,E]),$.current===0&&T.init({data:i,mode:r,drive:c,preview:d,panels:m||[],activePanel:p}),f.useImperativeHandle(a,()=>({...E}),[E]),l.jsx(Cn.Provider,{value:E,children:l.jsx(_h,{words:zh,optional:!0,children:l.jsx(Fj,{children:l.jsx(Zj,{readonly:v,menuOptions:g,extraInfo:w})})})})});function nk({fonts:n=!0,children:a}){return a?l.jsx(dx,{fonts:n,children:a}):l.jsx(dx,{fonts:n})}Mh(va);function Hh(n,a){if(!n||typeof n!="object"||Array.isArray(n))throw new Error(`Invalid Hub ${a} response.`);return n}function Bc(n,a,i){const r=Hh(n,i);if(!Array.isArray(r[a]))throw new Error(`Invalid Hub ${i} response: ${a} must be an array.`);return r[a]}function ak(n,a,i){const r=Hh(n,i);if(!r[a]||typeof r[a]!="object"||Array.isArray(r[a]))throw new Error(`Invalid Hub ${i} response: ${a} must be an object.`);return r[a]}async function sk(n,a=!1){return Bc(await Be(`/api/remote/filesystem/roots${a?"?refresh=1":""}`,void 0,n),"roots","filesystem roots")}async function zm(n,a){const i=await Be(`/api/remote/filesystem/entries?id=${encodeURIComponent(n)}`,void 0,a);return{folder:ak(i,"folder","filesystem entries"),entries:Bc(i,"entries","filesystem entries")}}async function lk(n,a){return Be("/api/remote/filesystem/selection/scan",{method:"POST",body:JSON.stringify({itemIds:n})},a)}async function ik(n,a,i,r){return Be("/api/remote/files/from-hub",{method:"POST",body:JSON.stringify({itemIds:n,deviceIds:a,remoteDirectory:i})},r)}async function rk(n,a=!1){const i=await Be(`/api/remote/files/jobs?active=${a?"1":"0"}`,void 0,n);return{jobs:Bc(i,"jobs","file transfer jobs")}}async function ok(n,a){return Be(`/api/remote/files/jobs/${encodeURIComponent(n)}`,void 0,a)}async function ck(n,a){return Be(`/api/remote/files/jobs/${encodeURIComponent(n)}/cancel`,{method:"POST"},a)}async function Mx(n){return Bc(await Be("/api/remote/filesystem/shared-folders",void 0,n),"folders","shared folders")}async function uk(n,a){return Be("/api/remote/filesystem/shared-folders",{method:"POST",body:JSON.stringify({sourceId:n})},a)}async function dk(n,a,i){return Be(`/api/remote/filesystem/shared-folders/${encodeURIComponent(n)}`,{method:"PATCH",body:JSON.stringify(a)},i)}async function fk(n,a){return Be(`/api/remote/filesystem/shared-folders/${encodeURIComponent(n)}`,{method:"DELETE"},a)}async function mk(n,a,i,r){const c=await Be(`/api/remote/filesystem/shared-folders/${encodeURIComponent(n)}/sync`,{method:"POST",body:JSON.stringify({deviceIds:a,remoteDirectory:i})},r),d=Hh(c,"shared folder sync");return{ok:d.ok===!0,jobs:Bc(c,"jobs","shared folder sync"),files:Number(d.files||0),totalBytes:Number(d.totalBytes||0)}}function hk(n){return{id:String(n.id),parentId:n.parent,name:n.name,type:n.type==="file"?"file":"folder",size:Number(n.size||0),modifiedAt:n.date?.toISOString()||null,displayPath:String(n.displayPath||n.name),hasChildren:n.lazy===!0||!!n.data?.length,locked:n.locked===!0}}function Nx(n){if(!Number.isFinite(n)||n<=0)return"0 B";const a=["B","KB","MB","GB","TB"];let i=n,r=0;for(;i>=1024&&r<a.length-1;)i/=1024,r+=1;return`${i.toFixed(r===0||i>=100?0:1)} ${a[r]}`}function vd(n){return n.driveType==="network"?"network":n.driveType==="removable"?"removable":"local"}function pk(n){const a=n.filter(i=>vd(i)==="local");return a.find(i=>/\bC:/i.test(`${i.name} ${i.displayPath||""}`))||a[0]||n[0]||null}function gk({hubUrl:n,roots:a,loading:i,error:r,onRefreshRoots:c,onImportFiles:d,onImportFolder:m,onSelectionChange:p,onShareItem:v,onAddSyncFolder:g,onNotice:w}){const y=f.useRef(null),b=f.useRef("/"),C=f.useRef(0),j=f.useRef([]),A=f.useRef(new Map),[T,k]=f.useState(null),[R,E]=f.useState([]),[$,F]=f.useState([]),[q,I]=f.useState(0),[_,fe]=f.useState(null),[G,ue]=f.useState(!1),[Y,ae]=f.useState(""),[le,V]=f.useState(new Set),z=a.find(ne=>ne.id===T)||null,K=R[R.length-1]||null,Q=z?K?.svarPath||`/${z.name}`:null,P=Q;f.useEffect(()=>{j.current=R,b.current=P||"/"},[P,R]);const ie=f.useMemo(()=>(A.current.clear(),!z||!P||R.length===0?[]:(R.forEach(ne=>A.current.set(ne.svarPath,ne.hubId)),[...R.map((ne,ge)=>({id:ne.svarPath,parent:ge===0?"/":R[ge-1].svarPath,type:"folder",name:ne.name,date:ne.modifiedAt?new Date(ne.modifiedAt):void 0,lazy:!1})),...$.map(ne=>{const ge=`${P}/${ne.name}`;return A.current.set(ge,ne.id),{id:ge,parent:P,name:ne.name,type:ne.type==="file"?"file":"folder",...ne.type==="file"?{size:ne.size}:{},date:ne.modifiedAt?new Date(ne.modifiedAt):void 0,lazy:ne.type!=="file"&&ne.hasChildren===!0,displayPath:ne.displayPath,locked:ne.locked,driveType:ne.driveType,totalBytes:ne.totalBytes,freeBytes:ne.freeBytes}})])),[z,$,P,R]),Se=ne=>A.current.get(String(ne))||String(ne),D=ne=>hk({...ne,id:Se(String(ne.id)),parent:Se(String(ne.parent))}),Z=async(ne,ge)=>{const Re=ne[ne.length-1];if(!Re)return;const te=++C.current;ue(!0),ae("");try{const oe=await zm(Re.hubId,n);if(te!==C.current)return;if(!Array.isArray(oe.entries))throw new Error("Invalid Hub filesystem entries response.");const Ae={...Re,displayPath:oe.folder.displayPath||Re.displayPath,modifiedAt:oe.folder.modifiedAt||Re.modifiedAt},Ce=[...ne.slice(0,-1),Ae];j.current=Ce,E(Ce),F(oe.entries),I(st=>st+1)}catch(oe){if(te!==C.current)return;console.error("[LiveDesk FS] folder navigation failed",{folderId:Re.hubId,error:oe}),ae(oe instanceof Error?`${ge}: ${oe.message}`:`${ge}: Unable to read this folder.`)}finally{te===C.current&&ue(!1)}},ye=async ne=>{const ge={svarPath:`/${ne.name}`,hubId:ne.id,name:ne.name,displayPath:ne.displayPath,modifiedAt:ne.modifiedAt},Re=++C.current;k(ne.id),j.current=[ge],E([ge]),b.current=ge.svarPath,F([]),ae(""),ue(!0),fe(ne.id),V(te=>{const oe=new Set(te);return oe.delete(ne.id),oe});try{const te=await zm(ne.id,n);if(Re!==C.current)return;if(!Array.isArray(te.entries))throw new Error("Invalid Hub filesystem entries response.");const oe={...ge,displayPath:te.folder.displayPath||ge.displayPath,modifiedAt:te.folder.modifiedAt||ge.modifiedAt};j.current=[oe],E([oe]),F(te.entries),I(Ae=>Ae+1)}catch(te){if(Re!==C.current)return;console.error("[LiveDesk FS] getEntries failed",{rootId:ne.id,error:te}),V(oe=>new Set(oe).add(ne.id)),ae(te instanceof Error?`${ne.name}: ${te.message}`:`${ne.name}: Unable to read this drive.`),w(te instanceof Error?`${ne.name}: ${te.message}`:`${ne.name}: Unable to read this drive.`)}finally{Re===C.current&&(fe(null),ue(!1))}},be=ne=>{const ge=j.current;ne<0||ne>=ge.length||ne===ge.length-1||Z(ge.slice(0,ne+1),ge[ne].name)},de=(ne,ge)=>{if(ne.type!=="folder")return;const Re=j.current,te=Re.findIndex(Ae=>Ae.svarPath===ge);if(te<0)return;const oe={svarPath:`${ge}/${ne.name}`,hubId:ne.id,name:ne.name,displayPath:ne.displayPath,modifiedAt:ne.modifiedAt};Z([...Re.slice(0,te+1),oe],ne.name)},Ne=()=>be(j.current.length-2),Ie=ne=>{if(ne.key!=="Enter"&&ne.code!=="Enter"&&ne.code!=="NumpadEnter"||ne.target?.closest('button, input, textarea, [contenteditable="true"]'))return;const Re=y.current;if(!Re)return;const te=Re.getState().panels?.flatMap(Ae=>Ae.selected||[])||[];if(te.length!==1)return;const oe=Re.getFile(String(te[0]));oe?.type==="folder"&&(ne.preventDefault(),ne.stopPropagation(),de(D(oe),String(oe.parent||b.current)))};f.useEffect(()=>{const ne=a.find(ge=>ge.id===T)||pk(a);if(V(ge=>new Set([...ge].filter(Re=>a.some(te=>te.id===Re)))),!ne){k(null),j.current=[],E([]),F([]);return}ye(ne)},[a]);const re=ne=>{y.current=ne,ne.on("request-data",async({id:ge})=>{const Re=String(ge),te=Se(Re);try{const oe=await zm(te,n);if(!Array.isArray(oe.entries))throw new Error("Invalid Hub filesystem entries response.");const Ae=oe.entries.map(Ce=>{const st=`${Re}/${Ce.name}`;return A.current.set(st,Ce.id),{id:st,parent:Re,name:Ce.name,type:Ce.type==="file"?"file":"folder",...Ce.type==="file"?{size:Ce.size}:{},date:Ce.modifiedAt?new Date(Ce.modifiedAt):void 0,lazy:Ce.type!=="file"&&Ce.hasChildren===!0,displayPath:Ce.displayPath,locked:Ce.locked,driveType:Ce.driveType,totalBytes:Ce.totalBytes,freeBytes:Ce.freeBytes}});await ne.exec("provide-data",{id:Re,data:Ae})}catch(oe){console.error("[LiveDesk FS] nested getEntries failed",{id:te,error:oe}),w(oe instanceof Error?oe.message:"Unable to read this folder.")}}),ne.intercept("set-path",({id:ge})=>{const Re=String(ge),te=j.current.findIndex(Ae=>Ae.svarPath===Re);if(te>=0)return be(te),!1;const oe=ne.getFile(Re);if(oe?.type==="folder")return de(D(oe),String(oe.parent||b.current)),!1}),ne.intercept("open-file",()=>!1),ne.on("select-file",()=>{window.setTimeout(()=>{const te=(ne.getState().panels?.flatMap(oe=>oe.selected||[])||[]).map(oe=>ne.getFile(oe)).filter(Boolean).map(oe=>D(oe));p(te.map(oe=>oe.id),te)},0)})},Ke=(ne,ge)=>{const Re=ge?D(ge):null,te=()=>{const oe=Re?.type==="file"?String(ge?.parent||b.current):String(ge?.id||b.current);y.current?.exec("request-data",{id:oe})};return ne==="body"?[{id:"refresh",text:"Refresh",icon:"mdi mdi-refresh",handler:te},{id:"properties",text:"Properties",icon:"mdi mdi-information-outline",handler:()=>w("Select a file or folder to view its properties.")}]:ne==="multiselect"?[{id:"share",text:"Share to workstations",icon:"mdi mdi-share-variant",handler:()=>{(y.current?.getState().panels?.flatMap(Ae=>Ae.selected||[])||[]).forEach(Ae=>{const Ce=y.current?.getFile(Ae);Ce&&v(D(Ce))})}},{id:"refresh",text:"Refresh",icon:"mdi mdi-refresh",handler:te}]:Re?[{id:"share",text:"Share to workstations",icon:"mdi mdi-share-variant",handler:()=>v(Re)},...Re.type==="folder"?[{id:"sync",text:"Add folder to Sync",icon:"mdi mdi-folder-sync-outline",handler:()=>g(Re)}]:[],{id:"copy-path",text:"Copy path",icon:"mdi mdi-content-copy",handler:()=>{ar(Re.displayPath||Re.name)}},{id:"refresh",text:"Refresh",icon:"mdi mdi-refresh",handler:te},{id:"properties",text:"Properties",icon:"mdi mdi-information-outline",handler:()=>w(`${Re.name}
|
|
12
|
+
${Re.displayPath||""}`)}]:[]},De=async()=>{try{await c()}catch(ne){w(ne instanceof Error?ne.message:"Unable to refresh Hub drives.")}},Qe=[{id:"local",label:"Local drives",icon:mc,roots:a.filter(ne=>vd(ne)==="local")},{id:"removable",label:"Removable drives",icon:Gb,roots:a.filter(ne=>vd(ne)==="removable")},{id:"network",label:"Network drives",icon:Sh,roots:a.filter(ne=>vd(ne)==="network")}];return l.jsxs("section",{className:"hub-file-explorer-panel","aria-label":"Hub file explorer",children:[l.jsxs("div",{className:"hub-file-explorer-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Hub file explorer"}),l.jsxs("strong",{children:[l.jsx(mc,{size:16})," Browse files on this Hub"]})]}),l.jsxs("div",{className:"hub-file-explorer-heading-actions",children:[l.jsx("button",{className:"icon-button",onClick:d,title:"Import files from this browser",type:"button",children:l.jsx(iy,{size:16})}),l.jsx("button",{className:"icon-button",onClick:m,title:"Import folder from this browser",type:"button",children:l.jsx(Vb,{size:16})}),l.jsx("button",{className:"icon-button",onClick:()=>{De()},title:"Refresh drives",type:"button",children:l.jsx(Oc,{size:16})})]})]}),i?l.jsxs("div",{className:"hub-file-explorer-state",children:[l.jsx(mc,{size:24}),l.jsx("strong",{children:"Connecting to LiveDesk Hub file system..."})]}):r?l.jsxs("div",{className:"hub-file-explorer-state error",role:"alert",children:[l.jsx(Tc,{size:24}),l.jsx("strong",{children:r})]}):l.jsxs("div",{className:"hub-file-explorer-content",children:[l.jsxs("aside",{className:"hub-file-explorer-drive-sidebar","aria-label":"Hub drives",children:[l.jsxs("div",{className:"hub-drive-sidebar-title",children:[l.jsx(mc,{size:15}),l.jsx("strong",{children:"This PC"})]}),Qe.map(ne=>ne.roots.length>0&&l.jsxs("section",{className:"hub-drive-group",children:[l.jsxs("h3",{children:[l.jsx(ne.icon,{size:13}),ne.label]}),l.jsx("div",{className:"hub-drive-list",children:ne.roots.map(ge=>{const Re=ne.icon,te=le.has(ge.id)||ge.locked===!0;return l.jsxs("button",{className:`hub-drive-item ${T===ge.id?"active":""} ${te?"unavailable":""}`,onClick:()=>{ye(ge)},"aria-pressed":T===ge.id,type:"button",children:[l.jsx("span",{className:"hub-drive-item-icon",children:l.jsx(Re,{size:16})}),l.jsxs("span",{className:"hub-drive-item-copy",children:[l.jsx("strong",{children:ge.name}),l.jsx("small",{children:ge.displayPath||ge.name}),l.jsxs("em",{children:[Nx(ge.freeBytes||0)," free / ",Nx(ge.totalBytes||0)]})]}),_===ge.id?l.jsx(Sd,{className:"hub-drive-item-status spin",size:15}):te?l.jsx(Tv,{className:"hub-drive-item-status",size:15}):null]},ge.id)})})]},ne.id)),a.length===0&&l.jsxs("div",{className:"hub-drive-sidebar-empty",children:[l.jsx(Tc,{size:17}),l.jsx("span",{children:"No drives available."})]})]}),l.jsxs("div",{className:"hub-file-explorer-browser",children:[l.jsxs("div",{className:"hub-file-explorer-navigation",children:[l.jsx("nav",{className:"hub-file-explorer-breadcrumbs","aria-label":"Current Hub folder",children:R.map((ne,ge)=>l.jsxs("span",{className:"hub-file-explorer-breadcrumb-item",children:[ge>0&&l.jsx(Ch,{size:13,"aria-hidden":"true"}),l.jsx("button",{className:`hub-file-explorer-breadcrumb ${ge===R.length-1?"current":""}`,onClick:()=>be(ge),"aria-current":ge===R.length-1?"location":void 0,type:"button",children:ne.name})]},ne.svarPath))}),l.jsxs("div",{className:"hub-file-explorer-navigation-actions",children:[G&&l.jsx(Sd,{className:"hub-file-explorer-loading-icon spin",size:15,"aria-label":"Loading folder"}),l.jsx("button",{className:"icon-button",onClick:Ne,disabled:R.length<=1||G,title:"Back to parent folder",type:"button",children:l.jsx(Yb,{size:16})})]})]}),Y&&l.jsxs("div",{className:"hub-file-explorer-folder-error",role:"alert",children:[l.jsx(Tv,{size:15}),l.jsx("span",{children:Y})]}),l.jsx("div",{className:"hub-file-explorer-svar",onKeyDownCapture:Ie,children:l.jsx(nk,{fonts:!1,children:l.jsx(tk,{data:ie,panels:Q?[{path:Q,selected:[]}]:void 0,readonly:!0,mode:"table",preview:!1,init:re,icons:"simple",menuOptions:Ke},`${z?.id||"no-root"}:${q}`)})})]})]})]})}class vk extends f.Component{state={error:null};static getDerivedStateFromError(a){return{error:a}}componentDidCatch(a,i){console.error("[LiveDesk] Share Files runtime error",a,i.componentStack)}render(){return this.state.error?l.jsxs("section",{className:"file-share-error-boundary",role:"alert",children:[l.jsx(Ld,{size:24}),l.jsx("strong",{children:"Share Files could not be opened."}),l.jsx("span",{children:this.state.error.message||"An unexpected file explorer error occurred."}),l.jsxs("button",{className:"text-button",onClick:this.props.onRetry,type:"button",children:[l.jsx(Oc,{size:15})," Retry"]})]}):this.props.children}}function xk(n){return n.deviceName||n.hostname||n.deviceId}function yk({devices:n,mode:a,selectedIds:i,onModeChange:r,onToggle:c}){const d=new Set(i);return l.jsxs("section",{className:"distribution-targets",children:[l.jsxs("div",{className:"file-share-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Target"}),l.jsx("strong",{children:a==="all"?`${n.length} connected`:`${i.length} selected`})]}),l.jsxs("div",{className:"file-share-tabs compact","aria-label":"File transfer targets",children:[l.jsxs("button",{className:a==="all"?"active":"",onClick:()=>r("all"),type:"button",children:[l.jsx(ry,{size:14})," All connected"]}),l.jsxs("button",{className:a==="selected"?"active":"",onClick:()=>r("selected"),type:"button",children:[l.jsx(Jt,{size:14})," Selected"]})]})]}),l.jsx("div",{className:"file-share-device-list","aria-label":"Connected workstation targets",children:n.length===0?l.jsx("div",{className:"file-share-empty-inline",children:"No connected workstations."}):n.map(m=>{const p=a==="all"||d.has(m.deviceId);return l.jsxs("label",{className:`file-share-device-option ${p?"selected":""}`,children:[l.jsx("input",{type:"checkbox",checked:p,disabled:a==="all",onChange:()=>c(m.deviceId)}),l.jsx(Jt,{size:20,"aria-hidden":"true"}),l.jsxs("span",{children:[l.jsx("strong",{children:xk(m)}),l.jsxs("small",{children:["Slot ",m.slotNumber?String(m.slotNumber).padStart(3,"0"):"-"," / ",m.platform||"unknown OS"]})]}),l.jsx(On,{size:17,"aria-hidden":"true"})]},m.deviceId)})})]})}function wk(n){if(!Number.isFinite(n)||n<=0)return"0 B";const a=["B","KB","MB","GB","TB"];let i=n,r=0;for(;i>=1024&&r<a.length-1;)i/=1024,r+=1;return`${i.toFixed(r===0||i>=100?0:1)} ${a[r]}`}function bk({folders:n,loading:a,busy:i,canSync:r,onSyncAll:c,onSync:d,onToggleAuto:m,onRemove:p,onAdd:v}){return l.jsxs("section",{className:"file-share-sync-panel",children:[l.jsxs("div",{className:"file-share-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Hub folders"}),l.jsx("strong",{children:"Continuous sync"})]}),l.jsxs("button",{className:"text-button compact",onClick:c,disabled:i||!r||n.length===0,type:"button",children:[l.jsx(md,{size:15})," ",i?"Syncing":"Sync all"]})]}),a?l.jsx("div",{className:"file-share-empty-state",children:"Loading Hub sync folders..."}):n.length===0?l.jsxs("button",{className:"file-share-empty-state interactive",onClick:v,type:"button",children:[l.jsx(md,{size:28}),l.jsx("strong",{children:"Add a selected Hub folder"}),l.jsx("span",{children:"Hub keeps the manifest and can sync while this browser is closed."})]}):l.jsx("div",{className:"file-share-sync-list",children:n.map(g=>l.jsxs("article",{className:`file-share-sync-row state-${g.status}`,children:[l.jsx("div",{className:"file-share-sync-icon",children:l.jsx(md,{size:19})}),l.jsxs("div",{className:"file-share-sync-info",children:[l.jsx("strong",{children:g.name}),l.jsx("span",{children:g.displayPath}),l.jsxs("small",{children:[g.fileCount," files / ",wk(g.totalBytes)," · ",g.lastSyncedAt?`Last sync ${lh(g.lastSyncedAt)} ago`:g.message||"Not synced yet"]})]}),l.jsxs("label",{className:"file-share-auto-sync",children:[l.jsx("input",{type:"checkbox",checked:g.autoSync,onChange:()=>m(g)}),l.jsx("span",{children:"Auto"})]}),l.jsxs("button",{className:"text-button compact",onClick:()=>d(g),disabled:i||!r||g.status==="syncing",type:"button",children:[l.jsx(Oc,{size:14})," Sync now"]}),l.jsx("button",{className:"icon-button",onClick:()=>p(g),title:"Remove sync folder",type:"button",children:l.jsx(wh,{size:15})})]},g.id))})]})}function Sk(n){const i=(n.targetMode==="all"?n.devices.map(r=>r.deviceId):n.selectedTargetIds).length>0;return l.jsxs("aside",{className:"file-share-distribution-panel",children:[l.jsxs("div",{className:"file-share-distribution-head",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Distribution"}),l.jsx("strong",{children:"Hub → workstations"})]}),l.jsx(Cd,{size:18})]}),l.jsxs("div",{className:"file-share-tabs",role:"tablist","aria-label":"Distribution mode",children:[l.jsx("button",{className:n.tab==="send"?"active":"",onClick:()=>n.onTabChange("send"),role:"tab","aria-selected":n.tab==="send",type:"button",children:"Send"}),l.jsx("button",{className:n.tab==="sync"?"active":"",onClick:()=>n.onTabChange("sync"),role:"tab","aria-selected":n.tab==="sync",type:"button",children:"Sync"})]}),n.tab==="send"?l.jsxs(l.Fragment,{children:[l.jsx(yk,{devices:n.devices,mode:n.targetMode,selectedIds:n.selectedTargetIds,onModeChange:n.onTargetModeChange,onToggle:n.onTargetToggle}),l.jsxs("label",{className:"file-share-destination",children:[l.jsx("span",{children:"Destination folder"}),l.jsxs("div",{children:[l.jsx(Cc,{size:15}),l.jsx("input",{value:n.remoteDirectory,onChange:r=>n.onRemoteDirectoryChange(r.target.value),placeholder:"Desktop/LiveDeskFiles"})]}),l.jsx("small",{children:"Blank uses Desktop/LiveDeskFiles."})]}),l.jsxs("div",{className:"file-share-selection-summary",children:[l.jsx("span",{children:"Selected"}),l.jsx("strong",{children:n.selectedSummary})]}),l.jsxs("button",{className:"file-share-share-button",onClick:n.onShare,disabled:!n.canShare,type:"button",children:[l.jsx(Cd,{size:17})," Share selected"]}),l.jsxs("button",{className:"file-share-secondary-button",onClick:n.onAddSync,disabled:!n.canAddSync,type:"button",children:[l.jsx(Cc,{size:16})," Add selected folder to Sync"]})]}):l.jsx(bk,{folders:n.folders,loading:n.foldersLoading,busy:n.syncBusy,canSync:i,onSyncAll:n.onSyncAll,onSync:n.onSync,onToggleAuto:n.onToggleAuto,onRemove:n.onRemove,onAdd:n.onAddFolder})]})}function Ck(n){if(!Number.isFinite(n)||n<=0)return"0 B";const a=["B","KB","MB","GB","TB"];let i=n,r=0;for(;i>=1024&&r<a.length-1;)i/=1024,r+=1;return`${i.toFixed(r===0||i>=100?0:1)} ${a[r]}`}function Tx(n){return n.totalBytes>0?Math.max(0,Math.min(100,Math.round(n.sentBytes/n.totalBytes*100))):n.totalFiles>0?Math.max(0,Math.min(100,Math.round(n.completedFiles/n.totalFiles*100))):n.state==="completed"?100:0}function Rx(n){return n.state==="scanning"?"Scanning selected Hub items":n.state==="queued"?"Preparing transfer":n.state==="sending"?`${n.completedFiles}/${n.totalFiles} · ${n.currentPath||"sending"}`:n.state==="completed"?`Sent ${n.totalFiles} file${n.totalFiles===1?"":"s"} to ${n.targetCount} workstation${n.targetCount===1?"":"s"}`:n.state==="partially-failed"?`${n.failedTargets.length} workstation${n.failedTargets.length===1?"":"s"} failed`:n.state==="cancelled"?"Transfer cancelled":n.error||"Transfer failed"}function Ex(n){return["completed","partially-failed","failed","cancelled"].includes(n)}function jk({hubUrl:n,devices:a,localFeatureAccess:i,upgradeNotice:r,remoteDirectory:c,onRemoteDirectoryChange:d,targetMode:m,selectedTargetIds:p,onTargetModeChange:v,onTargetToggle:g,filePickerRef:w,folderPickerRef:y,onBrowserFileImport:b,onBrowserFolderImport:C,onNotice:j,onTransferChange:A}){const T=Array.isArray(a)?a:[],[k,R]=f.useState([]),[E,$]=f.useState(!0),[F,q]=f.useState(""),[I,_]=f.useState([]),[fe,G]=f.useState([]),[ue,Y]=f.useState(null),[ae,le]=f.useState(!1),[V,z]=f.useState([]),[K,Q]=f.useState(!0),[P,ie]=f.useState(!1),[Se,D]=f.useState("send"),[Z,ye]=f.useState([]),be=f.useRef(new Set),de=f.useMemo(()=>m==="all"?T.map(me=>me.deviceId):p.filter(me=>T.some(He=>He.deviceId===me)),[T,p,m]),Ne=Z.find(me=>!Ex(me.state)),Ie=fe.length===1&&fe[0].type==="folder"?fe[0]:null,re=fe.length===0?"Select files or folders from the Hub explorer.":ae?"Calculating selection size...":ue?`${ue.files} files, ${ue.folders} folders · ${Ck(ue.totalBytes)}`:`${fe.length} item${fe.length===1?"":"s"} selected`,Ke=me=>{A({id:me.jobId,state:me.state,progress:Tx(me),message:Rx(me)})},De=f.useCallback(async()=>{const me=await sk(n,!0);return R(me),q(""),me},[n]),Qe=async()=>{try{const He=(await rk(n,!0)).jobs||[],_e=await Promise.all([...be.current].map(async hn=>{try{return await ok(hn,n)}catch{return null}})),Ge=[...He,..._e.filter(Boolean)],na=[...new Map(Ge.map(hn=>[hn.jobId,hn])).values()];ye(na),na.forEach(Ke),na.filter(hn=>Ex(hn.state)).forEach(hn=>be.current.delete(hn.jobId))}catch{}};f.useEffect(()=>{let me=!0;$(!0),q(""),Promise.all([De(),Mx(n).then(_e=>{me&&z(_e)})]).catch(_e=>{me&&(q(_e instanceof Error?"Hub file system is unavailable. Make sure LiveDesk Hub is running on this computer.":"Hub file system is unavailable."),j(_e instanceof Error?_e.message:"Hub file system is unavailable."))}).finally(()=>{me&&($(!1),Q(!1))}),Qe();const He=window.setInterval(()=>{Qe()},800);return()=>{me=!1,window.clearInterval(He)}},[n,De]),f.useEffect(()=>{if(I.length===0){Y(null);return}let me=!1;return le(!0),lk(I,n).then(He=>{me||Y(He)}).catch(He=>{me||j(He instanceof Error?He.message:"Unable to calculate selected size.")}).finally(()=>{me||le(!1)}),()=>{me=!0}},[n,I.join("|")]);const ne=(me,He)=>{_(me),G(He)},ge=me=>{me.forEach(He=>be.current.add(He.jobId)),ye(He=>[...new Map([...He,...me].map(_e=>[_e.jobId,_e])).values()]),me.forEach(Ke)},Re=async()=>{if(!i){j(r);return}if(I.length===0){j("Select files or folders from the Hub explorer.");return}if(de.length===0){j("Choose at least one connected workstation.");return}if(Ne){j("A Hub transfer is already running.");return}try{const me=await ik(I,de,c.trim(),n);be.current.add(me.jobId),j("Hub transfer queued."),await Qe()}catch(me){j(me instanceof Error?me.message:"Unable to start Hub transfer.")}},te=async me=>{const He=me||Ie;if(!He||He.type!=="folder"){j("Select one folder to add it to Sync.");return}try{const _e=await uk(He.id,n);z(Ge=>[...Ge.filter(na=>na.id!==_e.folder.id),_e.folder]),D("sync"),j(`${He.name} is ready for Hub sync.`)}catch(_e){j(_e instanceof Error?_e.message:"Unable to add the Hub folder to Sync.")}},oe=async me=>{if(de.length===0){j("Choose at least one connected workstation.");return}ie(!0),z(He=>He.map(_e=>_e.id===me.id?{..._e,status:"syncing"}:_e));try{const He=await mk(me.id,de,c.trim(),n);ge(He.jobs||[]),j(He.jobs?.length?"Hub sync queued.":"No changed files to sync.");const _e=await Mx(n);z(_e)}catch(He){j(He instanceof Error?He.message:"Unable to sync the Hub folder."),z(_e=>_e.map(Ge=>Ge.id===me.id?{...Ge,status:"error",message:"Sync failed"}:Ge))}finally{ie(!1)}},Ae=async()=>{ie(!0);try{for(const me of V)await oe(me)}finally{ie(!1)}},Ce=async me=>{try{const He=await dk(me.id,{autoSync:!me.autoSync},n);z(_e=>_e.map(Ge=>Ge.id===me.id?He.folder:Ge))}catch(He){j(He instanceof Error?He.message:"Unable to update auto sync.")}},st=async me=>{try{await fk(me.id,n),z(He=>He.filter(_e=>_e.id!==me.id))}catch(He){j(He instanceof Error?He.message:"Unable to remove the sync folder.")}};return l.jsxs("section",{className:"livedesk-file-explorer",children:[l.jsx("input",{ref:w,className:"hidden-file-input",type:"file",multiple:!0,onChange:me=>{me.currentTarget.files&&b(me.currentTarget.files),me.currentTarget.value=""}}),l.jsx("input",{ref:y,className:"hidden-file-input",type:"file",multiple:!0,webkitdirectory:"",directory:"",onChange:me=>{me.currentTarget.files&&C(me.currentTarget.files),me.currentTarget.value=""}}),l.jsx("div",{className:"file-share-workspace",children:l.jsxs(vk,{onRetry:()=>window.location.reload(),children:[l.jsx(gk,{hubUrl:n,roots:k,loading:E,error:F,onRefreshRoots:De,onImportFiles:()=>w.current?.click(),onImportFolder:()=>y.current?.click(),onSelectionChange:ne,onShareItem:me=>{_([me.id]),G([me]),D("send")},onAddSyncFolder:me=>{_([me.id]),G([me]),te(me)},onNotice:j}),l.jsx(Sk,{devices:T,targetMode:m,selectedTargetIds:p,onTargetModeChange:v,onTargetToggle:g,remoteDirectory:c,onRemoteDirectoryChange:d,selectedEntries:fe,selectedSummary:re,canShare:i&&!Ne&&I.length>0&&de.length>0&&!ae,onShare:()=>{Re()},canAddSync:!!Ie,onAddSync:()=>{te()},tab:Se,onTabChange:D,folders:V,foldersLoading:K,syncBusy:P,onSyncAll:()=>{Ae()},onSync:me=>{oe(me)},onToggleAuto:me=>{Ce(me)},onRemove:me=>{st(me)},onAddFolder:()=>{te()}})]})}),Ne&&l.jsx("footer",{className:"file-share-workspace-footer",children:l.jsxs("span",{children:[Rx(Ne)," · ",Tx(Ne),"% ",l.jsx("button",{className:"icon-button",onClick:()=>{ck(Ne.jobId,n).then(me=>{ye(He=>He.map(_e=>_e.jobId===me.jobId?me:_e)),Ke(me)})},title:"Cancel transfer",type:"button",children:l.jsx(rr,{size:14})})]})})]})}const kk=f.forwardRef(function({value:a,onChange:i,onSubmit:r,onOpenSuggestedTasks:c,suggestedOpen:d=!1,suggestedTaskCount:m,disabled:p=!1},v){return l.jsxs("form",{className:"agents-composer",onSubmit:g=>{g.preventDefault(),r()},children:[l.jsxs("button",{className:`agents-suggested-trigger ${d?"active":""}`,type:"button","aria-label":m===void 0?"Open Suggested tasks":`Open Suggested tasks (${m} available)`,"aria-expanded":d,onClick:c,disabled:p,children:[l.jsx(Wb,{size:17}),m!==void 0&&l.jsx("span",{className:"agents-suggested-count","aria-hidden":"true",children:m})]}),l.jsx("textarea",{ref:v,value:a,onChange:g=>i(g.target.value.slice(0,4e3)),placeholder:"Ask LiveDesk to work across your machines...","aria-label":"Ask LiveDesk",rows:2,disabled:p}),l.jsxs("button",{className:"agents-run-button",type:"submit",disabled:p||!a.trim(),children:[p?l.jsx(Sd,{className:"spin",size:16}):l.jsx(Cd,{size:16}),p?"Running":"Run"]})]})}),Ak=["read","processControl","serviceControl","applicationControl","fileRead","fileWrite","fileDelete","shell","script","softwareInstall","network","systemPower","systemConfiguration","userAccount"];function iw(n){return n.deviceName?.trim()||n.hostname?.trim()||n.deviceId}function Mk(n){return n==="running"||n==="completed"||n==="failed"||n==="cancelled"?n:"queued"}function Nk(n){switch(n){case"process.list":return"Process list";case"system.health":return"System health";case"gpu.status":return"GPU status";case"disk.status":return"Disk status";case"service.status":return"Service status";case"diagnostics.collect":return"Diagnostics";case"process.control":return"Process control";case"service.control":return"Service control";case"application.launch":return"Launch application";case"application.close":return"Close application";case"file.read":return"Read file";case"file.write":return"Write file";case"file.delete":return"Delete file";case"file.list":return"List directory";case"command.run":return"Run command";case"script.run":return"Run script";case"software.install":return"Install software";case"network.status":return"Network status";case"system.power":return"Power action";case"system.configure":return"System configuration";case"logs.collect":return"Collect logs"}}function Tk(n){const a=n.match(/\[([^\]]+)\]/)?.[1]?.trim();if(a)return a;if(n.includes("comfyui"))return"comfyui";if(n.includes("ollama"))return"ollama";const i=n.match(/process(?:\s+(?:named|called))?\s+([a-z0-9._-]+)/i)?.[1];return i&&!["is","running","process"].includes(i)?i:void 0}function Rk(n){const a=n.trim().toLowerCase();return!a||/(stop|restart|kill|terminate|start|launch|close|delete|write|edit|run command|execute|install|shutdown|reboot|sleep|power|file|folder|script|application)/i.test(a)?null:/(process|프로세스|실행 중|실행중|comfyui|running|processes)/i.test(a)?{operation:"process.list",query:Tk(a)}:/(gpu|그래픽|vram|gpu 상태)/i.test(a)?{operation:"gpu.status"}:/(disk|디스크|storage|저장 공간)/i.test(a)?{operation:"disk.status"}:/(service|서비스)/i.test(a)?{operation:"service.status"}:/(diagnostic|진단|로그)/i.test(a)?{operation:"diagnostics.collect"}:/(health|system|시스템|상태)/i.test(a)?{operation:"system.health"}:null}const Ek=["이 작업은 아직 지원되지 않습니다.","","현재 지원:","• 시스템 상태 확인","• GPU 상태 확인","• 디스크 상태 확인","• 프로세스 조회","• 서비스 상태 조회","• 진단 로그 수집"].join(`
|
|
13
|
+
`);function Dk(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:null}function Aa(n){return typeof n=="number"&&Number.isFinite(n)?n:null}function rd(n){const a=Aa(n);return a===null?"":a<1024**2?`${Math.round(a/1024)}K`:a<1024**3?`${(a/1024**2).toFixed(0)}M`:`${(a/1024**3).toFixed(1)}G`}function Lk(n){const a=Aa(n);return a===null?"":`${Math.round((a<=1?a:a/100)*100)}%`}function _k(n){return!n||/^(?:[\w .-]+ )?collected(?:\.)?$/i.test(n.trim())?"":n.trim()}function Ed(n,a){if(a.error)return a.error;const i=Dk(a.data),r=_k(a.result||"");if(!i)return r||a.stage||a.status;if(n==="system.health"){const c=typeof i.machine=="string"?i.machine:"",d=rd(i.freeMemoryBytes),m=rd(i.totalMemoryBytes),p=Aa(i.totalMemoryBytes)&&Aa(i.freeMemoryBytes)!==null?`${Math.round(Aa(i.freeMemoryBytes)/Aa(i.totalMemoryBytes)*100)}% RAM free`:"";return[c,d&&m?`RAM ${d}/${m}`:"",p,typeof i.platform=="string"?i.platform:""].filter(Boolean).join(" · ")||r||a.status}if(n==="disk.status"){const c=typeof i.root=="string"?i.root:"",d=rd(i.freeBytes),m=Aa(i.totalBytes)&&Aa(i.freeBytes)!==null?`${Math.round(Aa(i.freeBytes)/Aa(i.totalBytes)*100)}% free`:"";return[c,d&&`${d} free`,m].filter(Boolean).join(" · ")||r||a.status}if(n==="gpu.status"){const c=typeof i.name=="string"&&i.name?i.name:"No GPU provider",d=Lk(i.usageRatio),m=Aa(i.temperatureC)!==null?`${Math.round(Aa(i.temperatureC))}°C`:"",p=rd(i.freeMemoryBytes);return[c,d&&`GPU ${d}`,m,p&&`${p} free`].filter(Boolean).join(" · ")||r||a.status}if(n==="process.list"){const c=Aa(i.count);return c!==null?`${c} matching process${c===1?"":"es"}`:r||a.status}if(n==="network.status"){const c=Array.isArray(i.adapters)?i.adapters.length:null;return c!==null?`${c} active adapter${c===1?"":"s"}`:r||a.status}return r||a.stage||a.status}function Dx(n,a){const i=Ed(n,a);return a.status==="failed"||a.status==="cancelled"||/\b(?:warning|failed|error|offline|not running|low|timeout|timed out)\b/i.test(`${a.result||""} ${i}`)}function zk({state:n,operation:a}){const i=n.status==="completed"?Ec:n.status==="failed"||n.status==="cancelled"?rr:n.status==="running"?Sd:oy,r=n.status==="running"?n.stage||"Working":n.status==="completed"?a?Ed(a,n):n.result||"Completed":n.status==="failed"?n.error||"Failed":n.status==="cancelled"?"Cancelled":"Queued";return l.jsxs("div",{className:`agent-target-row status-${n.status}`,"data-agent-target-id":n.deviceId,children:[l.jsx("span",{className:"agent-target-status","aria-hidden":"true",children:l.jsx(i,{size:15})}),l.jsx("strong",{children:n.deviceName}),l.jsx("span",{className:"agent-target-state",children:n.status[0].toUpperCase()+n.status.slice(1)}),l.jsx("small",{children:r})]})}function Ok({operation:n,states:a,status:i,onCancel:r,onRetry:c,busy:d=!1}){const m=["running","queued"].includes(i),[p,v]=f.useState(!1),[g,w]=f.useState("all"),y=f.useMemo(()=>({total:a.length,completed:a.filter(E=>E.status==="completed").length,failed:a.filter(E=>E.status==="failed").length,running:a.filter(E=>E.status==="running").length,queued:a.filter(E=>E.status==="queued").length,cancelled:a.filter(E=>E.status==="cancelled").length}),[a]),b=a.filter(E=>Dx(n,E)),C=b.filter(E=>E.status==="completed").length,j=y.failed>0,A=b.length>0,T=a.filter(E=>g==="issues"?Dx(n,E):g==="running"?E.status==="running"||E.status==="queued":g==="completed"?E.status==="completed":g==="failed"?E.status==="failed":!0),k=A&&!m||i==="completed-with-failures"?"Completed with issues":i[0]?.toUpperCase()+i.slice(1),R=a.filter(E=>E.status==="completed").map(E=>Ed(n,E)).filter(Boolean).filter((E,$,F)=>F.indexOf(E)===$).slice(0,2);return l.jsxs("section",{className:"agent-task-block","aria-label":"Task execution",children:[l.jsxs("div",{className:"agent-task-head",children:[l.jsxs("div",{children:[l.jsx("span",{children:"LiveDesk Agent"}),l.jsx("strong",{children:Nk(n)})]}),l.jsx("span",{className:`agent-task-status status-${A?"completed-with-failures":i}`,children:k})]}),l.jsxs("div",{className:"agent-task-summary","aria-label":"Task summary",children:[l.jsxs("strong",{children:[y.total," targets"]}),l.jsxs("span",{className:"summary-completed",children:[y.completed," completed"]}),y.running>0&&l.jsxs("span",{className:"summary-running",children:[y.running," running"]}),y.queued>0&&l.jsxs("span",{children:[y.queued," queued"]}),j&&l.jsxs("span",{className:"summary-failed",children:[y.failed," failed"]}),C>0&&l.jsxs("span",{className:"summary-cancelled",children:[C," warning"]}),y.cancelled>0&&l.jsxs("span",{className:"summary-cancelled",children:[y.cancelled," cancelled"]})]}),R.length>0&&l.jsxs("div",{className:"agent-task-result-preview",title:R.join(" · "),children:[l.jsx("span",{children:"Result"}),R.join(" · ")]}),l.jsx("div",{className:"agent-target-chips","aria-label":"Target status overview",children:a.map((E,$)=>{const F=E.status==="completed"?"✓":E.status==="failed"?"×":E.status==="cancelled"?"!":E.status==="running"?"…":"·";return l.jsxs("span",{className:`agent-target-chip status-${E.status}`,title:`${E.deviceName}: ${Ed(n,E)}`,"aria-label":`${$+1}. ${E.deviceName}: ${E.status}`,children:[l.jsx("b",{children:String($+1).padStart(2,"0")}),l.jsx("span",{children:F})]},E.deviceId)})}),a.length>0&&l.jsx("div",{className:"agent-task-details-toggle",children:l.jsxs("button",{type:"button",onClick:()=>v(E=>!E),"aria-expanded":p,children:[p?l.jsx(Kb,{size:14}):l.jsx(cy,{size:14}),p?"Hide details":"Show details"]})}),p&&l.jsxs("div",{className:"agent-task-details",children:[l.jsx("div",{className:"agent-task-filters",role:"tablist","aria-label":"Task result filter",children:["all","issues","running","completed","failed"].map(E=>l.jsx("button",{className:g===E?"active":"",onClick:()=>w(E),role:"tab","aria-selected":g===E,type:"button",children:E==="all"?"All":E==="issues"?"Issues only":E[0].toUpperCase()+E.slice(1)},E))}),l.jsx("div",{className:"agent-task-rows",children:T.length>0?T.map(E=>l.jsx(zk,{operation:n,state:E},E.deviceId)):l.jsx("small",{className:"agent-task-no-results",children:"No targets match this filter."})})]}),(m||j)&&l.jsxs("div",{className:"agent-task-actions",children:[m&&r&&l.jsxs("button",{onClick:r,disabled:d,type:"button",children:[l.jsx(Qb,{size:14})," Cancel"]}),!m&&j&&c&&l.jsxs("button",{onClick:c,disabled:d,type:"button",children:[l.jsx(Sc,{size:14})," Retry failed"]})]})]})}function Ik(n){try{return JSON.stringify(n,null,2).slice(0,6e3)}catch{return"{}"}}function Bk({approval:n,busy:a=!1,onApprove:i,onReject:r}){return l.jsxs("article",{className:"agent-approval-card","aria-label":"Agent approval required",children:[l.jsxs("div",{className:"agent-approval-head",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Approval required"}),l.jsx("strong",{children:n.toolName})]}),l.jsx("span",{className:`agent-approval-risk risk-${n.risk}`,children:n.risk})]}),l.jsx("p",{children:n.description}),l.jsx("pre",{children:Ik(n.arguments)}),l.jsxs("small",{children:["Permission: ",n.permissionMode," · Scope: selected devices only · Expires in 5 minutes"]}),l.jsxs("div",{className:"agent-approval-actions",children:[l.jsxs("button",{className:"reject",disabled:a,onClick:r,type:"button",children:[l.jsx(rr,{size:14})," Reject"]}),l.jsxs("button",{disabled:a,onClick:()=>i("once"),type:"button",children:[l.jsx(Ec,{size:14})," Once"]}),l.jsx("button",{disabled:a,onClick:()=>i("same-action-this-run"),type:"button",children:"Allow same action"}),l.jsx("button",{disabled:a,onClick:()=>i("category-this-run"),type:"button",children:"Allow category"})]}),l.jsxs("div",{className:"agent-approval-scope",children:[l.jsx(Ld,{size:13})," Approval is bound to this run, tool, arguments, selected devices, and policy hash."]})]})}function Fk({items:n,onCancel:a,onRetry:i,busyBatchId:r,approvals:c,onApprove:d,onReject:m,busyApprovalId:p}){return l.jsxs("section",{className:"agents-conversation","aria-live":"polite",children:[c.filter(v=>v.status==="pending").map(v=>l.jsx(Bk,{approval:v,busy:p===v.approvalId,onApprove:g=>d(v,g),onReject:()=>m(v)},v.approvalId)),n.length===0&&l.jsxs("div",{className:"agents-empty-conversation",children:[l.jsx("strong",{children:"Ask LiveDesk to work across your machines."}),l.jsx("span",{children:"Start with a read-only request such as “모든 PC에서 ComfyUI가 실행 중인지 확인해줘”."})]}),n.map(v=>{if(v.type==="task"){const g=v;return l.jsx(Ok,{operation:g.operation,states:g.states,status:g.status,onCancel:()=>a(g.batchId,g.agentRunId),onRetry:()=>i(g.batchId),busy:r===g.batchId},g.id)}return l.jsxs("article",{className:`agents-message ${v.type}`,children:[l.jsx("span",{children:v.type==="user"?"You":"LiveDesk Agent"}),l.jsx("p",{children:v.text})]},v.id)})]})}const Lx=["Recommended","Health & capacity","Processes & services","AI workloads","Files & configuration","Software & automation","Network & connectivity","Power & maintenance","Troubleshooting & recovery"],Xt=["windows","macos","linux"],xi={"system.health":{label:"system health",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Xt},"gpu.status":{label:"GPU status",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Xt},"disk.status":{label:"disk status",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Xt},"process.list":{label:"process inspection",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Xt},"service.status":{label:"service inspection",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Xt},"diagnostics.collect":{label:"diagnostics collection",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Xt},"process.control":{label:"process control",permissionCategory:"processControl",readOnly:!1,risk:"high",supportedPlatforms:Xt},"service.control":{label:"service control",permissionCategory:"serviceControl",readOnly:!1,risk:"high",supportedPlatforms:["windows","linux"]},"application.launch":{label:"application launch",permissionCategory:"applicationControl",readOnly:!1,risk:"medium",supportedPlatforms:Xt},"application.close":{label:"application close",permissionCategory:"applicationControl",readOnly:!1,risk:"medium",supportedPlatforms:Xt},"file.read":{label:"file reading",permissionCategory:"fileRead",readOnly:!0,risk:"low",supportedPlatforms:Xt},"file.write":{label:"file writing",permissionCategory:"fileWrite",readOnly:!1,risk:"high",supportedPlatforms:Xt},"file.delete":{label:"file deletion",permissionCategory:"fileDelete",readOnly:!1,risk:"critical",supportedPlatforms:Xt},"file.list":{label:"directory listing",permissionCategory:"fileRead",readOnly:!0,risk:"low",supportedPlatforms:Xt},"command.run":{label:"command execution",permissionCategory:"shell",readOnly:!1,risk:"critical",supportedPlatforms:Xt},"script.run":{label:"script execution",permissionCategory:"script",readOnly:!1,risk:"high",supportedPlatforms:Xt},"software.install":{label:"software installation",permissionCategory:"softwareInstall",readOnly:!1,risk:"high",supportedPlatforms:Xt},"network.status":{label:"network inspection",permissionCategory:"network",readOnly:!0,risk:"low",supportedPlatforms:Xt},"system.power":{label:"power control",permissionCategory:"systemPower",readOnly:!1,risk:"critical",supportedPlatforms:Xt},"system.configure":{label:"system configuration",permissionCategory:"systemConfiguration",readOnly:!1,risk:"critical",supportedPlatforms:Xt},"logs.collect":{label:"log collection",permissionCategory:"read",readOnly:!0,risk:"low",supportedPlatforms:Xt}};new Set(Object.keys(xi));const Hk={Recommended:["recommended","overview","fleet","요약","추천"],"Health & capacity":["health","capacity","performance","상태","성능","용량"],"Processes & services":["process","service","application","프로세스","서비스","앱"],"AI workloads":["ai","gpu","comfyui","ollama","인공지능","모델"],"Files & configuration":["file","config","directory","파일","설정","폴더"],"Software & automation":["software","install","automation","프로그램","설치","자동화"],"Network & connectivity":["network","connection","adapter","네트워크","연결","어댑터"],"Power & maintenance":["power","maintenance","restart","전원","유지보수","재시작"],"Troubleshooting & recovery":["troubleshooting","recovery","incident","문제해결","복구","장애"]},_x=["low","medium","high","critical"];function $k(n){return n.reduce((a,i)=>{const r=xi[i].risk;return _x.indexOf(r)>_x.indexOf(a)?r:a},"low")}function Uk(n){return Xt.filter(a=>n.every(i=>xi[i].supportedPlatforms.includes(a)))}function ze(n,a,i,r,c,d,m={}){const p=m.description||r,v=c.flatMap(w=>w.split(".")),g=[...new Set([...Hk[a],...d,...v])];return{id:n,category:a,title:i,prompt:r,description:p,requiredOperations:c,risk:m.risk||$k(c),targetSupport:m.targetSupport||"single-or-multiple",supportedPlatforms:m.supportedPlatforms||Uk(c),keywords:g,recommended:m.recommended??!1,enabled:!0}}const rw=[ze("recommended-fleet-health","Recommended","Summarize current target health","Summarize system health, GPU, and disk capacity for the current target workstations.",["system.health","gpu.status","disk.status"],["summary","overview"],{recommended:!0}),ze("recommended-attention","Recommended","Find targets needing attention","Identify current targets with high resource use, low disk space, or service warnings.",["system.health","disk.status","service.status"],["attention","warning","monitor"],{recommended:!0}),ze("recommended-performance-compare","Recommended","Compare selected performance","Compare CPU, memory, disk, and GPU capacity across the current targets.",["system.health","disk.status","gpu.status"],["compare","benchmark"],{recommended:!0}),ze("recommended-gpu-vram","Recommended","Review GPU and VRAM availability","Show GPU temperature, utilization, and VRAM availability for the current targets.",["gpu.status"],["graphics","temperature","utilization"],{recommended:!0}),ze("recommended-low-disk","Recommended","Locate low disk capacity","Find current targets with low free disk capacity and report the affected volumes.",["disk.status"],["storage","free space","capacity"],{recommended:!0}),ze("recommended-ai-workers","Recommended","Verify ComfyUI and Ollama workers","Check whether ComfyUI and Ollama workers and their services are available on the current targets.",["process.list","service.status"],["comfyui","ollama","worker"],{recommended:!0}),ze("recommended-recover-ai","Recommended","Recover stopped AI workers","Find stopped AI workers and relaunch the registered worker application or service on the target workstation.",["process.list","application.launch","service.control"],["recover","start","ai worker"],{targetSupport:"single",recommended:!0}),ze("recommended-incident-diagnostics","Recommended","Collect an incident diagnostic bundle","Collect health, service, network, and recent log diagnostics for the current targets.",["diagnostics.collect","logs.collect","system.health","network.status"],["incident","report","evidence"],{recommended:!0}),ze("health-cpu-memory","Health & capacity","Check high CPU and memory use","Find current targets with unusually high CPU or memory usage.",["system.health"],["cpu","memory","load","높은 사용량"]),ze("health-uptime","Health & capacity","Review workstation uptime","Show uptime, boot time, and current system health for the target workstations.",["system.health"],["uptime","boot","가동시간"]),ze("health-gpu-temperature","Health & capacity","Check GPU temperature","Check GPU temperature and thermal warnings on the current targets.",["gpu.status"],["thermal","temperature","발열"]),ze("health-vram-usage","Health & capacity","Check VRAM usage","Report GPU memory usage and remaining VRAM on the current targets.",["gpu.status"],["vram","gpu memory","video memory"]),ze("health-low-disk","Health & capacity","Find low disk space","Find volumes below a safe free-space threshold on the current targets.",["disk.status"],["disk","storage","free space","디스크"]),ze("health-gpu-compare","Health & capacity","Compare GPU capacity","Compare GPU model, memory, temperature, and utilization across the current targets.",["gpu.status"],["compare","graphics","capacity"]),ze("health-system-warnings","Health & capacity","Collect system warnings","Review health, disk, and network status for warnings that need attention.",["system.health","disk.status","network.status"],["warnings","alerts","경고"]),ze("health-capacity-report","Health & capacity","Build a capacity report","Create a concise capacity report covering CPU, memory, GPU, disk, and network status.",["system.health","gpu.status","disk.status","network.status"],["report","capacity","inventory"]),ze("process-find-name","Processes & services","Find a running process by name","Find process named [process name] on the current targets.",["process.list"],["find","running","name","실행 중"]),ze("process-resource-heavy","Processes & services","Find resource-heavy processes","List the processes using the most CPU or memory on the current targets.",["process.list","system.health"],["top","cpu","memory","resource"]),ze("process-stop-named","Processes & services","Stop a named process","Stop process named [process name] on the target workstation after checking its current state.",["process.list","process.control"],["stop","terminate","종료"],{targetSupport:"single"}),ze("process-restart-named","Processes & services","Restart a named process","Check process named [process name] and restart it with its registered launch details when available.",["process.list","process.control"],["restart","relaunch","재시작"],{targetSupport:"single"}),ze("process-launch-app","Processes & services","Launch a registered application","Launch the registered application [application] on the target workstation with [arguments].",["application.launch"],["launch","open","실행"],{targetSupport:"single"}),ze("process-close-app","Processes & services","Close an application","Close application [application] on the target workstation and report whether it exited cleanly.",["application.close","process.list"],["close","exit","앱 종료"],{targetSupport:"single"}),ze("service-status-name","Processes & services","Check a service status","Check service [service name] and report its state on the current targets.",["service.status"],["service","status","서비스 상태"]),ze("service-restart-name","Processes & services","Restart a service safely","Check service [service name], stop it, wait for it to stop, then start it and verify the result.",["service.status","service.control"],["restart","start","stop","서비스 재시작"],{targetSupport:"single"}),ze("ai-comfyui-status","AI workloads","Check ComfyUI availability","Check the ComfyUI process, service state, and GPU readiness on the current targets.",["process.list","service.status","gpu.status"],["comfyui","stable diffusion","image generation"]),ze("ai-start-comfyui","AI workloads","Start ComfyUI","If ComfyUI is stopped, launch its registered application or service and verify it is running.",["process.list","application.launch","service.status"],["comfyui","start","launch"],{targetSupport:"single"}),ze("ai-restart-ollama","AI workloads","Restart Ollama","Check Ollama, restart its registered application or service, and verify the worker is ready.",["process.list","application.close","application.launch","service.status"],["ollama","restart","llm"],{targetSupport:"single"}),ze("ai-stable-diffusion","AI workloads","Check Stable Diffusion workers","Check Stable Diffusion or Automatic1111 processes and their GPU usage on the current targets.",["process.list","gpu.status"],["stable diffusion","automatic1111","sd"]),ze("ai-gpu-readiness","AI workloads","Check GPU readiness for AI","Check GPU temperature, VRAM, utilization, and system health before an AI workload starts.",["gpu.status","system.health"],["readiness","inference","training"]),ze("ai-worker-logs","AI workloads","Collect AI worker logs","Collect recent logs and relevant log files for the AI worker on the target workstation.",["logs.collect","file.list","file.read"],["logs","diagnostics","worker"],{targetSupport:"single"}),ze("ai-llama-cpp","AI workloads","Check llama.cpp workers","Find llama.cpp or local model worker processes and inspect their recent logs.",["process.list","logs.collect"],["llama.cpp","local model","inference"]),ze("ai-recover-orphan-python","AI workloads","Recover an orphaned Python worker","Find an orphaned Python AI worker, stop the stale process, then launch its registered worker again.",["process.list","process.control","application.launch"],["python","orphaned","recovery"],{targetSupport:"single"}),ze("files-list-directory","Files & configuration","List a directory","List files and folders under [path] on the target workstation.",["file.list"],["directory","folder","list","목록"],{targetSupport:"single"}),ze("files-read-config","Files & configuration","Read a configuration file","Read the relevant settings from configuration file [path] on the target workstation.",["file.read"],["config","settings","read","구성"]),ze("files-recent-logs","Files & configuration","Find recent log files","List recent log files under [path] and summarize the latest entries.",["file.list","file.read"],["logs","recent","tail"]),ze("files-update-config","Files & configuration","Update a configuration value","Read configuration file [path], update [change], and report the exact change made.",["file.read","file.write"],["edit","update","설정 변경"],{targetSupport:"single"}),ze("files-delete-temp","Files & configuration","Delete temporary files","Find temporary files under [path], delete only the requested matches, and report the freed space.",["file.list","file.delete","disk.status"],["cleanup","temp","delete","정리"],{targetSupport:"single"}),ze("files-compare-config","Files & configuration","Compare configuration files","Read configuration file [path] on the target workstation and compare it with [reference path].",["file.read"],["compare","diff","configuration"]),ze("files-set-environment","Files & configuration","Set an environment variable","Set environment variable [name] to [value] for the target workstation and verify the resulting configuration.",["system.configure","file.read"],["environment","variable","env","환경변수"],{targetSupport:"single"}),ze("files-archive-diagnostics","Files & configuration","Write a diagnostic manifest","Collect selected diagnostics and write a manifest file to [path] on the target workstation.",["diagnostics.collect","file.write"],["manifest","export","diagnostic file"],{targetSupport:"single"}),ze("software-winget-install","Software & automation","Install software with winget","Install package [package name] with winget on the Windows target workstation, then verify it.",["software.install","process.list"],["winget","windows","install","설치"],{targetSupport:"single",supportedPlatforms:["windows"]}),ze("software-apt-install","Software & automation","Install software with apt","Install package [package name] with apt on the Linux target workstation, then verify it.",["software.install","process.list"],["apt","linux","package","설치"],{targetSupport:"single",supportedPlatforms:["linux"]}),ze("software-brew-install","Software & automation","Install software with Homebrew","Install package [package name] with brew on the macOS target workstation, then verify it.",["software.install","process.list"],["brew","homebrew","macos","설치"],{targetSupport:"single",supportedPlatforms:["macos"]}),ze("software-npm-install","Software & automation","Install an npm package","Install npm package [package name] on the target workstation and verify the installed version.",["software.install","command.run"],["npm","node","package"],{targetSupport:"single"}),ze("software-run-script","Software & automation","Run a registered script","Run the registered script [script path] on the target workstation and report its result.",["script.run"],["script","automation","registered"],{targetSupport:"single"}),ze("software-run-command","Software & automation","Run a command on one target","Run command [command] on the target workstation and return its exit status and output.",["command.run"],["command","shell","terminal"],{targetSupport:"single"}),ze("software-verify-install","Software & automation","Verify an installed tool","Check whether [application] is installed, running, and available on the PATH of the current targets.",["process.list","system.health"],["verify","installed","path"]),ze("software-toolchain-setup","Software & automation","Set up a toolchain","Install the requested package [package name], configure [change], and verify the toolchain on the target workstation.",["software.install","system.configure","process.list"],["toolchain","setup","developer"],{targetSupport:"single"}),ze("network-adapter-status","Network & connectivity","Check network adapters","Show adapter state, address, and link information for the current targets.",["network.status"],["adapter","ethernet","wifi","네트워크 상태"]),ze("network-disconnected","Network & connectivity","Find disconnected targets","Find current targets with disconnected or degraded network adapters.",["network.status"],["disconnected","offline","연결 끊김"]),ze("network-link-speed","Network & connectivity","Check link speed","Report network link speed and duplex information for the current targets.",["network.status"],["speed","bandwidth","duplex"]),ze("network-warnings","Network & connectivity","Review network warnings","Review network status and recent logs for connectivity warnings on the current targets.",["network.status","logs.collect"],["warning","latency","packet loss"]),ze("network-diagnostics","Network & connectivity","Collect network diagnostics","Collect network status, system diagnostics, and relevant logs for the current targets.",["network.status","diagnostics.collect","logs.collect"],["diagnostics","incident","connectivity"]),ze("network-service-failures","Network & connectivity","Find network service failures","Check network status and relevant service states on the current targets.",["network.status","service.status"],["service","failure","dns"]),ze("network-compare","Network & connectivity","Compare target connectivity","Compare adapter state, addresses, and link speed across the current targets.",["network.status"],["compare","inventory","connectivity"]),ze("network-intermittent","Network & connectivity","Investigate intermittent connectivity","Investigate intermittent connectivity using network status, service state, and diagnostics evidence.",["network.status","service.status","diagnostics.collect"],["intermittent","unstable","recovery"]),ze("power-lock","Power & maintenance","Lock the workstation","Lock the target workstation and report the resulting power action status.",["system.power"],["lock","security","잠금"],{targetSupport:"single",risk:"critical"}),ze("power-logoff","Power & maintenance","Log off the workstation","Log off the target workstation after warning that interactive sessions will close.",["system.power"],["logoff","session","로그오프"],{targetSupport:"single",risk:"critical"}),ze("power-sleep","Power & maintenance","Put the workstation to sleep","Put the target workstation to sleep after confirming the requested delay of [delay].",["system.power"],["sleep","suspend","절전"],{targetSupport:"single",risk:"critical"}),ze("power-restart","Power & maintenance","Restart the workstation","Restart the target workstation after confirming that active work may be interrupted.",["system.power"],["restart","reboot","재부팅"],{targetSupport:"single",risk:"critical"}),ze("power-shutdown","Power & maintenance","Shut down the workstation","Shut down the target workstation after confirming that active work may be interrupted.",["system.power"],["shutdown","power off","종료"],{targetSupport:"single",risk:"critical"}),ze("power-maintenance-restart","Power & maintenance","Restart after maintenance","Check the target workstation, restart it after maintenance, and verify that it returns online.",["system.health","system.power","network.status"],["maintenance","reboot","verify"],{targetSupport:"single",risk:"critical"}),ze("power-timezone","Power & maintenance","Set the workstation timezone","Set the target workstation timezone to [timezone] and verify the resulting system configuration.",["system.configure"],["timezone","clock","시간대"],{targetSupport:"single",risk:"critical"}),ze("power-persistent-environment","Power & maintenance","Persist an environment variable","Persist environment variable [name] with value [value] for the target workstation and verify it.",["system.configure"],["environment","persistent","환경변수"],{targetSupport:"single",risk:"critical"}),ze("recovery-app-wont-start","Troubleshooting & recovery","Investigate an app that will not start","Inspect [application], review its logs, launch the registered application, and verify the process.",["process.list","application.launch","logs.collect"],["app failure","start","실행 오류"],{targetSupport:"single"}),ze("recovery-failed-service","Troubleshooting & recovery","Recover a failed service","Inspect service [service name], collect logs, restart it safely, and verify its running state.",["service.status","logs.collect","service.control"],["service failure","recover","서비스 복구"],{targetSupport:"single"}),ze("recovery-repeated-process","Troubleshooting & recovery","Investigate a repeatedly stopping process","Inspect process [process name], collect diagnostics, stop stale instances, and relaunch the registered process.",["process.list","diagnostics.collect","process.control","application.launch"],["crash loop","process","반복 종료"],{targetSupport:"single"}),ze("recovery-low-disk","Troubleshooting & recovery","Recover from low disk space","Inspect disk capacity, find temporary files, remove only the requested files, and verify free space.",["disk.status","file.list","file.delete"],["disk full","cleanup","저장공간 부족"],{targetSupport:"single"}),ze("recovery-gpu-overheating","Troubleshooting & recovery","Investigate GPU overheating","Inspect GPU temperature and processes, then close the specified workload if it is causing the thermal warning.",["gpu.status","process.list","application.close"],["overheating","thermal","GPU 발열"],{targetSupport:"single"}),ze("recovery-high-vram","Troubleshooting & recovery","Recover high VRAM usage","Inspect VRAM usage and GPU processes, then stop the specified stale workload if necessary.",["gpu.status","process.list","process.control"],["vram","memory pressure","VRAM 부족"],{targetSupport:"single"}),ze("recovery-network-instability","Troubleshooting & recovery","Recover network instability","Collect network diagnostics, inspect network services, and report the safest recovery action for the target workstation.",["network.status","service.status","diagnostics.collect"],["network","unstable","네트워크 복구"],{targetSupport:"single"}),ze("recovery-incident-report","Troubleshooting & recovery","Create a full incident report","Create a full incident report from health, process, service, network, and log evidence for the current targets.",["system.health","process.list","service.status","network.status","logs.collect"],["incident","report","장애 보고서"])],Om={read:"allow",processControl:"allow",serviceControl:"allow",applicationControl:"ask",fileRead:"allow",fileWrite:"allow",fileDelete:"ask",shell:"ask",script:"ask",softwareInstall:"ask",network:"allow",systemPower:"ask",systemConfiguration:"ask",userAccount:"deny"};function Pk(n,a){return n==="safe-auto"?Om:n==="full-access"?{...Om,processControl:"allow",serviceControl:"allow",applicationControl:"allow",fileDelete:"allow",shell:"allow",script:"allow",softwareInstall:"allow",systemPower:"allow",systemConfiguration:"allow"}:n==="custom"&&a?a:{...Om,processControl:"ask",serviceControl:"ask",applicationControl:"ask",fileWrite:"ask",network:"ask"}}function qk(n,a,i){const r=Pk(a,i),c=n.requiredOperations.map(d=>r[xi[d].permissionCategory]);if(c.includes("deny")){const d=n.requiredOperations.find(m=>r[xi[m].permissionCategory]==="deny");return{state:"blocked",label:"Blocked",reason:`This task requires ${xi[d].label}, which is blocked by the current permission policy.`}}return c.includes("ask")?{state:"approval",label:"Approval required",reason:"This task requires approval before the requested changes can reach a workstation."}:n.requiredOperations.every(d=>xi[d].readOnly)?{state:"read-only",label:"Read only"}:a==="full-access"?{state:"full-access",label:"Full Access"}:{state:"auto",label:"Auto allowed"}}function Gk(n){const a=String(n||"").trim().toLowerCase();return a==="windows"||a==="win32"||a==="win32nt"?"windows":a==="macos"||a==="macosx"||a==="darwin"||a==="osx"?"macos":a==="linux"?"linux":null}function Vk(n,a,i){const r=new Set(i);return n.filter(c=>c.connected&&(a==="all"||r.has(c.deviceId)))}function Yk(n,a){const i=Gk(n.platform);if(!i||!a.supportedPlatforms.includes(i))return!1;const r=n.capabilities?.agentTools;return!Array.isArray(r)||r.length===0?a.requiredOperations.every(c=>xi[c].readOnly):a.requiredOperations.every(c=>r.includes(c))}function ow(n,a,i,r,c,d){const m=qk(n,c,d),p=Vk(a,i,r),v=p.map(C=>C.deviceId),g={...m,available:!1,availableDeviceIds:[],unsupportedDeviceIds:v,risk:n.risk,supportedPlatforms:n.supportedPlatforms};if(p.length===0)return{...g,reason:"Select at least one connected workstation."};if(n.targetSupport==="single"&&p.length!==1)return{...g,reason:"This task supports one workstation at a time."};if(m.state==="blocked")return g;const w=p.filter(C=>Yk(C,n)),y=w.map(C=>C.deviceId),b=v.filter(C=>!y.includes(C));return w.length===0?{...g,unsupportedDeviceIds:b,reason:"No current target supports the required platform and client capabilities."}:{...g,available:!0,availableDeviceIds:y,unsupportedDeviceIds:b}}function Wk(n,a,i,r,c,d){return n.filter(m=>m.enabled&&ow(m,a,i,r,c,d).available).length}const Im="livedesk.agentPromptRecent",Bm="livedesk.agentPromptFavorites",Kk={Recommended:ir,"Health & capacity":Zt,"Processes & services":aS,"AI workloads":nS,"Files & configuration":tS,"Software & automation":bd,"Network & connectivity":Sh,"Power & maintenance":wn,"Troubleshooting & recovery":eS};function zx(n){if(typeof window>"u")return[];try{const a=JSON.parse(window.localStorage.getItem(n)||"[]");return Array.isArray(a)?a.filter(i=>typeof i=="string"):[]}catch{return[]}}function od(n,a){try{window.localStorage.setItem(n,JSON.stringify(a))}catch{}}function Fm(n){return n==="all"?"All tasks":n==="recent"?"Recent":n==="favorites"?"Favorites":n==="read-only"?"Read only":n==="auto"?"Auto allowed":n==="approval"?"Approval required":n==="full-access"?"Full Access":n==="available"?"Available":n==="unavailable"?"Unavailable":n}function Qk(n){return n==="all"?"All":n==="recent"?"Recent":n==="favorites"?"Favorites":n==="read-only"?"Read only":n==="auto"?"Auto":n==="approval"?"Approval":n==="full-access"?"Full access":n==="available"?"Available":n==="unavailable"?"Unavailable":{Recommended:"Recommended","Health & capacity":"Health","Processes & services":"Processes","AI workloads":"AI","Files & configuration":"Files","Software & automation":"Software","Network & connectivity":"Network","Power & maintenance":"Power","Troubleshooting & recovery":"Recovery"}[n]}function Xk(n,a,i){if(!i.trim())return!0;const r=i.trim().toLowerCase();return[n.title,n.prompt,n.description,n.category,n.risk,a.label,...n.keywords,...n.requiredOperations,...n.supportedPlatforms].join(" ").toLowerCase().includes(r)}function Zk(n){return`permission-${n}`}function Jk(n){return n==="low"?"Low risk":n==="medium"?"Medium risk":n==="high"?"High risk":"Critical risk"}function eA(n){return n==="windows"?"Windows":n==="macos"?"macOS":"Linux"}function tA({devices:n,targetMode:a,selectedIds:i,permissionMode:r,customCategories:c,onSelectPrompt:d,onClose:m}){const[p,v]=f.useState(""),[g,w]=f.useState("all"),[y,b]=f.useState(()=>zx(Im)),[C,j]=f.useState(()=>zx(Bm)),[A,T]=f.useState(0),[k,R]=f.useState(""),E=f.useRef(null),$=f.useRef(null),F=f.useMemo(()=>rw.filter(V=>V.enabled),[]),q=f.useMemo(()=>new Map(F.map(V=>[V.id,ow(V,n,a,i,r,c)])),[c,n,r,i,a,F]),I=f.useMemo(()=>[...q.values()].filter(V=>V.available).length,[q]),_=f.useMemo(()=>n.filter(V=>V.connected&&(a==="all"||i.includes(V.deviceId))).length,[n,i,a]),fe=f.useMemo(()=>{const V=F.filter(z=>Xk(z,q.get(z.id),p));return g==="recent"?y.map(z=>V.find(K=>K.id===z)).filter(z=>!!z):g==="favorites"?C.map(z=>V.find(K=>K.id===z)).filter(z=>!!z):g==="all"?V:V.filter(z=>{const K=q.get(z.id);return g==="read-only"?K.state==="read-only":g==="auto"?K.state==="auto":g==="approval"?K.state==="approval":g==="full-access"?K.state==="full-access":g==="available"?K.available:g==="unavailable"?!K.available:z.category===g})},[q,C,g,y,p,F]),G=f.useMemo(()=>g!=="all"?[{category:Fm(g),templates:fe}]:Lx.map(V=>({category:V,templates:fe.filter(z=>z.category===V)})).filter(V=>V.templates.length>0),[g,fe]);f.useEffect(()=>{T(V=>Math.min(V,Math.max(0,fe.length-1)))},[fe.length]),f.useEffect(()=>{od(Im,y)},[y]),f.useEffect(()=>{od(Bm,C)},[C]),f.useEffect(()=>{$.current?.focus();const V=K=>{K.target instanceof Node&&!E.current?.contains(K.target)&&m()},z=K=>{K.key==="Escape"&&(K.preventDefault(),m())};return document.addEventListener("pointerdown",V),document.addEventListener("keydown",z),()=>{document.removeEventListener("pointerdown",V),document.removeEventListener("keydown",z)}},[m]);const ue=V=>{const z=q.get(V.id);if(!z.available){R(z.reason||"This task is not available for the current targets and permission policy.");return}const K=[V.id,...y.filter(Q=>Q!==V.id)].slice(0,10);b(K),od(Im,K),d(V.prompt),m()},Y=V=>{j(z=>{const K=z.includes(V)?z.filter(Q=>Q!==V):[V,...z];return od(Bm,K),K})},ae=V=>{V.key==="ArrowDown"?(V.preventDefault(),T(z=>Math.min(z+1,Math.max(0,fe.length-1)))):V.key==="ArrowUp"?(V.preventDefault(),T(z=>Math.max(z-1,0))):V.key==="Enter"&&fe[A]&&(V.preventDefault(),ue(fe[A]))};let le=-1;return l.jsxs("section",{className:"agents-suggested-tasks",ref:E,"aria-label":"Suggested tasks",children:[l.jsxs("header",{className:"agents-suggested-header",children:[l.jsxs("div",{children:[l.jsxs("span",{className:"agents-suggested-title",children:[l.jsx(ir,{size:15})," Suggested tasks"]}),l.jsxs("small",{children:[I," available · ",F.length," total. Choose a task, edit it, then run it."]})]}),l.jsx("button",{className:"agents-suggested-close",type:"button","aria-label":"Close suggested tasks",onClick:m,children:l.jsx(rr,{size:16})})]}),l.jsxs("label",{className:"agents-suggested-search",children:[l.jsx(Xb,{size:15,"aria-hidden":"true"}),l.jsx("input",{ref:$,value:p,onChange:V=>v(V.target.value),onKeyDown:ae,placeholder:"Search tasks...","aria-label":"Search suggested tasks"})]}),l.jsx("div",{className:"agents-suggested-filters","aria-label":"Task categories and availability filters",children:["all","recent","favorites","read-only","auto","approval","full-access","available","unavailable",...Lx].map(V=>{const z=V==="recent"?Zb:V==="favorites"?Zm:V==="all"?ir:V==="available"?On:V==="unavailable"?Jb:V==="read-only"||V==="auto"||V==="approval"||V==="full-access"?wn:Kk[V];return l.jsxs("button",{className:g===V?"active":"",type:"button",title:Fm(V),"aria-label":Fm(V),"aria-pressed":g===V,onClick:()=>{w(V),T(0),R("")},children:[l.jsx(z,{size:12})," ",Qk(V)]},V)})}),k&&l.jsx("div",{className:"agents-suggested-notice",role:"status",children:k}),l.jsxs("div",{className:"agents-suggested-list",role:"listbox","aria-label":"Suggested tasks",children:[G.map(V=>l.jsxs("div",{className:"agents-suggested-group",children:[l.jsx("strong",{children:V.category}),V.templates.map(z=>{le+=1;const K=le===A,Q=C.includes(z.id),P=q.get(z.id),ie=P.availableDeviceIds.length+P.unsupportedDeviceIds.length||_,Se=P.available?`Available on ${P.availableDeviceIds.length} of ${ie} target${ie===1?"":"s"}`:`Unavailable: ${P.reason||"not supported by the current targets"}`;return l.jsxs("div",{className:`agents-suggested-item ${K?"active":""} ${P.available?"":"unavailable"}`,children:[l.jsxs("button",{className:"agents-suggested-prompt",type:"button",role:"option","aria-selected":K,"aria-disabled":!P.available,onClick:()=>ue(z),children:[l.jsx("span",{children:z.title}),l.jsx("small",{className:"agents-suggested-description",children:z.description}),l.jsxs("span",{className:"agents-suggested-meta",children:[l.jsx("em",{children:z.category}),l.jsx("em",{className:Zk(P.state),children:P.label}),l.jsx("em",{className:`risk-${z.risk}`,children:Jk(z.risk)}),l.jsx("em",{children:z.supportedPlatforms.map(eA).join(" · ")}),l.jsx("em",{className:P.available?"availability-ok":"availability-unavailable",children:Se}),P.available&&P.unsupportedDeviceIds.length>0&&l.jsxs("em",{className:"availability-warning",children:["Unsupported on ",P.unsupportedDeviceIds.length]})]})]}),l.jsx("button",{className:`agents-suggested-favorite ${Q?"favorite":""}`,type:"button","aria-label":Q?`Remove ${z.title} from favorites`:`Add ${z.title} to favorites`,"aria-pressed":Q,onClick:()=>Y(z.id),children:l.jsx(Zm,{size:14,fill:Q?"currentColor":"none"})})]},z.id)})]},V.category)),fe.length===0&&l.jsx("p",{className:"agents-suggested-empty",children:"No tasks match this search or current filter."})]})]})}function nA({devices:n,mode:a,selectedIds:i,onModeChange:r,onToggle:c,permissionMode:d,onPermissionModeChange:m}){const p=n.filter(g=>g.connected),v=i.filter(g=>p.some(w=>w.deviceId===g)).length;return l.jsxs("section",{className:"agents-target-picker","aria-label":"Agent targets",children:[l.jsxs("div",{className:"agents-target-toolbar",children:[l.jsx("span",{className:"agents-section-label",children:"Targets"}),l.jsxs("div",{className:"agents-target-modes",children:[l.jsxs("button",{className:a==="all"?"active":"",onClick:()=>r("all"),type:"button",children:[l.jsx(ry,{size:14})," All connected ",l.jsx("small",{children:p.length})]}),l.jsxs("button",{className:a==="selected"?"active":"",onClick:()=>r("selected"),type:"button",children:[l.jsx(Ec,{size:14})," Selected ",v]})]}),l.jsxs("label",{className:`agents-permission-picker permission-${d}`,children:[l.jsx(Ld,{size:14}),l.jsx("span",{children:"Permission"}),l.jsxs("select",{value:d,onChange:g=>m(g.target.value),"aria-label":"Agent permission mode",children:[l.jsx("option",{value:"ask",children:"Ask"}),l.jsx("option",{value:"safe-auto",children:"Safe Auto"}),l.jsx("option",{value:"full-access",children:"Full Access"}),l.jsx("option",{value:"custom",children:"Custom"})]}),l.jsx(cy,{size:13,"aria-hidden":"true"})]})]}),l.jsx("div",{className:"agents-target-list",children:n.length===0?l.jsx("span",{className:"agents-target-empty",children:"No workstations discovered."}):n.map(g=>{const w=a==="all"?g.connected:i.includes(g.deviceId);return l.jsxs("label",{className:`agents-target-option ${w?"selected":""} ${g.connected?"":"offline"}`,children:[l.jsx("input",{type:"checkbox",checked:w,disabled:!g.connected||a==="all",onChange:()=>c(g.deviceId)}),l.jsx("span",{className:"agents-target-icon",children:l.jsx(Jt,{size:15})}),l.jsxs("span",{children:[l.jsx("strong",{children:iw(g)}),l.jsx("small",{children:g.connected?"Connected":"Offline"})]}),w&&l.jsx(Ec,{className:"agents-target-check",size:15,"aria-hidden":"true"})]},g.deviceId)})})]})}async function aA(n,a){return Be("/api/settings/agent/plan",{method:"POST",body:JSON.stringify({instruction:a})},n)}async function sA(n,a){return Be("/api/settings/agent/run",{method:"POST",body:JSON.stringify(a)},n)}async function lA(n,a){return Be(`/api/settings/agent/runs/${encodeURIComponent(a)}`,void 0,n)}async function iA(n,a){return Be(`/api/settings/agent/runs/${encodeURIComponent(a)}/cancel`,{method:"POST",body:JSON.stringify({})},n)}async function rA(n){return Be("/api/settings/agent/runs/cancel-all",{method:"POST",body:JSON.stringify({})},n)}async function oA(n,a,i,r){return Be(`/api/settings/agent/runs/${encodeURIComponent(a)}/approvals/${encodeURIComponent(i)}/approve`,{method:"POST",body:JSON.stringify({scope:r})},n)}async function cA(n,a,i,r="User rejected this action."){return Be(`/api/settings/agent/runs/${encodeURIComponent(a)}/approvals/${encodeURIComponent(i)}/reject`,{method:"POST",body:JSON.stringify({reason:r})},n)}async function uA(n,a,i){return Be(`/api/settings/agent/policies/${encodeURIComponent(a)}`,{method:"PUT",body:JSON.stringify({categories:i})},n)}async function dA(n,a){return Be("/api/settings/agent/summary",{method:"POST",body:JSON.stringify(a)},n)}async function fA(n,a){return Be("/api/remote/tasks",{method:"POST",body:JSON.stringify({instruction:a.instruction,deviceIds:a.deviceIds,operation:a.operation,targetQuery:a.targetQuery,approvalLevel:"read-only"})},n)}async function mA(n,a){return Be(`/api/remote/tasks/${encodeURIComponent(a)}`,void 0,n)}async function hA(n,a){return Be(`/api/remote/tasks/${encodeURIComponent(a)}/cancel`,{method:"POST",body:JSON.stringify({})},n)}async function pA(n,a){return Be(`/api/remote/tasks/${encodeURIComponent(a)}/retry`,{method:"POST",body:JSON.stringify({failedOnly:!0})},n)}function Ji(n){return`${n}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}function cd(n,a){const i=new Map(a.map(r=>[r.deviceId,iw(r)]));return n.results.map(r=>({deviceId:r.deviceId,deviceName:r.deviceName||i.get(r.deviceId)||r.deviceId,status:Mk(r.status),stage:r.stage||(r.status==="running"?"Checking processes":void 0),result:r.result,data:r.data,error:r.error,sequence:Number.isSafeInteger(r.sequence)?r.sequence:0}))}function gA(n,a){const i=new Map(a.map(r=>[r.deviceId,r]));return n.map(r=>{const c=i.get(r.deviceId);return!c||c.sequence<=r.sequence?r:c})}function vA(n,a){const i=a.filter(d=>d.status==="completed"),r=a.filter(d=>d.status==="failed");if(n.operation==="process.list"){const m=`${i.filter(p=>{const v=p.result||"";return!/not running|no process/i.test(v)&&/running|online|found/i.test(v)}).length}대에서 요청한 프로세스가 실행 중입니다.`;return r.length>0?`${m}
|
|
14
14
|
${r.map(p=>`${p.deviceName}는 ${p.error||"응답하지 않았습니다."}`).join(`
|
|
15
|
-
`)}`:m}return r.length>0?`${i.length}대 완료, ${r.length}대 실패했습니다.`:`${i.length}대 작업이 완료되었습니다.`}const SA={read:"allow",processControl:"ask",serviceControl:"ask",applicationControl:"ask",fileRead:"ask",fileWrite:"ask",fileDelete:"ask",shell:"ask",script:"ask",softwareInstall:"ask",network:"ask",systemPower:"ask",systemConfiguration:"ask",userAccount:"deny"};function CA(n){return n==="safe-auto"?"Safe Auto":n==="full-access"?"Full Access":n==="custom"?"Custom":"Ask"}function jA(n){return n.replace(/([A-Z])/g," $1").replace(/^./,a=>a.toUpperCase())}function kA({hubUrl:n,devices:a}){const[i,r]=f.useState("all"),[c,u]=f.useState([]),[m,p]=f.useState(""),[v,g]=f.useState([]),[w,y]=f.useState(""),[b,C]=f.useState(""),[k,A]=f.useState(""),[T,j]=f.useState("safe-auto"),[R]=f.useState("custom-default"),[E,H]=f.useState(SA),[F,q]=f.useState([]),[I,_]=f.useState(""),[fe,G]=f.useState(!1),[ue,Y]=f.useState(null),[ae,le]=f.useState(!1),[V,z]=f.useState(""),[K,Q]=f.useState(!1),P=f.useRef(null),ie=f.useRef(new Set),Se=f.useRef(new Set),D=f.useRef(new Set),Z=f.useMemo(()=>a.filter(te=>te.connected).map(te=>te.deviceId),[a]),ye=f.useMemo(()=>Zk(fw,a,i,c,T,E),[E,a,T,c,i]),be=f.useCallback(te=>{const oe=od(te,a);if(g(Ae=>Ae.map(Ce=>Ce.type==="task"&&Ce.batchId===te.batchId?{...Ce,states:wA(Ce.states,oe),status:te.status}:Ce)),!["running","queued"].includes(te.status)&&!ie.current.has(te.batchId)){ie.current.add(te.batchId);const Ae=Ji("agent-summary");g(Ce=>[...Ce,{type:"agent",id:Ae,text:bA(te,oe)}]),te.operation&&pA(n,{instruction:te.instructionPreview,operation:te.operation,total:oe.length,completed:oe.filter(Ce=>Ce.status==="completed").length,failed:oe.filter(Ce=>Ce.status==="failed").length,results:oe.map(Ce=>({deviceName:Ce.deviceName,status:Ce.status,result:Ce.result,error:Ce.error}))}).then(Ce=>{!Ce.ok||!Ce.summary||g(st=>st.map(me=>me.type==="agent"&&me.id===Ae?{...me,text:Ce.summary}:me))}).catch(()=>{}),y(Ce=>Ce===te.batchId?"":Ce)}},[a,n]),de=f.useCallback(async te=>{const oe=await vA(n,te);return be(oe),oe},[n,be]),Ne=f.useCallback((te,oe)=>{D.current.has(te.batchId)||(D.current.add(te.batchId),g(Ae=>[...Ae,{type:"task",id:Ji("task"),batchId:te.batchId,agentRunId:oe,operation:te.operation||"diagnostics.collect",instruction:te.instructionPreview,states:od(te,a),status:te.status}])),be(te)},[a,be]),Ie=f.useCallback(async te=>{const oe=await cA(n,te);for(const Ae of oe.taskBatches||[])Ne(Ae,te);if(q(oe.approvals||[]),!["running","queued","waiting-approval"].includes(oe.status)&&!Se.current.has(te)){Se.current.add(te);const Ae=oe.finalResponse?.trim()||(oe.status==="cancelled"?"Codex 작업을 취소했습니다.":oe.error?`Codex 작업이 완료되지 않았습니다: ${oe.error}`:"Codex 작업이 완료되었습니다.");g(Ce=>[...Ce,{type:oe.status==="failed"?"error":"agent",id:Ji("agent-run-result"),text:Ae}])}return oe},[Ne,n]);f.useEffect(()=>{if(!w)return;let te=!0;const oe=async()=>{try{const Ce=await de(w);te&&!["running","queued"].includes(Ce.status)&&y("")}catch(Ce){te&&z(Ce instanceof Error?Ce.message:String(Ce))}};oe();const Ae=window.setInterval(()=>{oe()},800);return()=>{te=!1,window.clearInterval(Ae)}},[w,de]),f.useEffect(()=>{if(!b)return;let te=!0;const oe=async()=>{try{const Ce=await Ie(b);te&&!["running","queued","waiting-approval"].includes(Ce.status)&&(C(""),le(!1))}catch(Ce){te&&z(Ce instanceof Error?Ce.message:String(Ce))}};oe();const Ae=window.setInterval(()=>{oe()},800);return()=>{te=!1,window.clearInterval(Ae)}},[b,Ie]);const re=async(te="",oe,Ae=!1)=>{const Ce=(te||m).trim();if(!Ce||w||b)return;let st=_k(Ce);const me=oe||(i==="all"?Z:c.filter(_e=>Z.includes(_e)));if(me.length===0){z("Select at least one connected workstation.");return}if(T==="full-access"&&!ae&&!Ae){Y({instruction:Ce,targetIds:me});return}if(g(_e=>[..._e,{type:"user",id:Ji("user"),text:Ce}]),p(""),Q(!1),z(""),(i==="all"?Z:c.filter(_e=>Z.includes(_e))).length===0){g(_e=>[..._e,{type:"error",id:Ji("no-targets"),text:"연결된 대상 장비를 하나 이상 선택해 주세요."}]);return}if(!st){try{if(T==="custom"){const Ge=await hA(n,R,E);if(!Ge.ok)throw new Error(Ge.error||"Custom Agent policy could not be saved.")}const _e=await oA(n,{instruction:Ce,deviceIds:me,permissionMode:T,customPolicyId:R});if(!_e.ok||!_e.runId)throw new Error(_e.error||"Codex Agent run could not be started.");q(_e.approvals||[]),C(_e.runId);return}catch(_e){try{const Ge=await rA(n,Ce);Ge.ok&&Ge.plan&&(st={operation:Ge.plan.operation,query:Ge.plan.targetQuery})}catch{g(Ge=>[...Ge,{type:"error",id:Ji("unsupported"),text:_e instanceof Error?_e.message:zk}])}}if(!st)return}try{const _e=await gA(n,{instruction:Ce,deviceIds:me,operation:st.operation,targetQuery:st.query});if(!_e.ok||!_e.batch||!_e.batchId)throw new Error(_e.error||"작업을 만들지 못했습니다.");const Ge={type:"task",id:Ji("task"),batchId:_e.batchId,operation:st.operation,instruction:Ce,states:od(_e.batch,a),status:_e.batch.status};D.current.add(_e.batchId),g(aa=>[...aa,Ge]),y(_e.batchId)}catch(_e){z(_e instanceof Error?_e.message:String(_e))}},Ke=async(te,oe)=>{_(te.approvalId);try{const Ae=await fA(n,te.runId,te.approvalId,oe);if(!Ae.ok)throw new Error(Ae.error||"Agent approval could not be applied.");await Ie(te.runId)}catch(Ae){z(Ae instanceof Error?Ae.message:String(Ae))}finally{_("")}},De=async te=>{_(te.approvalId);try{const oe=await mA(n,te.runId,te.approvalId);if(!oe.ok)throw new Error(oe.error||"Agent approval could not be rejected.");await Ie(te.runId)}catch(oe){z(oe instanceof Error?oe.message:String(oe))}finally{_("")}},Qe=async(te,oe)=>{A(te);try{if(oe){const Ce=await uA(n,oe);for(const st of Ce.taskBatches||[])be(st);C(st=>st===oe?"":st);return}const Ae=await xA(n,te);be(Ae),y(Ce=>Ce===te?"":Ce)}catch(Ae){z(Ae instanceof Error?Ae.message:String(Ae))}finally{A("")}},ne=async()=>{if(!(fe||!w&&!b)){G(!0);try{const te=await dA(n);if(!te.ok)throw new Error(te.error||"모든 Agent 작업을 취소하지 못했습니다.");y(""),C(""),q([]),g(oe=>oe.map(Ae=>Ae.type==="task"&&["queued","running"].includes(Ae.status)?{...Ae,status:"cancelled",states:Ae.states.map(Ce=>["queued","running"].includes(Ce.status)?{...Ce,status:"cancelled",stage:"Cancelled",error:"Cancelled by user."}:Ce)}:Ae))}catch(te){z(te instanceof Error?te.message:String(te))}finally{G(!1)}}},ge=async te=>{A(te);try{const oe=await yA(n,te);if(!oe.ok||!oe.batch||!oe.batchId)throw new Error(oe.error||"재시도하지 못했습니다.");ie.current.delete(oe.batchId),g(Ae=>Ae.map(Ce=>Ce.type==="task"&&Ce.batchId===te?{...Ce,batchId:oe.batchId,states:od(oe.batch,a),status:oe.batch.status}:Ce)),y(oe.batchId)}catch(oe){z(oe instanceof Error?oe.message:String(oe))}finally{A("")}},Re=te=>{p(te),Q(!1),window.requestAnimationFrame(()=>P.current?.focus())};return l.jsxs("section",{className:"agents-page",children:[l.jsxs("div",{className:"agents-workspace",children:[(w||b)&&l.jsxs("div",{className:"agents-page-status",children:[l.jsxs("span",{children:[Z.length," workstations · ",CA(T)]}),l.jsx("button",{type:"button",className:"agents-stop-all",onClick:()=>{ne()},disabled:fe,children:fe?"Stopping…":"Stop all"})]}),ue&&l.jsx("div",{className:"agents-permission-modal-backdrop",role:"presentation",children:l.jsxs("section",{className:"agents-permission-modal",role:"dialog","aria-modal":"true","aria-labelledby":"full-access-title",children:[l.jsx("span",{className:"agents-permission-modal-icon",children:l.jsx(Ld,{size:20})}),l.jsx("h3",{id:"full-access-title",children:"Confirm Full Access"}),l.jsx("p",{children:"Codex may change files, run commands, manage applications, and modify system state on the selected workstations. This run is still limited to the selected devices, the fixed policy, and the tool budget."}),l.jsxs("div",{className:"agents-permission-modal-actions",children:[l.jsx("button",{type:"button",onClick:()=>Y(null),children:"Cancel"}),l.jsx("button",{type:"button",className:"danger",onClick:()=>{const te=ue;Y(null),le(!0),re(te.instruction,te.targetIds,!0)},children:"Run with Full Access"})]})]})}),V&&l.jsx("div",{className:"agents-error",role:"alert",children:V}),l.jsx(Pk,{items:v,onCancel:Qe,onRetry:ge,busyBatchId:k,approvals:F,onApprove:Ke,onReject:De,busyApprovalId:I}),l.jsxs("div",{className:"agents-composer-shell",children:[K&&l.jsx(lA,{devices:a,targetMode:i,selectedIds:c,permissionMode:T,customCategories:E,onSelectPrompt:Re,onClose:()=>Q(!1)}),l.jsx(Tk,{ref:P,value:m,onChange:p,onSubmit:()=>{re()},onOpenSuggestedTasks:()=>Q(te=>!te),suggestedOpen:K,suggestedTaskCount:ye,disabled:!!w||!!b})]})]}),l.jsxs("aside",{className:"agents-target-sidebar","aria-label":"Agent targets and permissions",children:[l.jsx(iA,{devices:a,mode:i,selectedIds:c,onModeChange:r,onToggle:te=>u(oe=>oe.includes(te)?oe.filter(Ae=>Ae!==te):[...oe,te]),permissionMode:T,onPermissionModeChange:te=>{j(te),te!=="full-access"&&le(!1)}}),T==="custom"&&l.jsxs("section",{className:"agents-custom-policy","aria-label":"Custom Agent permissions",children:[l.jsxs("div",{className:"agents-custom-policy-head",children:[l.jsxs("div",{children:[l.jsx("span",{className:"agents-section-label",children:"Custom policy"}),l.jsx("strong",{children:"Choose what Codex may do automatically."})]}),l.jsx("span",{children:"Denied actions never reach a device."})]}),l.jsx("div",{className:"agents-custom-policy-grid",children:Rk.map(te=>l.jsxs("label",{children:[l.jsx("span",{children:jA(te)}),l.jsxs("select",{value:E[te],onChange:oe=>H(Ae=>({...Ae,[te]:oe.target.value})),children:[l.jsx("option",{value:"allow",children:"Allow automatically"}),l.jsx("option",{value:"ask",children:"Ask every time"}),l.jsx("option",{value:"deny",children:"Deny"})]})]},te))})]})]})]})}function hw(n){return{type:n.type,deviceIds:n.deviceIds,monitorIndex:n.monitorIndex,label:n.label}}async function pw(n){try{return(await n.json()).error||`${n.status} ${n.statusText}`}catch{return`${n.status} ${n.statusText}`}}async function gw(n,a,i){const r=encodeURIComponent(JSON.stringify({kind:a.kind,fileName:a.fileName,mimeType:n.type||"application/octet-stream",durationMs:a.durationMs,target:hw(a.target)})),c=await fetch(`${Si(i)}/api/captures?metadata=${r}`,{method:"POST",headers:{"Content-Type":n.type||"application/octet-stream"},body:n,cache:"no-store"});if(!c.ok)throw new Error(await pw(c));return await c.json()}async function AA(n,a){return await Be("/api/capture-sessions",{method:"POST",body:JSON.stringify({...n,target:hw(n.target)})},a)}async function MA(n,a,i,r){const c=await fetch(`${Si(r)}/api/capture-sessions/${encodeURIComponent(n)}/chunks/${a}`,{method:"PUT",headers:{"Content-Type":i.type||"application/octet-stream"},body:i,cache:"no-store"});if(!c.ok)throw new Error(await pw(c));return await c.json()}async function NA(n,a,i){return await Be(`/api/capture-sessions/${encodeURIComponent(n)}/finalize`,{method:"POST",body:JSON.stringify({durationMs:a})},i)}async function Hx(n,a){await Be(`/api/capture-sessions/${encodeURIComponent(n)}`,{method:"DELETE"},a)}async function TA(n){return await Be("/api/captures",void 0,n)}function $x(n,a){return`${Si(a)}/api/captures/${encodeURIComponent(n)}/content`}async function RA(n,a){return await Be(`/api/captures/${encodeURIComponent(n)}`,{method:"DELETE"},a)}function EA({hubUrl:n,onToast:a}){const[i,r]=f.useState([]),[c,u]=f.useState(!0),m=f.useCallback(async()=>{u(!0);try{r((await TA(n)).captures||[])}catch(v){a(v instanceof Error?v.message:String(v))}finally{u(!1)}},[n,a]);f.useEffect(()=>{m()},[m]);const p=async v=>{const g=$x(v.id,n);if(navigator.share)try{await navigator.share({title:v.fileName,url:g});return}catch{}window.open(g,"_blank","noopener,noreferrer")};return l.jsxs("section",{className:"capture-gallery",children:[l.jsxs("header",{children:[l.jsxs("div",{children:[l.jsx("span",{className:"settings-eyebrow",children:"Capture Gallery"}),l.jsx("h2",{children:"Saved captures"})]}),l.jsxs("button",{className:"text-button",onClick:()=>{m()},type:"button",children:[l.jsx(zc,{size:15})," Refresh"]})]}),c?l.jsx("p",{className:"settings-help",children:"Loading captures..."}):i.length===0?l.jsx("p",{className:"settings-help",children:"No captures saved yet."}):l.jsx("div",{className:"capture-gallery-grid",children:i.map(v=>{const g=$x(v.id,n);return l.jsxs("article",{className:"capture-gallery-card",children:[v.mimeType.startsWith("image/")?l.jsx("img",{src:g,alt:v.target.label}):l.jsx("video",{src:g,controls:!0,preload:"metadata"}),l.jsxs("div",{className:"capture-gallery-card-body",children:[l.jsx("strong",{children:v.fileName}),l.jsxs("small",{children:[v.target.label," · ",new Date(v.createdAt).toLocaleString()," · ",Math.ceil(v.sizeBytes/1024)," KB"]}),l.jsxs("div",{children:[l.jsx("button",{className:"icon-button",title:"Open","aria-label":"Open",onClick:()=>window.open(g,"_blank","noopener,noreferrer"),type:"button",children:l.jsx(uS,{size:15})}),l.jsx("a",{className:"icon-button",title:"Download","aria-label":"Download",href:`${g}?download=1`,download:v.fileName,children:l.jsx(py,{size:15})}),l.jsx("button",{className:"icon-button",title:"Share","aria-label":"Share",onClick:()=>{p(v)},type:"button",children:l.jsx(dS,{size:15})}),l.jsx("button",{className:"icon-button danger",title:"Delete","aria-label":"Delete",onClick:()=>{window.confirm(`Delete ${v.fileName}?`)&&RA(v.id,n).then(()=>m()).catch(w=>a(w instanceof Error?w.message:String(w)))},type:"button",children:l.jsx(Sh,{size:15})})]})]})]},v.id)})})]})}function cd(n){if(!n)return"";const a=Math.max(0,Math.floor((Date.now()-n)/1e3)),i=Math.floor(a/3600),r=Math.floor(a%3600/60),c=a%60;return i>0?`${String(i).padStart(2,"0")}:${String(r).padStart(2,"0")}:${String(c).padStart(2,"0")}`:`${String(r).padStart(2,"0")}:${String(c).padStart(2,"0")}`}function Ux({controller:n,compact:a=!1,onFirstRollingUse:i,onError:r}){const{state:c,settings:u,videoSupported:m}=n,p=async y=>{try{await y()}catch(b){r?.(b instanceof Error?b.message:String(b))}},v=async()=>{if(u.rollingEnabled){n.setRollingEnabled(!1);return}(i?await i():window.confirm(`Keep the most recent 30 seconds in memory temporarily?
|
|
16
|
-
Nothing is saved until you press Save Last 30s.`))&&n.setRollingEnabled(!0)},g=c.recording?`Stop recording · ${cd(c.recordingStartedAt)}`:`Start recording · ${c.targetLabel}`,w=c.timelapse?`Stop timelapse · ${cd(c.timelapseStartedAt)}`:`Start timelapse · ${u.timelapseIntervalSeconds}s interval`;return l.jsxs("div",{className:`capture-toolbar ${a?"compact":""} ${c.recording?"recording-active":""}`,"aria-label":"Capture actions",children:[l.jsx("button",{className:"capture-action","aria-label":`Take screenshot · ${c.targetLabel}`,title:`Take screenshot · ${c.targetLabel}`,disabled:c.busy,onClick:()=>{p(n.takeScreenshot)},type:"button",children:l.jsx(fS,{size:17})}),l.jsx("button",{className:`capture-action ${c.recording?"active":""}`,"aria-label":g,title:g,disabled:!m||c.busy||c.timelapse,onClick:()=>{p(c.recording?n.stopRecording:n.startRecording)},type:"button",children:c.recording?l.jsxs(l.Fragment,{children:[l.jsx(Dv,{size:14,fill:"currentColor"}),l.jsx("span",{children:cd(c.recordingStartedAt)})]}):l.jsx(my,{size:18})}),l.jsxs("button",{className:"capture-action","aria-label":c.bufferEnabled?`Save last 30 seconds · ${c.bufferSeconds}s ready`:"Enable Last 30s memory buffer",title:c.bufferEnabled?`Save last 30 seconds · ${c.bufferSeconds}s ready`:"Enable Last 30s memory buffer",disabled:!m||c.recording||c.timelapse||c.busy||c.bufferEnabled&&c.bufferSeconds<1,onClick:()=>c.bufferEnabled?void p(n.saveLast30Seconds):void v(),type:"button",children:[l.jsx(mS,{size:17}),l.jsx("small",{children:"30s"})]}),l.jsx("button",{className:`capture-action ${c.timelapse?"timelapse-active":""}`,"aria-label":w,title:w,disabled:!m||c.busy||c.recording,onClick:()=>{p(c.timelapse?n.stopTimelapse:n.startTimelapse)},type:"button",children:c.timelapse?l.jsxs(l.Fragment,{children:[l.jsx(Dv,{size:14,fill:"currentColor"}),l.jsx("span",{children:cd(c.timelapseStartedAt)})]}):l.jsx(hS,{size:17})})]})}async function DA(n,a={}){const i=n.filter(y=>y.canvas&&y.canvas.width>0&&y.canvas.height>0),r=Math.max(320,a.maxWidth||1920),c=Math.max(180,a.maxHeight||1080),u=i.length<=1?1:i.length<=4?2:i.length<=9?3:4,m=Math.max(1,Math.ceil(Math.max(1,i.length)/u)),p=Math.floor(r/u),v=Math.floor(c/m),g=document.createElement("canvas");g.width=Math.max(320,p*u),g.height=Math.max(180,v*m);const w=g.getContext("2d",{alpha:!1});if(!w)return g;w.fillStyle="#0b1220",w.fillRect(0,0,g.width,g.height),w.font="600 14px system-ui, sans-serif",w.textBaseline="bottom";for(let y=0;y<i.length;y+=1){const b=i[y],C=y%u,k=Math.floor(y/u),A=C*p,T=k*v,j=b.canvas,R=Math.min(p/j.width,v/j.height),E=Math.max(1,Math.floor(j.width*R)),H=Math.max(1,Math.floor(j.height*R)),F=A+Math.floor((p-E)/2),q=T+Math.floor((v-H)/2);w.drawImage(j,F,q,E,H),a.includeLabels!==!1&&(w.fillStyle="rgba(4, 10, 20, .74)",w.fillRect(A,T+v-28,p,28),w.fillStyle="#f8fafc",w.fillText(b.label,A+9,T+v-9))}return g}function LA(n){return n?.signature||"none"}function _A(n){return n?.label||"No capture target"}function Px(n){return{...n,deviceIds:[...n.deviceIds],sourceCanvas:n.sourceCanvas||null}}function zA(){const n=new Date,a=i=>String(i).padStart(2,"0");return`${n.getFullYear()}${a(n.getMonth()+1)}${a(n.getDate())}_${a(n.getHours())}${a(n.getMinutes())}${a(n.getSeconds())}`}function OA(n){return n.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"Wall"}function IA(n){return`LiveDesk_${n.type==="wall"||n.type==="selection"?"Wall":`${OA(n.label)}_Monitor-${Number(n.monitorIndex||0)+1}`}_${zA()}.png`}async function BA(n,a,i){const r=await new Promise((u,m)=>n.toBlob(p=>p?u(p):m(new Error("Screenshot could not be encoded.")),"image/png")),c=await gw(r,{kind:"screenshot",fileName:IA(a),target:a},i);try{await navigator.clipboard.write([new ClipboardItem({"image/png":r})])}catch{}return c.capture}function vw(){return["video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"].find(a=>typeof MediaRecorder<"u"&&MediaRecorder.isTypeSupported(a))||""}function FA(n,a){const i=new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","_"),r=a.label.replace(/[^a-zA-Z0-9._-]+/g,"-").slice(0,70)||"Wall";return n==="timelapse"?`LiveDesk_Timelapse_${r}_${i}.webm`:`LiveDesk_Recording_${r}_${i}.webm`}async function xw(n){if(typeof MediaRecorder>"u"||typeof n.canvas.captureStream!="function")throw new Error("This browser does not support video recording.");const a=vw();if(!a)throw new Error("This browser does not support WebM recording.");const i=n.kind||"recording",r=await AA({kind:i,fileName:FA(i,n.target),mimeType:a,target:n.target},n.hubUrl),c=n.canvas.captureStream(n.frameRequests?0:n.fps),u=new MediaRecorder(c,{mimeType:a,videoBitsPerSecond:i==="timelapse"?2e6:4e6}),m=performance.now();let p=0,v=!1,g=null,w=Promise.resolve();return u.ondataavailable=y=>{if(!y.data||y.data.size===0)return;const b=p++;w=w.then(()=>MA(r.sessionId,b,y.data,n.hubUrl).then(()=>{})).catch(C=>{g=g||(C instanceof Error?C:new Error(String(C))),n.onError?.(g)})},u.onerror=()=>{g=new Error("Video recording stopped unexpectedly."),n.onError?.(g)},u.start(1e3),{requestFrame:()=>{c.getVideoTracks()[0]?.requestFrame?.()},stop:async()=>{if(!v){if(v=!0,await new Promise(y=>{u.addEventListener("stop",()=>y(),{once:!0}),u.stop()}),c.getTracks().forEach(y=>y.stop()),await w,g)throw await Hx(r.sessionId,n.hubUrl).catch(()=>{}),g;await NA(r.sessionId,Math.max(0,performance.now()-m),n.hubUrl)}},cancel:async()=>{v||(v=!0,u.stop(),c.getTracks().forEach(y=>y.stop()),await Hx(r.sessionId,n.hubUrl).catch(()=>{}))}}}class HA{recorder=null;stream=null;segments=[];totalBytes=0;targetSignature="";startedAt=0;maxDurationMs=3e4;maxBytes=128*1024*1024;get seconds(){return!this.startedAt||this.segments.length===0?0:Math.min(30,Math.max(0,(performance.now()-this.segments[0].at)/1e3))}get active(){return this.recorder!==null}async start(a,i){if(this.recorder&&this.targetSignature===i.signature)return;if(this.stop(),typeof MediaRecorder>"u"||typeof a.captureStream!="function")throw new Error("This browser does not support Last 30s.");const r=vw();if(!r)throw new Error("This browser does not support WebM recording.");this.targetSignature=i.signature,this.stream=a.captureStream(20),this.recorder=new MediaRecorder(this.stream,{mimeType:r,videoBitsPerSecond:3e6}),this.startedAt=performance.now(),this.recorder.ondataavailable=c=>{if(!c.data.size)return;const u=performance.now();for(this.segments.push({blob:c.data,at:u}),this.totalBytes+=c.data.size;this.segments.length>1&&(u-this.segments[0].at>this.maxDurationMs||this.totalBytes>this.maxBytes);){const m=this.segments.shift();this.totalBytes-=m.blob.size}},this.recorder.start(1e3)}stop(){const a=this.recorder;this.recorder=null,a&&a.state!=="inactive"&&(a.ondataavailable=null,a.stop()),this.stream?.getTracks().forEach(i=>i.stop()),this.stream=null,this.segments=[],this.totalBytes=0,this.startedAt=0}async save(a,i){if(this.segments.length===0)throw new Error("The Last 30s buffer is not ready yet.");const r=new Blob(this.segments.map(m=>m.blob),{type:this.segments[0].blob.type||"video/webm"}),u=`LiveDesk_Last30s_${a.label.replace(/[^a-zA-Z0-9._-]+/g,"-").slice(0,70)||"Wall"}_${new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","_")}.webm`;return await gw(r,{kind:"last-30s",fileName:u,target:a,durationMs:Math.min(3e4,this.segments.length*1e3)},i)}}async function $A(n,a,i,r,c){const u=await xw({canvas:n,target:a,kind:"timelapse",fps:30,frameRequests:!0,hubUrl:r,onError:c});u.requestFrame?.();const m=window.setInterval(()=>u.requestFrame?.(),Math.max(5,i)*1e3);return{stop:async()=>{window.clearInterval(m),await u.stop()},cancel:async()=>{window.clearInterval(m),await u.cancel()}}}const yw="livedesk.captureSettings";function UA(){const n={rollingEnabled:!1,recordingQuality:"standard",timelapseIntervalSeconds:10,includeRemoteCursor:!0};try{const a=JSON.parse(localStorage.getItem(yw)||"null");return{...n,...a&&typeof a=="object"?a:{}}}catch{return n}}function PA(n){const[a,i]=f.useState(UA),[r,c]=f.useState(0),[u,m]=f.useState(0),[p,v]=f.useState(0),[g,w]=f.useState(!1),y=f.useRef(void 0),b=f.useRef(!1),C=f.useRef(""),k=f.useRef(null),A=f.useRef(null),T=f.useRef(null),j=f.useRef(null),R=f.useRef(new HA),E=n.sourceRegistry.resolveCurrentTarget(),H=LA(E),F=_A(E),q=typeof MediaRecorder<"u"&&typeof HTMLCanvasElement<"u"&&"captureStream"in HTMLCanvasElement.prototype;f.useEffect(()=>{if(localStorage.setItem(yw,JSON.stringify(a)),!b.current)return;const Q=JSON.stringify(a);Q!==C.current&&(C.current=Q,Be("/api/settings",{method:"PATCH",body:JSON.stringify({revision:y.current,filesAudio:{rollingBufferEnabled:a.rollingEnabled,recordingQuality:a.recordingQuality,timelapseIntervalSeconds:a.timelapseIntervalSeconds,includeRemoteCursor:a.includeRemoteCursor}})},n.hubUrl).then(P=>{y.current=Number(P.revision||y.current||0)}).catch(()=>{}))},[n.hubUrl,a]),f.useEffect(()=>{let Q=!0;return Be("/api/settings",void 0,n.hubUrl).then(P=>{if(!Q)return;const ie=P.settings?.filesAudio||{},Se=typeof ie.rollingBufferEnabled=="boolean"?ie.rollingBufferEnabled:a.rollingEnabled,D=ie.recordingQuality==="high"?"high":"standard",Z=[5,10,30,60].includes(Number(ie.timelapseIntervalSeconds))?Number(ie.timelapseIntervalSeconds):a.timelapseIntervalSeconds,ye=typeof ie.includeRemoteCursor=="boolean"?ie.includeRemoteCursor:a.includeRemoteCursor,be={rollingEnabled:Se,recordingQuality:D,timelapseIntervalSeconds:Z,includeRemoteCursor:ye};y.current=Number(P.revision||0),C.current=JSON.stringify(be),b.current=!0,i(be)}).catch(()=>{b.current=!0}),()=>{Q=!1}},[n.hubUrl]);const I=f.useCallback(async Q=>{if(Q.sourceCanvas&&Q.sourceCanvas.width>0&&Q.sourceCanvas.height>0)return{target:Px(Q),canvas:Q.sourceCanvas,cleanup:()=>{}};const P=await n.sourceRegistry.composeWall(Q.deviceIds,{maxWidth:1920,maxHeight:1080,includeLabels:!0});let ie=!1;const Se=window.setInterval(async()=>{if(ie)return;const D=await n.sourceRegistry.composeWall(Q.deviceIds,{maxWidth:1920,maxHeight:1080,includeLabels:!0}).catch(()=>null);!D||ie||((P.width!==D.width||P.height!==D.height)&&(P.width=D.width,P.height=D.height),P.getContext("2d")?.drawImage(D,0,0))},100);return{target:Px(Q),canvas:P,cleanup:()=>{ie=!0,window.clearInterval(Se)}}},[n.sourceRegistry]);f.useEffect(()=>{const Q=R.current;if(!a.rollingEnabled||!E||!q){Q.stop(),v(0);return}let P=!1,ie=null;return(async()=>{try{if(ie=await I(E),P)return;await Q.start(ie.canvas,ie.target);const D=window.setInterval(()=>v(Math.round(Q.seconds)),500),Z=()=>{window.clearInterval(D),ie?.cleanup()};Q.__cleanup=Z}catch(D){P||n.onToast(D instanceof Error?D.message:String(D))}})(),()=>{P=!0,Q.stop(),Q.__cleanup?.(),Q.__cleanup=void 0,v(0)}},[I,n.onToast,a.rollingEnabled,H,q]);const _=f.useCallback(Q=>i(P=>({...P,rollingEnabled:Q})),[]),fe=f.useCallback(Q=>i(P=>({...P,recordingQuality:Q})),[]),G=f.useCallback(Q=>i(P=>({...P,timelapseIntervalSeconds:Q})),[]),ue=f.useCallback(async()=>{const Q=n.sourceRegistry.resolveCurrentTarget();if(!Q)throw new Error("화면이 준비된 후 다시 시도하세요.");w(!0);let P=null;try{P=await I(Q),await BA(P.canvas,P.target,n.hubUrl),n.onToast("Screenshot saved")}finally{P?.cleanup(),w(!1)}},[I,n.hubUrl,n.onToast,n.sourceRegistry]),Y=f.useCallback(async()=>{if(T.current)throw new Error("Stop the timelapse before recording.");const Q=n.sourceRegistry.resolveCurrentTarget();if(!Q)throw new Error("화면이 준비된 후 다시 시도하세요.");const P=await I(Q),ie=await xw({canvas:P.canvas,target:P.target,fps:Q.type==="control"?30:15,hubUrl:n.hubUrl,onError:Se=>n.onToast(Se.message)});A.current=P.cleanup,k.current=ie,c(Date.now()),n.onToast("Recording started")},[I,n.hubUrl,n.onToast,n.sourceRegistry]),ae=f.useCallback(async()=>{const Q=k.current;if(Q){w(!0);try{await Q.stop(),n.onToast("Recording saved")}finally{k.current=null,A.current?.(),A.current=null,c(0),w(!1)}}},[n.onToast]),le=f.useCallback(async()=>{if(k.current||T.current)throw new Error("Last 30s is unavailable during a recording.");const Q=n.sourceRegistry.resolveCurrentTarget();if(!Q)throw new Error("화면이 준비된 후 다시 시도하세요.");w(!0);try{await R.current.save(Q,n.hubUrl),n.onToast("Last 30 seconds saved")}finally{w(!1)}},[n.hubUrl,n.onToast,n.sourceRegistry]),V=f.useCallback(async()=>{if(k.current)throw new Error("Stop the recording before starting a timelapse.");const Q=n.sourceRegistry.resolveCurrentTarget();if(!Q)throw new Error("화면이 준비된 후 다시 시도하세요.");const P=await I(Q),ie=await $A(P.canvas,P.target,a.timelapseIntervalSeconds,n.hubUrl,Se=>n.onToast(Se.message));j.current=P.cleanup,T.current=ie,m(Date.now()),n.onToast("Timelapse started")},[I,n.hubUrl,n.onToast,n.sourceRegistry,a.timelapseIntervalSeconds]),z=f.useCallback(async()=>{const Q=T.current;if(Q){w(!0);try{await Q.stop(),n.onToast("Timelapse saved")}finally{T.current=null,j.current?.(),j.current=null,m(0),w(!1)}}},[n.onToast]);return f.useEffect(()=>{const Q=P=>{!k.current&&!T.current||(P.preventDefault(),P.returnValue="")};return window.addEventListener("beforeunload",Q),()=>window.removeEventListener("beforeunload",Q)},[]),f.useEffect(()=>()=>{R.current.stop(),k.current?.cancel(),T.current?.cancel(),A.current?.(),j.current?.()},[]),{state:f.useMemo(()=>({recording:!!k.current,recordingStartedAt:r,timelapse:!!T.current,timelapseStartedAt:u,bufferSeconds:p,bufferEnabled:a.rollingEnabled,busy:g,targetLabel:F}),[p,g,r,a.rollingEnabled,F,u]),settings:a,videoSupported:q,targetKey:H,setRollingEnabled:_,setRecordingQuality:fe,setTimelapseInterval:G,takeScreenshot:ue,startRecording:Y,stopRecording:ae,saveLast30Seconds:le,startTimelapse:V,stopTimelapse:z}}const qA=120,GA=999,xc=5,yc=30,VA=Number.POSITIVE_INFINITY,ww="livedesk.remoteDirectory",hh="livedesk.localHubAccessEnabled",bw="livedesk.streamSettings",Sw=15,Cw="livedesk.controlStreamSettings",ph=6,jw="livedesk.wallMonitorSelections",kw=1,$m=512*1024,gh="".trim(),Aw="".trim(),qx="livedesk-adsense-script",Um=!!gh&&!!Aw,YA=1e3/60,Pm=1500,WA=650,KA=1800,QA=650,XA=2500,Gx=1500,Vx=15e3,ZA=6e4,Yx=240,JA=1024,eM=480,tM=270,Wx="LiveDesk clients are updating. Hub will restart after every client reconnects.",qm="LiveDesk is restarting with the latest Hub.";function nM(n,a){if(a.deviceId!==n.deviceId)return!1;const i=Number(a.browserReceivedEpochMs);if(!Number.isFinite(i)||i<n.startedAtEpochMs)return!1;const r=Number(a.monitorIndex);if(Number.isFinite(r)&&Math.floor(r)!==n.monitorIndex)return!1;const c=String(a.frameMode||a.mode||"").trim().toLowerCase();return!c||c===n.frameMode?!0:(n.frameMode==="mode3-h264-hw"||n.frameMode==="mode5-lzo-delta")&&(c==="mode2-lzo"||c==="mode3-h264-hw")}const er={free:{name:"Free",price:"$0",limit:xc,audience:"Personal trial",note:"5 devices with a standard ad banner."},ltd:{name:"Plus",price:"$79 LTD",ltd:"$79 LTD",limit:yc,audience:"Creators and homelabs",note:"30 devices, no ads, personal use."},pro:{name:"Pro",price:"$199 LTD",ltd:"$199 LTD",limit:VA,audience:"Business and studios",note:"Commercial use and larger workstation walls."}},Mw={"mode1-jpeg":5,"mode2-lzo":8,"mode3-h264-hw":20,"mode4-h264-atlas":20};function fs(n,a){return`${n}:${a}`}const ha={frameMode:"mode3-h264-hw",h264DecodeAcceleration:"prefer-hardware",fps:Mw["mode3-h264-hw"],maxWidth:1920,maxHeight:1080,atlasTileWidth:320,atlasTileHeight:180,atlasTileSizeMode:"auto",quality:75,autoStartLive:!0,showScreenStatus:!0,visibleOnlyLive:!0,adaptiveLoadShedding:!0,adaptiveSizeByWall:!0},pa={frameMode:"mode3-h264-hw",h264DecodeAcceleration:"prefer-software",fps:30,maxWidth:1920,maxHeight:1080,quality:75,showScreenStatus:!1};function xd(n,a){if(n.length===0)return 0;const i=[...n].sort((c,u)=>c-u),r=Math.max(0,Math.min(i.length-1,Math.ceil(i.length*a)-1));return i[r]}function Ph(n,a){n.push(a),n.length>Yx&&n.splice(0,n.length-Yx)}function Kx(n,a){n.sampleFrames=0,n.sampleStartedAt=a,n.intervalCount=0,n.intervalSumMs=0,n.minIntervalMs=Number.POSITIVE_INFINITY,n.maxIntervalMs=0,n.intervalSamplesMs.length=0,n.seqGapCount=0,n.maxSeqGap=0}function Qx(n,a,i){if(n.lastAt!==void 0){const r=Math.max(0,a-n.lastAt);n.intervalCount+=1,n.intervalSumMs+=r,n.minIntervalMs=Math.min(n.minIntervalMs,r),n.maxIntervalMs=Math.max(n.maxIntervalMs,r),Ph(n.intervalSamplesMs,r)}if(n.lastFrameSeq!==void 0){const r=i-n.lastFrameSeq;r!==1&&(n.seqGapCount+=1,n.maxSeqGap=Math.max(n.maxSeqGap,Math.abs(r)))}n.lastAt=a,n.lastFrameSeq=i}function Xx(n){return!n||n.intervalCount<=0?"waiting":`${Math.round(n.averageIntervalMs)}ms avg / p95 ${Math.round(n.p95IntervalMs)}ms / max ${Math.round(n.maxIntervalMs)}ms`}function aM(){const[n,a]=f.useState({framesPerSecond:0,averageIntervalMs:0,p95IntervalMs:0,maxIntervalMs:0,longTaskCount:0,longTaskMs:0});return f.useEffect(()=>{let i=0,r=performance.now(),c=0,u=0,m=[],p=0,v=0,g=null;const w=b=>{document.visibilityState==="visible"?(c+=1,u>0&&Ph(m,Math.max(0,b-u)),u=b):u=0,i=window.requestAnimationFrame(w)};try{g=new PerformanceObserver(b=>{for(const C of b.getEntries())p+=1,v+=C.duration}),g.observe({entryTypes:["longtask"]})}catch{g=null}i=window.requestAnimationFrame(w);const y=window.setInterval(()=>{const b=performance.now(),C=Math.max(1,b-r),k=m.reduce((A,T)=>A+T,0);a({framesPerSecond:c*1e3/C,averageIntervalMs:m.length>0?k/m.length:0,p95IntervalMs:xd(m,.95),maxIntervalMs:m.length>0?Math.max(...m):0,longTaskCount:p,longTaskMs:v}),r=b,c=0,m=[],p=0,v=0},1e3);return()=>{window.cancelAnimationFrame(i),window.clearInterval(y),g?.disconnect()}},[]),n}function Zx(n){return!n||n.seqGapCount<=0?"none":`${n.seqGapCount} gaps / max ${n.maxSeqGap}`}function sM(n){return Number.isFinite(n)?String(n):"30+"}const yd=[{id:"mode4-h264-atlas",label:"Mode 4",detail:"Hub H.264 Atlas"},{id:"mode3-h264-hw",label:"Mode 3",detail:"H.264 hardware"}],vh=[{id:"prefer-software",label:"Software low latency"},{id:"prefer-hardware",label:"Hardware decode"},{id:"no-preference",label:"Browser auto"}],lM=[{id:"mode3-h264-hw",label:"Mode 3 - H.264 hardware"}],wd=[{id:"640x360",label:"Compact",width:640,height:360},{id:"960x540",label:"Standard",width:960,height:540},{id:"1280x720",label:"HD",width:1280,height:720},{id:"1920x1080",label:"Full HD",width:1920,height:1080},{id:"2560x1440",label:"QHD",width:2560,height:1440},{id:"3840x2160",label:"4K",width:3840,height:2160}],Gm=wd.filter(n=>n.width>=1280),Vm=[{id:"auto",label:"Auto by wall size"},{id:"320x180",label:"Standard 320x180",width:320,height:180},{id:"480x270",label:"Sharp 480x270",width:480,height:270}],qh=[1,2,5,8,12,20,30],iM=[20,30,60],Jx=[45,60,75,90],ey={large:{maxWidth:1280,maxHeight:720},medium:{maxWidth:960,maxHeight:540},small:{maxWidth:640,maxHeight:360}},Wn={preserveConfiguredFpsDeviceCount:12,visibleRootMargin:"520px 0px 760px 0px",fallbackVisibleCounts:{large:12,medium:18,small:32},maxWallFramesPerSecond:96,maxWallBytesPerSecond:80*1024*1024,maxFrameGapMs:280,lowLoadFrameRatio:.58,lowLoadByteRatio:.52,downshiftCooldownMs:1800,recoveryCooldownMs:14e3,minFps:5},ty=2200,rM=8e3,oM=3500,cM=7e3,uM=2,dM=2600,fM=4200,mM=750,hM=2,ny=4200;function ay(n,a){return Math.min(3e4,n*2**Math.min(3,Math.max(0,a)))}function Mc(n,a){const i=n.capabilities?.[a];return typeof i=="boolean"?i:/^(1|true|yes|on)$/i.test(String(i||"").trim())}function lr(n){return n.deviceName||n.hostname||n.deviceId}function pM(){return"npx -y --prefer-online livedesk@latest client"}function gM(){return"npx -y --prefer-online livedesk@latest"}function vM(){try{return localStorage.getItem(ww)||""}catch{return""}}function xM(){try{return localStorage.getItem(hh)==="1"}catch{return!1}}function to(n){try{n?localStorage.setItem(hh,"1"):localStorage.removeItem(hh)}catch{}}function Ya(n,a,i,r){const c=Number(n);return Number.isFinite(c)?Math.max(a,Math.min(i,Math.round(c))):r}function xh(n){const a=String(n||"").trim();return a==="mode2-lz4"||a==="lz4"?"mode2-lzo":yd.some(i=>i.id===a)?a:ha.frameMode}function Dd(n){const a=String(n||"").trim();return vh.some(i=>i.id===a)?a:ha.h264DecodeAcceleration}function yh(n){return n==="mode3-h264-hw"?n:pa.frameMode}function Nw(n){return Mw[n]||12}function Tw(n){return n==="mode3-h264-hw"||n==="mode4-h264-atlas"?20:30}function wh(n,a){return Ya(n,1,Tw(a),Nw(a))}function ur(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function Yn(n){const a=ur(n.status),i=ur(a.screens),r=ur(n.capabilities),c=[a.monitorCount,a.screenCount,i.count,r.monitorCount,r.screenCount];for(const u of c){const m=Number(u);if(Number.isFinite(m)&&m>0)return Math.max(1,Math.min(64,Math.floor(m)))}return 1}function yi(n){const a=Number(n);return Number.isFinite(a)&&a>0?Math.floor(a):0}function yM(n){const a=ur(n.status),r=[ur(a.screens).displays,a.displays,a.monitors];for(const c of r)if(!(!Array.isArray(c)||c.length===0))return c.map(u=>ur(u));return[]}function Rw(n,a){const i=yM(n),r=i.find(v=>Number(v.index)===a)||i[a]||i[0]||{},c=yi(r.width),u=yi(r.height),m=[r.name,r.displayName,r.deviceName,r.id].find(v=>typeof v=="string"&&v.trim()),p=typeof m=="string"?m.trim():`Display ${a+1}`;return{index:a,name:p,width:c,height:u,primary:r.primary===!0||r.isPrimary===!0}}function wM(n){const a=Yn(n);return Array.from({length:a},(i,r)=>Rw(n,r))}function bM(n){const a=[n.name||`Display ${n.index+1}`];return n.width>0&&n.height>0&&a.push(`${n.width}x${n.height}`),n.primary&&a.push("Primary"),a.join(" - ")}function Ew(n,a){const i=Rw(n,a);if(i.width>0&&i.height>0)return{width:i.width,height:i.height};const r=ur(n.status),c=yi(r.screenWidth||r.width),u=yi(r.screenHeight||r.height);return c>0&&u>0?{width:c,height:u}:null}function Dw(n){if(!n)return null;const a=yi(n.sourceWidth)||yi(n.width),i=yi(n.sourceHeight)||yi(n.height);return a>0&&i>0?{width:a,height:i}:null}function SM(n,a,i){const u=((typeof a?.monitorIndex=="number"?na(a.monitorIndex,Math.max(1,a.monitorCount||1)):i)===i?Dw(a):null)||Ew(n,i);return u?Math.max(.25,Math.min(4,u.width/u.height)):16/9}const ud=16/9;function na(n,a){const i=Math.max(1,Math.min(64,Math.floor(Number(a)||1))),r=Math.floor(Number(n));return Number.isFinite(r)?Math.max(0,Math.min(i-1,r)):0}function CM(){try{const n=localStorage.getItem(jw);if(!n)return{};const a=JSON.parse(n),i=a&&typeof a=="object"&&!Array.isArray(a)?a.selections:void 0;if(Number(a?.version)!==kw||!i||typeof i!="object"||Array.isArray(i))return{};const r={};for(const[c,u]of Object.entries(i)){const m=c.trim(),p=Math.floor(Number(u));!m||!Number.isFinite(p)||(r[m]=Math.max(0,Math.min(63,p)))}return r}catch{return{}}}function jM(n){try{localStorage.setItem(jw,JSON.stringify({version:kw,selections:n}))}catch{}}function kM(){try{const n=JSON.parse(localStorage.getItem(bw)||"{}");if(![Sw,14,13,12,11].includes(Number(n.version)))return ha;const a=xh(n.frameMode),i=Ya(n.maxWidth,320,3840,ha.maxWidth),r=Ya(n.maxHeight,180,2160,ha.maxHeight);return{frameMode:a,h264DecodeAcceleration:Dd(n.h264DecodeAcceleration),fps:wh(n.fps,a),maxWidth:i,maxHeight:r,atlasTileWidth:Number(n.atlasTileWidth)>=480?480:320,atlasTileHeight:Number(n.atlasTileHeight)>=270?270:180,atlasTileSizeMode:n.atlasTileSizeMode==="fixed"?"fixed":"auto",quality:Ya(n.quality,20,95,ha.quality),autoStartLive:typeof n.autoStartLive=="boolean"?n.autoStartLive:ha.autoStartLive,showScreenStatus:typeof n.showScreenStatus=="boolean"?n.showScreenStatus:ha.showScreenStatus,visibleOnlyLive:typeof n.visibleOnlyLive=="boolean"?n.visibleOnlyLive:ha.visibleOnlyLive,adaptiveLoadShedding:typeof n.adaptiveLoadShedding=="boolean"?n.adaptiveLoadShedding:ha.adaptiveLoadShedding,adaptiveSizeByWall:typeof n.adaptiveSizeByWall=="boolean"?n.adaptiveSizeByWall:ha.adaptiveSizeByWall}}catch{return ha}}function AM(n){try{localStorage.setItem(bw,JSON.stringify({...n,version:Sw}))}catch{}}function MM(){try{const n=JSON.parse(localStorage.getItem(Cw)||"{}"),a=Number(n.version);if(![ph,5,4,3,2,1].includes(a))return pa;const i=Ya(n.fps,20,60,pa.fps),r=a<ph;return{frameMode:r?pa.frameMode:yh(n.frameMode),h264DecodeAcceleration:r?pa.h264DecodeAcceleration:Dd(n.h264DecodeAcceleration),fps:r?pa.fps:i,maxWidth:Ya(n.maxWidth,1280,3840,pa.maxWidth),maxHeight:Ya(n.maxHeight,720,2160,pa.maxHeight),quality:Ya(n.quality,20,95,pa.quality),showScreenStatus:typeof n.showScreenStatus=="boolean"?n.showScreenStatus:pa.showScreenStatus}}catch{return pa}}function NM(n){try{localStorage.setItem(Cw,JSON.stringify({...n,version:ph}))}catch{}}function Ym(n,a){return n.length!==a.length?!1:n.every((i,r)=>i===a[r])}function Wm(n){return[...new Set(n.filter(Boolean))].sort()}function TM(n){return Wn.fallbackVisibleCounts[n]||Wn.fallbackVisibleCounts.large}function RM(n,a,i){if(n.frameMode==="mode2-lzo")return{maxWidth:320,maxHeight:180};if(n.frameMode==="mode4-h264-atlas")return n.atlasTileSizeMode==="auto"?a==="large"?{maxWidth:480,maxHeight:270}:{maxWidth:320,maxHeight:180}:{maxWidth:n.atlasTileWidth,maxHeight:n.atlasTileHeight};if(!n.adaptiveSizeByWall)return{maxWidth:n.maxWidth,maxHeight:n.maxHeight};const r=ey[a]||ey.large;return{maxWidth:Math.min(n.maxWidth,r.maxWidth),maxHeight:Math.min(n.maxHeight,r.maxHeight)}}function EM(n,a=Wn.minFps){const i=[...qh].sort((c,u)=>c-u),r=Math.max(a,Math.floor(n/2));return[...i].reverse().find(c=>c<n&&c>=a)||r}function DM(n,a){return[...qh].sort((r,c)=>r-c).find(r=>r>n&&r<=a)||a}function wc(n){if(!Number.isFinite(n)||n<=0)return"0 B";const a=["B","KB","MB","GB","TB"];let i=n,r=0;for(;i>=1024&&r<a.length-1;)i/=1024,r+=1;const c=r===0||i>=100?0:1;return`${i.toFixed(c)} ${a[r]}`}function sy(n){if(!Number.isFinite(n)||!n||n<=0)return"0GB";const a=1024**4,i=1024**3;return n>=a?`${Math.max(1,Math.round(n/a))}TB`:`${Math.max(1,Math.round(n/i))}GB`}function Km(n,a){if(!Number.isFinite(n)||!n||n<=0)return"not reported";const i=Math.max(0,n-Math.max(0,Number(a||0)));return`${sy(i)} / ${sy(n)}`}function LM(n){const a=new Uint8Array(n),i=32768;let r="";for(let c=0;c<a.length;c+=i){const u=a.subarray(c,c+i);r+=String.fromCharCode(...u)}return btoa(r)}function ly(n){return Array.from(n).filter(a=>a.size>=0).map(a=>{const i=a.webkitRelativePath||a.name;return{file:a,relativePath:i,fingerprint:`${a.size}:${a.lastModified}`}})}function _M(n){return n===1?"middle":n===2?"right":"left"}function iy(n,...a){for(const i of a){const r=n?.[i];if(typeof r=="string"&&r.trim())return r.trim()}return""}function ry(n){const a=Number(n);return Number.isInteger(a)&&a>=1&&a<=GA?a:0}const zM={cpu:"CPU",memory:"MEM",disk:"Disk",gpu:"GPU",vram:"VRAM",npu:"NPU",temp:"Temp",network:"Net"};function OM(n,a,i){if(n==="online")return"Online";if(n==="busy")return"Busy";if(n==="stale")return"Stale";if(n==="offline")return"Offline";if(i==="failed")return"Task failed";const r=n==="critical"?"critical":"warn",c=a.find(m=>m.state===r)||a.find(m=>m.state==="critical"||m.state==="warn");if(!c)return n==="critical"?"Issue":"Check";const u=zM[c.id]||c.label;return c.value&&c.value!=="-"?`${u} ${c.value}`:u}function $d(n,a){const i=a.split(".");let r=n;for(const c of i){if(r==null)return;if(Array.isArray(r)){const u=Number(c);r=Number.isInteger(u)?r[u]:void 0;continue}if(typeof r=="object"){r=r[c];continue}return}return r}function Bt(n,...a){for(const i of a){const r=$d(n,i),c=Number(r);if(Number.isFinite(c))return c}}function ga(n,...a){for(const i of a){const r=$d(n,i);if(typeof r=="string"&&r.trim())return r.trim();if(typeof r=="number"&&Number.isFinite(r))return String(r)}return""}function IM(n,...a){for(const i of a){const r=$d(n,i);if(typeof r=="boolean")return r;if(/^(1|true|yes|on|online|running|ready)$/i.test(String(r||"").trim()))return!0;if(/^(0|false|no|off|offline|stopped|missing)$/i.test(String(r||"").trim()))return!1}}function yl(n){const a=Number(n);if(Number.isFinite(a))return Math.max(0,Math.min(1,a>1?a/100:a))}function Qm(n,a){if(!(typeof n!="number"||typeof a!="number"||!Number.isFinite(n)||!Number.isFinite(a)||n<=0))return yl((n-Math.max(0,a))/n)}function no(n){return n===void 0?"-":`${Math.round(n*100)}%`}function Xm(n){return n===void 0||!Number.isFinite(n)?"":n>=1e3?`${(n/1e3).toFixed(n>=1e4?0:1)}Gb/s`:`${Math.round(n)}Mb/s`}function tr(n,a=.92,i=.78){return n===void 0?"unknown":n>=a?"critical":n>=i?"warn":"good"}function Lw(n){return!Number.isFinite(n)||!n||n<=0?"-":n<3600?`${Math.round(n/60)}m`:n<86400?`${Math.round(n/3600)}h`:`${Math.round(n/86400)}d`}function dd(n,a,i){const r=$d(n,`tools.${a}`),c=ga(n,`tools.${a}.status`,`tooling.${a}.status`,`${a}.status`).toLowerCase(),u=IM(n,`tools.${a}.running`,`tooling.${a}.running`,`${a}.running`),m=ga(n,`tools.${a}.version`,`tooling.${a}.version`,`${a}.version`),p=ga(n,`tools.${a}.port`,`tooling.${a}.port`,`${a}.port`);let v="unknown";return c==="busy"?v="busy":["online","running","ready","active"].includes(c)||u===!0?v="online":(["offline","stopped","missing","not-found"].includes(c)||u===!1||r===!1)&&(v="offline"),{id:a,label:i,status:v,detail:v==="offline"?"offline":m||(p?`:${p}`:v==="unknown"?"not reported":v)}}function _w(n){const a=n.status||{},i=Bt(a,"cpu.cores","cpuCores","processorCount"),r=Bt(a,"loadavg.0","cpu.load1"),c=yl(Bt(a,"cpu.usedRatio","cpu.usageRatio","cpu.ratio","cpu.usedPct","cpu.usagePct","cpu.percent")??(i&&r!==void 0?r/Math.max(1,i):void 0)),u=Bt(a,"memory.totalBytes","totalMem"),m=Bt(a,"memory.freeBytes","freeMem"),p=yl(Bt(a,"memory.usedRatio","memory.usedPct","usedMemRatio"))??Qm(u,m),v=Bt(a,"disk.totalBytes","rootDisk.totalBytes","storage.totalBytes"),g=Bt(a,"disk.freeBytes","rootDisk.freeBytes","storage.freeBytes"),w=yl(Bt(a,"disk.usedRatio","disk.usedPct","rootDisk.usedRatio","storage.usedRatio"))??Qm(v,g),y=Bt(a,"thermal.cpuC","temperatureC","cpu.temperatureC","gpu.temperatureC"),b=yl(Bt(a,"gpu.usedRatio","gpu.usageRatio","gpu.usedPct","gpu.usagePct","gpu.percent","accelerators.gpu.usageRatio")),C=ga(a,"gpu.name","gpu.model","accelerators.gpu.name"),k=Bt(a,"gpu.memory.totalBytes","gpu.totalMemoryBytes","gpu.vramTotalBytes"),A=Bt(a,"gpu.memory.freeBytes","gpu.freeMemoryBytes","gpu.vramFreeBytes"),T=yl(Bt(a,"gpu.memory.usedRatio","gpu.vramUsedRatio"))??Qm(k,A),j=Bt(a,"gpu.temperatureC","thermal.gpuC"),R=yl(Bt(a,"npu.usedRatio","npu.usageRatio","npu.usedPct","npu.usagePct","npu.percent","accelerators.npu.usageRatio")),E=ga(a,"npu.name","npu.model","accelerators.npu.name"),H=Bt(a,"npu.tops","npu.topsInt8","accelerators.npu.tops"),F=Bt(a,"network.rxMbps","network.receiveMbps","network.downMbps"),q=Bt(a,"network.txMbps","network.transmitMbps","network.upMbps"),I=Bt(a,"network.latencyMs","network.rttMs"),_=yl(Bt(a,"network.usedRatio","network.usageRatio","network.saturationRatio")),fe=ga(a,"network.link","network.interface","network.name"),G=y===void 0?void 0:yl((y-35)/60),ue=ga(a,"workload.role","role","lane")||(Mc(n,"aiAssist")?"Agent worker":Mc(n,"taskDispatch")?"Task worker":"Local machine"),Y=ga(n.latestTask,"status")||ga(a,"workload.status")||"idle",ae=ga(n.latestTask,"title","instructionPreview")||ga(a,"workload.title"),le=ga(n.latestTask,"resultSummary","error","instructionPreview")||ga(a,"workload.summary"),V=[dd(a,"ollama","Ollama"),dd(a,"lmStudio","LM Studio"),dd(a,"comfyui","ComfyUI"),dd(a,"stableDiffusion","Stable Diffusion")],z=V.some(D=>D.status!=="unknown"),K=Date.parse(n.lastSeenAt||n.connectedAt||""),Q=Number.isFinite(K)?Date.now()-K:0;let P="online";n.connected?Q>5*6e4?P="stale":(y??0)>=86||(j??0)>=88||(c??0)>=.94||(b??0)>=.96||(T??0)>=.96||(R??0)>=.96||(p??0)>=.94||(w??0)>=.94||(I??0)>=200||Y==="failed"?P="critical":(y??0)>=78||(j??0)>=80||(c??0)>=.82||(b??0)>=.86||(T??0)>=.88||(R??0)>=.86||(p??0)>=.82||(w??0)>=.86||(I??0)>=80?P="warn":(["queued","running","targeted"].includes(Y)||V.some(D=>D.status==="busy"))&&(P="busy"):P="offline";const ie=V.filter(D=>D.status==="online"||D.status==="busy").length,Se=[{id:"cpu",label:"CPU",value:no(c),detail:i?`${i} cores`:r!==void 0?`load ${r.toFixed(1)}`:"not reported",ratio:c,state:tr(c,.92,.78)},{id:"memory",label:"RAM",value:no(p),detail:Km(u,m),ratio:p,state:tr(p,.92,.78)},{id:"disk",label:"DISK",value:no(w),detail:Km(v,g),ratio:w,state:tr(w,.92,.82)},{id:"gpu",label:"GPU",value:no(b),detail:C||(k&&A!==void 0?`${wc(A)} VRAM free`:j!==void 0?`${Math.round(j)}C`:"not reported"),ratio:b,state:j!==void 0&&j>=88?"critical":j!==void 0&&j>=80?"warn":tr(b,.96,.86)},{id:"vram",label:"VRAM",value:no(T),detail:Km(k,A),ratio:T,state:tr(T,.96,.88)},{id:"npu",label:"NPU",value:R!==void 0?no(R):H!==void 0?`${Math.round(H)} TOPS`:"-",detail:E||(H!==void 0?"neural engine":"not reported"),ratio:R,state:tr(R,.96,.86)},{id:"temp",label:"TEMP",value:y===void 0?"-":`${Math.round(y)}C`,detail:ie>0?`${ie} local tools`:`uptime ${Lw(Bt(a,"uptimeSec"))}`,ratio:G,state:y===void 0?"unknown":y>=86?"critical":y>=78?"warn":"good"},{id:"network",label:"NET",value:Xm(F)||(I!==void 0?`${Math.round(I)}ms`:fe||"-"),detail:Xm(q)?`${Xm(q)} up`:fe||"not reported",ratio:_,state:I!==void 0&&I>=200?"critical":I!==void 0&&I>=80?"warn":tr(_,.9,.75)}];return{state:P,label:OM(P,Se,Y),role:ue,taskLabel:ae||(Y==="idle"?"idle":Y),taskStatus:Y,taskSummary:le,tools:z?V:V.map(D=>({...D,detail:"not reported"})),metrics:Se}}function BM({size:n=22}){return l.jsxs("svg",{width:n,height:n,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[l.jsx("rect",{x:"2.5",y:"4",width:"14",height:"9",rx:"1.5",stroke:"currentColor",strokeWidth:"1.7",opacity:"0.42"}),l.jsx("path",{d:"M7 16v1.5h5",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",opacity:"0.42"}),l.jsx("rect",{x:"10.5",y:"2.5",width:"14",height:"9",rx:"1.5",stroke:"currentColor",strokeWidth:"1.7",opacity:"0.62"}),l.jsx("path",{d:"M15 14.5V16h5",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",opacity:"0.62"}),l.jsx("rect",{x:"6.5",y:"8.5",width:"15",height:"10",rx:"1.7",fill:"currentColor",fillOpacity:"0.12",stroke:"currentColor",strokeWidth:"1.9"}),l.jsx("path",{d:"M12 21v1.5H9.5M16 21v1.5h2.5M9.5 22.5h9",stroke:"currentColor",strokeWidth:"1.9",strokeLinecap:"round"})]})}const FM=[{id:"small",label:"Small"},{id:"medium",label:"Medium"},{id:"large",label:"Large"}],HM=[{id:"wall",label:"Wall",icon:Tc,accent:"blue"},{id:"control",label:"Control",icon:md,accent:"red"},{id:"share-files",label:"Share Files",icon:fd,accent:"green"},{id:"agents",label:"Agents",icon:gc,accent:"violet"},{id:"sync-server",label:"Sync Server",icon:hd,accent:"blue"}],$M=[{id:"doc",label:"Doc",icon:eh,accent:"amber"},{id:"pricing",label:"Pricing",icon:vc,accent:"green"}];function UM(n){return n.replaceAll("npx -y @livedesk/client","npx -y --prefer-online livedesk@latest client").replaceAll("npx @livedesk/client","npx -y --prefer-online livedesk@latest client").replaceAll("npx -y livedesk client","npx -y --prefer-online livedesk@latest client").replaceAll("npx livedesk client","npx -y --prefer-online livedesk@latest client").replaceAll("npx -y livedesk","npx -y --prefer-online livedesk@latest").replaceAll("npx livedesk","npx -y --prefer-online livedesk@latest")}function Ft(n){return UM(n).replace(/\bRemoteHub\b/g,"Hub client endpoint").replace(/\bManagers\b/g,"Hubs").replace(/\bManager\b/g,"Hub").replace(/\bmanager\b/g,"Hub").replace(/\bMANAGER\b/g,"HUB").replace(/매니저/g,"Hub")}function nr(n){return n.map(a=>Ft(a))}function Gn(n){return{languageName:n.languageName,languageLabel:n.languageLabel,eyebrow:n.eyebrow,title:Ft(n.title),intro:Ft(n.intro),sections:[{title:Ft(n.managerTitle),body:Ft(n.managerBody),points:nr(n.managerPoints)},{title:Ft(n.clientTitle),body:Ft(n.clientBody),points:nr(n.clientPoints)},{title:Ft(n.syncTitle),body:Ft(n.syncBody),points:nr(n.syncPoints)},...n.agentTitle&&n.agentBody&&n.agentPoints?[{title:Ft(n.agentTitle),body:Ft(n.agentBody),points:nr(n.agentPoints)}]:[],{title:Ft(n.platformTitle),body:Ft(n.platformBody),points:nr(n.platformPoints)}],sync:{title:Ft(n.syncTitle),body:Ft(n.syncBody),points:nr(n.syncPoints)},firewall:{title:Ft(n.firewallTitle),body:Ft(n.firewallBody),points:nr(n.firewallPoints)},commands:{title:Ft(n.commandsTitle),body:Ft(n.commandsBody),manager:Ft(n.managerCommandLabel),primary:Ft(n.clientCommandLabel),slot:Ft(n.slotCommandLabel),manual:Ft(n.manualCommandLabel)}}}const oo={ko:Gn({languageName:"한국어",languageLabel:"문서 언어",eyebrow:"LiveDesk Manual",title:"한 줄로 여는 로컬 Screen Wall",intro:"LiveDesk는 매니저 PC 한 대에서 여러 작업 PC, AI 박스, 맥미니, 개발 장비를 한 화면에 모니터링하고 필요한 제어를 실행하는 npm-first 원격 작업 데크입니다.",managerTitle:"1. 매니저 실행",managerBody:"화면을 모아 볼 컴퓨터에서 LiveDesk 매니저를 실행합니다. 매니저는 UI와 로컬 서버를 같이 열고 브라우저를 http://127.0.0.1:5179 로 띄웁니다.",managerPoints:["명령은 npx -y livedesk 입니다.","매니저는 Screen Wall/API 포트 5179와 클라이언트 접속 포트 5197을 사용합니다.","기존 LiveDesk 포트가 남아 있으면 기본적으로 정리하고 새로 시작합니다. 필요하면 --no-clean 을 붙입니다."],clientTitle:"2. 워크스테이션 연결",clientBody:"모니터링할 PC에서는 Google 로그인 또는 Hub 화면의 6자리 PIN으로 연결합니다. Hub가 켜져 있지 않아도 클라이언트는 종료하지 않고 5초마다 계속 찾습니다.",clientPoints:["빈 자리에 자동 배치하려면 npx -y livedesk client 를 실행합니다.","자리 번호를 고정하려면 npx -y livedesk client 3 처럼 번호를 붙입니다.","브라우저 연결 페이지에서 Google 버튼 또는 6자리 PIN 입력 중 하나를 선택합니다."],syncTitle:"3. Sync Server와 자동 발견",syncBody:"Sync Server는 이 매니저를 현재 계정의 활성 Screen Wall로 Supabase에 등록합니다. 클라이언트는 같은 Google 계정으로 로그인한 뒤 그 기록을 읽고 접속 후보들을 순서대로 시도합니다.",syncPoints:["등록 정보에는 host instance, LAN/private 주소, public 후보 주소, pair token, 짧은 lease가 포함됩니다.","같은 LAN 후보를 먼저 쓰고, 필요하면 외부 주소 후보를 시도합니다.","매니저 위치, VPN, 방화벽, 공유기 설정이 바뀌었거나 개발 중 활성 매니저를 바꿀 때 Sync Server를 누릅니다.","이제 livedesk.pages.dev의 Chrome Local Network Access 허용은 기본 실행 경로가 아닙니다. npm 매니저 앱이 실제 서버입니다."],agentTitle:"4. Agent로 여러 장비 작업하기",agentBody:"Agents 화면은 Hub에서 실행되는 Codex 기반 Agent가 연결된 장비를 확인하고, 선택한 권한 범위 안에서 작업을 실행하는 공간입니다. 클라이언트 PC에 Codex 앱이나 Codex SDK를 설치할 필요는 없습니다.",agentPoints:["Suggested tasks에는 현재 72개의 읽기·운영 작업 템플릿이 있으며, 검색과 권한·플랫폼·capability 조건으로 실행 가능 항목을 안내합니다.","Ask, Safe Auto, Full Access, Custom 권한 모드를 선택할 수 있습니다. 위험한 변경 작업은 승인 카드와 장비 capability 검사를 거칩니다.","All connected 또는 Selected로 대상 장비를 제한하고, 결과는 장비별 상태 칩과 실제 RAM·디스크·GPU·프로세스 요약으로 확인합니다.","Agent 실행은 Hub의 격리된 runtime과 LiveDesk MCP 도구를 통해서만 장비에 전달되며, 모든 작업은 timeout·취소·tool limit·감사 로그 경계를 가집니다."],platformTitle:"5. 현재 플랫폼과 스트림 상태",platformBody:"Windows의 Wall, Control, 파일 전송, 원격 오디오와 RemoteFast 경로를 현재 기준으로 확인했습니다. macOS와 Linux는 같은 npm 명령 경로를 유지하면서 권한과 캡처 백엔드를 확장하고 있습니다.",platformPoints:["Wall은 Mode 3 H.264와 Mode 4 H.264 Atlas를 사용합니다. Mode 2/5 호환 경로는 오류 복구 시 자동으로만 사용됩니다.","원격 오디오는 선택한 장비가 capability를 광고할 때 사용할 수 있으며, 브라우저는 queue·drop·resync·automatic restart 상태를 진단합니다.","macOS: 화면 캡처와 제어에는 Screen Recording/Accessibility 권한이 필요합니다. RemoteFast 로그는 필요한 상태 중심으로 제한됩니다.","Linux: linux-x64 runtime, grim/gnome-screenshot/import/scrot 캡처, xdotool 입력 백엔드가 추가되었습니다. 오디오는 아직 비활성입니다."],firewallTitle:"방화벽과 외부 장소 연결",firewallBody:"같은 LAN 안에서는 보통 공유기 포트포워딩이 필요 없습니다. 다른 장소의 PC를 붙이려면 클라이언트가 매니저의 클라이언트 접속 포트에 도달할 수 있어야 합니다.",firewallPoints:["클라이언트 접속 포트는 TCP 5197입니다.","클라이언트 쪽은 나가는 연결이므로 보통 인바운드 포트 개방이 필요 없습니다.","다른 네트워크에서 붙일 때는 매니저 PC 방화벽에서 TCP 5197 인바운드를 허용하고, 공유기에서는 TCP 5197을 매니저 PC로 전달합니다.","Screen Wall/API 포트 5179는 매니저 UI용입니다. 외부 브라우저에서 Wall을 직접 열 필요가 있을 때만 별도로 노출을 검토합니다.","공개 인터넷에 바로 열기보다 VPN, Tailscale, ZeroTier, 고정 IP allowlist를 우선합니다."],commandsTitle:"현재 사용 명령",commandsBody:"웹사이트를 찾아가 설치 파일을 받는 방식보다 터미널 한 줄로 모든 운영체제에서 거의 같은 흐름을 쓰는 것이 LiveDesk의 기본 방향입니다.",managerCommandLabel:"매니저 시작",clientCommandLabel:"워크스테이션 연결",slotCommandLabel:"3번 슬롯에 고정",manualCommandLabel:"고급 수동 연결"}),en:Gn({languageName:"English",languageLabel:"Document language",eyebrow:"LiveDesk Manual",title:"Open a local Screen Wall with one command",intro:"LiveDesk is an npm-first remote work deck for monitoring many workstations, AI boxes, Mac minis, and dev machines from one manager PC.",managerTitle:"1. Run the manager",managerBody:"Run LiveDesk on the computer that will watch the screens. The manager starts the UI and local server together, then opens http://127.0.0.1:5179.",managerPoints:["The command is npx -y livedesk.","The manager uses port 5179 for the Screen Wall/API and port 5197 for client connections.","If an old LiveDesk process still owns those ports, startup cleans it by default. Add --no-clean when you want to keep it."],clientTitle:"2. Connect a workstation",clientBody:"On each monitored computer, connect with Google sign-in or the 6-digit PIN shown on the Hub screen. If no manager is online yet, the client keeps running and retries every 5 seconds.",clientPoints:["Run npx -y livedesk client for first available placement.","Run npx -y livedesk client 3 to pin the machine to slot 3.","The browser connection page lets you choose Google or a 6-digit PIN."],syncTitle:"3. Sync Server and discovery",syncBody:"Sync Server publishes this manager as the active Screen Wall for the signed-in account. Clients read that Supabase record after Google sign-in and try the endpoint candidates in order.",syncPoints:["The record includes host instance, LAN/private addresses, public endpoint candidates, pair token, and a short lease.","LAN candidates are preferred first, then public candidates if needed.","Press Sync Server after manager moves, VPN/firewall/router changes, or when this development machine should take over as active manager.","Chrome Local Network Access on livedesk.pages.dev is no longer the default runtime path. The npm manager app is the real server."],agentTitle:"4. Run multi-workstation tasks with Agent",agentBody:"The Agents page runs a Codex-based Agent in the Hub to inspect connected workstations and perform actions within the selected permission scope. Client PCs do not need the Codex app or Codex SDK installed.",agentPoints:["Suggested tasks currently contains 72 read-only and operational templates with search plus permission, platform, and capability availability checks.","Choose Ask, Safe Auto, Full Access, or Custom. Risky changes go through approval cards and explicit client capability checks.","Limit targets with All connected or Selected. Results use compact per-device status chips and show real RAM, disk, GPU, and process summaries.","Runs stay inside the Hub-isolated runtime and LiveDesk MCP tools, with timeout, cancellation, tool-call limits, and audit-log boundaries."],platformTitle:"5. Current platform and stream state",platformBody:"Windows Wall, Control, file transfer, remote audio, and the RemoteFast path are verified against the current implementation. macOS and Linux keep the same npm command path while capture and permission backends expand.",platformPoints:["Wall uses Mode 3 H.264 and Mode 4 H.264 Atlas. Mode 2/5 compatibility paths are used automatically only for recovery.","Remote audio is available when the selected workstation advertises the capability, with queue, drop, resync, and automatic-restart diagnostics in the browser.","macOS requires Screen Recording and Accessibility permissions for capture and control. RemoteFast logs focus on actionable state.","Linux includes the linux-x64 runtime, grim/gnome-screenshot/import/scrot capture, and xdotool input backend. Audio is still disabled."],firewallTitle:"Firewall and remote locations",firewallBody:"On the same LAN, router forwarding is usually unnecessary. For another office, building, or country, clients must be able to reach the manager client port.",firewallPoints:["Client connection port: TCP 5197.","Client machines normally only need outbound access.","For remote networks, allow inbound TCP 5197 on the manager firewall and forward TCP 5197 from the router to the manager PC.","Screen Wall/API port 5179 is for the manager UI. Expose it only if a remote browser must open the Wall directly.","Prefer VPN, Tailscale, ZeroTier, or fixed-IP allowlists over public internet exposure."],commandsTitle:"Current commands",commandsBody:"The product direction is one terminal command across operating systems instead of finding a website, downloading, and installing manually.",managerCommandLabel:"Start manager",clientCommandLabel:"Connect workstation",slotCommandLabel:"Pin to slot 3",manualCommandLabel:"Advanced manual connection"}),ja:Gn({languageName:"日本語",languageLabel:"ドキュメント言語",eyebrow:"LiveDesk Manual",title:"1行でローカル Screen Wall を開く",intro:"LiveDesk は、複数の作業 PC、AI マシン、Mac mini、開発機を1台の manager PC から監視する npm-first のリモート作業デッキです。",managerTitle:"1. manager を実行",managerBody:"画面を集めて見るコンピューターで LiveDesk manager を実行します。UI とローカルサーバーが同時に起動し、http://127.0.0.1:5179 が開きます。",managerPoints:["コマンドは npx -y livedesk です。","Screen Wall/API は 5179、client 接続は 5197 を使います。","古い LiveDesk プロセスがポートを使っている場合は、基本的に自動で整理して起動します。"],clientTitle:"2. workstation を接続",clientBody:"監視される PC で同じ Google アカウントにログインします。manager がまだ無くても client は終了せず、5秒ごとに再試行します。",clientPoints:["空きスロットに入れるには npx -y livedesk client を実行します。","スロットを固定するには npx -y livedesk client 3 のように番号を付けます。","大量の PC でも再ログインなしで待ち続けます。"],syncTitle:"3. Sync Server と自動検出",syncBody:"Sync Server はこの manager を現在の Google アカウントの active Screen Wall として Supabase に登録します。",syncPoints:["host instance、LAN/private アドレス、public 候補、pair token、短い lease を登録します。","client は LAN 候補を優先し、必要なら public 候補も試します。","VPN、firewall、router、manager の場所が変わったら Sync Server を押します。","livedesk.pages.dev の Chrome Local Network Access は標準実行経路ではありません。npm manager アプリが実際のサーバーです。"],platformTitle:"4. 現在のプラットフォーム状態",platformBody:"Windows は live screen transfer まで確認済みです。macOS と Linux も同じ npm コマンド経路を目標に対応を広げています。",platformPoints:["Windows: 動作確認済み。","macOS: 画面取得と制御には Screen Recording/Accessibility 権限が必要です。","Linux: linux-x64 runtime、grim/gnome-screenshot/import/scrot capture、xdotool input backend を追加済み。audio は未対応です。"],firewallTitle:"Firewall と外部拠点",firewallBody:"同じ LAN なら通常 router forwarding は不要です。外部拠点では client が manager の接続ポートへ到達できる必要があります。",firewallPoints:["client 接続ポートは TCP 5197 です。","client 側は通常 outbound だけで足ります。","外部 network では manager PC の firewall で TCP 5197 inbound を許可し、router から manager PC へ forward します。","5179 は manager UI 用なので、外部ブラウザで Wall を開く必要がある時だけ公開を検討します。","公開 internet より VPN、Tailscale、ZeroTier、IP allowlist を優先してください。"],commandsTitle:"現在のコマンド",commandsBody:"Web サイトから installer を探すより、OS をまたいで terminal 1行で動かす方向です。",managerCommandLabel:"manager 起動",clientCommandLabel:"workstation 接続",slotCommandLabel:"slot 3 に固定",manualCommandLabel:"高度な手動接続"}),"zh-CN":Gn({languageName:"简体中文",languageLabel:"文档语言",eyebrow:"LiveDesk Manual",title:"用一条命令打开本地 Screen Wall",intro:"LiveDesk 是 npm-first 的远程工作台,用一台 manager PC 监控多台工作站、AI 主机、Mac mini 和开发机器。",managerTitle:"1. 运行 manager",managerBody:"在负责查看屏幕的电脑上运行 LiveDesk manager。它会同时启动 UI 和本地服务器,并打开 http://127.0.0.1:5179。",managerPoints:["命令是 npx -y livedesk。","Screen Wall/API 使用 5179,client 连接使用 5197。","如果旧的 LiveDesk 进程占用端口,默认会清理后重新启动。"],clientTitle:"2. 连接 workstation",clientBody:"在被监控的电脑上使用同一个 Google 账号登录。即使 manager 还没在线,client 也会继续运行并每 5 秒重试。",clientPoints:["自动放入空位: npx -y livedesk client。","固定到 3 号位置: npx -y livedesk client 3。","大量电脑也可以持续等待,不需要反复登录。"],syncTitle:"3. Sync Server 和自动发现",syncBody:"Sync Server 会把当前 manager 作为该账号的 active Screen Wall 写入 Supabase。client 登录后读取记录并依次尝试连接候选地址。",syncPoints:["记录包括 host instance、LAN/private 地址、public 候选、pair token 和短 lease。","优先尝试同一 LAN 地址,需要时再尝试外部地址。","manager 位置、VPN、防火墙或路由变化后请点击 Sync Server。","livedesk.pages.dev 的 Chrome Local Network Access 不再是默认运行方式。npm manager app 才是真正服务器。"],platformTitle:"4. 当前平台状态",platformBody:"Windows 已确认可传输实时画面。macOS 和 Linux 正按同一 npm 命令路径扩展支持。",platformPoints:["Windows: 已确认可用。","macOS: 画面捕获和控制需要 Screen Recording/Accessibility 权限。","Linux: 已加入 linux-x64 runtime、grim/gnome-screenshot/import/scrot 捕获、xdotool 输入后端。音频尚未启用。"],firewallTitle:"防火墙和外部地点",firewallBody:"同一 LAN 通常不需要路由端口转发。不同地点连接时,client 必须能访问 manager 的 client 连接端口。",firewallPoints:["client 连接端口是 TCP 5197。","client 机器通常只需要出站访问。","跨网络时,在 manager 防火墙放行 TCP 5197 入站,并在路由器转发到 manager PC。","5179 是 manager UI 端口,仅在需要远程浏览器直接打开 Wall 时考虑暴露。","优先使用 VPN、Tailscale、ZeroTier 或固定 IP allowlist。"],commandsTitle:"当前命令",commandsBody:"产品方向是跨操作系统使用一条终端命令,而不是先找网站、下载、安装。",managerCommandLabel:"启动 manager",clientCommandLabel:"连接 workstation",slotCommandLabel:"固定到 slot 3",manualCommandLabel:"高级手动连接"}),"zh-TW":Gn({languageName:"繁體中文",languageLabel:"文件語言",eyebrow:"LiveDesk Manual",title:"用一行指令開啟本機 Screen Wall",intro:"LiveDesk 是 npm-first 的遠端工作台,用一台 manager PC 監看多台工作站、AI 主機、Mac mini 與開發機。",managerTitle:"1. 執行 manager",managerBody:"在負責看畫面的電腦上執行 LiveDesk manager。它會同時啟動 UI 與本機伺服器,並開啟 http://127.0.0.1:5179。",managerPoints:["指令是 npx -y livedesk。","Screen Wall/API 使用 5179,client 連線使用 5197。","若舊的 LiveDesk 程序占用連接埠,預設會清理後重新啟動。"],clientTitle:"2. 連接 workstation",clientBody:"在被監看的電腦上使用同一個 Google 帳號登入。即使 manager 尚未上線,client 也會持續執行並每 5 秒重試。",clientPoints:["自動放入空位: npx -y livedesk client。","固定到 3 號位置: npx -y livedesk client 3。","大量電腦也能持續等待,不需要反覆登入。"],syncTitle:"3. Sync Server 與自動探索",syncBody:"Sync Server 會把目前 manager 登錄為此帳號的 active Screen Wall。client 登入後讀取 Supabase 記錄並依序嘗試連線候選地址。",syncPoints:["記錄包含 host instance、LAN/private 位址、public 候選、pair token 與短 lease。","優先嘗試 LAN 位址,需要時再嘗試外部位址。","manager 位置、VPN、防火牆或路由設定改變後請按 Sync Server。","livedesk.pages.dev 的 Chrome Local Network Access 不再是預設執行路徑。npm manager app 才是真正伺服器。"],platformTitle:"4. 目前平台狀態",platformBody:"Windows 已確認可傳輸即時畫面。macOS 與 Linux 也沿用相同 npm 指令路徑擴充支援。",platformPoints:["Windows: 已確認可用。","macOS: 畫面擷取與控制需要 Screen Recording/Accessibility 權限。","Linux: 已加入 linux-x64 runtime、grim/gnome-screenshot/import/scrot capture、xdotool input backend。音訊尚未啟用。"],firewallTitle:"防火牆與外部地點",firewallBody:"同一 LAN 通常不需要路由器轉發。不同地點連線時,client 必須能到達 manager 的 client 連線埠。",firewallPoints:["client 連線埠是 TCP 5197。","client 電腦通常只需要對外連線。","跨網路時,請在 manager 防火牆允許 TCP 5197 inbound,並從路由器轉發到 manager PC。","5179 是 manager UI 連接埠,只在需要遠端瀏覽器直接打開 Wall 時才考慮公開。","優先使用 VPN、Tailscale、ZeroTier 或固定 IP allowlist。"],commandsTitle:"目前指令",commandsBody:"產品方向是跨作業系統用一行 terminal 指令,而不是先找網站、下載、安裝。",managerCommandLabel:"啟動 manager",clientCommandLabel:"連接 workstation",slotCommandLabel:"固定到 slot 3",manualCommandLabel:"進階手動連線"}),es:Gn({languageName:"Español",languageLabel:"Idioma del documento",eyebrow:"LiveDesk Manual",title:"Abre un Screen Wall local con un comando",intro:"LiveDesk es una consola npm-first para vigilar muchas estaciones, cajas de IA, Mac mini y equipos de desarrollo desde un PC manager.",managerTitle:"1. Ejecuta el manager",managerBody:"Ejecuta LiveDesk en el equipo que verá las pantallas. El manager inicia la UI y el servidor local juntos y abre http://127.0.0.1:5179.",managerPoints:["El comando es npx -y livedesk.","El manager usa 5179 para Screen Wall/API y 5197 para conexiones client.","Si un proceso antiguo ocupa los puertos, el arranque lo limpia por defecto."],clientTitle:"2. Conecta una workstation",clientBody:"En cada equipo monitoreado, inicia sesión con la misma cuenta Google. Si el manager aún no está activo, el client sigue intentando cada 5 segundos.",clientPoints:["Usa npx -y livedesk client para el primer slot libre.","Usa npx -y livedesk client 3 para fijar el equipo al slot 3.","Los clients siguen esperando para no repetir login en muchas máquinas."],syncTitle:"3. Sync Server y descubrimiento",syncBody:"Sync Server publica este manager como Screen Wall activo para la cuenta. Los clients leen el registro en Supabase y prueban los endpoints.",syncPoints:["Incluye host instance, direcciones LAN/private, candidatos public, pair token y lease corto.","Primero se prueban candidatos LAN, luego públicos si hace falta.","Pulsa Sync Server después de cambios de manager, VPN, firewall o router.","Chrome Local Network Access en livedesk.pages.dev ya no es el flujo principal. La app npm manager es el servidor real."],platformTitle:"4. Estado de plataformas",platformBody:"Windows ya fue verificado con transferencia de pantalla. macOS y Linux siguen el mismo camino npm.",platformPoints:["Windows: verificado.","macOS: captura y control requieren permisos Screen Recording/Accessibility.","Linux: agregado linux-x64 runtime, captura grim/gnome-screenshot/import/scrot y entrada xdotool. Audio aún desactivado."],firewallTitle:"Firewall y sedes remotas",firewallBody:"En la misma LAN normalmente no hace falta port forwarding. Para otra red, los clients deben llegar al puerto client del manager.",firewallPoints:["Puerto de conexión client: TCP 5197.","Los equipos client normalmente solo necesitan salida.","Para redes remotas, permite TCP 5197 inbound en el manager y reenvía TCP 5197 al PC manager.","El puerto 5179 es para la UI del manager; expónlo solo si un navegador remoto debe abrir el Wall.","Prefiere VPN, Tailscale, ZeroTier o allowlist de IP fijas."],commandsTitle:"Comandos actuales",commandsBody:"La dirección del producto es un comando de terminal común entre sistemas, no descargar e instalar desde una web.",managerCommandLabel:"Iniciar manager",clientCommandLabel:"Conectar workstation",slotCommandLabel:"Fijar al slot 3",manualCommandLabel:"Conexión manual avanzada"}),fr:Gn({languageName:"Français",languageLabel:"Langue du document",eyebrow:"LiveDesk Manual",title:"Ouvrir un Screen Wall local en une commande",intro:"LiveDesk est un deck npm-first pour surveiller plusieurs postes, machines IA, Mac mini et machines dev depuis un PC manager.",managerTitle:"1. Lancer le manager",managerBody:"Lancez LiveDesk sur l’ordinateur qui observe les écrans. Le manager démarre l’UI et le serveur local, puis ouvre http://127.0.0.1:5179.",managerPoints:["La commande est npx -y livedesk.","Le manager utilise 5179 pour Screen Wall/API et 5197 pour les connexions client.","Si un ancien processus utilise les ports, le démarrage le nettoie par défaut."],clientTitle:"2. Connecter une workstation",clientBody:"Sur chaque ordinateur surveillé, connectez-vous avec le même compte Google. Si le manager n’est pas encore actif, le client réessaie toutes les 5 secondes.",clientPoints:["Utilisez npx -y livedesk client pour le premier slot libre.","Utilisez npx -y livedesk client 3 pour fixer la machine au slot 3.","Les clients continuent d’attendre pour éviter les reconnexions répétées."],syncTitle:"3. Sync Server et découverte",syncBody:"Sync Server publie ce manager comme Screen Wall actif du compte. Les clients lisent l’enregistrement Supabase et testent les endpoints.",syncPoints:["Il contient host instance, adresses LAN/private, candidats public, pair token et lease court.","Les candidats LAN sont essayés en premier, puis les candidats publics si besoin.","Cliquez Sync Server après un changement de manager, VPN, firewall ou routeur.","Chrome Local Network Access sur livedesk.pages.dev n’est plus le chemin par défaut. L’app npm manager est le vrai serveur."],platformTitle:"4. État des plateformes",platformBody:"Windows est vérifié avec transfert d’écran live. macOS et Linux suivent le même chemin npm.",platformPoints:["Windows: vérifié.","macOS: capture et contrôle nécessitent Screen Recording/Accessibility.","Linux: runtime linux-x64, capture grim/gnome-screenshot/import/scrot et entrée xdotool ajoutés. Audio désactivé."],firewallTitle:"Firewall et sites distants",firewallBody:"Sur le même LAN, le port forwarding est rarement nécessaire. Depuis un autre réseau, les clients doivent atteindre le port client du manager.",firewallPoints:["Port de connexion client: TCP 5197.","Les machines client ont normalement seulement besoin de sortie réseau.","Pour un réseau distant, autorisez TCP 5197 entrant sur le manager et redirigez TCP 5197 vers le PC manager.","Le port 5179 sert à l’UI manager; exposez-le seulement si un navigateur distant doit ouvrir le Wall.","Préférez VPN, Tailscale, ZeroTier ou allowlist IP fixes."],commandsTitle:"Commandes actuelles",commandsBody:"La direction produit est une commande terminal commune aux OS, plutôt qu’un téléchargement manuel depuis un site.",managerCommandLabel:"Démarrer manager",clientCommandLabel:"Connecter workstation",slotCommandLabel:"Fixer au slot 3",manualCommandLabel:"Connexion manuelle avancée"}),de:Gn({languageName:"Deutsch",languageLabel:"Dokumentsprache",eyebrow:"LiveDesk Manual",title:"Lokale Screen Wall mit einem Befehl öffnen",intro:"LiveDesk ist ein npm-first Arbeitsdeck, um viele Workstations, AI-Boxen, Mac minis und Dev-Rechner von einem Manager-PC zu überwachen.",managerTitle:"1. Manager starten",managerBody:"Starte LiveDesk auf dem Computer, der die Screens sieht. Der Manager startet UI und lokalen Server zusammen und öffnet http://127.0.0.1:5179.",managerPoints:["Der Befehl ist npx -y livedesk.","Der Manager nutzt 5179 für Screen Wall/API und 5197 für Client-Verbindungen.","Wenn alte LiveDesk-Prozesse Ports belegen, werden sie beim Start standardmäßig bereinigt."],clientTitle:"2. Workstation verbinden",clientBody:"Melde dich auf jedem überwachten Computer mit demselben Google-Konto an. Wenn kein Manager online ist, versucht der Client alle 5 Sekunden weiter.",clientPoints:["npx -y livedesk client nutzt den ersten freien Slot.","npx -y livedesk client 3 fixiert den Rechner auf Slot 3.","Clients warten weiter, damit große Setups kein wiederholtes Login brauchen."],syncTitle:"3. Sync Server und Discovery",syncBody:"Sync Server veröffentlicht diesen Manager als aktive Screen Wall des Kontos. Clients lesen den Supabase-Eintrag und testen Endpoints der Reihe nach.",syncPoints:["Enthält host instance, LAN/private Adressen, public Kandidaten, pair token und kurze lease.","LAN-Kandidaten werden zuerst versucht, danach public Kandidaten.","Nach Änderungen an Manager, VPN, Firewall oder Router Sync Server drücken.","Chrome Local Network Access auf livedesk.pages.dev ist nicht mehr der Standardpfad. Die npm Manager App ist der echte Server."],platformTitle:"4. Plattformstatus",platformBody:"Windows wurde mit Live-Screen-Transfer geprüft. macOS und Linux folgen demselben npm-Pfad.",platformPoints:["Windows: verifiziert.","macOS: Capture und Control brauchen Screen Recording/Accessibility Rechte.","Linux: linux-x64 Runtime, grim/gnome-screenshot/import/scrot Capture und xdotool Input Backend sind ergänzt. Audio ist deaktiviert."],firewallTitle:"Firewall und entfernte Standorte",firewallBody:"Im gleichen LAN ist Router-Forwarding meist unnötig. Aus anderen Netzwerken müssen Clients den Client-Port des Managers erreichen.",firewallPoints:["Client-Verbindungsport: TCP 5197.","Client-Rechner brauchen normalerweise nur ausgehenden Zugriff.","Für entfernte Netzwerke TCP 5197 inbound am Manager erlauben und vom Router zum Manager-PC forwarden.","Port 5179 ist für die Manager-UI; nur öffnen, wenn ein Remote-Browser die Wall direkt öffnen muss.","VPN, Tailscale, ZeroTier oder feste IP-Allowlists bevorzugen."],commandsTitle:"Aktuelle Befehle",commandsBody:"Die Produktlinie ist ein Terminalbefehl über Betriebssysteme hinweg, statt Website suchen, herunterladen und installieren.",managerCommandLabel:"Manager starten",clientCommandLabel:"Workstation verbinden",slotCommandLabel:"An Slot 3 fixieren",manualCommandLabel:"Erweiterte manuelle Verbindung"}),"pt-BR":Gn({languageName:"Português",languageLabel:"Idioma do documento",eyebrow:"LiveDesk Manual",title:"Abra um Screen Wall local com um comando",intro:"LiveDesk é um deck npm-first para monitorar várias estações, caixas de IA, Mac minis e máquinas dev a partir de um PC manager.",managerTitle:"1. Execute o manager",managerBody:"Rode LiveDesk no computador que verá as telas. O manager inicia a UI e o servidor local juntos e abre http://127.0.0.1:5179.",managerPoints:["O comando é npx -y livedesk.","O manager usa 5179 para Screen Wall/API e 5197 para conexões client.","Se um processo antigo ocupa as portas, a inicialização limpa por padrão."],clientTitle:"2. Conecte uma workstation",clientBody:"Em cada computador monitorado, entre com a mesma conta Google. Se o manager ainda não estiver online, o client tenta a cada 5 segundos.",clientPoints:["Use npx -y livedesk client para o primeiro slot livre.","Use npx -y livedesk client 3 para fixar no slot 3.","Clients continuam tentando para evitar login repetido em muitos PCs."],syncTitle:"3. Sync Server e descoberta",syncBody:"Sync Server publica este manager como Screen Wall ativo da conta. Clients leem o registro no Supabase e testam endpoints.",syncPoints:["Inclui host instance, endereços LAN/private, candidatos public, pair token e lease curto.","Candidatos LAN vêm primeiro; public depois se necessário.","Clique Sync Server após mudanças de manager, VPN, firewall ou roteador.","Chrome Local Network Access em livedesk.pages.dev não é mais o caminho padrão. O app npm manager é o servidor real."],platformTitle:"4. Estado das plataformas",platformBody:"Windows foi verificado com transferência de tela. macOS e Linux seguem o mesmo caminho npm.",platformPoints:["Windows: verificado.","macOS: captura e controle precisam de permissões Screen Recording/Accessibility.","Linux: runtime linux-x64, captura grim/gnome-screenshot/import/scrot e entrada xdotool adicionados. Áudio ainda desativado."],firewallTitle:"Firewall e locais remotos",firewallBody:"Na mesma LAN normalmente não é preciso port forwarding. Em outra rede, clients precisam alcançar a porta client do manager.",firewallPoints:["Porta client: TCP 5197.","Máquinas client normalmente só precisam de saída.","Para redes remotas, permita TCP 5197 inbound no manager e encaminhe TCP 5197 para o PC manager.","A porta 5179 é para a UI do manager; exponha apenas se um navegador remoto precisar abrir o Wall.","Prefira VPN, Tailscale, ZeroTier ou allowlist de IP fixo."],commandsTitle:"Comandos atuais",commandsBody:"A direção do produto é um comando de terminal comum entre sistemas, não baixar e instalar manualmente.",managerCommandLabel:"Iniciar manager",clientCommandLabel:"Conectar workstation",slotCommandLabel:"Fixar no slot 3",manualCommandLabel:"Conexão manual avançada"}),it:Gn({languageName:"Italiano",languageLabel:"Lingua documento",eyebrow:"LiveDesk Manual",title:"Apri uno Screen Wall locale con un comando",intro:"LiveDesk è un deck npm-first per monitorare workstation, box AI, Mac mini e macchine dev da un solo PC manager.",managerTitle:"1. Avvia il manager",managerBody:"Esegui LiveDesk sul computer che guarderà gli schermi. Il manager avvia UI e server locale e apre http://127.0.0.1:5179.",managerPoints:["Il comando è npx -y livedesk.","Il manager usa 5179 per Screen Wall/API e 5197 per connessioni client.","Se vecchi processi occupano le porte, l’avvio le pulisce di default."],clientTitle:"2. Connetti una workstation",clientBody:"Su ogni computer monitorato, accedi con lo stesso account Google. Se il manager non è online, il client riprova ogni 5 secondi.",clientPoints:["npx -y livedesk client usa il primo slot libero.","npx -y livedesk client 3 fissa la macchina allo slot 3.","I client continuano a provare per evitare login ripetuti."],syncTitle:"3. Sync Server e discovery",syncBody:"Sync Server pubblica questo manager come Screen Wall attivo dell’account. I client leggono Supabase e provano gli endpoint.",syncPoints:["Include host instance, indirizzi LAN/private, candidati public, pair token e lease breve.","Prima LAN, poi public se necessario.","Premi Sync Server dopo cambi di manager, VPN, firewall o router.","Chrome Local Network Access su livedesk.pages.dev non è più il percorso principale. L’app npm manager è il server reale."],platformTitle:"4. Stato piattaforme",platformBody:"Windows è verificato con trasferimento schermo live. macOS e Linux seguono lo stesso percorso npm.",platformPoints:["Windows: verificato.","macOS: capture e control richiedono permessi Screen Recording/Accessibility.","Linux: aggiunti runtime linux-x64, capture grim/gnome-screenshot/import/scrot e input xdotool. Audio disattivato."],firewallTitle:"Firewall e sedi remote",firewallBody:"Nella stessa LAN di solito non serve port forwarding. Da altre reti, i client devono raggiungere la porta client del manager.",firewallPoints:["Porta client: TCP 5197.","I client normalmente richiedono solo uscita.","Per reti remote, abilita TCP 5197 inbound sul manager e inoltra TCP 5197 al PC manager.","La porta 5179 è per la UI manager; esponila solo se un browser remoto deve aprire il Wall.","Preferisci VPN, Tailscale, ZeroTier o IP allowlist."],commandsTitle:"Comandi attuali",commandsBody:"La direzione è un comando terminale comune tra sistemi operativi, invece di download e install manuale.",managerCommandLabel:"Avvia manager",clientCommandLabel:"Connetti workstation",slotCommandLabel:"Fissa allo slot 3",manualCommandLabel:"Connessione manuale avanzata"}),id:Gn({languageName:"Bahasa Indonesia",languageLabel:"Bahasa dokumen",eyebrow:"LiveDesk Manual",title:"Buka Screen Wall lokal dengan satu perintah",intro:"LiveDesk adalah deck npm-first untuk memantau banyak workstation, AI box, Mac mini, dan mesin dev dari satu PC manager.",managerTitle:"1. Jalankan manager",managerBody:"Jalankan LiveDesk di komputer yang melihat layar. Manager membuka UI dan server lokal bersama, lalu membuka http://127.0.0.1:5179.",managerPoints:["Perintahnya npx -y livedesk.","Manager memakai 5179 untuk Screen Wall/API dan 5197 untuk koneksi client.","Jika proses lama memakai port itu, startup membersihkannya secara default."],clientTitle:"2. Hubungkan workstation",clientBody:"Di komputer yang dipantau, masuk dengan akun Google yang sama. Jika manager belum online, client tetap mencoba tiap 5 detik.",clientPoints:["npx -y livedesk client memakai slot kosong pertama.","npx -y livedesk client 3 mengunci mesin ke slot 3.","Client terus mencoba agar banyak PC tidak perlu login berulang."],syncTitle:"3. Sync Server dan discovery",syncBody:"Sync Server menerbitkan manager ini sebagai Screen Wall aktif untuk akun. Client membaca Supabase dan mencoba endpoint.",syncPoints:["Berisi host instance, alamat LAN/private, kandidat public, pair token, dan lease pendek.","Kandidat LAN dicoba lebih dulu, lalu public jika perlu.","Tekan Sync Server setelah perubahan manager, VPN, firewall, atau router.","Chrome Local Network Access di livedesk.pages.dev bukan jalur utama lagi. App npm manager adalah server sebenarnya."],platformTitle:"4. Status platform",platformBody:"Windows sudah diverifikasi dengan live screen transfer. macOS dan Linux mengikuti jalur npm yang sama.",platformPoints:["Windows: terverifikasi.","macOS: capture dan control perlu izin Screen Recording/Accessibility.","Linux: runtime linux-x64, capture grim/gnome-screenshot/import/scrot, dan input xdotool sudah ditambahkan. Audio belum aktif."],firewallTitle:"Firewall dan lokasi luar",firewallBody:"Di LAN yang sama biasanya tidak perlu port forwarding. Dari jaringan lain, client harus mencapai port client manager.",firewallPoints:["Port client: TCP 5197.","Mesin client biasanya hanya perlu akses keluar.","Untuk jaringan luar, izinkan TCP 5197 inbound di manager dan forward TCP 5197 ke PC manager.","Port 5179 untuk UI manager; buka hanya jika browser luar harus membuka Wall.","Utamakan VPN, Tailscale, ZeroTier, atau IP allowlist."],commandsTitle:"Perintah saat ini",commandsBody:"Arah produk adalah satu perintah terminal lintas OS, bukan download dan instal manual.",managerCommandLabel:"Mulai manager",clientCommandLabel:"Hubungkan workstation",slotCommandLabel:"Kunci ke slot 3",manualCommandLabel:"Koneksi manual lanjutan"}),vi:Gn({languageName:"Tiếng Việt",languageLabel:"Ngôn ngữ tài liệu",eyebrow:"LiveDesk Manual",title:"Mở Screen Wall cục bộ bằng một lệnh",intro:"LiveDesk là deck npm-first để giám sát nhiều workstation, máy AI, Mac mini và máy dev từ một PC manager.",managerTitle:"1. Chạy manager",managerBody:"Chạy LiveDesk trên máy dùng để xem màn hình. Manager khởi động UI và server cục bộ cùng lúc, rồi mở http://127.0.0.1:5179.",managerPoints:["Lệnh là npx -y livedesk.","Manager dùng 5179 cho Screen Wall/API và 5197 cho kết nối client.","Nếu tiến trình cũ giữ port, startup mặc định sẽ dọn và khởi động lại."],clientTitle:"2. Kết nối workstation",clientBody:"Trên mỗi máy được giám sát, đăng nhập cùng tài khoản Google. Nếu manager chưa online, client tiếp tục thử mỗi 5 giây.",clientPoints:["npx -y livedesk client dùng slot trống đầu tiên.","npx -y livedesk client 3 ghim máy vào slot 3.","Client tiếp tục chờ để nhiều máy không cần đăng nhập lại."],syncTitle:"3. Sync Server và tự phát hiện",syncBody:"Sync Server đăng manager này là Screen Wall đang hoạt động của tài khoản. Client đọc Supabase và thử các endpoint.",syncPoints:["Bao gồm host instance, địa chỉ LAN/private, public candidate, pair token và lease ngắn.","Ưu tiên LAN trước, sau đó thử public nếu cần.","Bấm Sync Server sau thay đổi manager, VPN, firewall hoặc router.","Chrome Local Network Access trên livedesk.pages.dev không còn là đường chạy chính. App npm manager mới là server thật."],platformTitle:"4. Trạng thái nền tảng",platformBody:"Windows đã được kiểm chứng với truyền màn hình live. macOS và Linux đi theo cùng đường npm.",platformPoints:["Windows: đã kiểm chứng.","macOS: capture và control cần quyền Screen Recording/Accessibility.","Linux: đã thêm runtime linux-x64, capture grim/gnome-screenshot/import/scrot và input xdotool. Audio chưa bật."],firewallTitle:"Firewall và địa điểm ngoài",firewallBody:"Trong cùng LAN thường không cần port forwarding. Từ mạng khác, client phải truy cập được port client của manager.",firewallPoints:["Port client: TCP 5197.","Máy client thường chỉ cần kết nối outbound.","Với mạng ngoài, cho phép TCP 5197 inbound trên manager và forward TCP 5197 tới PC manager.","Port 5179 dành cho UI manager; chỉ mở nếu trình duyệt từ xa cần mở Wall trực tiếp.","Ưu tiên VPN, Tailscale, ZeroTier hoặc allowlist IP cố định."],commandsTitle:"Lệnh hiện tại",commandsBody:"Hướng sản phẩm là một lệnh terminal dùng chung giữa các OS, thay vì tải và cài thủ công.",managerCommandLabel:"Khởi động manager",clientCommandLabel:"Kết nối workstation",slotCommandLabel:"Ghim vào slot 3",manualCommandLabel:"Kết nối thủ công nâng cao"}),th:Gn({languageName:"ไทย",languageLabel:"ภาษาของเอกสาร",eyebrow:"LiveDesk Manual",title:"เปิด Screen Wall ภายในด้วยคำสั่งเดียว",intro:"LiveDesk คือ deck แบบ npm-first สำหรับดู workstation, กล่อง AI, Mac mini และเครื่อง dev หลายเครื่องจาก manager PC เครื่องเดียว",managerTitle:"1. รัน manager",managerBody:"รัน LiveDesk บนเครื่องที่ใช้ดูหน้าจอ Manager จะเปิด UI และ local server พร้อมกัน แล้วเปิด http://127.0.0.1:5179",managerPoints:["คำสั่งคือ npx -y livedesk","Manager ใช้ 5179 สำหรับ Screen Wall/API และ 5197 สำหรับ client connection","ถ้า process เก่ายังใช้ port อยู่ startup จะล้างให้โดย default"],clientTitle:"2. เชื่อม workstation",clientBody:"บนเครื่องที่ต้อง monitor ให้ login ด้วย Google account เดียวกัน ถ้า manager ยังไม่ออนไลน์ client จะลองใหม่ทุก 5 วินาที",clientPoints:["npx -y livedesk client จะใช้ slot ว่างแรก","npx -y livedesk client 3 จะตรึงเครื่องไว้ที่ slot 3","Client จะรอต่อเนื่องเพื่อไม่ต้อง login ซ้ำเมื่อมีหลายเครื่อง"],syncTitle:"3. Sync Server และ discovery",syncBody:"Sync Server จะ publish manager นี้เป็น active Screen Wall ของ account แล้ว client อ่านข้อมูลจาก Supabase และลอง endpoint ต่างๆ",syncPoints:["มี host instance, LAN/private address, public candidate, pair token และ short lease","ลอง LAN ก่อน แล้วค่อยลอง public ถ้าจำเป็น","กด Sync Server หลังเปลี่ยน manager, VPN, firewall หรือ router","Chrome Local Network Access บน livedesk.pages.dev ไม่ใช่ runtime หลักแล้ว app npm manager คือ server จริง"],platformTitle:"4. สถานะ platform",platformBody:"Windows ตรวจสอบแล้วว่าส่งภาพ live ได้ macOS และ Linux ใช้เส้นทาง npm เดียวกัน",platformPoints:["Windows: verified","macOS: capture/control ต้องใช้สิทธิ์ Screen Recording/Accessibility","Linux: เพิ่ม linux-x64 runtime, grim/gnome-screenshot/import/scrot capture และ xdotool input แล้ว audio ยังปิดอยู่"],firewallTitle:"Firewall และเครื่องต่างสถานที่",firewallBody:"ใน LAN เดียวกันปกติไม่ต้อง port forwarding ถ้าอยู่คนละ network client ต้องเข้าถึง client port ของ manager ได้",firewallPoints:["Client port คือ TCP 5197","เครื่อง client ปกติต้องการ outbound เท่านั้น","ถ้าอยู่นอก network ให้เปิด TCP 5197 inbound ที่ manager และ forward TCP 5197 ไปยัง manager PC","Port 5179 เป็น UI ของ manager เปิดเฉพาะเมื่อ browser ระยะไกลต้องเปิด Wall โดยตรง","ควรใช้ VPN, Tailscale, ZeroTier หรือ IP allowlist ก่อนเปิดสู่ public internet"],commandsTitle:"คำสั่งปัจจุบัน",commandsBody:"ทิศทาง product คือคำสั่ง terminal เดียวข้าม OS ไม่ใช่ download/install จากเว็บไซต์",managerCommandLabel:"เริ่ม manager",clientCommandLabel:"เชื่อม workstation",slotCommandLabel:"ตรึง slot 3",manualCommandLabel:"manual connection ขั้นสูง"}),hi:Gn({languageName:"हिन्दी",languageLabel:"दस्तावेज़ भाषा",eyebrow:"LiveDesk Manual",title:"एक कमांड से local Screen Wall खोलें",intro:"LiveDesk एक npm-first remote work deck है जिससे एक manager PC से कई workstation, AI box, Mac mini और dev machines देखे जा सकते हैं।",managerTitle:"1. manager चलाएं",managerBody:"जिस computer से screens देखनी हैं उस पर LiveDesk manager चलाएं। यह UI और local server साथ में शुरू करता है और http://127.0.0.1:5179 खोलता है।",managerPoints:["कमांड है npx -y livedesk।","Manager Screen Wall/API के लिए 5179 और client connections के लिए 5197 इस्तेमाल करता है।","अगर पुराने LiveDesk ports बचे हों तो startup default रूप से साफ करता है।"],clientTitle:"2. workstation जोड़ें",clientBody:"हर monitored computer पर उसी Google account से sign in करें। Manager online न हो तब भी client बंद नहीं होता और हर 5 सेकंड retry करता है।",clientPoints:["npx -y livedesk client पहला खाली slot लेता है।","npx -y livedesk client 3 machine को slot 3 पर pin करता है।","बहुत सी machines हों तब भी बार-बार login की जरूरत नहीं रहती।"],syncTitle:"3. Sync Server और discovery",syncBody:"Sync Server इस manager को account का active Screen Wall बनाकर Supabase में publish करता है। Clients record पढ़कर endpoints try करते हैं।",syncPoints:["इसमें host instance, LAN/private addresses, public candidates, pair token और short lease होता है।","LAN candidates पहले try होते हैं, जरूरत हो तो public candidates।","Manager, VPN, firewall या router बदलने के बाद Sync Server दबाएं।","livedesk.pages.dev का Chrome Local Network Access अब default runtime नहीं है। npm manager app ही real server है।"],platformTitle:"4. Platform status",platformBody:"Windows live screen transfer के साथ verified है। macOS और Linux भी इसी npm path पर आगे बढ़ रहे हैं।",platformPoints:["Windows: verified.","macOS: capture/control के लिए Screen Recording/Accessibility permissions चाहिए।","Linux: linux-x64 runtime, grim/gnome-screenshot/import/scrot capture और xdotool input backend जोड़े गए हैं। Audio अभी disabled है।"],firewallTitle:"Firewall और remote locations",firewallBody:"Same LAN में आम तौर पर router forwarding जरूरी नहीं। दूसरे network से clients को manager client port तक पहुंचना होगा।",firewallPoints:["Client connection port: TCP 5197.","Client machines को आम तौर पर सिर्फ outbound access चाहिए।","Remote network के लिए manager firewall में TCP 5197 inbound allow करें और router से TCP 5197 manager PC पर forward करें।","5179 manager UI port है; इसे तभी expose करें जब remote browser को Wall खोलना हो।","Public internet से पहले VPN, Tailscale, ZeroTier या fixed IP allowlist बेहतर है।"],commandsTitle:"Current commands",commandsBody:"Product direction है OS के बीच एक terminal command, website से download/install नहीं।",managerCommandLabel:"Start manager",clientCommandLabel:"Connect workstation",slotCommandLabel:"Pin to slot 3",manualCommandLabel:"Advanced manual connection"}),ar:Gn({languageName:"العربية",languageLabel:"لغة المستند",eyebrow:"LiveDesk Manual",title:"افتح Screen Wall محلي بأمر واحد",intro:"LiveDesk هو deck بنمط npm-first لمراقبة عدة workstations وأجهزة AI وMac mini وأجهزة تطوير من كمبيوتر manager واحد.",managerTitle:"1. شغل manager",managerBody:"شغل LiveDesk على الكمبيوتر الذي سيعرض الشاشات. يبدأ manager الواجهة والخادم المحلي معا ويفتح http://127.0.0.1:5179.",managerPoints:["الأمر هو npx -y livedesk.","يستخدم manager المنفذ 5179 للواجهة/API والمنفذ 5197 لاتصالات client.","إذا بقيت عملية LiveDesk قديمة على المنافذ، يتم تنظيفها افتراضيا عند التشغيل."],clientTitle:"2. وصل workstation",clientBody:"على كل كمبيوتر تتم مراقبته، سجل الدخول بنفس حساب Google. إذا لم يكن manager متاحا، يبقى client يعمل ويحاول كل 5 ثوان.",clientPoints:["npx -y livedesk client يختار أول slot فارغ.","npx -y livedesk client 3 يثبت الجهاز في slot 3.","clients تستمر بالمحاولة لتجنب تكرار تسجيل الدخول عند كثرة الأجهزة."],syncTitle:"3. Sync Server والاكتشاف",syncBody:"Sync Server ينشر هذا manager كـ active Screen Wall للحساب. يقرأ clients سجل Supabase ويجربون endpoints بالترتيب.",syncPoints:["السجل يتضمن host instance وعناوين LAN/private وpublic candidates وpair token وlease قصير.","يتم تفضيل LAN أولا، ثم public عند الحاجة.","اضغط Sync Server بعد تغيير manager أو VPN أو firewall أو router.","Chrome Local Network Access على livedesk.pages.dev لم يعد مسار التشغيل الافتراضي. تطبيق npm manager هو الخادم الحقيقي."],platformTitle:"4. حالة المنصات",platformBody:"Windows تم التحقق منه مع نقل شاشة live. macOS وLinux يتبعان نفس مسار npm.",platformPoints:["Windows: تم التحقق.","macOS: capture/control يحتاجان أذونات Screen Recording/Accessibility.","Linux: تمت إضافة linux-x64 runtime وgrim/gnome-screenshot/import/scrot capture وxdotool input. الصوت ما زال معطلا."],firewallTitle:"Firewall والمواقع البعيدة",firewallBody:"داخل نفس LAN غالبا لا تحتاج port forwarding. من شبكة أخرى يجب أن يصل client إلى منفذ manager client.",firewallPoints:["منفذ client: TCP 5197.","أجهزة client تحتاج عادة اتصال outbound فقط.","للشبكات البعيدة، اسمح TCP 5197 inbound على manager ووجه TCP 5197 من router إلى manager PC.","المنفذ 5179 مخصص لواجهة manager؛ اكشفه فقط إذا كان متصفح بعيد يحتاج فتح Wall مباشرة.","يفضل VPN أو Tailscale أو ZeroTier أو fixed IP allowlist بدل التعريض العام."],commandsTitle:"الأوامر الحالية",commandsBody:"اتجاه المنتج هو أمر terminal واحد عبر الأنظمة، وليس تحميل وتثبيت يدوي من موقع.",managerCommandLabel:"Start manager",clientCommandLabel:"Connect workstation",slotCommandLabel:"Pin to slot 3",manualCommandLabel:"Advanced manual connection"}),tr:Gn({languageName:"Türkçe",languageLabel:"Belge dili",eyebrow:"LiveDesk Manual",title:"Yerel Screen Wall tek komutla açılsın",intro:"LiveDesk, tek bir manager PC üzerinden birçok workstation, AI box, Mac mini ve dev machine izlemek için npm-first bir çalışma deckidir.",managerTitle:"1. Manager çalıştır",managerBody:"Ekranları izleyecek bilgisayarda LiveDesk manager çalıştır. Manager UI ve local server birlikte başlar ve http://127.0.0.1:5179 açılır.",managerPoints:["Komut: npx -y livedesk.","Manager Screen Wall/API için 5179, client bağlantıları için 5197 kullanır.","Eski LiveDesk process portları tutuyorsa başlangıç varsayılan olarak temizler."],clientTitle:"2. Workstation bağla",clientBody:"İzlenecek bilgisayarda aynı Google hesabıyla giriş yap. Manager henüz online değilse client kapanmaz ve her 5 saniyede tekrar dener.",clientPoints:["npx -y livedesk client ilk boş slota yerleşir.","npx -y livedesk client 3 makineyi slot 3’e sabitler.","Çok makinede tekrar tekrar login gerekmesin diye client beklemeye devam eder."],syncTitle:"3. Sync Server ve discovery",syncBody:"Sync Server bu managerı hesabın active Screen Wall kaydı olarak Supabase’e yazar. Clients bu kaydı okuyup endpoint adaylarını dener.",syncPoints:["Host instance, LAN/private adresler, public adaylar, pair token ve kısa lease içerir.","Önce LAN adayları, gerekirse public adaylar denenir.","Manager, VPN, firewall veya router değişince Sync Server’a bas.","livedesk.pages.dev üzerindeki Chrome Local Network Access artık default runtime yolu değil. Gerçek server npm manager app."],platformTitle:"4. Platform durumu",platformBody:"Windows live screen transfer ile doğrulandı. macOS ve Linux aynı npm yolunu takip ediyor.",platformPoints:["Windows: doğrulandı.","macOS: capture/control için Screen Recording/Accessibility izinleri gerekir.","Linux: linux-x64 runtime, grim/gnome-screenshot/import/scrot capture ve xdotool input backend eklendi. Audio kapalı."],firewallTitle:"Firewall ve uzak konumlar",firewallBody:"Aynı LAN içinde genelde router forwarding gerekmez. Başka ağdan clients manager client portuna ulaşabilmelidir.",firewallPoints:["Client port: TCP 5197.","Client makineler normalde sadece outbound erişim ister.","Uzak ağ için manager firewall üzerinde TCP 5197 inbound aç ve routerdan TCP 5197yi manager PCye forward et.","5179 manager UI portudur; sadece uzak browser Wall açacaksa expose et.","Public internet yerine VPN, Tailscale, ZeroTier veya sabit IP allowlist tercih et."],commandsTitle:"Güncel komutlar",commandsBody:"Ürün yönü, webden indirip kurmak yerine işletim sistemleri arasında ortak tek terminal komutu.",managerCommandLabel:"Manager başlat",clientCommandLabel:"Workstation bağla",slotCommandLabel:"Slot 3’e sabitle",manualCommandLabel:"Gelişmiş manuel bağlantı"})},PM=Object.entries(oo).map(([n,a])=>({id:n,label:a.languageName}));function qM(){if(typeof navigator>"u")return"en";const n=navigator.languages?.length?navigator.languages:[navigator.language];for(const a of n){const i=a.toLowerCase();if(oo[a])return a;if(i.startsWith("zh-tw")||i.startsWith("zh-hk"))return"zh-TW";if(i.startsWith("pt"))return"pt-BR";const r=i.split("-")[0];if(oo[r])return r}return"en"}function oy({index:n}){const a=n+1;return l.jsx("article",{className:"device-tile placeholder-tile","aria-label":`Empty slot ${a}`,children:l.jsxs("div",{className:"tile-screen","aria-hidden":"true",children:[l.jsx("span",{className:"slot-grid","aria-hidden":"true"}),l.jsxs("span",{className:"empty-screen",children:[l.jsx(en,{size:24}),l.jsxs("strong",{children:["Slot ",String(a).padStart(3,"0")]})]})]})})}function Zm({device:n,frame:a,selected:i,controlEnabled:r,showStatus:c,monitorIndex:u,monitorCount:m,onSelect:p,onFocusDevice:v,onOpenControl:g,onCycleMonitor:w,onCanvasReady:y,sendInput:b,updateIndicator:C,presentationReady:k,showPresentationSpinner:A=!1}){const T=f.useRef(null),j=f.useRef(null),R=f.useRef(0),E=f.useRef(null),H=_w(n),F=["cpu","gpu","memory","vram"].map(D=>H.metrics.find(Z=>Z.id===D)).filter(D=>!!D),q=na(u,m),I=m>1,_=k??!!a,fe=A&&n.connected&&!_,G=SM(n,a,q),ue=G>=ud?100:G/ud*100,Y=G>=ud?ud/G*100:100,ae={"--screen-aspect":G.toFixed(5),"--screen-content-width":`${Math.max(1,Math.min(100,ue)).toFixed(3)}%`,"--screen-content-height":`${Math.max(1,Math.min(100,Y)).toFixed(3)}%`},le=f.useCallback(D=>{T.current=D,y(n.deviceId,D)},[n.deviceId,y]),V=D=>{const Z=D.currentTarget.getBoundingClientRect();return{normalizedX:Math.max(0,Math.min(1,(D.clientX-Z.left)/Math.max(1,Z.width))),normalizedY:Math.max(0,Math.min(1,(D.clientY-Z.top)/Math.max(1,Z.height)))}},z=D=>({shiftKey:D.shiftKey,ctrlKey:D.ctrlKey,altKey:D.altKey,metaKey:D.metaKey}),K=f.useCallback(()=>{E.current!==null&&(window.cancelAnimationFrame(E.current),E.current=null)},[]),Q=f.useCallback(()=>{const D=j.current;if(!D)return;j.current=null;const Z=Number(D.input.normalizedX),ye=Number(D.input.normalizedY);if(!Number.isFinite(Z)||!Number.isFinite(ye))return;b(n.deviceId,{...D.input,normalizedX:Z,normalizedY:ye})&&(R.current=performance.now())},[n.deviceId,b]),P=f.useCallback(()=>{E.current===null&&(E.current=window.requestAnimationFrame(()=>{E.current=null,Q()}))},[Q]);f.useEffect(()=>()=>{K(),j.current=null},[K]);const ie=(D,Z)=>{if(!r)return;const ye={type:Z,monitorIndex:q,...V(D),button:_M(D.button),...z(D)};if(Z==="pointermove"){const be=performance.now();j.current={input:ye},be-R.current>=YA&&(K(),Q()),P();return}j.current&&(K(),Q()),b(n.deviceId,ye)},Se=f.useCallback(D=>{const Z=document.activeElement;Z instanceof HTMLElement&&D.contains(Z)&&Z.classList.contains("monitor-cycle-button")&&Z.blur()},[]);return l.jsx("article",{className:`device-tile ${i?"selected":""} ${n.connected?"online":"offline"}`,"data-live-device-id":n.deviceId,style:ae,children:l.jsxs("div",{className:`tile-screen ${_?"has-frame":"is-empty"}`,role:"button",tabIndex:r?-1:0,"aria-pressed":i,onClick:D=>{D.target instanceof Element&&D.target.closest(".monitor-cycle")||r||p()},onKeyDown:D=>{D.target instanceof Element&&D.target.closest(".monitor-cycle")||r||(D.key==="Enter"||D.key===" ")&&(D.preventDefault(),p())},onDoubleClick:D=>{D.target instanceof Element&&D.target.closest(".monitor-cycle")||(D.preventDefault(),g())},onPointerLeave:D=>Se(D.currentTarget),children:[l.jsx("span",{className:`screen-content ${_?"has-frame":"is-empty"}`,children:l.jsx("canvas",{ref:le,className:`remote-canvas ${_?"has-frame":"is-empty"}`,tabIndex:r?0:-1,onPointerDown:D=>{r&&(D.preventDefault(),D.stopPropagation(),v(),D.currentTarget.focus(),D.currentTarget.setPointerCapture(D.pointerId),ie(D,"pointerdown"))},onPointerMove:D=>{r&&D.preventDefault(),ie(D,"pointermove")},onPointerUp:D=>{r&&(D.preventDefault(),D.stopPropagation(),ie(D,"pointerup"),D.currentTarget.hasPointerCapture(D.pointerId)&&D.currentTarget.releasePointerCapture(D.pointerId))},onPointerCancel:D=>{D.currentTarget.hasPointerCapture(D.pointerId)&&D.currentTarget.releasePointerCapture(D.pointerId)},onWheel:D=>{r&&(D.preventDefault(),b(n.deviceId,{type:"wheel",monitorIndex:q,...V(D),deltaX:D.deltaX,deltaY:D.deltaY,...z(D)}))},onKeyDown:D=>{r&&(D.preventDefault(),D.stopPropagation(),b(n.deviceId,{type:"keydown",monitorIndex:q,key:D.key,code:D.code,keyCode:D.keyCode||D.which||0,location:D.location,text:D.key.length===1?D.key:"",repeat:D.repeat,...z(D)}))},onKeyUp:D=>{r&&(D.preventDefault(),D.stopPropagation(),b(n.deviceId,{type:"keyup",monitorIndex:q,key:D.key,code:D.code,keyCode:D.keyCode||D.which||0,location:D.location,text:D.key.length===1?D.key:"",repeat:!1,...z(D)}))},onContextMenu:D=>r&&D.preventDefault()})}),!_&&l.jsx("span",{className:"empty-screen",children:l.jsx(en,{size:26})}),fe&&l.jsxs("span",{className:"wall-presentation-loading",role:"status","aria-live":"polite",children:[l.jsx("span",{className:"wall-presentation-spinner","aria-hidden":"true"}),l.jsx("strong",{children:"Preparing video"})]}),C&&l.jsxs("span",{className:`wall-update-status ${C==="updated"?"updated":""}`,role:"status","aria-live":"polite",children:[C==="updating"?l.jsx("span",{className:"wall-update-spinner","aria-hidden":"true"}):l.jsx(In,{size:20,"aria-hidden":"true"}),l.jsx("strong",{children:C==="updating"?"Updating...":"Updated"})]}),c&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:`tile-health-pill state-${H.state}`,children:H.label}),l.jsx("span",{className:"tile-metrics","aria-label":`${lr(n)} status`,children:F.map(D=>l.jsxs("span",{className:`tile-metric state-${D.state}`,children:[l.jsx("b",{children:D.label}),l.jsx("em",{children:D.value}),D.ratio!==void 0&&l.jsx("i",{style:{width:`${Math.round(D.ratio*100)}%`}})]},D.id))})]}),I&&l.jsxs("span",{className:"monitor-cycle","aria-label":`${lr(n)} display ${q+1} of ${m}`,onPointerDown:D=>D.stopPropagation(),onClick:D=>D.stopPropagation(),onDoubleClick:D=>D.stopPropagation(),children:[l.jsx("button",{className:"monitor-cycle-button previous",onClick:D=>{D.preventDefault(),D.stopPropagation(),w(-1),D.currentTarget.blur()},title:"Previous display",type:"button",children:l.jsx(gy,{size:18})}),l.jsxs("span",{className:"monitor-cycle-count",children:["Screen ",q+1,"/",m]}),l.jsx("button",{className:"monitor-cycle-button next",onClick:D=>{D.preventDefault(),D.stopPropagation(),w(1),D.currentTarget.blur()},title:"Next display",type:"button",children:l.jsx(kh,{size:18})})]}),i&&l.jsx("span",{className:"device-selection-check","aria-hidden":"true",children:l.jsx(Rc,{size:23,strokeWidth:3.5})})]})})}function GM({visible:n}){return f.useEffect(()=>{if(!n||!Um)return;if(!document.getElementById(qx)){const i=document.createElement("script");i.id=qx,i.async=!0,i.crossOrigin="anonymous",i.src=`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${encodeURIComponent(gh)}`,document.head.appendChild(i)}const a=window.setTimeout(()=>{try{window.adsbygoogle=window.adsbygoogle||[],window.adsbygoogle.push({})}catch{}},120);return()=>window.clearTimeout(a)},[n]),n?l.jsxs("aside",{className:`free-ad-banner ${Um?"adsense-ready":"house-ad"}`,"aria-label":"Advertisement",children:[l.jsx("span",{className:"ad-label",children:"Advertisement"}),Um?l.jsx("ins",{className:"adsbygoogle livedesk-ad-unit",style:{display:"block"},"data-ad-client":gh,"data-ad-slot":Aw,"data-ad-format":"auto","data-full-width-responsive":"true"}):l.jsxs("div",{className:"house-ad-copy",children:[l.jsx("strong",{children:"Sponsored placement"}),l.jsx("span",{children:"Local AI gear, mini PCs, GPUs, NAS, and developer tools."})]})]}):null}function VM(){const n=aM(),{session:a,loading:i}=C0(),{target:r,error:c,refresh:u}=k0(a),m=f.useMemo(()=>{if(!r?.active)return null;const x=r.expires_at?Date.parse(r.expires_at):Number.POSITIVE_INFINITY;return Number.isFinite(x)&&x<=Date.now()?null:r},[r]),p=f.useMemo(()=>Xv(m),[m]),v=f.useMemo(()=>p.length>0?[...new Set([...p,Sn])]:[Sn],[p]),[g,w]=f.useState(xM),y=f.useMemo(()=>v.some(x=>!!jc(x)),[v]),b=!y||g,{status:C,devices:k,error:A,refresh:T,hubBaseUrl:j}=j0(v,b),{entitlement:R,licensed:E,loading:H,error:F,refresh:q}=A0(a),[I,_]=f.useState([]),[fe,G]=f.useState(""),[ue,Y]=f.useState(""),[ae,le]=f.useState(""),[V,z]=f.useState(""),[K,Q]=f.useState(""),[P,ie]=f.useState("idle"),[Se,D]=f.useState(!1),[Z,ye]=f.useState(""),be=f.useRef("");be.current=V;const[de,Ne]=f.useState(!1),[Ie,re]=f.useState(!1),Ke=f.useRef(""),De=f.useRef(new Map),Qe=f.useRef(0),[ne,ge]=f.useState(""),[Re,te]=f.useState(""),[oe,Ae]=f.useState(null),Ce=f.useRef(null),st=f.useRef(0),me=f.useCallback(x=>{const N=String(x||"").trim();if(te(N),Ce.current!==null&&(window.clearTimeout(Ce.current),Ce.current=null),!N){Ae(null);return}const L=++st.current;Ae({id:L,message:N});const $=window.setTimeout(()=>{Ae(O=>O?.id===L?null:O),Ce.current===$&&(Ce.current=null)},5e3);Ce.current=$},[]);f.useEffect(()=>()=>{Ce.current!==null&&window.clearTimeout(Ce.current)},[]);const[He,_e]=f.useState("wall"),[Ge,aa]=f.useState("large"),[gn,An]=f.useState(qM),[Kn,Ci]=f.useState(!1),[Ta,Bn]=f.useState(!1),[dr,gs]=f.useState(!1),[mt,Mn]=f.useState(vM),[Me,ji]=f.useState(kM),[Je,fr]=f.useState(MM),[At,Ra]=f.useState(CM),[Gt,Qn]=f.useState(null),[ya,Ea]=f.useState([]),[Vt,Is]=f.useState(Me.fps),[vs,xs]=f.useState(""),[mr,hr]=f.useState(0),[Da,ys]=f.useState(()=>new Set),Nn=f.useRef(new Map),sa=f.useRef(new Map),tn=f.useRef(new Map),Bs=f.useRef(new Map),Tn=f.useRef(new Set),X=f.useRef(new Map),je=f.useRef(0),Le=f.useRef(""),We=f.useRef(""),xt=f.useRef(null),gt=f.useRef(new Map),Ue=f.useRef(null),dt=f.useRef(0),nn=f.useRef(new Map),[Ht,Rn]=f.useState({}),Mt=f.useRef(new Map),[$t,Et]=f.useState({}),[ws,vn]=f.useState(!1),Yt=f.useRef(null),bt=f.useRef(null),La=f.useRef(0),Ka=f.useRef(""),Qa=f.useRef(new Map),ki=f.useRef(new Map),Fs=f.useRef(performance.now()),bs=f.useRef(new Map),Fn=f.useRef(new Map),cn=f.useRef(new Map),pr=f.useRef(new Map),Ai=f.useRef(0),bl=f.useRef(0),Mi=f.useRef(0),Hs=f.useRef(0),fo=f.useRef(0),Xn=f.useRef(new Map),_a=f.useRef(new Map),[Ss,za]=f.useState(null),[Sl,gr]=f.useState(!1),[Ud,Cl]=f.useState([]),[jl,Bc]=f.useState("all"),[$s,Ni]=f.useState([]),[Gh,Vh]=f.useState(!1),[mo,Xa]=f.useState(!0),vr=f.useRef(null),xr=f.useRef(null),kl=f.useRef(null),Al=f.useRef(null),Fc=f.useRef(!1),Ti=f.useRef(!1),ho=f.useRef(0),Za=f.useRef(0),xn=f.useRef(0),Ml=He==="settings",Nl=He==="pricing",Ja=He==="doc",Us=He==="share-files",Ri=He==="agents",po=!Ml&&!Nl&&!Ja&&!Us&&!Ri,Ve=He==="control",nt=Me.frameMode==="mode4-h264-atlas",la=K||Je.frameMode,yn=la!=="mode3-h264-hw"?Math.min(30,Je.fps):Je.fps,Hn=la!=="mode3-h264-hw"?{maxWidth:Math.min(1920,Je.maxWidth),maxHeight:Math.min(1080,Je.maxHeight)}:{maxWidth:Je.maxWidth,maxHeight:Je.maxHeight};f.useEffect(()=>{if(C?.started){if(!a?.access_token){Be("/api/remote/license",{method:"DELETE"},j).catch(()=>{});return}Be("/api/remote/license/sync",{method:"POST",headers:{Authorization:`Bearer ${a.access_token}`}},j).catch(x=>{console.warn("[LiveDesk] Hub license sync failed",x)})}},[R?.updated_at,j,a?.access_token,C?.started]),f.useEffect(()=>{!a?.access_token||!C?.started||C.runtimeRole!=="hub"||!C.deviceId||(async()=>{try{const{data:x,error:N}=await ms.rpc("register_livedesk_device",{p_device_id:C.deviceId,p_device_name:C.deviceName||C.deviceId,p_role:"hub",p_assigned_hub_id:null,p_platform:navigator.platform||navigator.userAgent,p_os_version:navigator.userAgent,p_app_version:C.managerVersion||C.managerPackage||""}),L=Array.isArray(x)?x[0]:x;(N||L?.ok===!1)&&console.warn("[LiveDesk] Hub device role registration failed",N||L?.reason||"unknown-error")}catch(x){console.warn("[LiveDesk] Hub device role registration failed",x)}})()},[a?.access_token,C?.deviceId,C?.deviceName,C?.managerPackage,C?.managerVersion,C?.runtimeRole,C?.started]);const Xe=f.useMemo(()=>k.filter(x=>x.connected),[k]),Tl=jl==="all"?Xe.length:$s.filter(x=>Xe.some(N=>N.deviceId===x)).length,Pd=f.useMemo(()=>Xe.reduce((x,N)=>Math.max(x,ry(N.slotNumber)),0),[Xe]),Rl=Math.max(qA,Xe.length,Pd),Ps=f.useMemo(()=>{const x=Array(Rl).fill(null),N=[];for(const L of Xe){const $=ry(L.slotNumber);$>0&&$<=Rl&&!x[$-1]?x[$-1]=L:N.push(L)}for(const L of N){const $=x.findIndex(O=>!O);$<0?x.push(L):x[$]=L}return x},[Xe]),qs=f.useMemo(()=>Xe.map(x=>x.deviceId),[Xe]),es=f.useMemo(()=>new Set(I),[I]),ia=f.useMemo(()=>Xe.filter(x=>es.has(x.deviceId)),[Xe,es]),El=f.useMemo(()=>k.find(x=>x.deviceId===fe)||ia[0]||null,[k,fe,ia]),En=f.useMemo(()=>k.find(x=>x.deviceId===ue)||null,[ue,k]),yr=En?na(At[En.deviceId],Yn(En)):0,Te=Ve?En:El,Hc=f.useMemo(()=>new Set($s),[$s]),qd=f.useMemo(()=>jl==="all"?Xe.map(x=>x.deviceId):Xe.filter(x=>Hc.has(x.deviceId)).map(x=>x.deviceId),[Xe,Hc,jl]),Oa=f.useMemo(()=>Te?_w(Te):null,[Te]),Gd=Te?Mc(Te,"control"):!1,Vd=Te?.platform==="macos"&&Te.capabilities?.controlPermission===!1,Dl=Te?Mc(Te,"audio")||Mc(Te,"remoteAudio"):!1,Rt=E?R?.plan==="pro"?"pro":"ltd":"free",$c=er[Rt],wr=$c.limit,Gs=f.useMemo(()=>{if(!Number.isFinite(wr))return new Set(Xe.map(N=>N.deviceId));const x=Te?[Te,...Xe.filter(N=>N.deviceId!==Te.deviceId)]:Xe;return new Set(x.slice(0,wr).map(N=>N.deviceId))},[wr,Xe,Te]),go=!Te||Gs.has(Te.deviceId),Yd=Rt==="free",Wt=go,Ll=Rt==="ltd"?`Plus includes up to ${yc} workstations. Upgrade to Pro for commercial use and larger walls.`:`Free includes up to ${xc} workstations. Upgrade to Plus for ${yc} devices and no ads.`,Uc=Rt==="free",Pc=Wt&&!!Te,ts=Wt&&!!Te&&Gd,qc=Wt&&!!Te&&Dl,br=f.useMemo(()=>Ps.filter(x=>!!x?.connected).slice(0,TM(Ge)).map(x=>x.deviceId),[Ps,Ge]),Vs=f.useMemo(()=>nt?qs:Me.visibleOnlyLive?ya.length>0?ya:br:qs,[br,nt,ya,Me.visibleOnlyLive,qs]),Ia=f.useMemo(()=>Wm(Vs.filter(x=>Gs.has(x))),[Gs,Vs]),un=f.useMemo(()=>Ia.filter(x=>x!==vs),[Ia,vs]);f.useEffect(()=>{const x=new Set(Ia);ys(N=>{let L=!1;const $=new Set;for(const O of N)x.has(O)?$.add(O):L=!0;return L?$:N})},[Ia]);const Wd=f.useMemo(()=>{const x=O=>Xe.find(pe=>pe.deviceId===O)||null,N=O=>na(At[O],x(O)?Yn(x(O)):0),L=(O,pe=N(O))=>O===ae&&(P==="connecting"||P==="active"||P==="warm")?tn.current.get(O)||sa.current.get(O)||null:nt?gt.current.get(O)||Nn.current.get(O)||null:Nn.current.get(O)||null,$=(O,pe=N(O))=>{const ve=x(O);return`${ve?lr(ve):O} · Monitor ${pe+1}`};return{resolveCurrentTarget(){if(Ve&&En){const $e=yr;return{type:"control",deviceIds:[En.deviceId],monitorIndex:$e,label:`${lr(En)} · Monitor ${$e+1}`,sourceCanvas:L(En.deviceId,$e),signature:`control:${En.deviceId}:${$e}:${Je.frameMode}`}}const O=ia.map($e=>$e.deviceId).filter($e=>un.includes($e)),pe=El&&un.includes(El.deviceId)?El.deviceId:"",ve=O.length>0?O:pe?[pe]:un,Ee=O.length===0&&!pe;if(ve.length===0)return null;if(ve.length===1){const $e=ve[0],Ye=N($e);return{type:Ee?"wall":O.length>1?"selection":"device",deviceIds:ve,monitorIndex:Ye,label:Ee?"Wall":$($e,Ye),sourceCanvas:Ee?null:L($e,Ye),signature:`${Ee?"wall":"device"}:${$e}:${Ye}:${nt?"atlas":"direct"}`}}return{type:O.length>1?"selection":"wall",deviceIds:ve,label:O.length>1?`${ve.length} selected workstations`:"Wall",sourceCanvas:null,signature:`${O.length>1?"selection":"wall"}:${ve.join(",")}:${Ge}`}},getDeviceCanvas:L,composeWall(O,pe={}){return DA(O.map(ve=>{const Ee=N(ve);return{deviceId:ve,label:$(ve,Ee),canvas:L(ve,Ee)}}),pe)}}},[Xe,En,ae,P,Je.frameMode,Nn,nt,At,yr,ia,Ve,un,El,Ge]),Gc=PA({hubUrl:j,sourceRegistry:Wd,onToast:me}),Cs=f.useMemo(()=>Wt&&ae&&Gs.has(ae)&&(P==="connecting"||P==="active"||P==="warm")?[ae]:[],[ae,P,Wt,Gs]),Ei=f.useMemo(()=>Wm([...Ia,...Cs]),[Cs,Ia]),Kt=f.useMemo(()=>RM(Me,Ge),[Me,Ge]),js=f.useCallback((x,N)=>{if(x.width<=0||x.height<=0)return!1;(N.width!==x.width||N.height!==x.height)&&(N.width=x.width,N.height=x.height);const L=N.getContext("2d",{alpha:!1});return L?(L.imageSmoothingEnabled=!0,L.imageSmoothingQuality="high",L.drawImage(x,0,0,x.width,x.height,0,0,N.width,N.height),!0):!1},[]),Di=f.useCallback(x=>{x&&ys(N=>{if(N.has(x))return N;const L=new Set(N);return L.add(x),L})},[]),Li=f.useCallback(x=>{x&&ys(N=>{if(!N.has(x))return N;const L=new Set(N);return L.delete(x),L})},[]),Ba=f.useCallback((x,N=!1)=>{if(!Tn.current.has(x))return!1;const L=performance.now(),$=X.current.get(x)||0;if(!N&&L-$<150)return!1;const O=tn.current.get(x)||sa.current.get(x),pe=nt?gt.current.get(x):Nn.current.get(x);return!O||!pe||!js(O,pe)?!1:(X.current.set(x,L),Di(x),!0)},[Di,nt,js]);f.useEffect(()=>{Le.current=vs},[vs]);const Vc=f.useCallback((x,N)=>{const L=Nn.current.get(x);if(L&&L!==N&&fc(L),N){Nn.current.set(x,N),Ba(x,!0);return}Nn.current.delete(x),Li(x)},[Li,Ba]),_l=f.useCallback((x,N)=>{const L=sa.current.get(x);if(L&&L!==N&&fc(L),N){sa.current.set(x,N);const $=tn.current.get(x);$&&js($,N);return}sa.current.delete(x)},[js]),Sr=f.useCallback((x,N,L)=>{const $=performance.now(),O=fs(x,L.deviceId);let pe=L;if(x==="control"&&L.visualChanged){const Ee=D0(L.deviceId),$e=Xn.current.get(L.deviceId)||0,Ye=Ee?$-Ee.sentAt:Number.POSITIVE_INFINITY;Ee&&Ee.inputSeq>$e&&Ye<=Gx&&(pe={...L,inputFeedbackSeq:Ee.inputSeq,inputFeedbackMs:Math.max(0,Ye),inputFeedbackAt:$},Xn.current.set(L.deviceId,Ee.inputSeq))}ki.current.set(O,$);const ve=nn.current.get(O)||{totalFrames:0,totalChangedFrames:0,sampleFrames:0,sampleChangedFrames:0,sampleStartedAt:$,intervalCount:0,intervalSumMs:0,minIntervalMs:Number.POSITIVE_INFINITY,maxIntervalMs:0,intervalSamplesMs:[],seqGapCount:0,maxSeqGap:0,sampleDecoderInputBase:0,sampleDecoderOutputBase:0};x==="control"&&pe.inputFeedbackMs===void 0&&ve.lastInfo?.inputFeedbackMs!==void 0&&ve.lastInfo.inputFeedbackAt!==void 0&&$-ve.lastInfo.inputFeedbackAt<=Gx&&(pe={...pe,inputFeedbackSeq:ve.lastInfo.inputFeedbackSeq,inputFeedbackMs:ve.lastInfo.inputFeedbackMs,inputFeedbackAt:ve.lastInfo.inputFeedbackAt}),ve.totalFrames+=1,ve.sampleFrames+=1,Qx(ve,$,pe.frameSeq),pe.visualChanged&&(ve.totalChangedFrames+=1,ve.sampleChangedFrames+=1),ve.lastInfo=pe,nn.current.set(O,ve)},[]),Cr=f.useCallback((x,N)=>{Sr("wall",x,N),x.kind==="live"&&Di(x.deviceId);const L=Se&&ae===x.deviceId;Le.current!==x.deviceId&&!L&&(Tn.current.delete(x.deviceId),X.current.delete(x.deviceId))},[ae,Se,Di,Sr]),Yc=f.useCallback((x,N)=>{Sr("control",x,N),ye(pe=>pe&&"");const L=tn.current.get(x.deviceId),$=sa.current.get(x.deviceId);L&&L.width>0&&L.height>0&&($&&js(L,$),Bs.current.set(x.deviceId,{...x,payload:new ArrayBuffer(0),byteLength:0}),Tn.current.add(x.deviceId),x.deviceId===ae&&(D(!0),ie(pe=>pe==="connecting"?"active":pe)),Ba(x.deviceId));const O=Yt.current;!O||!nM(O,x)||vn(!0)},[ae,js,Ba,Sr]);f.useEffect(()=>{const x=window.setInterval(()=>{const N=performance.now(),L={};for(const[$,O]of nn.current.entries()){const pe=Math.max(1,N-O.sampleStartedAt);L[$]={totalFrames:O.totalFrames,totalChangedFrames:O.totalChangedFrames,framesPerSecond:O.sampleFrames*1e3/pe,changedFramesPerSecond:O.sampleChangedFrames*1e3/pe,averageIntervalMs:O.intervalCount>0?O.intervalSumMs/O.intervalCount:0,minIntervalMs:Number.isFinite(O.minIntervalMs)?O.minIntervalMs:0,maxIntervalMs:O.maxIntervalMs,p95IntervalMs:xd(O.intervalSamplesMs,.95),intervalCount:O.intervalCount,seqGapCount:O.seqGapCount,maxSeqGap:O.maxSeqGap,decoderInputFps:Math.max(0,(Number(O.lastInfo?.decoderInputCount||0)-O.sampleDecoderInputBase)*1e3/pe),decoderOutputFps:Math.max(0,(Number(O.lastInfo?.decoderOutputCount||0)-O.sampleDecoderOutputBase)*1e3/pe),sampleMs:pe,lastInfo:O.lastInfo},O.sampleDecoderInputBase=Number(O.lastInfo?.decoderInputCount||0),O.sampleDecoderOutputBase=Number(O.lastInfo?.decoderOutputCount||0),O.sampleChangedFrames=0,Kx(O,N)}Rn(L)},1e3);return()=>window.clearInterval(x)},[]);const Ys=f.useCallback((x,N)=>{const L=performance.now(),$=fs(x,N.deviceId);Qa.current.set($,L),_a.current.delete($),x==="control"&&Fn.current.delete($);const O=Mt.current.get($)||{totalFrames:0,sampleFrames:0,sampleStartedAt:L,intervalCount:0,intervalSumMs:0,minIntervalMs:Number.POSITIVE_INFINITY,maxIntervalMs:0,intervalSamplesMs:[],seqGapCount:0,maxSeqGap:0,sampleBytes:0,sampleH264Frames:0,sampleTinyFrames:0,sampleRepeatedFrames:0,sourceSendIntervalsMs:[]};if(O.totalFrames+=1,O.sampleFrames+=1,O.sampleBytes+=Math.max(0,Number(N.byteLength||0)),String(N.frameMode||N.mode||N.codec||N.mimeType||"").toLowerCase().includes("h264")){O.sampleH264Frames+=1,Number(N.byteLength||0)<=JA&&(O.sampleTinyFrames+=1);const $e=String(N.contentHash||"");$e&&O.lastContentHash===$e&&(O.sampleRepeatedFrames+=1),O.lastContentHash=$e}const Ee=Number(N.agentSendGapMs||0);Ee>0&&Ee<1e3&&Ph(O.sourceSendIntervalsMs,Ee),O.lastFrame=N,Qx(O,L,N.frameSeq),Mt.current.set($,O)},[]);f.useEffect(()=>{const x=window.setInterval(()=>{const N=performance.now(),L={};for(const[$,O]of Mt.current.entries()){const pe=Math.max(1,N-O.sampleStartedAt);L[$]={totalFrames:O.totalFrames,framesPerSecond:O.sampleFrames*1e3/pe,averageIntervalMs:O.intervalCount>0?O.intervalSumMs/O.intervalCount:0,minIntervalMs:Number.isFinite(O.minIntervalMs)?O.minIntervalMs:0,maxIntervalMs:O.maxIntervalMs,p95IntervalMs:xd(O.intervalSamplesMs,.95),intervalCount:O.intervalCount,seqGapCount:O.seqGapCount,maxSeqGap:O.maxSeqGap,averageFrameBytes:O.sampleFrames>0?O.sampleBytes/O.sampleFrames:0,tinyFrameRatio:O.sampleH264Frames>0?O.sampleTinyFrames/O.sampleH264Frames:0,repeatedFrameRatio:O.sampleH264Frames>0?O.sampleRepeatedFrames/O.sampleH264Frames:0,sourceSendAverageMs:O.sourceSendIntervalsMs.length>0?O.sourceSendIntervalsMs.reduce((ve,Ee)=>ve+Ee,0)/O.sourceSendIntervalsMs.length:0,sourceSendP95Ms:xd(O.sourceSendIntervalsMs,.95),sourceSendSampleCount:O.sourceSendIntervalsMs.length,sampleMs:pe,lastFrame:O.lastFrame},O.sampleBytes=0,O.sampleH264Frames=0,O.sampleTinyFrames=0,O.sampleRepeatedFrames=0,O.sourceSendIntervalsMs.length=0,Kx(O,N)}Et(L)},1e3);return()=>window.clearInterval(x)},[]);const vo=f.useCallback(x=>{Ys("wall",x);const N=Nn.current.get(x.deviceId);N&&Tm(N,x,()=>Nn.current.get(x.deviceId)!==N,Cr,Me.h264DecodeAcceleration).catch(()=>{})},[Cr,Ys,Me.h264DecodeAcceleration]),zl=f.useCallback(x=>{Ys("control",x);let N=tn.current.get(x.deviceId);N||(N=document.createElement("canvas"),N.setAttribute("aria-hidden","true"),tn.current.set(x.deviceId,N));const L=N,$=be.current;Tm(L,x,()=>tn.current.get(x.deviceId)!==L,Yc,Je.h264DecodeAcceleration,"interactive").catch(O=>{be.current!==$||tn.current.get(x.deviceId)!==L||ae!==x.deviceId||ye(O instanceof Error?O.message:String(O||"Control H.264 decode failed"))})},[ae,Je.h264DecodeAcceleration,Yc,Ys]),_i=f.useCallback(x=>{const N=xt.current;N&&N!==x&&fc(N),xt.current=x,Ai.current=0,bl.current=0,Mi.current=0,Hs.current=0,fo.current=0,dt.current=0},[]),Ol=f.useCallback(()=>{const x=xt.current,N=Ue.current;if(!(!x||!N||x.width<=0||x.height<=0||dt.current!==N.layoutVersion))for(const L of N.tiles){const $=gt.current.get(L.deviceId);if(!$||L.width<=0||L.height<=0)continue;const O=Math.max(1,Math.round(L.width)),pe=Math.max(1,Math.round(L.height)),ve=eM,Ee=tM;($.width!==ve||$.height!==Ee)&&($.width=ve,$.height=Ee);const $e=$.getContext("2d",{alpha:!1});if($e){$e.imageSmoothingEnabled=!0,$e.imageSmoothingQuality="high";try{$e.drawImage(x,Math.round(L.x),Math.round(L.y),O,pe,0,0,ve,Ee)}catch{}}}},[]),jr=f.useCallback((x,N)=>{if(N){gt.current.set(x,N),window.requestAnimationFrame(Ol),window.requestAnimationFrame(()=>Ba(x,!0));return}gt.current.delete(x),Li(x)},[Li,Ol,Ba]),xo=f.useCallback((x,N)=>{Mi.current=performance.now(),dt.current=Number(x.layoutVersion||0),Ol();const L=Ue.current?.tiles||[],$=L.length>0?Math.round(x.byteLength/L.length):x.byteLength;for(const O of L){const pe={...x,deviceId:O.deviceId,width:O.width,height:O.height,sourceWidth:O.width,sourceHeight:O.height,byteLength:$};Cr(pe,{...N,deviceId:O.deviceId,width:O.width,height:O.height,byteLength:$}),Le.current===O.deviceId&&Ba(O.deviceId,!0)}},[Cr,Ol,Ba]),Wc=f.useCallback(x=>{const N=performance.now();Ai.current<=0&&(Ai.current=N),bl.current=N;const L=xt.current;if(!L)return;const $=Ue.current?.tiles||[],O=$.length>0?Math.round(x.byteLength/$.length):x.byteLength;for(const pe of $)Ys("wall",{...x,deviceId:pe.deviceId,width:pe.width,height:pe.height,sourceWidth:pe.width,sourceHeight:pe.height,byteLength:O});Tm(L,x,()=>xt.current!==L,xo).catch(()=>{})},[xo,Ys]),yo=f.useMemo(()=>({fps:Vt,maxWidth:Kt.maxWidth,maxHeight:Kt.maxHeight,quality:Me.quality,mode:Me.frameMode,frameMode:Me.frameMode,streamPurpose:"wall",monitorSelections:At,onFrame:vo}),[Vt,vo,Kt,At,Me]),wo=f.useMemo(()=>({fps:yn,maxWidth:Hn.maxWidth,maxHeight:Hn.maxHeight,quality:Je.quality,mode:la,frameMode:la,streamPurpose:"control",forceRestart:V!=="",forceRestartToken:V,restartReason:V?"control-session-start":"",monitorSelections:At,onFrame:zl}),[V,Je.quality,zl,yn,la,Hn.maxHeight,Hn.maxWidth,At]),{frames:bo,state:Il,error:So,stats:ks,restartLive:kr}=tx(nt?[]:un,!nt&&Me.autoStartLive&&un.length>0,j,yo),{frame:Bl,layout:Ws,state:Co,stats:Zn,refreshInputs:Fl}=L0(Vs,nt&&Me.autoStartLive&&Vs.length>0,j,{fps:20,width:1920,height:1080,tileWidth:Kt.maxWidth,tileHeight:Kt.maxHeight,captureDeviceIds:un,monitorSelections:At,onFrame:Wc});f.useEffect(()=>{Ue.current=Ws,Ws&&window.requestAnimationFrame(Ol)},[Ws,Ol]),f.useEffect(()=>{if(!nt||Co!=="open"){Ai.current=0,bl.current=0,Mi.current=0;return}const x=window.setInterval(()=>{const N=xt.current,L=performance.now();if(!N||document.visibilityState!=="visible"||L-Fs.current<Pm)return;const $=bl.current,O=Ai.current;if($<=0||O<=0||L-$>500)return;const pe=Mi.current||O,ve=L-pe;if(ve>=KA&&L-fo.current>=XA){Mm(N)&&(fo.current=L,Hs.current=L);return}ve>=WA&&L-Hs.current>=QA&&c0(N)&&(Hs.current=L)},250);return()=>window.clearInterval(x)},[Co,nt]);const{frames:Ar,state:Mr,error:Hl,stats:Kc,restartLive:$l,reconnectLive:Qc}=tx(Cs,Cs.length>0,j,wo),ns=f.useMemo(()=>{const x=new Map(bo);if(nt&&Bl){const N=new Map((Ws?.tiles||[]).map($=>[$.deviceId,$])),L=Math.max(1,N.size);for(const $ of Vs){const O=N.get($);x.set($,{...Bl,deviceId:$,width:O?.width||Kt.maxWidth,height:O?.height||Kt.maxHeight,sourceWidth:O?.width||Kt.maxWidth,sourceHeight:O?.height||Kt.maxHeight,byteLength:Math.round(Bl.byteLength/L)})}}for(const[N,L]of Ar.entries())x.set(N,L);for(const N of Vs){if(!Tn.current.has(N)||x.has(N))continue;const L=Bs.current.get(N);L&&x.set(N,L)}return x},[Bl,Ws,Ar,Kt,nt,bo,Vs,mr]),zi=Ve&&Cs.length>0?Mr:nt?Co:Il,Ks=Ve&&Cs.length>0?Kc:nt?Zn:ks;f.useCallback((x,N="browser-stale")=>{const L=kr(x,N),$=$l(x,N);return L||$},[$l,kr]),f.useEffect(()=>{nt&&!Ve&&Fl()},[nt,Fl,Ve]);const Ul=f.useCallback((x,N,L)=>{const $=N==="control"?tn.current.get(x)||null:Nn.current.get(x)||null;if(!$||!Mm($))return!1;const O=performance.now();return pr.current.set(fs(N,x),O),!0},[]),Oi=f.useCallback(x=>{if(la!=="mode3-h264-hw"||!ae||K)return!1;const N=Xe.find($e=>$e.deviceId===ae)||En,L=String(N?.platform||"").toLowerCase(),$=["win32","windows","win32nt"].includes(L)?"mode5-lzo-delta":"mode2-lzo",O=fs("control",ae),pe=performance.now();cn.current.set(O,pe),Qa.current.delete(O),ki.current.delete(O),bs.current.delete(O),Fn.current.delete(O),_a.current.delete(O),Mm(tn.current.get(ae)||null),Qc([ae],"control-decode-fallback"),Q($),z(`control-${$}-fallback-${ae}-${Date.now()}`),D(!1),vn(!1);const ve=x==="no first frame"||x==="control-first-frame-timeout",Ee=$==="mode5-lzo-delta"?"Mode 5":"Mode 2";return ye($e=>$e||(ve?`Control frame transport timeout; retrying Control with ${Ee} (${x})`:`H.264 decode failed; retrying Control with ${Ee} (${x})`)),ie("connecting"),!0},[Xe,En,ae,K,la,Qc]);f.useEffect(()=>{const x=Ve?En:null;if(x){Yt.current={deviceId:x.deviceId,monitorIndex:yr,frameMode:la,startedAtEpochMs:Date.now()},vn(ae===x.deviceId&&Se);return}Yt.current=null,vn(!1)},[En?.sessionId,ue,ae,Se,la,yr,Ve]);const as=f.useCallback(async x=>{const N=nt,L=k.find(ve=>ve.deviceId===x),$=na(At[x],L?Yn(L):1),O=N?{fps:8,maxWidth:Kt.maxWidth,maxHeight:Kt.maxHeight,quality:60,mode:"mode2-lzo",frameMode:"mode2-lzo",streamPurpose:"atlas",monitorIndex:$}:{fps:Vt,maxWidth:Kt.maxWidth,maxHeight:Kt.maxHeight,quality:Me.quality,mode:Me.frameMode,frameMode:Me.frameMode,streamPurpose:"wall",monitorIndex:$},pe=await Be(`/api/remote/devices/${encodeURIComponent(x)}/live/start`,{method:"POST",body:JSON.stringify(O)},j);if(pe?.ok===!1)throw new Error(pe.error||"wall-stream-start-failed");return pe},[Vt,k,Kt.maxHeight,Kt.maxWidth,j,nt,At,Me.frameMode,Me.quality]),Qs=f.useCallback(async x=>{const N=await Be(`/api/remote/devices/${encodeURIComponent(x)}/live/stop`,{method:"POST",body:JSON.stringify({streamPurpose:nt?"atlas":"wall",reason:"control-active"})},j);if(N?.ok===!1)throw new Error(N.error||"wall-stream-stop-failed");return N},[j,nt]),As=f.useCallback(async(x,N="control-session-stop")=>{const L=await Be(`/api/remote/devices/${encodeURIComponent(x)}/live/stop`,{method:"POST",body:JSON.stringify({streamPurpose:"control",reason:N})},j);if(L?.ok===!1)throw new Error(L.error||"control-stream-stop-failed");return L},[j]),Xs=f.useCallback(x=>{const N=tn.current.get(x);N&&(fc(N),tn.current.delete(x));const L=sa.current.get(x);L&&fc(L),Bs.current.delete(x),Tn.current.delete(x),X.current.delete(x)},[]);f.useEffect(()=>{if(!Ve)return;const x=ue&&Xe.find(O=>O.deviceId===ue)||null;if(!Wt||!x)return;if(ae===x.deviceId&&(P==="active"||P==="warm"||P==="connecting")){ie(O=>O==="warm"?"active":O);return}if(Ka.current===x.deviceId)return;const N=++La.current,L=ae;Ka.current=x.deviceId,(async()=>{if(L){if(ie("stopping"),await As(L,"control-session-switch").catch(()=>{}),N!==La.current)return;Xs(L)}if(N!==La.current)return;const O=fs("control",x.deviceId),pe=`control-session-${N}-${x.deviceId}`;cn.current.set(O,performance.now()),Qa.current.delete(O),ki.current.delete(O),_a.current.delete(O),Fn.current.delete(O),Q(""),ye(""),z(pe),le(x.deviceId),D(!1),ie("connecting"),La.current===N&&Ka.current===x.deviceId&&(Ka.current="")})()},[Xe,ue,ae,P,Wt,Xs,Ve,As]),f.useEffect(()=>{if(!ae||Xe.some(L=>L.deviceId===ae))return;const x=ae,N=++La.current;ie("stopping"),As(x,"control-device-disconnected").catch(()=>{}).finally(()=>{N===La.current&&(Xs(x),D(!1),z(""),Q(""),ye(""),le(L=>L===x?"":L),ie("idle"))})},[Xe,ae,Xs,As]),f.useEffect(()=>{if(bt.current!==null&&(window.clearTimeout(bt.current),bt.current=null),!ae||P==="idle"||P==="stopping"||P==="error"||Ve||He==="wall"){ae&&!Ve&&He==="wall"&&ie(L=>L==="warm"||L==="active"?"active":L);return}ie(L=>L==="idle"||L==="stopping"?L:"warm");const x=ae,N=++La.current;return bt.current=window.setTimeout(()=>{bt.current=null,ie("stopping"),As(x,"control-session-warm-timeout").catch(()=>{}).finally(()=>{N===La.current&&(Xs(x),D(!1),z(""),Q(""),ye(""),le(L=>L===x?"":L),ie("idle"))})},ZA),()=>{bt.current!==null&&(window.clearTimeout(bt.current),bt.current=null)}},[He,ae,P,Xs,Ve,As]),f.useEffect(()=>()=>{bt.current!==null&&window.clearTimeout(bt.current)},[]),f.useEffect(()=>{const x=++je.current,N=Se&&(P==="active"||P==="warm")&&ae?ae:"",L=Le.current;if(We.current||!N&&!L||N&&N===L)return;(async()=>{We.current=N||L;try{if(L&&L!==N){if(await as(L),x!==je.current)return;Le.current="",xs("")}if(!N||x!==je.current)return;if(await Qs(N),x!==je.current){await as(N).catch(()=>{});return}Le.current=N,xs(N),Tn.current.add(N),me(L&&L!==N?`Wall paused for Control: ${N}`:"")}catch(O){x===je.current&&me(O instanceof Error?O.message:String(O))}finally{We.current===(N||L)&&(We.current="")}})()},[ae,Se,P,nt,as,Qs]);const{state:Fa,sendInput:Pl,stats:wa,error:jo}=_0(ts&&de,j),{state:ko,lastFrame:Xc,stats:Dn,error:Ao}=P0(Te?.deviceId||"",qc&&Ie,j),Nr=f.useRef(new Map);f.useEffect(()=>{const x=[["hub",A],["registry",c],["license",F],["wall-stream",So],["control-stream",Hl],["control-decode",Z],["remote-input",jo],["remote-audio",Ao]];for(const[N,L]of x){const $=String(L||"").trim();if(!$){Nr.current.delete(N);continue}Nr.current.get(N)!==$&&(Nr.current.set(N,$),me($))}},[Ao,Z,Hl,A,jo,F,c,me,So]),f.useEffect(()=>{if(!Ve||!de||!ts||!Te)return;const x=($,O)=>{const pe=$.target,ve=pe?.tagName?.toLowerCase();pe?.isContentEditable||ve==="input"||ve==="textarea"||ve==="select"||($.preventDefault(),$.stopPropagation(),Pl(Te.deviceId,{type:O,monitorIndex:na(At[Te.deviceId],Yn(Te)),key:$.key,code:$.code,keyCode:$.keyCode||$.which||0,location:$.location,text:$.key.length===1?$.key:"",repeat:O==="keydown"?$.repeat:!1,shiftKey:$.shiftKey,ctrlKey:$.ctrlKey,altKey:$.altKey,metaKey:$.metaKey}))},N=$=>x($,"keydown"),L=$=>x($,"keyup");return window.addEventListener("keydown",N),window.addEventListener("keyup",L),()=>{window.removeEventListener("keydown",N),window.removeEventListener("keyup",L)}},[ts,de,At,Te,Pl,Ve]),f.useEffect(()=>{const x=()=>{document.visibilityState==="visible"&&(Fs.current=performance.now())};return document.addEventListener("visibilitychange",x),window.addEventListener("pageshow",x),()=>{document.removeEventListener("visibilitychange",x),window.removeEventListener("pageshow",x)}},[]),f.useEffect(()=>{if(!ae||P!=="connecting"&&P!=="active"&&P!=="warm"||Mr!=="open")return;const x=ae,N=fs("control",x),L=window.setInterval(()=>{const $=performance.now();if(document.visibilityState!=="visible"||$-Fs.current<Pm)return;const O=Qa.current.get(N)||0,pe=ki.current.get(N)||0,ve=bs.current.get(N)||0,Ee=cn.current.get(N)||$;cn.current.has(N)||cn.current.set(N,Ee);const $e=O<=0,Ye=$e?$-Ee>rM:$-O>ty,Dt=O>0&&(pe<=0||$-pe>ty);if(!Ye&&Dt){const Ds=pr.current.get(N)||0;$-Ds>=ny&&Ul(x,"control","decoder-paint-stale");return}if(!Ye)return;const wn=Fn.current.get(N)||0;if(wn>0){if($-wn<cM)return;Fn.current.delete(N)}const Ln=_a.current.get(N)||0;if(Ln>=uM){if(Oi($e?"no first frame":"stale stream"))return;D(!1),vn(!1),ie("error");return}if($-ve<ay(oM,Ln))return;$l([x],$e?"control-first-frame-timeout":"control-receive-stale")&&(bs.current.set(N,$),Fn.current.set(N,$),cn.current.set(N,$),_a.current.set(N,Ln+1))},650);return()=>window.clearInterval(L)},[Mr,ae,P,Oi,Ul,$l]),f.useEffect(()=>{!Z||la!=="mode3-h264-hw"||Oi(Z)},[Z,la,Oi]),f.useEffect(()=>{!Ve||!ae||!Hl||ie(x=>x==="error"?x:"error")},[Hl,ae,Ve]),f.useEffect(()=>{if(nt||Il!=="open"||!Me.autoStartLive||un.length===0)return;const x=window.setInterval(()=>{const N=performance.now();if(document.visibilityState!=="visible"||N-Fs.current<Pm)return;const L=1e3/Math.max(1,Vt||Me.fps||1),$=Math.max(dM,Math.ceil(L*4)),O=[];for(const pe of un){if(O.length>=hM)break;const ve=fs("wall",pe),Ee=Qa.current.get(ve)||0;if(Ee<=0)continue;const $e=bs.current.get(ve)||0,Ye=ki.current.get(ve)||0,Dt=N-Ee>$,wn=Ye<=0||N-Ye>$;if(!Dt&&wn){const oa=pr.current.get(ve)||0;N-oa>=ny&&Ul(pe,"wall","decoder-paint-stale");continue}if(!Dt)continue;const Ln=_a.current.get(ve)||0;N-$e>=ay(fM,Ln)&&O.push(pe)}if(O.length>0&&kr(O,"wall-frame-stale"))for(const pe of O){const ve=fs("wall",pe);bs.current.set(ve,N),_a.current.set(ve,(_a.current.get(ve)||0)+1)}},mM);return()=>window.clearInterval(x)},[Vt,nt,Ul,kr,Me.autoStartLive,Me.fps,un,Il]),f.useEffect(()=>{Is(Me.fps),Za.current=Date.now(),xn.current=0},[Me.fps,Me.frameMode,Me.adaptiveLoadShedding]),f.useEffect(()=>{e0({h264DecodeAcceleration:Me.h264DecodeAcceleration})},[Me.h264DecodeAcceleration]),f.useEffect(()=>{if(!Wt||Ve||!Me.visibleOnlyLive){Ea([]);return}const x=vr.current;if(!x||typeof IntersectionObserver>"u"){Ea(br);return}const N=Array.from(x.querySelectorAll("[data-live-device-id]"));if(N.length===0){Ea([]);return}const L=new Map,$=()=>{const pe=Wm(N.map(ve=>String(ve.dataset.liveDeviceId||"")).filter(ve=>(L.get(ve)||0)>0));Ea(ve=>Ym(ve,pe)?ve:pe)},O=new IntersectionObserver(pe=>{for(const ve of pe){const Ee=String(ve.target.dataset.liveDeviceId||"");Ee&&L.set(Ee,ve.isIntersecting?ve.intersectionRatio||.01:0)}$()},{root:null,rootMargin:Wn.visibleRootMargin,threshold:[0,.01,.2,.6,1]});return N.forEach(pe=>O.observe(pe)),$(),()=>O.disconnect()},[br,Wt,Ve,Ps,Me.visibleOnlyLive,Ge]),f.useEffect(()=>{if(nt||!Me.adaptiveLoadShedding||!Me.autoStartLive||un.length===0)return;const x=Me.fps;if(un.length<=Wn.preserveConfiguredFpsDeviceCount){Vt!==x&&(Is(x),Za.current=Date.now(),xn.current=0);return}if(Il!=="open"||ks.sampleMs<500)return;const N=Date.now(),L=un.length*Vt,$=ks.framesPerSecond,O=ks.bytesPerSecond,pe=Math.max(0,...un.map(Dt=>$t[fs("wall",Dt)]?.maxIntervalMs||0)),ve=Math.max(0,...un.map(Dt=>Ht[fs("wall",Dt)]?.maxIntervalMs||0)),Ee=L>8&&$>0&&$<L*.72;if($>Wn.maxWallFramesPerSecond||O>Wn.maxWallBytesPerSecond||pe>Wn.maxFrameGapMs||ve>Wn.maxFrameGapMs||Ee){xn.current=0;const Dt=Wn.minFps;if(N-Za.current>=Wn.downshiftCooldownMs&&Vt>Dt){const wn=Math.max(Dt,EM(Vt,Dt));wn<Vt&&(Is(wn),Za.current=N)}return}const Ye=$<Wn.maxWallFramesPerSecond*Wn.lowLoadFrameRatio&&O<Wn.maxWallBytesPerSecond*Wn.lowLoadByteRatio;if(!Ye||Vt>=x){Ye||(xn.current=0);return}if(!xn.current){xn.current=N;return}if(N-xn.current>=Wn.recoveryCooldownMs){const Dt=Math.min(x,DM(Vt,x));Dt>Vt&&(Is(Dt),Za.current=N,xn.current=0)}},[Vt,nt,Ht,$t,un.length,un,Il,ks.bytesPerSecond,ks.framesPerSecond,ks.lastUpdatedAt,ks.sampleMs,Me.adaptiveLoadShedding,Me.autoStartLive,Me.frameMode,Me.fps]),f.useEffect(()=>{const x=new URLSearchParams(window.location.search).get("checkout");if(x==="success"){me("Checkout returned. Waiting for Dodo confirmation."),q();const N=window.setInterval(()=>{q()},4e3),L=window.setTimeout(()=>{window.clearInterval(N)},45e3);return()=>{window.clearInterval(N),window.clearTimeout(L)}}x==="cancelled"&&me("Checkout cancelled.")},[q]),f.useEffect(()=>{!Wt&&de&&Ne(!1),!Wt&&Ie&&re(!1)},[Ie,de,Wt]),f.useEffect(()=>{const x=Te?.deviceId||"",N=Ke.current;if(Ke.current=x,!N||N===x)return;const L=++Qe.current,$=x?`audio-${Date.now()}-${Math.random().toString(36).slice(2,8)}`:"";x&&Ie&&De.current.set(x,$);let O=!0;return(async()=>{try{const ve=De.current.get(N);if(De.current.delete(N),await Be(`/api/remote/devices/${encodeURIComponent(N)}/audio/stop`,{method:"POST",body:JSON.stringify(ve?{streamId:ve}:{})},j),!O||L!==Qe.current||!Ie||!x||!Wt||!Dl)return;const Ee=await Be(`/api/remote/devices/${encodeURIComponent(x)}/audio/start`,{method:"POST",body:JSON.stringify({streamId:$,mimeType:"audio/pcm;format=f32le",sampleRate:48e3,channels:2})},j);if(Ee.ok===!1)throw new Error(Ee.error||"Remote audio start failed.")}catch(ve){O&&(De.current.delete(x),re(!1),me(ve instanceof Error?ve.message:String(ve)))}})(),()=>{O=!1}},[Ie,Wt,j,Dl,Te?.deviceId]),f.useEffect(()=>{const x=Xe.map($=>$.deviceId),N=new Set(x),L=new Map(Xe.map($=>[$.deviceId,$]));_($=>{const O=$.filter(pe=>N.has(pe));return Ym($,O)?$:O}),G($=>$&&N.has($)?$:""),Y($=>$&&N.has($)?$:""),Ra($=>{let O=!1;const pe={};for(const[ve,Ee]of Object.entries($)){const $e=L.get(ve);if(!$e){pe[ve]=Ee;continue}const Ye=na(Ee,$e?Yn($e):1);pe[ve]=Ye,Ye!==Ee&&(O=!0)}return O?pe:$}),Ni($=>{const O=$.filter(pe=>N.has(pe));return Ym($,O)?$:O})},[Xe,Rl]),f.useEffect(()=>{Cl([]),Xa(!1)},[Ba]),f.useEffect(()=>{!Us||jl!=="selected"||$s.length>0||ia.length===0||Ni(ia.map(x=>x.deviceId))},[ia,$s.length,jl,Us]),f.useEffect(()=>{try{localStorage.setItem(ww,mt)}catch{}},[mt]),f.useEffect(()=>{AM(Me)},[Me]),f.useEffect(()=>{NM(Je)},[Je]),f.useEffect(()=>{jM(At)},[At]);const Ii=f.useCallback(async()=>{const x=new Set(v);x.add(Sn);try{const pe=await Be("/api/remote/status",void 0,Sn);Xv({endpoint:pe.agentEndpoint,endpoint_candidates:[...pe.agentEndpointCandidates||[],...pe.hostTargetEndpointCandidates||[]]}).forEach(ve=>x.add(ve))}catch{}const N=[...x].sort((pe,ve)=>{const Ee=$e=>{const Ye=jc($e);return Ye==="local"?0:Ye==="loopback"?1:2};return Ee(pe)-Ee(ve)||pe.localeCompare(ve)});let L=!1,$="",O=!1;try{for(const pe of N){const ve=jc(pe);try{if(await Be("/api/health",void 0,pe),ve==="local")return w(!0),to(!0),pe;ve==="loopback"&&(L=!0,$=pe)}catch{ve==="local"&&(O=!0)}}return L?(O&&me("LiveDesk Hub is reachable on this PC, but not through the LAN address yet. Restart LiveDesk Hub to bind 5179 on the network."),w(!0),to(!0),$||Sn):(w(!1),to(!1),"")}catch{return w(!1),to(!1),""}},[v]),$n=async()=>{ge("auth"),Bn(!1),await Ii();const{error:x}=await ms.auth.signInWithOAuth({provider:"google",options:{redirectTo:window.location.origin}});x&&(me(x.message),ge(""))},Tr=async()=>{ge("auth"),Bn(!1),await ms.auth.signOut(),ge("")};f.useEffect(()=>{if(!Ta)return;const x=L=>{L.target instanceof Element&&(L.target.closest(".account-popover, .rail-account")||Bn(!1))},N=L=>{L.key==="Escape"&&Bn(!1)};return window.addEventListener("pointerdown",x),window.addEventListener("keydown",N),()=>{window.removeEventListener("pointerdown",x),window.removeEventListener("keydown",N)}},[Ta]);const dn=f.useCallback(async(x={})=>{const N=x.silent===!0,L=x.takeover===!0,$=x.requestLocalAccess===!0,O=$?await Ii():"";if(!a?.user){N||me("Sign in before publishing this host.");return}if(!Ti.current){Ti.current=!0,N||ge("host");try{const pe=O||j||Sn,ve=C||await Be("/api/remote/status",void 0,pe);if(!ve.started)throw new Error("Start LiveDesk on this computer before syncing the server.");const Ee=ve.deviceId||`livedesk-${a.user.id}`,$e=await Be("/api/remote/host-target",{method:"POST",body:JSON.stringify({nodeId:Ee,leaseMs:6e4,takeover:L})},pe);if(!$e.ok)throw new Error($e.error||"host-target-failed");const Ye=await Be("/api/remote/status",void 0,pe),Dt=await Be("/api/remote/registry-credentials",void 0,pe),wn=$e.hostTarget||{},Ln=Ye.hostTargetEndpointCandidates||Ye.agentEndpointCandidates||ve.agentEndpointCandidates||[Ye.agentEndpoint||ve.agentEndpoint].filter(Boolean),{data:oa,error:Ds}=await ms.rpc("set_livedesk_remote_host_target",{p_node_id:Ee,p_lease_id:String(wn.leaseId||Ye.hostTargetLeaseId||crypto.randomUUID()),p_host_instance_id:Ye.hostInstanceId||Ee,p_endpoint:Ye.hostTargetEndpoint||Ye.agentEndpoint||ve.agentEndpoint,p_pair_token:Dt.pairToken||"",p_manager_package:"@livedesk/hub",p_manager_version:Ye.managerVersion||"0.1.0",p_agent_package:"@livedesk/client",p_activated_at:new Date().toISOString(),p_expires_at:new Date(Date.now()+6e4).toISOString(),p_takeover:L,p_endpoint_candidates:Ln,p_pairing_pin:Dt.pairingPin||Ye.pairingPin||""});if(Ds)throw Ds;const ei=Array.isArray(oa)?oa[0]:oa;if(ei&&ei.ok===!1)throw new Error(ei.reason||"registry-rejected");N||(me("Host published."),($||y)&&(w(!0),to(!0)),T()),u()}catch(pe){if(!N){const ve=pe instanceof Error?pe.message:String(pe);ve.includes("local network access")&&(w(!1),to(!1)),me(ve)}}finally{Ti.current=!1,N||ge("")}}},[j,y,T,u,Ii,a,C]),ql=f.useCallback(async()=>{if(!(!C?.update?.canApply||ne==="update")){ge("update");try{const x=await Be("/api/update/apply",{method:"POST",body:JSON.stringify({})},j||Sn);if(!x.ok)throw new Error(x.error||"LiveDesk update could not be started.");const N=[...new Set((x.targets||[]).map(L=>String(L.deviceId||"").trim()).filter(Boolean))];N.length>0&&Qn({operationId:String(x.operationId||`wall-update-${Date.now()}`),targetIds:N,stage:x.state==="clients-updated"?"updated":"updating",requiresHubRestart:!!(x.managerUpdateAvailable||x.clientPackageUpdateAvailable),initialHostInstanceId:String(C.hostInstanceId||"")}),me(x.state==="hub-restart-requested"?qm:Wx),T()}catch(x){me(x instanceof Error?x.message:String(x))}finally{ge("")}}},[ne,j,T,C]);f.useEffect(()=>{const x=Gt,N=C?.update;if(!x||x.stage==="updated"||!N)return;if(N.state==="failed"){Qn(O=>O?.operationId===x.operationId?null:O);return}if(N.operationId===x.operationId){!x.requiresHubRestart&&N.state==="clients-updated"&&Qn(O=>O?.operationId===x.operationId?{...O,stage:"updated"}:O);return}if(!x.requiresHubRestart)return;const L=C.started===!0&&(!x.initialHostInstanceId||C.hostInstanceId&&C.hostInstanceId!==x.initialHostInstanceId),$=N.state==="idle"&&N.updateAvailable===!1;L&&$&&Qn(O=>O?.operationId===x.operationId?{...O,stage:"updated"}:O)},[C,Gt]),f.useEffect(()=>{if(!Gt||Gt.stage!=="updated")return;const x=Gt.operationId,N=window.setTimeout(()=>{Qn(L=>L?.operationId===x?null:L)},8e3);return()=>window.clearTimeout(N)},[Gt]),f.useEffect(()=>{if(Re!==Wx&&Re!==qm)return;const x=C?.update,N=String(x?.state||"");if(N==="failed"){me(x?.error||"LiveDesk update failed.");return}(N==="clients-updated"||N==="idle"&&x?.updateAvailable===!1||!C&&A&&Re===qm)&&me("")},[A,Re,C,C?.update?.error,C?.update?.state,C?.update?.updateAvailable]);const Mo=f.useCallback(async()=>{if(!ne){ge("pin");try{const N=await Be("/api/remote/pairing-pin",{method:"POST"},j||Sn);if(!N.ok)throw new Error(N.error||"pin-rotation-failed");await T(),a?.user&&await dn({silent:!0,takeover:!0}),me("New PIN published.")}catch(x){me(x instanceof Error?x.message:String(x))}finally{ge("")}}},[ne,j,dn,T,a]);f.useEffect(()=>{if(!a?.user||!C?.started||A)return;const x=r?.expires_at?Date.parse(r.expires_at):Number.POSITIVE_INFINITY,N=r?.active===!0&&(!r.expires_at||!Number.isFinite(x)||x>Date.now()),L=!!r?.host_instance_id&&!!C.hostInstanceId&&r.host_instance_id===C.hostInstanceId;if(N&&!L)return;let $=!1;const O=()=>{if($)return;const ve=Date.now();ve-ho.current<25e3||(ho.current=ve,dn({silent:!0}))};O();const pe=window.setInterval(O,3e4);return()=>{$=!0,window.clearInterval(pe)}},[A,dn,a?.user?.id,C?.agentEndpoint,C?.hostInstanceId,C?.started,r?.active,r?.expires_at,r?.host_instance_id]);const Zs=f.useCallback(x=>{x&&(G(x),_(N=>N.includes(x)?N:[...N,x]))},[]),Bi=f.useCallback(x=>{if(!x)return;const N=es.has(x);G(L=>N&&L===x?"":x),_(L=>N?L.filter($=>$!==x):L.includes(x)?L:[...L,x])},[es]),Js=f.useCallback(()=>{_([]),G("")},[js]),Ms=f.useCallback(()=>{_(Xe.map(x=>x.deviceId)),G("")},[Xe]),Rr=f.useCallback((x,N)=>{const L=Xe.find(O=>O.deviceId===x);if(!L)return;const $=Yn(L);$<=1||(Ra(O=>{const ve=(na(O[x],$)+N+$)%$;return{...O,[x]:ve}}),Ve&&(vn(!1),Y(x)))},[Xe,Ve]);f.useEffect(()=>{const x=N=>{if(Ve&&de&&ts)return;const L=N.target,$=L?.tagName?.toLowerCase();L?.isContentEditable||$==="input"||$==="textarea"||$==="select"||((N.ctrlKey||N.metaKey)&&N.key.toLowerCase()==="a"&&(N.preventDefault(),Ms()),N.key==="Escape"&&Js())};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[ts,Js,de,Ms,Ve]);const Fi=async(x,N={})=>{if(!Gs.has(x)){me(Ll);return}const L=N.focused||Ve;L?(vn(!1),Y(x)):Zs(x);try{const $=Xe.find(ve=>ve.deviceId===x),O=L?{maxWidth:Je.maxWidth,maxHeight:Je.maxHeight}:Kt,pe=na(N.monitorIndex??At[x],$?Yn($):1);await Be(`/api/remote/devices/${encodeURIComponent(x)}/live/start`,{method:"POST",body:JSON.stringify({fps:L?Je.fps:Vt,maxWidth:O.maxWidth,maxHeight:O.maxHeight,quality:L?Je.quality:Me.quality,mode:L?Je.frameMode:Me.frameMode,frameMode:L?Je.frameMode:Me.frameMode,streamPurpose:L?"control":"wall",monitorIndex:pe})},j),T()}catch($){me($ instanceof Error?$.message:String($))}},Gl=(x,N)=>{const L=Xe.find(O=>O.deviceId===x),$=na(N,L?Yn(L):1);Ra(O=>({...O,[x]:$})),Ve?(vn(!1),Y(x)):Zs(x)},No=async x=>{if(vn(!1),Y(x),_e("control"),!Gs.has(x)){Ne(!1),me(Ll);return}Ne(!0)},Jn=async()=>{if(!Te){me("Select a workstation before playing audio.");return}if(!Wt){me(Ll);return}if(!Dl){me("Selected workstation does not report remote audio support yet.");return}const x=!Ie,N=x?`audio-${Date.now()}-${Math.random().toString(36).slice(2,8)}`:De.current.get(Te.deviceId);x&&N?De.current.set(Te.deviceId,N):x||De.current.delete(Te.deviceId),re(x);try{await Be(`/api/remote/devices/${encodeURIComponent(Te.deviceId)}/audio/${x?"start":"stop"}`,{method:"POST",body:JSON.stringify({...N?{streamId:N}:{},mimeType:"audio/pcm;format=f32le",sampleRate:48e3,channels:2})},j)}catch(L){x&&De.current.delete(Te.deviceId),re(!1),me(L instanceof Error?L.message:String(L))}},Er=async(x,N,L="files")=>{const $=x.filter(Ee=>Ee.file.size>=0);if($.length===0)return{files:0,bytes:0};if(!Wt)throw new Error(Ll);if(N.length===0)throw new Error("Select at least one connected workstation.");const O=crypto.randomUUID(),pe=$.reduce((Ee,$e)=>Ee+$e.file.size,0);let ve=0;za({id:O,status:"reading",progress:1,message:`Preparing ${$.length} ${L}`});try{for(let Ee=0;Ee<$.length;Ee+=1){const $e=$[Ee],Ye=$e.file,Dt=Math.max(1,Math.ceil(Ye.size/$m));for(let wn=0;wn<Dt;wn+=1){const Ln=wn*$m,oa=Math.min(Ye.size,Ln+$m),Ds=Ye.size===0?new ArrayBuffer(0):await Ye.slice(Ln,oa).arrayBuffer(),ei=wn===Dt-1;za({id:O,status:"sending",progress:Math.max(2,Math.min(98,Math.round(ve/Math.max(1,pe)*96))),message:`${Ee+1}/${$.length} ${$e.relativePath}`});const cs=await Be("/api/remote/files/chunk",{method:"POST",body:JSON.stringify({transferId:O,deviceIds:N,remoteDirectory:mt.trim(),name:Ye.name,relativePath:$e.relativePath,size:Ye.size,type:Ye.type,lastModified:Ye.lastModified,offset:Ln,totalBytes:Ye.size,final:ei,dataBase64:LM(Ds)})},j);if(!cs.ok||cs.queued!==N.length)throw new Error(cs.error||`file-chunk-not-queued-${cs.queued}/${N.length}`);ve+=Ds.byteLength,await new Promise(Br=>window.setTimeout(Br,0))}}return za({id:O,status:"queued",progress:100,message:`Sent ${$.length} file${$.length===1?"":"s"} to ${N.length} workstation${N.length===1?"":"s"}`}),window.setTimeout(()=>{za(Ee=>Ee?.id===O&&Ee.status==="queued"?null:Ee)},4500),{files:$.length,bytes:pe}}catch(Ee){throw za({id:O,status:"failed",progress:100,message:Ee instanceof Error?Ee.message:String(Ee)}),Ee}},Ha=async x=>{const N=ia.length>0?ia.map(L=>L.deviceId):Te?[Te.deviceId]:[];try{await Er(ly(x),N)}catch(L){me(L instanceof Error?L.message:String(L))}},To=async x=>{try{await Er(ly(x),qd)}catch(N){me(N instanceof Error?N.message:String(N))}};f.useEffect(()=>{Fc.current=!1},[]);const Dr=x=>{x.preventDefault(),x.stopPropagation(),gr(!1),Ha(x.dataTransfer.files)},$a=async(x="ltd")=>{if(!a){me("Sign in with Google before checkout.");return}if(E&&x===Rt){me("LiveDesk license is already active.");return}if(E&&Rt==="pro"){me("LiveDesk Pro is already active.");return}ge("checkout");try{const{data:N,error:L}=await ms.functions.invoke("dodo-checkout",{body:{plan:x}});if(L)throw L;if(!N?.checkout_url)throw new Error("Checkout function did not return a checkout URL.");window.location.assign(N.checkout_url)}catch(N){me(N instanceof Error?N.message:String(N)),ge("")}},Ua=pM(),Hi=gM(),Ro=Xe.length,Lr=Ei.filter(x=>ns.has(x)).length,Un=zi==="open"&&Ks.sampleMs>0?`${Ks.framesPerSecond.toFixed(1)} fps`:zi,ke=Te?Ve?Ar.get(Te.deviceId):ns.get(Te.deviceId):void 0,ss=Te?na(At[Te.deviceId],Yn(Te)):0,$i=Te?wM(Te):[],Ui=typeof ke?.monitorIndex=="number"?na(ke.monitorIndex,Math.max(1,ke.monitorCount||1)):ss,Pn=(ke&&Ui===ss?Dw(ke):null)||(Te?Ew(Te,ss):null),Ns=Pn?`${Pn.width}x${Pn.height}`:"-",ea=Te?fs(Ve?"control":"wall",Te.deviceId):"",St=ea?$t[ea]:void 0,Ot=ea?Ht[ea]:void 0,lt=Ot?.lastInfo,Eo=St&&St.sampleMs>0?`${St.framesPerSecond.toFixed(1)} fps`:"waiting",Do=St?`#${St.totalFrames} / ${Eo}`:"waiting",Zc=Ot&&Ot.sampleMs>0?`${Ot.framesPerSecond.toFixed(1)} fps`:"waiting",fn=Ot&&Ot.sampleMs>0?`${Ot.changedFramesPerSecond.toFixed(1)} fps`:"waiting",Nt=lt?`#${lt.frameSeq} ${lt.decoderLabel} q${lt.queueSize} r${lt.renderQueueSize} d${lt.droppedForLatency} f${lt.decoderFlushCount} t${lt.decoderTimestampFallbacks} io${lt.decoderInputCount}/${lt.decoderOutputCount} ${lt.visualChanged?"changed":"same"}`:"waiting",it=lt?`${Math.round(lt.queuedForMs)}ms total / ${Math.round(lt.decodedForMs)}ms decode / ${Math.round(lt.scheduledForMs)}ms pace / ${lt.drawMs.toFixed(1)}ms draw`:"-",Ts=lt?.targetPaintIntervalMs?`${lt.targetPaintIntervalMs.toFixed(1)}ms / ${(1e3/lt.targetPaintIntervalMs).toFixed(1)} fps`:"-",ra=Ot?`${Ot.decoderInputFps.toFixed(1)} in / ${Ot.decoderOutputFps.toFixed(1)} out fps`:"waiting",Lo=lt?.canvasPresentation||"-",Rs=lt?`${lt.interactiveBufferWaitCount} waits / ${Math.round(lt.interactiveBufferWaitMs)}ms / ${lt.interactiveQueueDrainCount} drains`:"waiting",Jc=n.framesPerSecond>0?`${n.framesPerSecond.toFixed(1)} fps / p95 ${n.p95IntervalMs.toFixed(1)}ms / max ${n.maxIntervalMs.toFixed(1)}ms / long ${n.longTaskCount} (${Math.round(n.longTaskMs)}ms)`:"waiting",eu=St?ke?.frameMode==="mode5-lzo-delta"?`${wc(St.averageFrameBytes)} avg / visual ${ke.deltaVisualTileCount||0} + refresh ${ke.deltaRefreshTileCount||0} / ${ke.deltaTotalTiles||0}`:`${wc(St.averageFrameBytes)} avg / tiny ${Math.round(St.tinyFrameRatio*100)}% / repeat ${Math.round(St.repeatedFrameRatio*100)}%`:"waiting",Vl=St&&St.sourceSendSampleCount>0?`${St.sourceSendAverageMs.toFixed(1)}ms avg / p95 ${St.sourceSendP95Ms.toFixed(1)}ms`:"waiting",el=Xx(St),_o=Xx(Ot),Pi=St&&Ot?`rx ${Zx(St)} / paint ${Zx(Ot)}`:"waiting",qi=ke?ke.frameMode||ke.mode||ke.codec||ke.mimeType:Ve?Je.frameMode:Me.frameMode,ls=Ve?Je.frameMode:Me.frameMode,is=qi!==ls?`${ls} -> ${qi}`:ls,Es=ke?`${ke.width}x${ke.height} ${wc(ke.byteLength)}`:Ve?`${Hn.maxWidth}x${Hn.maxHeight}`:`${Me.maxWidth}x${Me.maxHeight}`,rs=ke?ke.frameMode==="mode2-lzo"?"independent":`${ke.isKeyFrame?"key":String(ke.chunkType||"delta")}`:"-",zo=ke&&ke.monitorCount?`${(ke.monitorIndex??0)+1}/${ke.monitorCount}`:"-",Oo=ke?[`src ${Math.round(ke.sourceGapMs||0)}ms`,`gap ${Math.round(ke.agentSendGapMs||0)}ms`,`tx ${Math.round(ke.agentSendDurationMs||0)}ms`,`pace ${Math.round(ke.agentPaceMs||0)}ms`,`queue ${Math.round(ke.agentQueueBeforePaceMs||0)}ms`,`age ${Math.round(ke.agentFrameAgeMs||0)}ms`,ke.browserReceivedEpochMs&&ke.receivedAt?`hub ${Math.max(0,Math.round(ke.browserReceivedEpochMs-Date.parse(ke.receivedAt)))}ms`:"",ke.browserReceivedEpochMs&&ke.hubPacketEpochMs?`sock ${Math.max(0,Math.round(ke.browserReceivedEpochMs-ke.hubPacketEpochMs))}ms`:"",ke.droppedByAgent?`drop ${ke.droppedByAgent}`:"",ke.hubIngressDropped?`ingress-drop ${ke.hubIngressDropped}`:"",ke.hubClientDropped?`ws-drop ${ke.hubClientDropped}`:"",ke.captureStageMs?`capture ${Math.round(ke.captureStageMs)}ms`:"",ke.requestedFps?`req ${Math.round(ke.requestedFps)}fps`:"",ke.effectiveFps?`eff ${Math.round(ke.effectiveFps)}fps`:"",ke.captureAverageMs?`avg ${Math.round(ke.captureAverageMs)}ms`:"",ke.captureP95Ms?`p95 ${Math.round(ke.captureP95Ms)}ms`:"",ke.slowFrameCount?`slow ${Math.round(ke.slowFrameCount)}`:"",ke.captureHelperRestarts?`helper ${Math.round(ke.captureHelperRestarts)}`:"",ke.convertMs?`rgb565 ${Math.round(ke.convertMs)}ms`:"",ke.compressMs?`lzo ${Math.round(ke.compressMs)}ms`:"",ke.captureSourceSerial?`cap #${ke.captureSourceSerial}`:"",ke.captureSourceSkipped?`cap skip ${ke.captureSourceSkipped}`:"",ke.frameMode==="mode5-lzo-delta"?`tiles ${ke.deltaVisualTileCount||0}+${ke.deltaRefreshTileCount||0}/${ke.deltaTotalTiles||0}@${ke.deltaTileSize||0}`:"",ke.platformProfile||ke.hardwareEncoder||"-",ke.atlasComposeMs?`atlas ${ke.atlasComposeMs.toFixed(1)}ms`:"",ke.atlasPoolStarved?`pool ${ke.atlasPoolStarved}`:"",ke.atlasTileCount?`tiles ${ke.atlasReadyTiles||0}/${ke.atlasTileCount}`:"",lt?.inputFeedbackMs!==void 0&<.inputFeedbackAt!==void 0&&performance.now()-lt.inputFeedbackAt<=Vx?`feedback ${Math.round(lt.inputFeedbackMs)}ms`:"",ke.contentHash?`enc ${ke.contentHash.slice(0,6)}`:"",lt?.visualHash?`pix ${lt.visualHash.slice(0,6)}`:""].filter(Boolean).join(" / "):"-",Yl=Fa==="open"?[`${wa.sentPerSecond.toFixed(1)} hz`,wa.lastInputSeq>0?`rtt ${Math.round(wa.lastRoundTripMs)}ms`:"",wa.lastInputSeq>0?`apply ${wa.lastAgentApplyMs.toFixed(1)}ms`:"",wa.droppedPerSecond>0?`drop ${wa.droppedPerSecond.toFixed(1)}/s`:"",wa.bufferedAmount>0?`buf ${wc(wa.bufferedAmount)}`:"",wa.lastInputType||"ready"].filter(Boolean).join(" / "):Fa,_r=lt?.inputFeedbackMs!==void 0&<.inputFeedbackAt!==void 0&&performance.now()-lt.inputFeedbackAt<=Vx?`${Math.round(lt.inputFeedbackMs)}ms / input #${lt.inputFeedbackSeq||0}`:"waiting for changed frame",tl=Ie?[ko,`context ${Dn.audioContextState}`,`queue ${Math.round(Dn.queuedMs)}ms`,`last ${Math.round(Dn.lastPacketAgeMs)}ms`,`accepted ${Math.round(Dn.lastAcceptedAgeMs)}ms`,`process ${Math.round(Dn.localProcessingAgeMs)}ms`,`remote ${Math.round(Dn.browserAgeMs)}/${Math.round(Dn.captureAgeMs)}ms`,`heartbeat ${Math.round(Dn.captureStatusAgeMs)}ms`,`capture ${Dn.captureAlive&&Dn.helperAlive?"alive":"down"}`,`drop ${Dn.drops}`,`resync ${Dn.resyncs}`,`restart ${Dn.automaticRestarts}`,Dn.pendingDecodes>0?`decode ${Dn.pendingDecodes}`:"",Xc?`#${Xc.frameSeq}`:"waiting"].filter(Boolean).join(" / "):"off",mn=ke?`#${ke.frameSeq} ${rh(ke.receivedAt||ke.capturedAt)}`:"waiting",os=Math.max(0,Ks.bytesPerSecond*8/1e6),Io=Bl?.atlasReadyTiles??Lr,Bo=Bl?.atlasTileCount??Lr,Kd=Io===Bo?`${Bo} tiles`:`${Io}/${Bo} tiles`,Qd=Ve?`1 stream / ${Un} / ${os.toFixed(os>=10?0:1)}Mbps`:nt?`1 stream / ${Kd} / ${Un} / ${os.toFixed(os>=10?0:1)}Mbps`:`${Lr} screens / ${Un} / ${os.toFixed(os>=10?0:1)}Mbps`,It=A?"offline":C?.started?"online":"starting",Wl=ia.length,Gi=Ve?Te?lr(Te):"No workstation":Wl===0?"No workstation":Wl>1?`${Wl} selected`:Te?lr(Te):"No workstation",Qt=oo[gn]||oo.en,Kl=Qt.sync||oo.en.sync,nl=i||H?"checking":E?Rt==="pro"?"Pro LTD active":`Plus LTD ${Xe.length}/${yc}`:Yd?`Free ${Xe.length}/${xc}`:`Upgrade ${Xe.length}/${xc}`,Ql=Rt==="pro"?"Pro active":ne==="checkout"?"Opening":Rt==="ltd"?"Pro $199":"Plus $79",tu=E?Rt==="pro"?"Pro active":"Upgrade to Pro LTD":a?ne==="checkout"?"Opening checkout":Rt==="ltd"?"Buy Pro LTD":"Buy Plus LTD":ne==="auth"?"Opening Google":"Sign in to buy",Xd=Rt==="pro"||ne==="checkout"||ne==="auth"||i||H,Fo=a?.user.user_metadata,Pa=iy(Fo,"avatar_url","picture"),al=iy(Fo,"full_name","name")||a?.user.email||"Google",Vi=al.slice(0,1).toUpperCase(),nu=C?.started?"Local app ready":"Start LiveDesk",Xl=r?.active?"Published":a?"Not published":"Sign in required",Ho=/^\d{6}$/.test(C?.pairingPin||"")?C?.pairingPin:"------",zr=wd.find(x=>x.width===Me.maxWidth&&x.height===Me.maxHeight)?.id||`${Me.maxWidth}x${Me.maxHeight}`,Or=Me.atlasTileSizeMode==="auto"?"auto":Vm.find(x=>x.width===Me.atlasTileWidth&&x.height===Me.atlasTileHeight)?.id||"320x180",au=Gm.find(x=>x.width===Je.maxWidth&&x.height===Je.maxHeight)?.id||`${Je.maxWidth}x${Je.maxHeight}`,su=yd.find(x=>x.id===Me.frameMode)||yd[0],an=x=>{ji(N=>{const L=x.frameMode?xh(x.frameMode):N.frameMode,$=x.frameMode!==void 0&&L!==N.frameMode;return{...N,...x,frameMode:L,fps:wh(x.fps??($?Nw(L):N.fps),L)}})},sl=x=>{const N=wd.find(L=>L.id===x);N&&an({maxWidth:N.width,maxHeight:N.height})},lu=x=>{if(x==="auto"){an({atlasTileSizeMode:"auto"});return}const N=Vm.find(L=>L.id===x);!N?.width||!N?.height||an({atlasTileSizeMode:"fixed",atlasTileWidth:N.width,atlasTileHeight:N.height})},ll=x=>{x.frameMode!==void 0&&(Q(""),ye("")),fr(N=>{const L=x.frameMode?yh(x.frameMode):N.frameMode,$=x.frameMode!==void 0&&L!==N.frameMode,O=x.fps??($?30:N.fps),pe=x.maxWidth??N.maxWidth,ve=x.maxHeight??N.maxHeight;return{...N,...x,frameMode:L,fps:Ya(O,20,L==="mode3-h264-hw"?60:30,L==="mode3-h264-hw"?60:30),maxWidth:L==="mode3-h264-hw"?pe:Math.min(1920,pe),maxHeight:L==="mode3-h264-hw"?ve:Math.min(1080,ve)}})},Zl=x=>{const N=Gm.find(L=>L.id===x);N&&ll({maxWidth:N.width,maxHeight:N.height})},il=x=>{if(x==="control"){const N=En||El;if(N&&(vn(!1),Y(N.deviceId)),_e(x),!Wt){Ne(!1),me(Ll);return}Ne(!0);return}x==="wall"&&hr(N=>N+1),_e(x),Ne(!1)},Ir=ne==="update"||["dispatching","waiting-for-clients","hub-restart-requested"].includes(C?.update?.state||""),Jl=f.useCallback(x=>{if(Gt?.targetIds.includes(x))return Gt.stage},[Gt]);return l.jsxs("main",{className:"app-shell",children:[l.jsxs("aside",{className:"tool-rail","aria-label":"LiveDesk tools",children:[l.jsx("div",{className:"rail-brand",title:"LiveDesk",children:l.jsx(BM,{size:25})}),l.jsx("nav",{className:"rail-tools",children:HM.map(x=>{const N=x.icon;return l.jsxs(f.Fragment,{children:[l.jsxs("button",{className:`rail-tool ${x.id==="sync-server"?"sync-server":""} ${He===x.id?"active":""} accent-${x.accent}`,onClick:()=>x.id==="sync-server"?void dn({takeover:!0,requestLocalAccess:!0}):il(x.id),title:x.label,type:"button",children:[l.jsx(N,{size:19}),l.jsx("span",{children:x.label})]}),x.id==="sync-server"&&C?.update?.updateAvailable&&C.update.canApply&&!Ir?l.jsxs("button",{className:"rail-update-button",onClick:()=>{ql()},title:`Update LiveDesk to ${C.update.latestVersion||"latest"}`,type:"button",children:[l.jsx(py,{size:16}),l.jsx("span",{children:"Update"})]}):null]},x.id)})}),l.jsxs("div",{className:"rail-footer",children:[$M.map(x=>{const N=x.icon;return l.jsxs("button",{className:`rail-tool compact ${He===x.id?"active":""} accent-${x.accent}`,onClick:()=>il(x.id),title:x.label,type:"button",children:[l.jsx(N,{size:18}),l.jsx("span",{children:x.label})]},x.id)}),l.jsxs("button",{className:`rail-tool compact local-settings ${Ml?"active":""}`,onClick:()=>{_e("settings"),Bn(!1),Ne(!1),Ci(!1)},title:"Settings",type:"button",children:[l.jsx(cy,{size:18}),l.jsx("span",{children:"Settings"})]}),l.jsxs("button",{className:`rail-account ${a?"signed-in":""}`,onClick:()=>{Bn(x=>!x)},disabled:i||ne==="auth","aria-expanded":Ta,title:a?`Account: ${a.user.email||al}`:"Sign in with Google",type:"button",children:[a?Pa?l.jsx("img",{src:Pa,alt:al,referrerPolicy:"no-referrer"}):l.jsx("span",{className:"avatar-fallback",children:Vi}):l.jsx(ym,{size:18}),l.jsx("span",{children:a?"Account":"Google"})]}),Ta&&l.jsxs("section",{className:"account-popover",role:"dialog","aria-label":"LiveDesk account",children:[l.jsxs("div",{className:"account-popover-head",children:[l.jsx("div",{className:"account-popover-avatar",children:a&&Pa?l.jsx("img",{src:Pa,alt:al,referrerPolicy:"no-referrer"}):a?l.jsx("span",{children:Vi}):l.jsx(ym,{size:18})}),l.jsxs("div",{children:[l.jsx("strong",{children:a?al:"Account"}),l.jsx("p",{children:a?.user.email||"Not signed in"})]})]}),l.jsxs("dl",{className:"account-popover-facts",children:[l.jsx("dt",{children:"User"}),l.jsx("dd",{children:a?.user.email||"Not signed in"}),l.jsx("dt",{children:"Network"}),l.jsx("dd",{children:nu}),l.jsx("dt",{children:"Access"}),l.jsx("dd",{children:Xl}),l.jsx("dt",{children:"Plan"}),l.jsx("dd",{children:nl}),l.jsx("dt",{children:"Ads"}),l.jsx("dd",{children:Rt==="free"?"Standard banner":"Removed"})]}),a?l.jsxs("button",{className:"account-popover-action",onClick:Tr,disabled:ne==="auth",type:"button",children:[l.jsx(pS,{size:16}),"Logout"]}):l.jsxs("button",{className:"account-popover-action primary",onClick:$n,disabled:ne==="auth",type:"button",children:[l.jsx(ym,{size:16}),"Sign in with Google"]})]})]})]}),l.jsxs("section",{className:`desk-stage ${po&&!Kn?"dock-open":""} ${Ve?"control-stage":""}`,children:[l.jsxs("header",{className:"topbar",children:[l.jsxs("div",{className:"brand",children:[l.jsx("span",{className:"brand-mark",children:l.jsx(qt,{size:18})}),l.jsxs("div",{children:[l.jsx("h1",{children:"LiveDesk"}),l.jsx("p",{children:"Control wall for local machines"})]})]}),Us&&!Ve&&l.jsxs("div",{className:"file-share-top-route","aria-label":"File distribution route",children:[l.jsxs("div",{children:[l.jsx(pc,{size:17}),l.jsxs("span",{children:[l.jsx("small",{children:"Source"}),l.jsx("strong",{children:"LiveDesk Hub"})]})]}),l.jsx(jh,{size:15}),l.jsx(gS,{size:16}),l.jsxs("div",{children:[l.jsx("span",{className:"file-share-top-route-laptops",children:"▣ ▣ ▣"}),l.jsxs("span",{children:[l.jsx("small",{children:"Destination"}),l.jsxs("strong",{children:[Tl," workstation",Tl===1?"":"s"]}),l.jsx("em",{children:mt.trim()||"Desktop/LiveDeskFiles"})]})]})]}),po&&!Ve&&l.jsxs("div",{className:"top-actions",children:[l.jsx(Ux,{controller:Gc,onError:me}),l.jsx("span",{className:"top-actions-divider","aria-hidden":"true"}),l.jsx("div",{className:"segmented-control","aria-label":"Screen size",children:FM.map(x=>l.jsx("button",{className:Ge===x.id?"active":"",onClick:()=>aa(x.id),type:"button",children:x.label},x.id))})]}),Ve&&l.jsx("div",{className:"top-actions",children:l.jsx(Ux,{controller:Gc,onError:me})})]}),Ja?l.jsxs("section",{className:"doc-page",lang:gn,dir:gn==="ar"?"rtl":"ltr",children:[l.jsxs("section",{className:"doc-hero",children:[l.jsxs("div",{className:"doc-hero-copy",children:[l.jsxs("span",{className:"pricing-eyebrow",children:[l.jsx(eh,{size:16}),Qt.eyebrow]}),l.jsx("h2",{children:Qt.title}),l.jsx("p",{children:Qt.intro})]}),l.jsxs("label",{className:"doc-language-picker",children:[l.jsxs("span",{children:[l.jsx(vS,{size:17}),Qt.languageLabel]}),l.jsx("select",{value:gn,onChange:x=>An(x.target.value),children:PM.map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]})]}),l.jsx("section",{className:"doc-grid",children:Qt.sections.map((x,N)=>{const $=[Lv,gc,hd,pn,so][N]||eh;return l.jsxs("article",{className:"doc-card",children:[l.jsx("div",{className:"doc-card-icon",children:l.jsx($,{size:19})}),l.jsxs("div",{children:[l.jsx("h3",{children:x.title}),l.jsx("p",{children:x.body}),l.jsx("ul",{children:x.points.map(O=>l.jsx("li",{children:O},O))})]})]},x.title)})}),Kl&&l.jsxs("section",{className:"doc-sync",children:[l.jsxs("div",{className:"doc-sync-head",children:[l.jsx(hd,{size:20}),l.jsxs("div",{children:[l.jsx("h3",{children:Kl.title}),l.jsx("p",{children:Kl.body})]})]}),l.jsx("ul",{children:Kl.points.map(x=>l.jsx("li",{children:x},x))})]}),l.jsxs("section",{className:"doc-firewall",children:[l.jsxs("div",{className:"doc-firewall-head",children:[l.jsx(pn,{size:20}),l.jsxs("div",{children:[l.jsx("h3",{children:Qt.firewall.title}),l.jsx("p",{children:Qt.firewall.body})]})]}),l.jsx("ul",{children:Qt.firewall.points.map(x=>l.jsx("li",{children:x},x))})]}),l.jsxs("section",{className:"doc-command-panel",children:[l.jsxs("div",{className:"doc-command-head",children:[l.jsx(gc,{size:20}),l.jsxs("div",{children:[l.jsx("h3",{children:Qt.commands.title}),l.jsx("p",{children:Qt.commands.body})]})]}),l.jsxs("div",{className:"doc-command-list",children:[Qt.commands.manager&&l.jsxs("div",{className:"doc-command-row",children:[l.jsx("span",{children:Qt.commands.manager}),l.jsx("code",{children:Hi}),l.jsx("button",{className:"icon-button",onClick:()=>ar(Hi),title:"Copy command",type:"button",children:l.jsx(Xi,{size:16})})]}),l.jsxs("div",{className:"doc-command-row",children:[l.jsx("span",{children:Qt.commands.primary}),l.jsx("code",{children:Ua}),l.jsx("button",{className:"icon-button",onClick:()=>ar(Ua),title:"Copy command",type:"button",children:l.jsx(Xi,{size:16})})]}),l.jsxs("div",{className:"doc-command-row",children:[l.jsx("span",{children:Qt.commands.slot}),l.jsx("code",{children:`${Ua} 3`}),l.jsx("button",{className:"icon-button",onClick:()=>ar(`${Ua} 3`),title:"Copy command",type:"button",children:l.jsx(Xi,{size:16})})]})]})]})]}):Ri?l.jsx(kA,{hubUrl:j,devices:k}):Us?l.jsx(Nk,{hubUrl:j,devices:Xe,localFeatureAccess:Wt,upgradeNotice:Ll,remoteDirectory:mt,onRemoteDirectoryChange:Mn,targetMode:jl,selectedTargetIds:$s,onTargetModeChange:Bc,onTargetToggle:x=>Ni(N=>N.includes(x)?N.filter(L=>L!==x):[...N,x]),filePickerRef:kl,folderPickerRef:Al,onBrowserFileImport:x=>{To(x)},onBrowserFolderImport:x=>{To(x)},onNotice:me,onTransferChange:x=>{if(!x){za(null);return}const N=x.state==="failed"||x.state==="partially-failed"||x.state==="cancelled"?"failed":x.state==="completed"?"queued":x.state==="sending"?"sending":"reading";za({id:x.id,status:N,progress:x.progress,message:x.message}),["completed","partially-failed","failed","cancelled"].includes(x.state)&&window.setTimeout(()=>za(L=>L?.id===x.id?null:L),4500)}}):Ml?l.jsx(G0,{hubUrl:j,runtimeRole:C?.runtimeRole||"hub",runtimeDeviceId:C?.deviceId||"",sessionAccessToken:a?.access_token||"",pin:l.jsxs(V0,{children:[l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card settings-pairing-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Pair a workstation"}),l.jsx("h3",{children:"Connect another local PC"})]}),l.jsx(en,{size:20})]}),l.jsxs("div",{className:"settings-pin-display",children:[l.jsx("span",{children:"Hub PIN"}),l.jsx("strong",{children:Ho}),l.jsxs("button",{className:"text-button ghost compact",onClick:Mo,disabled:!C?.started||ne==="pin",type:"button",children:[l.jsx(Nc,{size:15}),ne==="pin"?"Creating":"New PIN"]})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Hub status"}),l.jsx("h3",{children:It})]}),l.jsx("span",{className:`settings-status-dot state-${It}`})]}),l.jsxs("dl",{className:"settings-facts",children:[l.jsx("dt",{children:"Address"}),l.jsx("dd",{children:j||"-"}),l.jsx("dt",{children:"Connected workstations"}),l.jsxs("dd",{children:[Ro,"/",Rl]}),l.jsx("dt",{children:"Sync access"}),l.jsx("dd",{children:C?.started?"Local app ready":"Start Hub first"}),l.jsx("dt",{children:"Plan"}),l.jsx("dd",{children:nl})]}),l.jsxs("div",{className:"settings-action-row",children:[l.jsxs("button",{className:"text-button primary",onClick:()=>dn({takeover:!0,requestLocalAccess:!0}),disabled:!a||ne==="host",type:"button",children:[l.jsx(hd,{size:16}),"Sync access"]}),l.jsxs("button",{className:"text-button buy",onClick:()=>$a(Rt==="ltd"?"pro":"ltd"),disabled:ne==="checkout"||Rt==="pro",type:"button",children:[l.jsx(vc,{size:16}),Ql]})]})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"File transfer"}),l.jsx("h3",{children:"Client destination folder"})]}),l.jsx(lo,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Remote folder"}),l.jsx("input",{value:mt,onChange:x=>Mn(x.target.value),placeholder:"Desktop/LiveDeskFiles"})]}),l.jsx("p",{className:"settings-help",children:"Blank uses Desktop/LiveDeskFiles on each workstation."})]})]}),wall:l.jsx(Y0,{children:l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Wall stream"}),l.jsx("h3",{children:"Frame delivery"})]}),l.jsx(Tc,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Frame mode"}),l.jsx("select",{value:Me.frameMode,onChange:x=>an({frameMode:xh(x.target.value)}),children:yd.map(x=>l.jsxs("option",{value:x.id,children:[x.label," - ",x.detail]},x.id))})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"H.264 decode"}),l.jsx("select",{value:Me.h264DecodeAcceleration,onChange:x=>an({h264DecodeAcceleration:Dd(x.target.value)}),children:vh.map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]}),l.jsxs("div",{className:"settings-field-grid",children:[l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"FPS"}),l.jsx("select",{value:Me.fps,onChange:x=>an({fps:wh(x.target.value,Me.frameMode)}),children:qh.filter(x=>x<=Tw(Me.frameMode)).map(x=>l.jsx("option",{value:x,children:x},x))})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:nt?"Atlas tile":"Resolution"}),l.jsx("select",{value:nt?Or:zr,onChange:x=>nt?lu(x.target.value):sl(x.target.value),children:(nt?Vm:wd).map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Quality"}),l.jsx("select",{value:Me.quality,onChange:x=>an({quality:Ya(x.target.value,20,95,ha.quality)}),children:Jx.map(x=>l.jsx("option",{value:x,children:x},x))})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Wall behavior"}),l.jsx("h3",{children:"Visibility and load"})]}),l.jsx(qt,{size:20})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.autoStartLive,onChange:x=>an({autoStartLive:x.target.checked})}),l.jsx("span",{children:"Auto live on connected screens"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.visibleOnlyLive,onChange:x=>an({visibleOnlyLive:x.target.checked})}),l.jsx("span",{children:"Stream visible tiles first"})]}),!nt&&l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.adaptiveSizeByWall,onChange:x=>an({adaptiveSizeByWall:x.target.checked})}),l.jsx("span",{children:"Fit stream size to Wall"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.adaptiveLoadShedding,onChange:x=>an({adaptiveLoadShedding:x.target.checked})}),l.jsx("span",{children:"Reduce FPS under load"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.showScreenStatus,onChange:x=>an({showScreenStatus:x.target.checked})}),l.jsx("span",{children:"Screen status overlay"})]}),l.jsxs("div",{className:"settings-summary",children:[l.jsx("span",{children:su.label}),l.jsxs("strong",{children:[Kt.maxWidth,"x",Kt.maxHeight," / ",Vt,"fps"]})]}),l.jsxs("button",{className:"settings-reset",onClick:()=>ji(ha),type:"button",children:[l.jsx(Sc,{size:15})," Reset Wall settings"]})]})]})}),control:l.jsx(W0,{children:l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Control stream"}),l.jsx("h3",{children:"Low-latency delivery"})]}),l.jsx(md,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Frame mode"}),l.jsx("select",{value:Je.frameMode,onChange:x=>ll({frameMode:yh(x.target.value)}),children:lM.map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]}),Je.frameMode==="mode3-h264-hw"&&l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"H.264 decode"}),l.jsx("select",{value:Je.h264DecodeAcceleration,onChange:x=>ll({h264DecodeAcceleration:Dd(x.target.value)}),children:vh.map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]}),l.jsxs("div",{className:"settings-field-grid",children:[l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"FPS"}),l.jsx("select",{value:Je.fps,onChange:x=>ll({fps:Ya(x.target.value,20,60,pa.fps)}),children:iM.filter(x=>Je.frameMode==="mode3-h264-hw"||x<=30).map(x=>l.jsx("option",{value:x,children:x},x))})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Resolution"}),l.jsx("select",{value:au,onChange:x=>Zl(x.target.value),children:Gm.filter(x=>Je.frameMode==="mode3-h264-hw"||x.width<=1920).map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]})]}),Je.frameMode==="mode3-h264-hw"&&l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Quality"}),l.jsx("select",{value:Je.quality,onChange:x=>ll({quality:Ya(x.target.value,20,95,pa.quality)}),children:Jx.map(x=>l.jsx("option",{value:x,children:x},x))})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Control behavior"}),l.jsx("h3",{children:"Session display"})]}),l.jsx(en,{size:20})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Je.showScreenStatus,onChange:x=>ll({showScreenStatus:x.target.checked})}),l.jsx("span",{children:"Screen status overlay"})]}),l.jsxs("div",{className:"settings-summary control",children:[l.jsx("span",{children:Je.frameMode==="mode5-lzo-delta"?"Mode 5 tile delta":Je.frameMode==="mode2-lzo"?"Mode 2 RGB565":"Mode 3 H.264"}),l.jsxs("strong",{children:[Hn.maxWidth,"x",Hn.maxHeight," / ",yn,"fps"]})]}),l.jsxs("button",{className:"settings-reset",onClick:()=>fr(pa),type:"button",children:[l.jsx(Sc,{size:15})," Reset Control settings"]})]})]})}),agent:l.jsx(K0,{hubUrl:j}),captureGallery:l.jsx(EA,{hubUrl:j,onToast:me}),advancedExtras:l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Connection commands"}),l.jsx("h3",{children:"Developer setup"})]}),l.jsx(Xi,{size:20})]}),l.jsxs("div",{className:"settings-command-list",children:[l.jsxs("div",{className:"settings-command-row",children:[l.jsx("span",{children:"Client"}),l.jsx("code",{children:Ua}),l.jsx("button",{className:"icon-button",onClick:()=>ar(Ua),title:"Copy client command",type:"button",children:l.jsx(Xi,{size:16})})]}),l.jsxs("div",{className:"settings-command-row",children:[l.jsx("span",{children:"Slot example"}),l.jsx("code",{children:`${Ua} 3`}),l.jsx("button",{className:"icon-button",onClick:()=>ar(`${Ua} 3`),title:"Copy slot command",type:"button",children:l.jsx(Xi,{size:16})})]}),l.jsxs("div",{className:"settings-command-row",children:[l.jsx("span",{children:"Hub"}),l.jsx("code",{children:Hi}),l.jsx("button",{className:"icon-button",onClick:()=>ar(Hi),title:"Copy Hub command",type:"button",children:l.jsx(Xi,{size:16})})]})]})]})}):Nl?l.jsxs("section",{className:"pricing-page",children:[l.jsxs("header",{className:"pricing-header",children:[l.jsxs("div",{children:[l.jsxs("span",{className:"pricing-eyebrow",children:[l.jsx(Jm,{size:15})," LiveDesk plans"]}),l.jsx("h2",{children:"Choose the plan that fits your wall"}),l.jsx("p",{children:"Start free with a local screen wall. Upgrade when you need ad-free monitoring, more workstations, or commercial controls."})]}),l.jsx("button",{className:"pricing-close",onClick:()=>il("wall"),title:"Close pricing",type:"button",children:l.jsx(rr,{size:18})})]}),l.jsxs("div",{className:"pricing-status","aria-live":"polite",children:[l.jsx("span",{children:"Current plan"}),l.jsx("strong",{children:$c.name}),l.jsxs("small",{children:[Xe.length,"/",sM(wr)," connected devices"]})]}),l.jsxs("div",{className:"pricing-cards","aria-label":"LiveDesk plans",children:[l.jsxs("article",{className:`pricing-plan-card ${Rt==="free"?"current":""}`,children:[l.jsxs("div",{className:"pricing-plan-topline",children:[l.jsx("span",{className:"pricing-plan-badge free",children:"Free"}),l.jsx("strong",{children:"$0"})]}),l.jsx("p",{className:"pricing-plan-audience",children:er.free.audience}),l.jsx("h3",{children:"Monitor your local wall"}),l.jsx("p",{children:er.free.note}),l.jsxs("ul",{children:[l.jsxs("li",{children:[l.jsx(In,{size:16})," Up to ",xc," devices"]}),l.jsxs("li",{children:[l.jsx(In,{size:16})," Live view and local control"]}),l.jsxs("li",{children:[l.jsx(In,{size:16})," Standard ad-supported banner"]})]}),l.jsx("span",{className:"pricing-current-label",children:Rt==="free"?"Current plan":"Included for everyone"})]}),l.jsxs("article",{className:`pricing-plan-card featured ${Rt==="ltd"?"current":""}`,children:[l.jsxs("div",{className:"pricing-plan-topline",children:[l.jsxs("span",{className:"pricing-plan-badge plus",children:[l.jsx(xS,{size:14})," Plus"]}),l.jsx("strong",{children:"$5"})]}),l.jsx("p",{className:"pricing-plan-audience",children:er.ltd.audience}),l.jsx("h3",{children:"Ad-free monitoring"}),l.jsx("p",{children:"More room for personal AI workstations without the standard banner."}),l.jsxs("ul",{children:[l.jsxs("li",{children:[l.jsx(In,{size:16})," Up to ",yc," devices"]}),l.jsxs("li",{children:[l.jsx(In,{size:16})," No standard ad banner"]}),l.jsxs("li",{children:[l.jsx(In,{size:16})," ",er.ltd.ltd]})]}),l.jsxs("button",{className:"pricing-plan-button",onClick:a?()=>$a("ltd"):$n,disabled:Rt!=="free"||ne==="checkout"||ne==="auth"||i||H,type:"button",children:[l.jsx(vc,{size:16}),Rt==="free"?a?"Choose Plus":"Sign in for Plus":"Plus active"]})]}),l.jsxs("article",{className:`pricing-plan-card pro ${Rt==="pro"?"current":""}`,children:[l.jsxs("div",{className:"pricing-plan-topline",children:[l.jsxs("span",{className:"pricing-plan-badge pro",children:[l.jsx(pn,{size:14})," Pro"]}),l.jsx("strong",{children:"$15"})]}),l.jsx("p",{className:"pricing-plan-audience",children:er.pro.audience}),l.jsx("h3",{children:"For serious operations"}),l.jsx("p",{children:"Commercial-ready monitoring for larger AI labs, studios, and teams."}),l.jsxs("ul",{children:[l.jsxs("li",{children:[l.jsx(In,{size:16})," 30+ workstation walls"]}),l.jsxs("li",{children:[l.jsx(In,{size:16})," Commercial use included"]}),l.jsxs("li",{children:[l.jsx(In,{size:16})," ",er.pro.ltd]})]}),l.jsxs("button",{className:"pricing-plan-button",onClick:a?()=>$a("pro"):$n,disabled:Rt==="pro"||ne==="checkout"||ne==="auth"||i||H,type:"button",children:[l.jsx(vc,{size:16}),Rt==="pro"?"Pro active":a?"Choose Pro":"Sign in for Pro"]})]})]}),l.jsxs("section",{className:"pricing-includes",children:[l.jsxs("div",{children:[l.jsx(en,{size:17}),l.jsx("span",{children:"Screen wall"}),l.jsx("strong",{children:"120+ slots"})]}),l.jsxs("div",{children:[l.jsx(md,{size:17}),l.jsx("span",{children:"Focused control"}),l.jsx("strong",{children:"Local-first"})]}),l.jsxs("div",{children:[l.jsx(_v,{size:17}),l.jsx("span",{children:"Remote audio"}),l.jsx("strong",{children:"Available"})]}),l.jsxs("div",{children:[l.jsx(lo,{size:17}),l.jsx("span",{children:"File transfer"}),l.jsx("strong",{children:"Included"})]})]}),l.jsxs("p",{className:"pricing-note",children:[l.jsx(In,{size:15})," Commercial use requires Pro. Plus LTD is for personal, creator, and homelab use."]}),l.jsxs("button",{className:"pricing-primary-cta",onClick:a?()=>$a(Rt==="ltd"?"pro":"ltd"):$n,disabled:Xd,type:"button",children:[l.jsx(vc,{size:18}),tu]})]}):l.jsx(l.Fragment,{children:l.jsxs("section",{className:`monitor-layout ${Kn?"dock-collapsed":""}`,children:[l.jsxs("section",{ref:vr,className:`screen-wall-panel ${Sl?"drop-active":""}`,onClick:x=>{x.currentTarget===x.target&&Js()},onDragEnter:x=>{x.preventDefault(),gr(!0)},onDragOver:x=>{x.preventDefault(),x.dataTransfer.dropEffect="copy"},onDragLeave:x=>{x.currentTarget===x.target&&gr(!1)},onDrop:Dr,children:[nt&&l.jsx("canvas",{ref:_i,className:"atlas-source-canvas",width:Ws?.width||1920,height:Ws?.height||1080,"aria-hidden":"true"}),Ve?l.jsx("section",{className:"control-focus",children:l.jsxs("div",{className:"control-wall",children:[Te&&$i.length>1&&l.jsx("div",{className:"control-monitor-tabs","aria-label":"Select monitor",children:$i.map(x=>l.jsxs("button",{className:x.index===ss?"active":"",onClick:()=>Gl(Te.deviceId,x.index),title:bM(x),type:"button",children:[l.jsx("span",{children:x.name||`Display ${x.index+1}`}),x.width>0&&x.height>0&&l.jsxs("small",{children:[x.width,"x",x.height]})]},x.index))}),Te?l.jsx(Zm,{device:Te,frame:ke,selected:!1,controlEnabled:ts&&de,showStatus:Je.showScreenStatus,monitorIndex:na(At[Te.deviceId],Yn(Te)),monitorCount:Yn(Te),onSelect:()=>{},onFocusDevice:()=>Y(Te.deviceId),onOpenControl:()=>No(Te.deviceId),onCycleMonitor:x=>Rr(Te.deviceId,x),onCanvasReady:_l,sendInput:Pl,presentationReady:ws},Te.deviceId):l.jsxs("div",{className:"control-empty",children:[l.jsx(en,{size:30}),l.jsx("strong",{children:"No workstation"}),l.jsx("span",{children:"Open a workstation from the Wall."})]}),Te&&!ws&&l.jsxs("div",{className:"control-connection-overlay",role:"status","aria-live":"polite",children:[P!=="error"&&l.jsx("span",{className:"control-connection-spinner","aria-hidden":"true"}),l.jsx("strong",{children:P==="error"?"Connection failed":"Connecting"}),l.jsx("small",{children:P==="error"?"See the notification for details. Reopen Control to retry.":Hl||Z?"Control stream is recovering. See the notification for details.":zi==="open"?"Preparing the first control frame":"Opening the Control stream"})]})]})}):nt?l.jsx("div",{className:`screen-wall atlas-slot-wall size-${Ge}`,onClick:x=>{x.currentTarget===x.target&&Js()},children:Ps.map((x,N)=>x?l.jsx(Zm,{device:x,frame:ns.get(x.deviceId),selected:es.has(x.deviceId),controlEnabled:!1,showStatus:Me.showScreenStatus,monitorIndex:na(At[x.deviceId],Yn(x)),monitorCount:Yn(x),onSelect:()=>Bi(x.deviceId),onFocusDevice:()=>Zs(x.deviceId),onOpenControl:()=>No(x.deviceId),onCycleMonitor:L=>Rr(x.deviceId,L),onCanvasReady:jr,sendInput:Pl,updateIndicator:Jl(x.deviceId),presentationReady:Me.autoStartLive&&Ia.includes(x.deviceId)?Da.has(x.deviceId):void 0,showPresentationSpinner:Me.autoStartLive&&Ia.includes(x.deviceId)},x.deviceId):l.jsx(oy,{index:N},`slot-${N}`))}):l.jsx("div",{className:`screen-wall size-${Ge}`,onClick:x=>{x.currentTarget===x.target&&Js()},children:Ps.map((x,N)=>x?l.jsx(Zm,{device:x,frame:ns.get(x.deviceId),selected:es.has(x.deviceId),controlEnabled:ts&&de&&Te?.deviceId===x.deviceId,showStatus:Me.showScreenStatus,monitorIndex:na(At[x.deviceId],Yn(x)),monitorCount:Yn(x),onSelect:()=>Bi(x.deviceId),onFocusDevice:()=>Zs(x.deviceId),onOpenControl:()=>No(x.deviceId),onCycleMonitor:L=>Rr(x.deviceId,L),onCanvasReady:Vc,sendInput:Pl,updateIndicator:Jl(x.deviceId),presentationReady:Me.autoStartLive&&Ia.includes(x.deviceId)?Da.has(x.deviceId):void 0,showPresentationSpinner:Me.autoStartLive&&Ia.includes(x.deviceId)},x.deviceId):l.jsx(oy,{index:N},`slot-${N}`))}),l.jsx(GM,{visible:Uc&&!Ve})]}),!Ml&&l.jsxs("aside",{className:`right-dock actions-mode ${Kn?"collapsed":""}`,"aria-label":"LiveDesk tools",children:[l.jsx("button",{className:"dock-toggle",onClick:()=>Ci(x=>!x),"aria-label":Kn?"Show control panel":"Hide control panel",title:Kn?"Show control panel":"Hide control panel",type:"button",children:Kn?l.jsx(gy,{size:18}):l.jsx(kh,{size:18})}),!Kn&&l.jsxs(l.Fragment,{children:[l.jsxs("section",{className:"action-dock",children:[l.jsxs("div",{className:"action-context",children:[l.jsx("span",{children:Ve?"Control target":Wl>0?"Selection":"No selection"}),l.jsx("strong",{children:Gi})]}),l.jsx("input",{ref:xr,className:"hidden-file-input",type:"file",multiple:!0,onChange:x=>{x.currentTarget.files&&Ha(x.currentTarget.files),x.currentTarget.value=""}}),l.jsxs("div",{className:"action-grid",children:[l.jsxs("button",{className:"action-tile primary",onClick:()=>Te&&Fi(Te.deviceId),disabled:!Pc,type:"button",children:[l.jsx(zv,{size:21}),l.jsx("span",{children:"Live"})]}),l.jsxs("button",{className:`action-tile ${de?"active":""}`,onClick:()=>Ne(x=>!x),disabled:!ts,title:Vd?"Allow Accessibility for the terminal app that starts LiveDesk, then restart the Mac client.":ts?"Remote keyboard and mouse control":"Remote control is not available on this workstation",type:"button",children:[l.jsx(md,{size:21}),l.jsx("span",{children:Fa!=="idle"?Fa:"Control"})]}),l.jsxs("button",{className:`action-tile ${Ie?"active":""}`,onClick:Jn,disabled:!qc,type:"button",title:Dl?"Remote PC audio":"Remote audio is not supported by this workstation yet",children:[l.jsx(_v,{size:21}),l.jsx("span",{children:Ie&&ko!=="idle"?ko:"Audio"})]}),l.jsxs("button",{className:"action-tile",onClick:()=>xr.current?.click(),disabled:!Wt||(Ve?!Te:ia.length===0),type:"button",title:"File transfer",children:[l.jsx(lo,{size:21}),l.jsx("span",{children:"Files"})]}),l.jsxs("button",{className:"action-tile",disabled:!0,type:"button",title:"Reboot",children:[l.jsx(Sc,{size:21}),l.jsx("span",{children:"Reboot"})]}),l.jsxs("button",{className:"action-tile",disabled:!0,type:"button",title:"Power",children:[l.jsx(yS,{size:21}),l.jsx("span",{children:"Power"})]}),l.jsxs("button",{className:"action-tile",disabled:!0,type:"button",title:"Terminal",children:[l.jsx(gc,{size:21}),l.jsx("span",{children:"Shell"})]})]})]}),Te&&Oa&&l.jsxs("section",{className:"side-panel selected-panel",children:[l.jsxs("div",{className:"machine-detail-head",children:[l.jsxs("div",{className:"panel-title",children:[l.jsx(en,{size:17}),l.jsx("h2",{children:"Machine detail"})]}),l.jsx("span",{className:`machine-health state-${Oa.state}`,children:Oa.label})]}),l.jsxs("div",{className:"machine-title",children:[l.jsx("strong",{children:lr(Te)}),l.jsx("span",{children:Oa.role})]}),l.jsx("div",{className:"machine-metric-grid",children:Oa.metrics.map(x=>l.jsxs("article",{className:`machine-metric state-${x.state}`,children:[l.jsx("span",{children:x.label}),l.jsx("strong",{children:x.value}),l.jsx("small",{children:x.detail}),x.ratio!==void 0&&l.jsx("i",{children:l.jsx("b",{style:{width:`${Math.round(x.ratio*100)}%`}})})]},x.id))}),l.jsxs("section",{className:"machine-section",children:[l.jsxs("div",{className:"machine-section-title",children:[l.jsx(qt,{size:15}),l.jsx("span",{children:"Stream"})]}),l.jsxs("dl",{className:"facts compact",children:[l.jsx("dt",{children:"Frames"}),l.jsx("dd",{children:Do}),l.jsx("dt",{children:Ve?"Control RX":nt?"Atlas RX":"Wall RX"}),l.jsx("dd",{children:Qd}),l.jsx("dt",{children:"Painted"}),l.jsx("dd",{children:Zc}),l.jsx("dt",{children:Ve?"Encoded changes":"Visual samples"}),l.jsx("dd",{children:fn}),l.jsx("dt",{children:"Decoder"}),l.jsx("dd",{children:Nt}),l.jsx("dt",{children:"Decoder IO"}),l.jsx("dd",{children:ra}),l.jsx("dt",{children:"Canvas"}),l.jsx("dd",{children:Lo}),l.jsx("dt",{children:"Control buffer"}),l.jsx("dd",{children:Rs}),l.jsx("dt",{children:"Browser RAF"}),l.jsx("dd",{children:Jc}),l.jsx("dt",{children:"Latency"}),l.jsx("dd",{children:it}),l.jsx("dt",{children:"Cadence"}),l.jsx("dd",{children:Ts}),l.jsx("dt",{children:"Source send"}),l.jsx("dd",{children:Vl}),l.jsx("dt",{children:"Packet mix"}),l.jsx("dd",{children:eu}),l.jsx("dt",{children:"Receive gap"}),l.jsx("dd",{children:el}),l.jsx("dt",{children:"Paint gap"}),l.jsx("dd",{children:_o}),l.jsx("dt",{children:"Seq gap"}),l.jsx("dd",{children:Pi}),l.jsx("dt",{children:"Selected"}),l.jsx("dd",{children:mn}),l.jsx("dt",{children:"Requested"}),l.jsx("dd",{children:is}),l.jsx("dt",{children:"Mode"}),l.jsx("dd",{children:qi}),l.jsx("dt",{children:"Chunk"}),l.jsx("dd",{children:rs}),l.jsx("dt",{children:"Size"}),l.jsx("dd",{children:Es}),l.jsx("dt",{children:"Native"}),l.jsx("dd",{children:Ns}),l.jsx("dt",{children:"Monitor"}),l.jsx("dd",{children:zo}),l.jsx("dt",{children:"Source"}),l.jsx("dd",{children:Oo}),l.jsx("dt",{children:"Input"}),l.jsx("dd",{children:Yl}),l.jsx("dt",{children:"Audio"}),l.jsx("dd",{children:tl}),Ve&&l.jsxs(l.Fragment,{children:[l.jsx("dt",{children:"Visual feedback"}),l.jsx("dd",{children:_r})]})]})]}),l.jsxs("section",{className:"machine-section",children:[l.jsxs("div",{className:"machine-section-title",children:[l.jsx(gc,{size:15}),l.jsx("span",{children:"Local services"})]}),l.jsx("div",{className:"tool-probe-list",children:Oa.tools.map(x=>l.jsxs("span",{className:`tool-probe state-${x.status}`,children:[l.jsx("b",{children:x.label}),l.jsx("em",{children:x.detail})]},x.id))})]}),l.jsxs("section",{className:"machine-section",children:[l.jsxs("div",{className:"machine-section-title",children:[l.jsx(Cd,{size:15}),l.jsx("span",{children:"Workload"})]}),l.jsxs("div",{className:"workload-card",children:[l.jsx("strong",{children:Oa.taskLabel}),l.jsx("span",{children:Oa.taskStatus}),Oa.taskSummary&&l.jsx("p",{children:Oa.taskSummary})]})]}),l.jsxs("div",{className:"machine-section",children:[l.jsxs("div",{className:"machine-section-title",children:[l.jsx(Lv,{size:15}),l.jsx("span",{children:"System"})]}),l.jsxs("dl",{className:"facts compact",children:[l.jsx("dt",{children:"Platform"}),l.jsxs("dd",{children:[Te.platform||"-"," ",Te.arch||""]}),l.jsx("dt",{children:"Release"}),l.jsx("dd",{children:ga(Te.status,"release")||"-"}),l.jsx("dt",{children:"Uptime"}),l.jsx("dd",{children:Lw(Bt(Te.status,"uptimeSec"))}),l.jsx("dt",{children:"Last seen"}),l.jsx("dd",{children:rh(Te.lastSeenAt||Te.connectedAt)}),l.jsx("dt",{children:"Agent"}),l.jsx("dd",{children:Te.agentVersion||"-"}),l.jsx("dt",{children:"Address"}),l.jsx("dd",{children:Te.remoteAddress||"-"})]})]}),l.jsxs("button",{className:"text-button full",onClick:()=>Te&&Fi(Te.deviceId),disabled:!Pc,type:"button",children:[l.jsx(zv,{size:16}),"Start live"]})]})]})]})]})})]}),Ss&&l.jsxs("aside",{className:`transfer-bar state-${Ss.status}`,"aria-live":"polite",children:[l.jsx("span",{className:"transfer-bar-icon","aria-hidden":"true",children:Ss.status==="queued"?l.jsx(In,{size:18}):Ss.status==="failed"?l.jsx(rr,{size:18}):l.jsx(dy,{size:18})}),l.jsxs("div",{className:"transfer-bar-copy",children:[l.jsx("p",{children:Ss.message}),l.jsx("div",{className:"transfer-bar-track",children:l.jsx("span",{style:{width:`${Math.max(0,Math.min(100,Ss.progress))}%`}})})]}),l.jsxs("strong",{children:[Math.max(0,Math.min(100,Ss.progress)),"%"]})]}),oe&&l.jsxs("aside",{className:"livedesk-toast",role:"alert","aria-live":"assertive",children:[l.jsx("span",{children:oe.message}),l.jsx("button",{className:"livedesk-toast-close",onClick:()=>me(""),type:"button","aria-label":"Dismiss notification",title:"Dismiss notification",children:l.jsx(rr,{size:15})})]})]})}function YM(){if(typeof window>"u")return[];const n=window.location.origin;return window.location.port==="5198"||window.location.port==="5179"?[n]:["http://127.0.0.1:5198","http://127.0.0.1:5179"]}function WM(){const n="".trim().toLowerCase(),a=n==="hub"?"hub":"client",[i,r]=f.useState(a);return f.useEffect(()=>{if(n==="client"||n==="hub")return;let c=!1;return(async()=>{for(const m of YM())try{const p=await fetch(`${m}/api/runtime`,{cache:"no-store"});if(!p.ok)continue;const g=(await p.json()).role==="client"?"client":"hub";c||r(g);return}catch{}})(),()=>{c=!0}},[n]),i==="client"?l.jsx(RS,{}):l.jsx(VM,{})}MS.createRoot(document.getElementById("root")).render(l.jsx(f.StrictMode,{children:l.jsx(WM,{})}));
|
|
15
|
+
`)}`:m}return r.length>0?`${i.length}대 완료, ${r.length}대 실패했습니다.`:`${i.length}대 작업이 완료되었습니다.`}const xA={read:"allow",processControl:"ask",serviceControl:"ask",applicationControl:"ask",fileRead:"ask",fileWrite:"ask",fileDelete:"ask",shell:"ask",script:"ask",softwareInstall:"ask",network:"ask",systemPower:"ask",systemConfiguration:"ask",userAccount:"deny"};function yA(n){return n==="safe-auto"?"Safe Auto":n==="full-access"?"Full Access":n==="custom"?"Custom":"Ask"}function wA(n){return n.replace(/([A-Z])/g," $1").replace(/^./,a=>a.toUpperCase())}function bA({hubUrl:n,devices:a}){const[i,r]=f.useState("all"),[c,d]=f.useState([]),[m,p]=f.useState(""),[v,g]=f.useState([]),[w,y]=f.useState(""),[b,C]=f.useState(""),[j,A]=f.useState(""),[T,k]=f.useState("safe-auto"),[R]=f.useState("custom-default"),[E,$]=f.useState(xA),[F,q]=f.useState([]),[I,_]=f.useState(""),[fe,G]=f.useState(!1),[ue,Y]=f.useState(null),[ae,le]=f.useState(!1),[V,z]=f.useState(""),[K,Q]=f.useState(!1),P=f.useRef(null),ie=f.useRef(new Set),Se=f.useRef(new Set),D=f.useRef(new Set),Z=f.useMemo(()=>a.filter(te=>te.connected).map(te=>te.deviceId),[a]),ye=f.useMemo(()=>Wk(rw,a,i,c,T,E),[E,a,T,c,i]),be=f.useCallback(te=>{const oe=cd(te,a);if(g(Ae=>Ae.map(Ce=>Ce.type==="task"&&Ce.batchId===te.batchId?{...Ce,states:gA(Ce.states,oe),status:te.status}:Ce)),!["running","queued"].includes(te.status)&&!ie.current.has(te.batchId)){ie.current.add(te.batchId);const Ae=Ji("agent-summary");g(Ce=>[...Ce,{type:"agent",id:Ae,text:vA(te,oe)}]),te.operation&&dA(n,{instruction:te.instructionPreview,operation:te.operation,total:oe.length,completed:oe.filter(Ce=>Ce.status==="completed").length,failed:oe.filter(Ce=>Ce.status==="failed").length,results:oe.map(Ce=>({deviceName:Ce.deviceName,status:Ce.status,result:Ce.result,error:Ce.error}))}).then(Ce=>{!Ce.ok||!Ce.summary||g(st=>st.map(me=>me.type==="agent"&&me.id===Ae?{...me,text:Ce.summary}:me))}).catch(()=>{}),y(Ce=>Ce===te.batchId?"":Ce)}},[a,n]),de=f.useCallback(async te=>{const oe=await mA(n,te);return be(oe),oe},[n,be]),Ne=f.useCallback((te,oe)=>{D.current.has(te.batchId)||(D.current.add(te.batchId),g(Ae=>[...Ae,{type:"task",id:Ji("task"),batchId:te.batchId,agentRunId:oe,operation:te.operation||"diagnostics.collect",instruction:te.instructionPreview,states:cd(te,a),status:te.status}])),be(te)},[a,be]),Ie=f.useCallback(async te=>{const oe=await lA(n,te);for(const Ae of oe.taskBatches||[])Ne(Ae,te);if(q(oe.approvals||[]),!["running","queued","waiting-approval"].includes(oe.status)&&!Se.current.has(te)){Se.current.add(te);const Ae=oe.finalResponse?.trim()||(oe.status==="cancelled"?"Codex 작업을 취소했습니다.":oe.error?`Codex 작업이 완료되지 않았습니다: ${oe.error}`:"Codex 작업이 완료되었습니다.");g(Ce=>[...Ce,{type:oe.status==="failed"?"error":"agent",id:Ji("agent-run-result"),text:Ae}])}return oe},[Ne,n]);f.useEffect(()=>{if(!w)return;let te=!0;const oe=async()=>{try{const Ce=await de(w);te&&!["running","queued"].includes(Ce.status)&&y("")}catch(Ce){te&&z(Ce instanceof Error?Ce.message:String(Ce))}};oe();const Ae=window.setInterval(()=>{oe()},800);return()=>{te=!1,window.clearInterval(Ae)}},[w,de]),f.useEffect(()=>{if(!b)return;let te=!0;const oe=async()=>{try{const Ce=await Ie(b);te&&!["running","queued","waiting-approval"].includes(Ce.status)&&(C(""),le(!1))}catch(Ce){te&&z(Ce instanceof Error?Ce.message:String(Ce))}};oe();const Ae=window.setInterval(()=>{oe()},800);return()=>{te=!1,window.clearInterval(Ae)}},[b,Ie]);const re=async(te="",oe,Ae=!1)=>{const Ce=(te||m).trim();if(!Ce||w||b)return;let st=Rk(Ce);const me=oe||(i==="all"?Z:c.filter(_e=>Z.includes(_e)));if(me.length===0){z("Select at least one connected workstation.");return}if(T==="full-access"&&!ae&&!Ae){Y({instruction:Ce,targetIds:me});return}if(g(_e=>[..._e,{type:"user",id:Ji("user"),text:Ce}]),p(""),Q(!1),z(""),(i==="all"?Z:c.filter(_e=>Z.includes(_e))).length===0){g(_e=>[..._e,{type:"error",id:Ji("no-targets"),text:"연결된 대상 장비를 하나 이상 선택해 주세요."}]);return}if(!st){try{if(T==="custom"){const Ge=await uA(n,R,E);if(!Ge.ok)throw new Error(Ge.error||"Custom Agent policy could not be saved.")}const _e=await sA(n,{instruction:Ce,deviceIds:me,permissionMode:T,customPolicyId:R});if(!_e.ok||!_e.runId)throw new Error(_e.error||"Codex Agent run could not be started.");q(_e.approvals||[]),C(_e.runId);return}catch(_e){try{const Ge=await aA(n,Ce);Ge.ok&&Ge.plan&&(st={operation:Ge.plan.operation,query:Ge.plan.targetQuery})}catch{g(Ge=>[...Ge,{type:"error",id:Ji("unsupported"),text:_e instanceof Error?_e.message:Ek}])}}if(!st)return}try{const _e=await fA(n,{instruction:Ce,deviceIds:me,operation:st.operation,targetQuery:st.query});if(!_e.ok||!_e.batch||!_e.batchId)throw new Error(_e.error||"작업을 만들지 못했습니다.");const Ge={type:"task",id:Ji("task"),batchId:_e.batchId,operation:st.operation,instruction:Ce,states:cd(_e.batch,a),status:_e.batch.status};D.current.add(_e.batchId),g(na=>[...na,Ge]),y(_e.batchId)}catch(_e){z(_e instanceof Error?_e.message:String(_e))}},Ke=async(te,oe)=>{_(te.approvalId);try{const Ae=await oA(n,te.runId,te.approvalId,oe);if(!Ae.ok)throw new Error(Ae.error||"Agent approval could not be applied.");await Ie(te.runId)}catch(Ae){z(Ae instanceof Error?Ae.message:String(Ae))}finally{_("")}},De=async te=>{_(te.approvalId);try{const oe=await cA(n,te.runId,te.approvalId);if(!oe.ok)throw new Error(oe.error||"Agent approval could not be rejected.");await Ie(te.runId)}catch(oe){z(oe instanceof Error?oe.message:String(oe))}finally{_("")}},Qe=async(te,oe)=>{A(te);try{if(oe){const Ce=await iA(n,oe);for(const st of Ce.taskBatches||[])be(st);C(st=>st===oe?"":st);return}const Ae=await hA(n,te);be(Ae),y(Ce=>Ce===te?"":Ce)}catch(Ae){z(Ae instanceof Error?Ae.message:String(Ae))}finally{A("")}},ne=async()=>{if(!(fe||!w&&!b)){G(!0);try{const te=await rA(n);if(!te.ok)throw new Error(te.error||"모든 Agent 작업을 취소하지 못했습니다.");y(""),C(""),q([]),g(oe=>oe.map(Ae=>Ae.type==="task"&&["queued","running"].includes(Ae.status)?{...Ae,status:"cancelled",states:Ae.states.map(Ce=>["queued","running"].includes(Ce.status)?{...Ce,status:"cancelled",stage:"Cancelled",error:"Cancelled by user."}:Ce)}:Ae))}catch(te){z(te instanceof Error?te.message:String(te))}finally{G(!1)}}},ge=async te=>{A(te);try{const oe=await pA(n,te);if(!oe.ok||!oe.batch||!oe.batchId)throw new Error(oe.error||"재시도하지 못했습니다.");ie.current.delete(oe.batchId),g(Ae=>Ae.map(Ce=>Ce.type==="task"&&Ce.batchId===te?{...Ce,batchId:oe.batchId,states:cd(oe.batch,a),status:oe.batch.status}:Ce)),y(oe.batchId)}catch(oe){z(oe instanceof Error?oe.message:String(oe))}finally{A("")}},Re=te=>{p(te),Q(!1),window.requestAnimationFrame(()=>P.current?.focus())};return l.jsxs("section",{className:"agents-page",children:[l.jsxs("div",{className:"agents-workspace",children:[(w||b)&&l.jsxs("div",{className:"agents-page-status",children:[l.jsxs("span",{children:[Z.length," workstations · ",yA(T)]}),l.jsx("button",{type:"button",className:"agents-stop-all",onClick:()=>{ne()},disabled:fe,children:fe?"Stopping…":"Stop all"})]}),ue&&l.jsx("div",{className:"agents-permission-modal-backdrop",role:"presentation",children:l.jsxs("section",{className:"agents-permission-modal",role:"dialog","aria-modal":"true","aria-labelledby":"full-access-title",children:[l.jsx("span",{className:"agents-permission-modal-icon",children:l.jsx(Ld,{size:20})}),l.jsx("h3",{id:"full-access-title",children:"Confirm Full Access"}),l.jsx("p",{children:"Codex may change files, run commands, manage applications, and modify system state on the selected workstations. This run is still limited to the selected devices, the fixed policy, and the tool budget."}),l.jsxs("div",{className:"agents-permission-modal-actions",children:[l.jsx("button",{type:"button",onClick:()=>Y(null),children:"Cancel"}),l.jsx("button",{type:"button",className:"danger",onClick:()=>{const te=ue;Y(null),le(!0),re(te.instruction,te.targetIds,!0)},children:"Run with Full Access"})]})]})}),V&&l.jsx("div",{className:"agents-error",role:"alert",children:V}),l.jsx(Fk,{items:v,onCancel:Qe,onRetry:ge,busyBatchId:j,approvals:F,onApprove:Ke,onReject:De,busyApprovalId:I}),l.jsxs("div",{className:"agents-composer-shell",children:[K&&l.jsx(tA,{devices:a,targetMode:i,selectedIds:c,permissionMode:T,customCategories:E,onSelectPrompt:Re,onClose:()=>Q(!1)}),l.jsx(kk,{ref:P,value:m,onChange:p,onSubmit:()=>{re()},onOpenSuggestedTasks:()=>Q(te=>!te),suggestedOpen:K,suggestedTaskCount:ye,disabled:!!w||!!b})]})]}),l.jsxs("aside",{className:"agents-target-sidebar","aria-label":"Agent targets and permissions",children:[l.jsx(nA,{devices:a,mode:i,selectedIds:c,onModeChange:r,onToggle:te=>d(oe=>oe.includes(te)?oe.filter(Ae=>Ae!==te):[...oe,te]),permissionMode:T,onPermissionModeChange:te=>{k(te),te!=="full-access"&&le(!1)}}),T==="custom"&&l.jsxs("section",{className:"agents-custom-policy","aria-label":"Custom Agent permissions",children:[l.jsxs("div",{className:"agents-custom-policy-head",children:[l.jsxs("div",{children:[l.jsx("span",{className:"agents-section-label",children:"Custom policy"}),l.jsx("strong",{children:"Choose what Codex may do automatically."})]}),l.jsx("span",{children:"Denied actions never reach a device."})]}),l.jsx("div",{className:"agents-custom-policy-grid",children:Ak.map(te=>l.jsxs("label",{children:[l.jsx("span",{children:wA(te)}),l.jsxs("select",{value:E[te],onChange:oe=>$(Ae=>({...Ae,[te]:oe.target.value})),children:[l.jsx("option",{value:"allow",children:"Allow automatically"}),l.jsx("option",{value:"ask",children:"Ask every time"}),l.jsx("option",{value:"deny",children:"Deny"})]})]},te))})]})]})]})}function cw(n){return{type:n.type,deviceIds:n.deviceIds,monitorIndex:n.monitorIndex,label:n.label}}async function uw(n){try{return(await n.json()).error||`${n.status} ${n.statusText}`}catch{return`${n.status} ${n.statusText}`}}async function dw(n,a,i){const r=encodeURIComponent(JSON.stringify({kind:a.kind,fileName:a.fileName,mimeType:n.type||"application/octet-stream",durationMs:a.durationMs,target:cw(a.target)})),c=await fetch(`${Si(i)}/api/captures?metadata=${r}`,{method:"POST",headers:{"Content-Type":n.type||"application/octet-stream"},body:n,cache:"no-store"});if(!c.ok)throw new Error(await uw(c));return await c.json()}async function SA(n,a){return await Be("/api/capture-sessions",{method:"POST",body:JSON.stringify({...n,target:cw(n.target)})},a)}async function CA(n,a,i,r){const c=await fetch(`${Si(r)}/api/capture-sessions/${encodeURIComponent(n)}/chunks/${a}`,{method:"PUT",headers:{"Content-Type":i.type||"application/octet-stream"},body:i,cache:"no-store"});if(!c.ok)throw new Error(await uw(c));return await c.json()}async function jA(n,a,i){return await Be(`/api/capture-sessions/${encodeURIComponent(n)}/finalize`,{method:"POST",body:JSON.stringify({durationMs:a})},i)}async function Ox(n,a){await Be(`/api/capture-sessions/${encodeURIComponent(n)}`,{method:"DELETE"},a)}async function kA(n){return await Be("/api/captures",void 0,n)}function Ix(n,a){return`${Si(a)}/api/captures/${encodeURIComponent(n)}/content`}async function AA(n,a){return await Be(`/api/captures/${encodeURIComponent(n)}`,{method:"DELETE"},a)}function MA({hubUrl:n,onToast:a}){const[i,r]=f.useState([]),[c,d]=f.useState(!0),m=f.useCallback(async()=>{d(!0);try{r((await kA(n)).captures||[])}catch(v){a(v instanceof Error?v.message:String(v))}finally{d(!1)}},[n,a]);f.useEffect(()=>{m()},[m]);const p=async v=>{const g=Ix(v.id,n);if(navigator.share)try{await navigator.share({title:v.fileName,url:g});return}catch{}window.open(g,"_blank","noopener,noreferrer")};return l.jsxs("section",{className:"capture-gallery",children:[l.jsxs("header",{children:[l.jsxs("div",{children:[l.jsx("span",{className:"settings-eyebrow",children:"Capture Gallery"}),l.jsx("h2",{children:"Saved captures"})]}),l.jsxs("button",{className:"text-button",onClick:()=>{m()},type:"button",children:[l.jsx(Oc,{size:15})," Refresh"]})]}),c?l.jsx("p",{className:"settings-help",children:"Loading captures..."}):i.length===0?l.jsx("p",{className:"settings-help",children:"No captures saved yet."}):l.jsx("div",{className:"capture-gallery-grid",children:i.map(v=>{const g=Ix(v.id,n);return l.jsxs("article",{className:"capture-gallery-card",children:[v.mimeType.startsWith("image/")?l.jsx("img",{src:g,alt:v.target.label}):l.jsx("video",{src:g,controls:!0,preload:"metadata"}),l.jsxs("div",{className:"capture-gallery-card-body",children:[l.jsx("strong",{children:v.fileName}),l.jsxs("small",{children:[v.target.label," · ",new Date(v.createdAt).toLocaleString()," · ",Math.ceil(v.sizeBytes/1024)," KB"]}),l.jsxs("div",{children:[l.jsx("button",{className:"icon-button",title:"Open","aria-label":"Open",onClick:()=>window.open(g,"_blank","noopener,noreferrer"),type:"button",children:l.jsx(sS,{size:15})}),l.jsx("a",{className:"icon-button",title:"Download","aria-label":"Download",href:`${g}?download=1`,download:v.fileName,children:l.jsx(uy,{size:15})}),l.jsx("button",{className:"icon-button",title:"Share","aria-label":"Share",onClick:()=>{p(v)},type:"button",children:l.jsx(lS,{size:15})}),l.jsx("button",{className:"icon-button danger",title:"Delete","aria-label":"Delete",onClick:()=>{window.confirm(`Delete ${v.fileName}?`)&&AA(v.id,n).then(()=>m()).catch(w=>a(w instanceof Error?w.message:String(w)))},type:"button",children:l.jsx(wh,{size:15})})]})]})]},v.id)})})]})}function ud(n){if(!n)return"";const a=Math.max(0,Math.floor((Date.now()-n)/1e3)),i=Math.floor(a/3600),r=Math.floor(a%3600/60),c=a%60;return i>0?`${String(i).padStart(2,"0")}:${String(r).padStart(2,"0")}:${String(c).padStart(2,"0")}`:`${String(r).padStart(2,"0")}:${String(c).padStart(2,"0")}`}function Bx({controller:n,compact:a=!1,onFirstRollingUse:i,onError:r}){const{state:c,settings:d,videoSupported:m}=n,p=async y=>{try{await y()}catch(b){r?.(b instanceof Error?b.message:String(b))}},v=async()=>{if(d.rollingEnabled){n.setRollingEnabled(!1);return}(i?await i():window.confirm(`Keep the most recent 30 seconds in memory temporarily?
|
|
16
|
+
Nothing is saved until you press Save Last 30s.`))&&n.setRollingEnabled(!0)},g=c.recording?`Stop recording · ${ud(c.recordingStartedAt)}`:`Start recording · ${c.targetLabel}`,w=c.timelapse?`Stop timelapse · ${ud(c.timelapseStartedAt)}`:`Start timelapse · ${d.timelapseIntervalSeconds}s interval`;return l.jsxs("div",{className:`capture-toolbar ${a?"compact":""} ${c.recording?"recording-active":""}`,"aria-label":"Capture actions",children:[l.jsx("button",{className:"capture-action","aria-label":`Take screenshot · ${c.targetLabel}`,title:`Take screenshot · ${c.targetLabel}`,disabled:c.busy,onClick:()=>{p(n.takeScreenshot)},type:"button",children:l.jsx(iS,{size:17})}),l.jsx("button",{className:`capture-action ${c.recording?"active":""}`,"aria-label":g,title:g,disabled:!m||c.busy||c.timelapse,onClick:()=>{p(c.recording?n.stopRecording:n.startRecording)},type:"button",children:c.recording?l.jsxs(l.Fragment,{children:[l.jsx(Rv,{size:14,fill:"currentColor"}),l.jsx("span",{children:ud(c.recordingStartedAt)})]}):l.jsx(oy,{size:18})}),l.jsxs("button",{className:"capture-action","aria-label":c.bufferEnabled?`Save last 30 seconds · ${c.bufferSeconds}s ready`:"Enable Last 30s memory buffer",title:c.bufferEnabled?`Save last 30 seconds · ${c.bufferSeconds}s ready`:"Enable Last 30s memory buffer",disabled:!m||c.recording||c.timelapse||c.busy||c.bufferEnabled&&c.bufferSeconds<1,onClick:()=>c.bufferEnabled?void p(n.saveLast30Seconds):void v(),type:"button",children:[l.jsx(rS,{size:17}),l.jsx("small",{children:"30s"})]}),l.jsx("button",{className:`capture-action ${c.timelapse?"timelapse-active":""}`,"aria-label":w,title:w,disabled:!m||c.busy||c.recording,onClick:()=>{p(c.timelapse?n.stopTimelapse:n.startTimelapse)},type:"button",children:c.timelapse?l.jsxs(l.Fragment,{children:[l.jsx(Rv,{size:14,fill:"currentColor"}),l.jsx("span",{children:ud(c.timelapseStartedAt)})]}):l.jsx(oS,{size:17})})]})}async function NA(n,a={}){const i=n.filter(y=>y.canvas&&y.canvas.width>0&&y.canvas.height>0),r=Math.max(320,a.maxWidth||1920),c=Math.max(180,a.maxHeight||1080),d=i.length<=1?1:i.length<=4?2:i.length<=9?3:4,m=Math.max(1,Math.ceil(Math.max(1,i.length)/d)),p=Math.floor(r/d),v=Math.floor(c/m),g=document.createElement("canvas");g.width=Math.max(320,p*d),g.height=Math.max(180,v*m);const w=g.getContext("2d",{alpha:!1});if(!w)return g;w.fillStyle="#0b1220",w.fillRect(0,0,g.width,g.height),w.font="600 14px system-ui, sans-serif",w.textBaseline="bottom";for(let y=0;y<i.length;y+=1){const b=i[y],C=y%d,j=Math.floor(y/d),A=C*p,T=j*v,k=b.canvas,R=Math.min(p/k.width,v/k.height),E=Math.max(1,Math.floor(k.width*R)),$=Math.max(1,Math.floor(k.height*R)),F=A+Math.floor((p-E)/2),q=T+Math.floor((v-$)/2);w.drawImage(k,F,q,E,$),a.includeLabels!==!1&&(w.fillStyle="rgba(4, 10, 20, .74)",w.fillRect(A,T+v-28,p,28),w.fillStyle="#f8fafc",w.fillText(b.label,A+9,T+v-9))}return g}function TA(n){return n?.signature||"none"}function RA(n){return n?.label||"No capture target"}function Fx(n){return{...n,deviceIds:[...n.deviceIds],sourceCanvas:n.sourceCanvas||null}}function EA(){const n=new Date,a=i=>String(i).padStart(2,"0");return`${n.getFullYear()}${a(n.getMonth()+1)}${a(n.getDate())}_${a(n.getHours())}${a(n.getMinutes())}${a(n.getSeconds())}`}function DA(n){return n.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"Wall"}function LA(n){return`LiveDesk_${n.type==="wall"||n.type==="selection"?"Wall":`${DA(n.label)}_Monitor-${Number(n.monitorIndex||0)+1}`}_${EA()}.png`}async function _A(n,a,i){const r=await new Promise((d,m)=>n.toBlob(p=>p?d(p):m(new Error("Screenshot could not be encoded.")),"image/png")),c=await dw(r,{kind:"screenshot",fileName:LA(a),target:a},i);try{await navigator.clipboard.write([new ClipboardItem({"image/png":r})])}catch{}return c.capture}function fw(){return["video/webm;codecs=vp9","video/webm;codecs=vp8","video/webm"].find(a=>typeof MediaRecorder<"u"&&MediaRecorder.isTypeSupported(a))||""}function zA(n,a){const i=new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","_"),r=a.label.replace(/[^a-zA-Z0-9._-]+/g,"-").slice(0,70)||"Wall";return n==="timelapse"?`LiveDesk_Timelapse_${r}_${i}.webm`:`LiveDesk_Recording_${r}_${i}.webm`}async function mw(n){if(typeof MediaRecorder>"u"||typeof n.canvas.captureStream!="function")throw new Error("This browser does not support video recording.");const a=fw();if(!a)throw new Error("This browser does not support WebM recording.");const i=n.kind||"recording",r=await SA({kind:i,fileName:zA(i,n.target),mimeType:a,target:n.target},n.hubUrl),c=n.canvas.captureStream(n.frameRequests?0:n.fps),d=new MediaRecorder(c,{mimeType:a,videoBitsPerSecond:i==="timelapse"?2e6:4e6}),m=performance.now();let p=0,v=!1,g=null,w=Promise.resolve();return d.ondataavailable=y=>{if(!y.data||y.data.size===0)return;const b=p++;w=w.then(()=>CA(r.sessionId,b,y.data,n.hubUrl).then(()=>{})).catch(C=>{g=g||(C instanceof Error?C:new Error(String(C))),n.onError?.(g)})},d.onerror=()=>{g=new Error("Video recording stopped unexpectedly."),n.onError?.(g)},d.start(1e3),{requestFrame:()=>{c.getVideoTracks()[0]?.requestFrame?.()},stop:async()=>{if(!v){if(v=!0,await new Promise(y=>{d.addEventListener("stop",()=>y(),{once:!0}),d.stop()}),c.getTracks().forEach(y=>y.stop()),await w,g)throw await Ox(r.sessionId,n.hubUrl).catch(()=>{}),g;await jA(r.sessionId,Math.max(0,performance.now()-m),n.hubUrl)}},cancel:async()=>{v||(v=!0,d.stop(),c.getTracks().forEach(y=>y.stop()),await Ox(r.sessionId,n.hubUrl).catch(()=>{}))}}}class OA{recorder=null;stream=null;segments=[];totalBytes=0;targetSignature="";startedAt=0;maxDurationMs=3e4;maxBytes=128*1024*1024;get seconds(){return!this.startedAt||this.segments.length===0?0:Math.min(30,Math.max(0,(performance.now()-this.segments[0].at)/1e3))}get active(){return this.recorder!==null}async start(a,i){if(this.recorder&&this.targetSignature===i.signature)return;if(this.stop(),typeof MediaRecorder>"u"||typeof a.captureStream!="function")throw new Error("This browser does not support Last 30s.");const r=fw();if(!r)throw new Error("This browser does not support WebM recording.");this.targetSignature=i.signature,this.stream=a.captureStream(20),this.recorder=new MediaRecorder(this.stream,{mimeType:r,videoBitsPerSecond:3e6}),this.startedAt=performance.now(),this.recorder.ondataavailable=c=>{if(!c.data.size)return;const d=performance.now();for(this.segments.push({blob:c.data,at:d}),this.totalBytes+=c.data.size;this.segments.length>1&&(d-this.segments[0].at>this.maxDurationMs||this.totalBytes>this.maxBytes);){const m=this.segments.shift();this.totalBytes-=m.blob.size}},this.recorder.start(1e3)}stop(){const a=this.recorder;this.recorder=null,a&&a.state!=="inactive"&&(a.ondataavailable=null,a.stop()),this.stream?.getTracks().forEach(i=>i.stop()),this.stream=null,this.segments=[],this.totalBytes=0,this.startedAt=0}async save(a,i){if(this.segments.length===0)throw new Error("The Last 30s buffer is not ready yet.");const r=new Blob(this.segments.map(m=>m.blob),{type:this.segments[0].blob.type||"video/webm"}),d=`LiveDesk_Last30s_${a.label.replace(/[^a-zA-Z0-9._-]+/g,"-").slice(0,70)||"Wall"}_${new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"").replace("T","_")}.webm`;return await dw(r,{kind:"last-30s",fileName:d,target:a,durationMs:Math.min(3e4,this.segments.length*1e3)},i)}}async function IA(n,a,i,r,c){const d=await mw({canvas:n,target:a,kind:"timelapse",fps:30,frameRequests:!0,hubUrl:r,onError:c});d.requestFrame?.();const m=window.setInterval(()=>d.requestFrame?.(),Math.max(5,i)*1e3);return{stop:async()=>{window.clearInterval(m),await d.stop()},cancel:async()=>{window.clearInterval(m),await d.cancel()}}}const hw="livedesk.captureSettings";function BA(){const n={rollingEnabled:!1,recordingQuality:"standard",timelapseIntervalSeconds:10,includeRemoteCursor:!0};try{const a=JSON.parse(localStorage.getItem(hw)||"null");return{...n,...a&&typeof a=="object"?a:{}}}catch{return n}}function FA(n){const[a,i]=f.useState(BA),[r,c]=f.useState(0),[d,m]=f.useState(0),[p,v]=f.useState(0),[g,w]=f.useState(!1),y=f.useRef(void 0),b=f.useRef(!1),C=f.useRef(""),j=f.useRef(null),A=f.useRef(null),T=f.useRef(null),k=f.useRef(null),R=f.useRef(new OA),E=n.sourceRegistry.resolveCurrentTarget(),$=TA(E),F=RA(E),q=typeof MediaRecorder<"u"&&typeof HTMLCanvasElement<"u"&&"captureStream"in HTMLCanvasElement.prototype;f.useEffect(()=>{if(localStorage.setItem(hw,JSON.stringify(a)),!b.current)return;const Q=JSON.stringify(a);Q!==C.current&&(C.current=Q,Be("/api/settings",{method:"PATCH",body:JSON.stringify({revision:y.current,filesAudio:{rollingBufferEnabled:a.rollingEnabled,recordingQuality:a.recordingQuality,timelapseIntervalSeconds:a.timelapseIntervalSeconds,includeRemoteCursor:a.includeRemoteCursor}})},n.hubUrl).then(P=>{y.current=Number(P.revision||y.current||0)}).catch(()=>{}))},[n.hubUrl,a]),f.useEffect(()=>{let Q=!0;return Be("/api/settings",void 0,n.hubUrl).then(P=>{if(!Q)return;const ie=P.settings?.filesAudio||{},Se=typeof ie.rollingBufferEnabled=="boolean"?ie.rollingBufferEnabled:a.rollingEnabled,D=ie.recordingQuality==="high"?"high":"standard",Z=[5,10,30,60].includes(Number(ie.timelapseIntervalSeconds))?Number(ie.timelapseIntervalSeconds):a.timelapseIntervalSeconds,ye=typeof ie.includeRemoteCursor=="boolean"?ie.includeRemoteCursor:a.includeRemoteCursor,be={rollingEnabled:Se,recordingQuality:D,timelapseIntervalSeconds:Z,includeRemoteCursor:ye};y.current=Number(P.revision||0),C.current=JSON.stringify(be),b.current=!0,i(be)}).catch(()=>{b.current=!0}),()=>{Q=!1}},[n.hubUrl]);const I=f.useCallback(async Q=>{if(Q.sourceCanvas&&Q.sourceCanvas.width>0&&Q.sourceCanvas.height>0)return{target:Fx(Q),canvas:Q.sourceCanvas,cleanup:()=>{}};const P=await n.sourceRegistry.composeWall(Q.deviceIds,{maxWidth:1920,maxHeight:1080,includeLabels:!0});let ie=!1;const Se=window.setInterval(async()=>{if(ie)return;const D=await n.sourceRegistry.composeWall(Q.deviceIds,{maxWidth:1920,maxHeight:1080,includeLabels:!0}).catch(()=>null);!D||ie||((P.width!==D.width||P.height!==D.height)&&(P.width=D.width,P.height=D.height),P.getContext("2d")?.drawImage(D,0,0))},100);return{target:Fx(Q),canvas:P,cleanup:()=>{ie=!0,window.clearInterval(Se)}}},[n.sourceRegistry]);f.useEffect(()=>{const Q=R.current;if(!a.rollingEnabled||!E||!q){Q.stop(),v(0);return}let P=!1,ie=null;return(async()=>{try{if(ie=await I(E),P)return;await Q.start(ie.canvas,ie.target);const D=window.setInterval(()=>v(Math.round(Q.seconds)),500),Z=()=>{window.clearInterval(D),ie?.cleanup()};Q.__cleanup=Z}catch(D){P||n.onToast(D instanceof Error?D.message:String(D))}})(),()=>{P=!0,Q.stop(),Q.__cleanup?.(),Q.__cleanup=void 0,v(0)}},[I,n.onToast,a.rollingEnabled,$,q]);const _=f.useCallback(Q=>i(P=>({...P,rollingEnabled:Q})),[]),fe=f.useCallback(Q=>i(P=>({...P,recordingQuality:Q})),[]),G=f.useCallback(Q=>i(P=>({...P,timelapseIntervalSeconds:Q})),[]),ue=f.useCallback(async()=>{const Q=n.sourceRegistry.resolveCurrentTarget();if(!Q)throw new Error("화면이 준비된 후 다시 시도하세요.");w(!0);let P=null;try{P=await I(Q),await _A(P.canvas,P.target,n.hubUrl),n.onToast("Screenshot saved")}finally{P?.cleanup(),w(!1)}},[I,n.hubUrl,n.onToast,n.sourceRegistry]),Y=f.useCallback(async()=>{if(T.current)throw new Error("Stop the timelapse before recording.");const Q=n.sourceRegistry.resolveCurrentTarget();if(!Q)throw new Error("화면이 준비된 후 다시 시도하세요.");const P=await I(Q),ie=await mw({canvas:P.canvas,target:P.target,fps:Q.type==="control"?30:15,hubUrl:n.hubUrl,onError:Se=>n.onToast(Se.message)});A.current=P.cleanup,j.current=ie,c(Date.now()),n.onToast("Recording started")},[I,n.hubUrl,n.onToast,n.sourceRegistry]),ae=f.useCallback(async()=>{const Q=j.current;if(Q){w(!0);try{await Q.stop(),n.onToast("Recording saved")}finally{j.current=null,A.current?.(),A.current=null,c(0),w(!1)}}},[n.onToast]),le=f.useCallback(async()=>{if(j.current||T.current)throw new Error("Last 30s is unavailable during a recording.");const Q=n.sourceRegistry.resolveCurrentTarget();if(!Q)throw new Error("화면이 준비된 후 다시 시도하세요.");w(!0);try{await R.current.save(Q,n.hubUrl),n.onToast("Last 30 seconds saved")}finally{w(!1)}},[n.hubUrl,n.onToast,n.sourceRegistry]),V=f.useCallback(async()=>{if(j.current)throw new Error("Stop the recording before starting a timelapse.");const Q=n.sourceRegistry.resolveCurrentTarget();if(!Q)throw new Error("화면이 준비된 후 다시 시도하세요.");const P=await I(Q),ie=await IA(P.canvas,P.target,a.timelapseIntervalSeconds,n.hubUrl,Se=>n.onToast(Se.message));k.current=P.cleanup,T.current=ie,m(Date.now()),n.onToast("Timelapse started")},[I,n.hubUrl,n.onToast,n.sourceRegistry,a.timelapseIntervalSeconds]),z=f.useCallback(async()=>{const Q=T.current;if(Q){w(!0);try{await Q.stop(),n.onToast("Timelapse saved")}finally{T.current=null,k.current?.(),k.current=null,m(0),w(!1)}}},[n.onToast]);return f.useEffect(()=>{const Q=P=>{!j.current&&!T.current||(P.preventDefault(),P.returnValue="")};return window.addEventListener("beforeunload",Q),()=>window.removeEventListener("beforeunload",Q)},[]),f.useEffect(()=>()=>{R.current.stop(),j.current?.cancel(),T.current?.cancel(),A.current?.(),k.current?.()},[]),{state:f.useMemo(()=>({recording:!!j.current,recordingStartedAt:r,timelapse:!!T.current,timelapseStartedAt:d,bufferSeconds:p,bufferEnabled:a.rollingEnabled,busy:g,targetLabel:F}),[p,g,r,a.rollingEnabled,F,d]),settings:a,videoSupported:q,targetKey:$,setRollingEnabled:_,setRecordingQuality:fe,setTimelapseInterval:G,takeScreenshot:ue,startRecording:Y,stopRecording:ae,saveLast30Seconds:le,startTimelapse:V,stopTimelapse:z}}const HA=120,$A=999,gc=5,vc=30,UA=Number.POSITIVE_INFINITY,pw="livedesk.remoteDirectory",fh="livedesk.localHubAccessEnabled",gw="livedesk.streamSettings",vw=15,xw="livedesk.controlStreamSettings",mh=6,yw="livedesk.wallMonitorSelections",ww=1,Hm=512*1024,hh="".trim(),bw="".trim(),Hx="livedesk-adsense-script",$m=!!hh&&!!bw,PA=1e3/60,Um=1500,qA=650,GA=1800,VA=650,YA=2500,$x=1500,Ux=15e3,WA=6e4,Px=240,KA=1024,QA=480,XA=270,qx="LiveDesk clients are updating. Hub will restart after every client reconnects.",Pm="LiveDesk is restarting with the latest Hub.";function ZA(n,a){if(a.deviceId!==n.deviceId)return!1;const i=Number(a.browserReceivedEpochMs);if(!Number.isFinite(i)||i<n.startedAtEpochMs)return!1;const r=Number(a.monitorIndex);if(Number.isFinite(r)&&Math.floor(r)!==n.monitorIndex)return!1;const c=String(a.frameMode||a.mode||"").trim().toLowerCase();return!c||c===n.frameMode?!0:(n.frameMode==="mode3-h264-hw"||n.frameMode==="mode5-lzo-delta")&&(c==="mode2-lzo"||c==="mode3-h264-hw")}const er={free:{name:"Free",price:"$0",limit:gc,audience:"Personal trial",note:"5 devices with a standard ad banner."},ltd:{name:"Plus",price:"$79 LTD",ltd:"$79 LTD",limit:vc,audience:"Creators and homelabs",note:"30 devices, no ads, personal use."},pro:{name:"Pro",price:"$199 LTD",ltd:"$199 LTD",limit:UA,audience:"Business and studios",note:"Commercial use and larger workstation walls."}},Sw={"mode1-jpeg":5,"mode2-lzo":8,"mode3-h264-hw":20,"mode4-h264-atlas":20};function ds(n,a){return`${n}:${a}`}const ma={frameMode:"mode3-h264-hw",h264DecodeAcceleration:"prefer-hardware",fps:Sw["mode3-h264-hw"],maxWidth:1920,maxHeight:1080,atlasTileWidth:320,atlasTileHeight:180,atlasTileSizeMode:"auto",quality:75,autoStartLive:!0,showScreenStatus:!0,visibleOnlyLive:!0,adaptiveLoadShedding:!0,adaptiveSizeByWall:!0},ha={frameMode:"mode3-h264-hw",h264DecodeAcceleration:"prefer-software",fps:30,maxWidth:1920,maxHeight:1080,quality:75,showScreenStatus:!1};function xd(n,a){if(n.length===0)return 0;const i=[...n].sort((c,d)=>c-d),r=Math.max(0,Math.min(i.length-1,Math.ceil(i.length*a)-1));return i[r]}function $h(n,a){n.push(a),n.length>Px&&n.splice(0,n.length-Px)}function Gx(n,a){n.sampleFrames=0,n.sampleStartedAt=a,n.intervalCount=0,n.intervalSumMs=0,n.minIntervalMs=Number.POSITIVE_INFINITY,n.maxIntervalMs=0,n.intervalSamplesMs.length=0,n.seqGapCount=0,n.maxSeqGap=0}function Vx(n,a,i){if(n.lastAt!==void 0){const r=Math.max(0,a-n.lastAt);n.intervalCount+=1,n.intervalSumMs+=r,n.minIntervalMs=Math.min(n.minIntervalMs,r),n.maxIntervalMs=Math.max(n.maxIntervalMs,r),$h(n.intervalSamplesMs,r)}if(n.lastFrameSeq!==void 0){const r=i-n.lastFrameSeq;r!==1&&(n.seqGapCount+=1,n.maxSeqGap=Math.max(n.maxSeqGap,Math.abs(r)))}n.lastAt=a,n.lastFrameSeq=i}function Yx(n){return!n||n.intervalCount<=0?"waiting":`${Math.round(n.averageIntervalMs)}ms avg / p95 ${Math.round(n.p95IntervalMs)}ms / max ${Math.round(n.maxIntervalMs)}ms`}function JA(){const[n,a]=f.useState({framesPerSecond:0,averageIntervalMs:0,p95IntervalMs:0,maxIntervalMs:0,longTaskCount:0,longTaskMs:0});return f.useEffect(()=>{let i=0,r=performance.now(),c=0,d=0,m=[],p=0,v=0,g=null;const w=b=>{document.visibilityState==="visible"?(c+=1,d>0&&$h(m,Math.max(0,b-d)),d=b):d=0,i=window.requestAnimationFrame(w)};try{g=new PerformanceObserver(b=>{for(const C of b.getEntries())p+=1,v+=C.duration}),g.observe({entryTypes:["longtask"]})}catch{g=null}i=window.requestAnimationFrame(w);const y=window.setInterval(()=>{const b=performance.now(),C=Math.max(1,b-r),j=m.reduce((A,T)=>A+T,0);a({framesPerSecond:c*1e3/C,averageIntervalMs:m.length>0?j/m.length:0,p95IntervalMs:xd(m,.95),maxIntervalMs:m.length>0?Math.max(...m):0,longTaskCount:p,longTaskMs:v}),r=b,c=0,m=[],p=0,v=0},1e3);return()=>{window.cancelAnimationFrame(i),window.clearInterval(y),g?.disconnect()}},[]),n}function Wx(n){return!n||n.seqGapCount<=0?"none":`${n.seqGapCount} gaps / max ${n.maxSeqGap}`}function eM(n){return Number.isFinite(n)?String(n):"30+"}const yd=[{id:"mode4-h264-atlas",label:"Mode 4",detail:"Hub H.264 Atlas"},{id:"mode3-h264-hw",label:"Mode 3",detail:"H.264 hardware"}],ph=[{id:"prefer-software",label:"Software low latency"},{id:"prefer-hardware",label:"Hardware decode"},{id:"no-preference",label:"Browser auto"}],tM=[{id:"mode3-h264-hw",label:"Mode 3 - H.264 hardware"}],wd=[{id:"640x360",label:"Compact",width:640,height:360},{id:"960x540",label:"Standard",width:960,height:540},{id:"1280x720",label:"HD",width:1280,height:720},{id:"1920x1080",label:"Full HD",width:1920,height:1080},{id:"2560x1440",label:"QHD",width:2560,height:1440},{id:"3840x2160",label:"4K",width:3840,height:2160}],qm=wd.filter(n=>n.width>=1280),Gm=[{id:"auto",label:"Auto by wall size"},{id:"320x180",label:"Standard 320x180",width:320,height:180},{id:"480x270",label:"Sharp 480x270",width:480,height:270}],Uh=[1,2,5,8,12,20,30],nM=[20,30,60],Kx=[45,60,75,90],Qx={large:{maxWidth:1280,maxHeight:720},medium:{maxWidth:960,maxHeight:540},small:{maxWidth:640,maxHeight:360}},Yn={preserveConfiguredFpsDeviceCount:12,visibleRootMargin:"520px 0px 760px 0px",fallbackVisibleCounts:{large:12,medium:18,small:32},maxWallFramesPerSecond:96,maxWallBytesPerSecond:80*1024*1024,maxFrameGapMs:280,lowLoadFrameRatio:.58,lowLoadByteRatio:.52,downshiftCooldownMs:1800,recoveryCooldownMs:14e3,minFps:5},Xx=2200,aM=8e3,sM=3500,lM=7e3,iM=2,rM=2600,oM=4200,cM=750,uM=2,Zx=4200;function Jx(n,a){return Math.min(3e4,n*2**Math.min(3,Math.max(0,a)))}function Nc(n,a){const i=n.capabilities?.[a];return typeof i=="boolean"?i:/^(1|true|yes|on)$/i.test(String(i||"").trim())}function lr(n){return n.deviceName||n.hostname||n.deviceId}function dM(){return"npx -y --prefer-online livedesk@latest client"}function fM(){return"npx -y --prefer-online livedesk@latest"}function mM(){try{return localStorage.getItem(pw)||""}catch{return""}}function hM(){try{return localStorage.getItem(fh)==="1"}catch{return!1}}function to(n){try{n?localStorage.setItem(fh,"1"):localStorage.removeItem(fh)}catch{}}function Va(n,a,i,r){const c=Number(n);return Number.isFinite(c)?Math.max(a,Math.min(i,Math.round(c))):r}function gh(n){const a=String(n||"").trim();return a==="mode2-lz4"||a==="lz4"?"mode2-lzo":yd.some(i=>i.id===a)?a:ma.frameMode}function Dd(n){const a=String(n||"").trim();return ph.some(i=>i.id===a)?a:ma.h264DecodeAcceleration}function vh(n){return n==="mode3-h264-hw"?n:ha.frameMode}function Cw(n){return Sw[n]||12}function jw(n){return n==="mode3-h264-hw"||n==="mode4-h264-atlas"?20:30}function xh(n,a){return Va(n,1,jw(a),Cw(a))}function ur(n){return n&&typeof n=="object"&&!Array.isArray(n)?n:{}}function Vn(n){const a=ur(n.status),i=ur(a.screens),r=ur(n.capabilities),c=[a.monitorCount,a.screenCount,i.count,r.monitorCount,r.screenCount];for(const d of c){const m=Number(d);if(Number.isFinite(m)&&m>0)return Math.max(1,Math.min(64,Math.floor(m)))}return 1}function yi(n){const a=Number(n);return Number.isFinite(a)&&a>0?Math.floor(a):0}function pM(n){const a=ur(n.status),r=[ur(a.screens).displays,a.displays,a.monitors];for(const c of r)if(!(!Array.isArray(c)||c.length===0))return c.map(d=>ur(d));return[]}function kw(n,a){const i=pM(n),r=i.find(v=>Number(v.index)===a)||i[a]||i[0]||{},c=yi(r.width),d=yi(r.height),m=[r.name,r.displayName,r.deviceName,r.id].find(v=>typeof v=="string"&&v.trim()),p=typeof m=="string"?m.trim():`Display ${a+1}`;return{index:a,name:p,width:c,height:d,primary:r.primary===!0||r.isPrimary===!0}}function gM(n){const a=Vn(n);return Array.from({length:a},(i,r)=>kw(n,r))}function vM(n){const a=[n.name||`Display ${n.index+1}`];return n.width>0&&n.height>0&&a.push(`${n.width}x${n.height}`),n.primary&&a.push("Primary"),a.join(" - ")}function Aw(n,a){const i=kw(n,a);if(i.width>0&&i.height>0)return{width:i.width,height:i.height};const r=ur(n.status),c=yi(r.screenWidth||r.width),d=yi(r.screenHeight||r.height);return c>0&&d>0?{width:c,height:d}:null}function Mw(n){if(!n)return null;const a=yi(n.sourceWidth)||yi(n.width),i=yi(n.sourceHeight)||yi(n.height);return a>0&&i>0?{width:a,height:i}:null}function xM(n,a,i){const d=((typeof a?.monitorIndex=="number"?ta(a.monitorIndex,Math.max(1,a.monitorCount||1)):i)===i?Mw(a):null)||Aw(n,i);return d?Math.max(.25,Math.min(4,d.width/d.height)):16/9}const dd=16/9;function ta(n,a){const i=Math.max(1,Math.min(64,Math.floor(Number(a)||1))),r=Math.floor(Number(n));return Number.isFinite(r)?Math.max(0,Math.min(i-1,r)):0}function yM(){try{const n=localStorage.getItem(yw);if(!n)return{};const a=JSON.parse(n),i=a&&typeof a=="object"&&!Array.isArray(a)?a.selections:void 0;if(Number(a?.version)!==ww||!i||typeof i!="object"||Array.isArray(i))return{};const r={};for(const[c,d]of Object.entries(i)){const m=c.trim(),p=Math.floor(Number(d));!m||!Number.isFinite(p)||(r[m]=Math.max(0,Math.min(63,p)))}return r}catch{return{}}}function wM(n){try{localStorage.setItem(yw,JSON.stringify({version:ww,selections:n}))}catch{}}function bM(){try{const n=JSON.parse(localStorage.getItem(gw)||"{}");if(![vw,14,13,12,11].includes(Number(n.version)))return ma;const a=gh(n.frameMode),i=Va(n.maxWidth,320,3840,ma.maxWidth),r=Va(n.maxHeight,180,2160,ma.maxHeight);return{frameMode:a,h264DecodeAcceleration:Dd(n.h264DecodeAcceleration),fps:xh(n.fps,a),maxWidth:i,maxHeight:r,atlasTileWidth:Number(n.atlasTileWidth)>=480?480:320,atlasTileHeight:Number(n.atlasTileHeight)>=270?270:180,atlasTileSizeMode:n.atlasTileSizeMode==="fixed"?"fixed":"auto",quality:Va(n.quality,20,95,ma.quality),autoStartLive:typeof n.autoStartLive=="boolean"?n.autoStartLive:ma.autoStartLive,showScreenStatus:typeof n.showScreenStatus=="boolean"?n.showScreenStatus:ma.showScreenStatus,visibleOnlyLive:typeof n.visibleOnlyLive=="boolean"?n.visibleOnlyLive:ma.visibleOnlyLive,adaptiveLoadShedding:typeof n.adaptiveLoadShedding=="boolean"?n.adaptiveLoadShedding:ma.adaptiveLoadShedding,adaptiveSizeByWall:typeof n.adaptiveSizeByWall=="boolean"?n.adaptiveSizeByWall:ma.adaptiveSizeByWall}}catch{return ma}}function SM(n){try{localStorage.setItem(gw,JSON.stringify({...n,version:vw}))}catch{}}function CM(){try{const n=JSON.parse(localStorage.getItem(xw)||"{}"),a=Number(n.version);if(![mh,5,4,3,2,1].includes(a))return ha;const i=Va(n.fps,20,60,ha.fps),r=a<mh;return{frameMode:r?ha.frameMode:vh(n.frameMode),h264DecodeAcceleration:r?ha.h264DecodeAcceleration:Dd(n.h264DecodeAcceleration),fps:r?ha.fps:i,maxWidth:Va(n.maxWidth,1280,3840,ha.maxWidth),maxHeight:Va(n.maxHeight,720,2160,ha.maxHeight),quality:Va(n.quality,20,95,ha.quality),showScreenStatus:typeof n.showScreenStatus=="boolean"?n.showScreenStatus:ha.showScreenStatus}}catch{return ha}}function jM(n){try{localStorage.setItem(xw,JSON.stringify({...n,version:mh}))}catch{}}function Vm(n,a){return n.length!==a.length?!1:n.every((i,r)=>i===a[r])}function Ym(n){return[...new Set(n.filter(Boolean))].sort()}function kM(n){return Yn.fallbackVisibleCounts[n]||Yn.fallbackVisibleCounts.large}function AM(n,a,i){if(n.frameMode==="mode2-lzo")return{maxWidth:320,maxHeight:180};if(n.frameMode==="mode4-h264-atlas")return n.atlasTileSizeMode==="auto"?a==="large"?{maxWidth:480,maxHeight:270}:{maxWidth:320,maxHeight:180}:{maxWidth:n.atlasTileWidth,maxHeight:n.atlasTileHeight};if(!n.adaptiveSizeByWall)return{maxWidth:n.maxWidth,maxHeight:n.maxHeight};const r=Qx[a]||Qx.large;return{maxWidth:Math.min(n.maxWidth,r.maxWidth),maxHeight:Math.min(n.maxHeight,r.maxHeight)}}function MM(n,a=Yn.minFps){const i=[...Uh].sort((c,d)=>c-d),r=Math.max(a,Math.floor(n/2));return[...i].reverse().find(c=>c<n&&c>=a)||r}function NM(n,a){return[...Uh].sort((r,c)=>r-c).find(r=>r>n&&r<=a)||a}function xc(n){if(!Number.isFinite(n)||n<=0)return"0 B";const a=["B","KB","MB","GB","TB"];let i=n,r=0;for(;i>=1024&&r<a.length-1;)i/=1024,r+=1;const c=r===0||i>=100?0:1;return`${i.toFixed(c)} ${a[r]}`}function ey(n){if(!Number.isFinite(n)||!n||n<=0)return"0GB";const a=1024**4,i=1024**3;return n>=a?`${Math.max(1,Math.round(n/a))}TB`:`${Math.max(1,Math.round(n/i))}GB`}function Wm(n,a){if(!Number.isFinite(n)||!n||n<=0)return"not reported";const i=Math.max(0,n-Math.max(0,Number(a||0)));return`${ey(i)} / ${ey(n)}`}function TM(n){const a=new Uint8Array(n),i=32768;let r="";for(let c=0;c<a.length;c+=i){const d=a.subarray(c,c+i);r+=String.fromCharCode(...d)}return btoa(r)}function ty(n){return Array.from(n).filter(a=>a.size>=0).map(a=>{const i=a.webkitRelativePath||a.name;return{file:a,relativePath:i,fingerprint:`${a.size}:${a.lastModified}`}})}function RM(n){return n===1?"middle":n===2?"right":"left"}function ny(n,...a){for(const i of a){const r=n?.[i];if(typeof r=="string"&&r.trim())return r.trim()}return""}function ay(n){const a=Number(n);return Number.isInteger(a)&&a>=1&&a<=$A?a:0}const EM={cpu:"CPU",memory:"MEM",disk:"Disk",gpu:"GPU",vram:"VRAM",npu:"NPU",temp:"Temp",network:"Net"};function DM(n,a,i){if(n==="online")return"Online";if(n==="busy")return"Busy";if(n==="stale")return"Stale";if(n==="offline")return"Offline";if(i==="failed")return"Task failed";const r=n==="critical"?"critical":"warn",c=a.find(m=>m.state===r)||a.find(m=>m.state==="critical"||m.state==="warn");if(!c)return n==="critical"?"Issue":"Check";const d=EM[c.id]||c.label;return c.value&&c.value!=="-"?`${d} ${c.value}`:d}function $d(n,a){const i=a.split(".");let r=n;for(const c of i){if(r==null)return;if(Array.isArray(r)){const d=Number(c);r=Number.isInteger(d)?r[d]:void 0;continue}if(typeof r=="object"){r=r[c];continue}return}return r}function It(n,...a){for(const i of a){const r=$d(n,i),c=Number(r);if(Number.isFinite(c))return c}}function pa(n,...a){for(const i of a){const r=$d(n,i);if(typeof r=="string"&&r.trim())return r.trim();if(typeof r=="number"&&Number.isFinite(r))return String(r)}return""}function LM(n,...a){for(const i of a){const r=$d(n,i);if(typeof r=="boolean")return r;if(/^(1|true|yes|on|online|running|ready)$/i.test(String(r||"").trim()))return!0;if(/^(0|false|no|off|offline|stopped|missing)$/i.test(String(r||"").trim()))return!1}}function xl(n){const a=Number(n);if(Number.isFinite(a))return Math.max(0,Math.min(1,a>1?a/100:a))}function Km(n,a){if(!(typeof n!="number"||typeof a!="number"||!Number.isFinite(n)||!Number.isFinite(a)||n<=0))return xl((n-Math.max(0,a))/n)}function no(n){return n===void 0?"-":`${Math.round(n*100)}%`}function Qm(n){return n===void 0||!Number.isFinite(n)?"":n>=1e3?`${(n/1e3).toFixed(n>=1e4?0:1)}Gb/s`:`${Math.round(n)}Mb/s`}function tr(n,a=.92,i=.78){return n===void 0?"unknown":n>=a?"critical":n>=i?"warn":"good"}function Nw(n){return!Number.isFinite(n)||!n||n<=0?"-":n<3600?`${Math.round(n/60)}m`:n<86400?`${Math.round(n/3600)}h`:`${Math.round(n/86400)}d`}function fd(n,a,i){const r=$d(n,`tools.${a}`),c=pa(n,`tools.${a}.status`,`tooling.${a}.status`,`${a}.status`).toLowerCase(),d=LM(n,`tools.${a}.running`,`tooling.${a}.running`,`${a}.running`),m=pa(n,`tools.${a}.version`,`tooling.${a}.version`,`${a}.version`),p=pa(n,`tools.${a}.port`,`tooling.${a}.port`,`${a}.port`);let v="unknown";return c==="busy"?v="busy":["online","running","ready","active"].includes(c)||d===!0?v="online":(["offline","stopped","missing","not-found"].includes(c)||d===!1||r===!1)&&(v="offline"),{id:a,label:i,status:v,detail:v==="offline"?"offline":m||(p?`:${p}`:v==="unknown"?"not reported":v)}}function Tw(n){const a=n.status||{},i=It(a,"cpu.cores","cpuCores","processorCount"),r=It(a,"loadavg.0","cpu.load1"),c=xl(It(a,"cpu.usedRatio","cpu.usageRatio","cpu.ratio","cpu.usedPct","cpu.usagePct","cpu.percent")??(i&&r!==void 0?r/Math.max(1,i):void 0)),d=It(a,"memory.totalBytes","totalMem"),m=It(a,"memory.freeBytes","freeMem"),p=xl(It(a,"memory.usedRatio","memory.usedPct","usedMemRatio"))??Km(d,m),v=It(a,"disk.totalBytes","rootDisk.totalBytes","storage.totalBytes"),g=It(a,"disk.freeBytes","rootDisk.freeBytes","storage.freeBytes"),w=xl(It(a,"disk.usedRatio","disk.usedPct","rootDisk.usedRatio","storage.usedRatio"))??Km(v,g),y=It(a,"thermal.cpuC","temperatureC","cpu.temperatureC","gpu.temperatureC"),b=xl(It(a,"gpu.usedRatio","gpu.usageRatio","gpu.usedPct","gpu.usagePct","gpu.percent","accelerators.gpu.usageRatio")),C=pa(a,"gpu.name","gpu.model","accelerators.gpu.name"),j=It(a,"gpu.memory.totalBytes","gpu.totalMemoryBytes","gpu.vramTotalBytes"),A=It(a,"gpu.memory.freeBytes","gpu.freeMemoryBytes","gpu.vramFreeBytes"),T=xl(It(a,"gpu.memory.usedRatio","gpu.vramUsedRatio"))??Km(j,A),k=It(a,"gpu.temperatureC","thermal.gpuC"),R=xl(It(a,"npu.usedRatio","npu.usageRatio","npu.usedPct","npu.usagePct","npu.percent","accelerators.npu.usageRatio")),E=pa(a,"npu.name","npu.model","accelerators.npu.name"),$=It(a,"npu.tops","npu.topsInt8","accelerators.npu.tops"),F=It(a,"network.rxMbps","network.receiveMbps","network.downMbps"),q=It(a,"network.txMbps","network.transmitMbps","network.upMbps"),I=It(a,"network.latencyMs","network.rttMs"),_=xl(It(a,"network.usedRatio","network.usageRatio","network.saturationRatio")),fe=pa(a,"network.link","network.interface","network.name"),G=y===void 0?void 0:xl((y-35)/60),ue=pa(a,"workload.role","role","lane")||(Nc(n,"aiAssist")?"Agent worker":Nc(n,"taskDispatch")?"Task worker":"Local machine"),Y=pa(n.latestTask,"status")||pa(a,"workload.status")||"idle",ae=pa(n.latestTask,"title","instructionPreview")||pa(a,"workload.title"),le=pa(n.latestTask,"resultSummary","error","instructionPreview")||pa(a,"workload.summary"),V=[fd(a,"ollama","Ollama"),fd(a,"lmStudio","LM Studio"),fd(a,"comfyui","ComfyUI"),fd(a,"stableDiffusion","Stable Diffusion")],z=V.some(D=>D.status!=="unknown"),K=Date.parse(n.lastSeenAt||n.connectedAt||""),Q=Number.isFinite(K)?Date.now()-K:0;let P="online";n.connected?Q>5*6e4?P="stale":(y??0)>=86||(k??0)>=88||(c??0)>=.94||(b??0)>=.96||(T??0)>=.96||(R??0)>=.96||(p??0)>=.94||(w??0)>=.94||(I??0)>=200||Y==="failed"?P="critical":(y??0)>=78||(k??0)>=80||(c??0)>=.82||(b??0)>=.86||(T??0)>=.88||(R??0)>=.86||(p??0)>=.82||(w??0)>=.86||(I??0)>=80?P="warn":(["queued","running","targeted"].includes(Y)||V.some(D=>D.status==="busy"))&&(P="busy"):P="offline";const ie=V.filter(D=>D.status==="online"||D.status==="busy").length,Se=[{id:"cpu",label:"CPU",value:no(c),detail:i?`${i} cores`:r!==void 0?`load ${r.toFixed(1)}`:"not reported",ratio:c,state:tr(c,.92,.78)},{id:"memory",label:"RAM",value:no(p),detail:Wm(d,m),ratio:p,state:tr(p,.92,.78)},{id:"disk",label:"DISK",value:no(w),detail:Wm(v,g),ratio:w,state:tr(w,.92,.82)},{id:"gpu",label:"GPU",value:no(b),detail:C||(j&&A!==void 0?`${xc(A)} VRAM free`:k!==void 0?`${Math.round(k)}C`:"not reported"),ratio:b,state:k!==void 0&&k>=88?"critical":k!==void 0&&k>=80?"warn":tr(b,.96,.86)},{id:"vram",label:"VRAM",value:no(T),detail:Wm(j,A),ratio:T,state:tr(T,.96,.88)},{id:"npu",label:"NPU",value:R!==void 0?no(R):$!==void 0?`${Math.round($)} TOPS`:"-",detail:E||($!==void 0?"neural engine":"not reported"),ratio:R,state:tr(R,.96,.86)},{id:"temp",label:"TEMP",value:y===void 0?"-":`${Math.round(y)}C`,detail:ie>0?`${ie} local tools`:`uptime ${Nw(It(a,"uptimeSec"))}`,ratio:G,state:y===void 0?"unknown":y>=86?"critical":y>=78?"warn":"good"},{id:"network",label:"NET",value:Qm(F)||(I!==void 0?`${Math.round(I)}ms`:fe||"-"),detail:Qm(q)?`${Qm(q)} up`:fe||"not reported",ratio:_,state:I!==void 0&&I>=200?"critical":I!==void 0&&I>=80?"warn":tr(_,.9,.75)}];return{state:P,label:DM(P,Se,Y),role:ue,taskLabel:ae||(Y==="idle"?"idle":Y),taskStatus:Y,taskSummary:le,tools:z?V:V.map(D=>({...D,detail:"not reported"})),metrics:Se}}function _M({size:n=22}){return l.jsxs("svg",{width:n,height:n,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:[l.jsx("rect",{x:"2.5",y:"4",width:"14",height:"9",rx:"1.5",stroke:"currentColor",strokeWidth:"1.7",opacity:"0.42"}),l.jsx("path",{d:"M7 16v1.5h5",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",opacity:"0.42"}),l.jsx("rect",{x:"10.5",y:"2.5",width:"14",height:"9",rx:"1.5",stroke:"currentColor",strokeWidth:"1.7",opacity:"0.62"}),l.jsx("path",{d:"M15 14.5V16h5",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",opacity:"0.62"}),l.jsx("rect",{x:"6.5",y:"8.5",width:"15",height:"10",rx:"1.7",fill:"currentColor",fillOpacity:"0.12",stroke:"currentColor",strokeWidth:"1.9"}),l.jsx("path",{d:"M12 21v1.5H9.5M16 21v1.5h2.5M9.5 22.5h9",stroke:"currentColor",strokeWidth:"1.9",strokeLinecap:"round"})]})}const zM=[{id:"small",label:"Small"},{id:"medium",label:"Medium"},{id:"large",label:"Large"}],OM=[{id:"wall",label:"Wall",icon:Rc,accent:"blue"},{id:"control",label:"Control",icon:hd,accent:"red"},{id:"share-files",label:"Share Files",icon:md,accent:"green"},{id:"agents",label:"Agents",icon:hc,accent:"violet"},{id:"sync-server",label:"Sync Server",icon:yc,accent:"blue"}],IM=[{id:"doc",label:"Doc",icon:Jm,accent:"amber"},{id:"pricing",label:"Pricing",icon:pc,accent:"green"}];function BM(n){return n.replaceAll("npx -y @livedesk/client","npx -y --prefer-online livedesk@latest client").replaceAll("npx @livedesk/client","npx -y --prefer-online livedesk@latest client").replaceAll("npx -y livedesk client","npx -y --prefer-online livedesk@latest client").replaceAll("npx livedesk client","npx -y --prefer-online livedesk@latest client").replaceAll("npx -y livedesk","npx -y --prefer-online livedesk@latest").replaceAll("npx livedesk","npx -y --prefer-online livedesk@latest")}function Bt(n){return BM(n).replace(/\bRemoteHub\b/g,"Hub client endpoint").replace(/\bManagers\b/g,"Hubs").replace(/\bManager\b/g,"Hub").replace(/\bmanager\b/g,"Hub").replace(/\bMANAGER\b/g,"HUB").replace(/매니저/g,"Hub")}function nr(n){return n.map(a=>Bt(a))}function qn(n){return{languageName:n.languageName,languageLabel:n.languageLabel,eyebrow:n.eyebrow,title:Bt(n.title),intro:Bt(n.intro),sections:[{title:Bt(n.managerTitle),body:Bt(n.managerBody),points:nr(n.managerPoints)},{title:Bt(n.clientTitle),body:Bt(n.clientBody),points:nr(n.clientPoints)},{title:Bt(n.syncTitle),body:Bt(n.syncBody),points:nr(n.syncPoints)},...n.agentTitle&&n.agentBody&&n.agentPoints?[{title:Bt(n.agentTitle),body:Bt(n.agentBody),points:nr(n.agentPoints)}]:[],{title:Bt(n.platformTitle),body:Bt(n.platformBody),points:nr(n.platformPoints)}],sync:{title:Bt(n.syncTitle),body:Bt(n.syncBody),points:nr(n.syncPoints)},firewall:{title:Bt(n.firewallTitle),body:Bt(n.firewallBody),points:nr(n.firewallPoints)},commands:{title:Bt(n.commandsTitle),body:Bt(n.commandsBody),manager:Bt(n.managerCommandLabel),primary:Bt(n.clientCommandLabel),slot:Bt(n.slotCommandLabel),manual:Bt(n.manualCommandLabel)}}}const io={ko:qn({languageName:"한국어",languageLabel:"문서 언어",eyebrow:"LiveDesk Manual",title:"한 줄로 여는 로컬 Screen Wall",intro:"LiveDesk는 매니저 PC 한 대에서 여러 작업 PC, AI 박스, 맥미니, 개발 장비를 한 화면에 모니터링하고 필요한 제어를 실행하는 npm-first 원격 작업 데크입니다.",managerTitle:"1. 매니저 실행",managerBody:"화면을 모아 볼 컴퓨터에서 LiveDesk 매니저를 실행합니다. 매니저는 UI와 로컬 서버를 같이 열고 브라우저를 http://127.0.0.1:5179 로 띄웁니다.",managerPoints:["명령은 npx -y livedesk 입니다.","매니저는 Screen Wall/API 포트 5179와 클라이언트 접속 포트 5197을 사용합니다.","기존 LiveDesk 포트가 남아 있으면 기본적으로 정리하고 새로 시작합니다. 필요하면 --no-clean 을 붙입니다."],clientTitle:"2. 워크스테이션 연결",clientBody:"모니터링할 PC에서는 Google 로그인 또는 Hub 화면의 6자리 PIN으로 연결합니다. Hub가 켜져 있지 않아도 클라이언트는 종료하지 않고 5초마다 계속 찾습니다.",clientPoints:["빈 자리에 자동 배치하려면 npx -y livedesk client 를 실행합니다.","자리 번호를 고정하려면 npx -y livedesk client 3 처럼 번호를 붙입니다.","브라우저 연결 페이지에서 Google 버튼 또는 6자리 PIN 입력 중 하나를 선택합니다."],syncTitle:"3. Sync Server와 자동 발견",syncBody:"Sync Server는 이 매니저를 현재 계정의 활성 Screen Wall로 Supabase에 등록합니다. 클라이언트는 같은 Google 계정으로 로그인한 뒤 그 기록을 읽고 접속 후보들을 순서대로 시도합니다.",syncPoints:["등록 정보에는 host instance, LAN/private 주소, public 후보 주소, pair token, 짧은 lease가 포함됩니다.","같은 LAN 후보를 먼저 쓰고, 필요하면 외부 주소 후보를 시도합니다.","매니저 위치, VPN, 방화벽, 공유기 설정이 바뀌었거나 개발 중 활성 매니저를 바꿀 때 Sync Server를 누릅니다.","이제 livedesk.pages.dev의 Chrome Local Network Access 허용은 기본 실행 경로가 아닙니다. npm 매니저 앱이 실제 서버입니다."],agentTitle:"4. Agent로 여러 장비 작업하기",agentBody:"Agents 화면은 Hub에서 실행되는 Codex 기반 Agent가 연결된 장비를 확인하고, 선택한 권한 범위 안에서 작업을 실행하는 공간입니다. 클라이언트 PC에 Codex 앱이나 Codex SDK를 설치할 필요는 없습니다.",agentPoints:["Suggested tasks에는 현재 72개의 읽기·운영 작업 템플릿이 있으며, 검색과 권한·플랫폼·capability 조건으로 실행 가능 항목을 안내합니다.","Ask, Safe Auto, Full Access, Custom 권한 모드를 선택할 수 있습니다. 위험한 변경 작업은 승인 카드와 장비 capability 검사를 거칩니다.","All connected 또는 Selected로 대상 장비를 제한하고, 결과는 장비별 상태 칩과 실제 RAM·디스크·GPU·프로세스 요약으로 확인합니다.","Agent 실행은 Hub의 격리된 runtime과 LiveDesk MCP 도구를 통해서만 장비에 전달되며, 모든 작업은 timeout·취소·tool limit·감사 로그 경계를 가집니다."],platformTitle:"5. 현재 플랫폼과 스트림 상태",platformBody:"Windows의 Wall, Control, 파일 전송, 원격 오디오와 RemoteFast 경로를 현재 기준으로 확인했습니다. macOS와 Linux는 같은 npm 명령 경로를 유지하면서 권한과 캡처 백엔드를 확장하고 있습니다.",platformPoints:["Wall은 Mode 3 H.264와 Mode 4 H.264 Atlas를 사용합니다. Mode 2/5 호환 경로는 오류 복구 시 자동으로만 사용됩니다.","원격 오디오는 선택한 장비가 capability를 광고할 때 사용할 수 있으며, 브라우저는 queue·drop·resync·automatic restart 상태를 진단합니다.","macOS: 화면 캡처와 제어에는 Screen Recording/Accessibility 권한이 필요합니다. RemoteFast 로그는 필요한 상태 중심으로 제한됩니다.","Linux: linux-x64 runtime, grim/gnome-screenshot/import/scrot 캡처, xdotool 입력 백엔드가 추가되었습니다. 오디오는 아직 비활성입니다."],firewallTitle:"방화벽과 외부 장소 연결",firewallBody:"같은 LAN 안에서는 보통 공유기 포트포워딩이 필요 없습니다. 다른 장소의 PC를 붙이려면 클라이언트가 매니저의 클라이언트 접속 포트에 도달할 수 있어야 합니다.",firewallPoints:["클라이언트 접속 포트는 TCP 5197입니다.","클라이언트 쪽은 나가는 연결이므로 보통 인바운드 포트 개방이 필요 없습니다.","다른 네트워크에서 붙일 때는 매니저 PC 방화벽에서 TCP 5197 인바운드를 허용하고, 공유기에서는 TCP 5197을 매니저 PC로 전달합니다.","Screen Wall/API 포트 5179는 매니저 UI용입니다. 외부 브라우저에서 Wall을 직접 열 필요가 있을 때만 별도로 노출을 검토합니다.","공개 인터넷에 바로 열기보다 VPN, Tailscale, ZeroTier, 고정 IP allowlist를 우선합니다."],commandsTitle:"현재 사용 명령",commandsBody:"웹사이트를 찾아가 설치 파일을 받는 방식보다 터미널 한 줄로 모든 운영체제에서 거의 같은 흐름을 쓰는 것이 LiveDesk의 기본 방향입니다.",managerCommandLabel:"매니저 시작",clientCommandLabel:"워크스테이션 연결",slotCommandLabel:"3번 슬롯에 고정",manualCommandLabel:"고급 수동 연결"}),en:qn({languageName:"English",languageLabel:"Document language",eyebrow:"LiveDesk Manual",title:"Open a local Screen Wall with one command",intro:"LiveDesk is an npm-first remote work deck for monitoring many workstations, AI boxes, Mac minis, and dev machines from one manager PC.",managerTitle:"1. Run the manager",managerBody:"Run LiveDesk on the computer that will watch the screens. The manager starts the UI and local server together, then opens http://127.0.0.1:5179.",managerPoints:["The command is npx -y livedesk.","The manager uses port 5179 for the Screen Wall/API and port 5197 for client connections.","If an old LiveDesk process still owns those ports, startup cleans it by default. Add --no-clean when you want to keep it."],clientTitle:"2. Connect a workstation",clientBody:"On each monitored computer, connect with Google sign-in or the 6-digit PIN shown on the Hub screen. If no manager is online yet, the client keeps running and retries every 5 seconds.",clientPoints:["Run npx -y livedesk client for first available placement.","Run npx -y livedesk client 3 to pin the machine to slot 3.","The browser connection page lets you choose Google or a 6-digit PIN."],syncTitle:"3. Sync Server and discovery",syncBody:"Sync Server publishes this manager as the active Screen Wall for the signed-in account. Clients read that Supabase record after Google sign-in and try the endpoint candidates in order.",syncPoints:["The record includes host instance, LAN/private addresses, public endpoint candidates, pair token, and a short lease.","LAN candidates are preferred first, then public candidates if needed.","Press Sync Server after manager moves, VPN/firewall/router changes, or when this development machine should take over as active manager.","Chrome Local Network Access on livedesk.pages.dev is no longer the default runtime path. The npm manager app is the real server."],agentTitle:"4. Run multi-workstation tasks with Agent",agentBody:"The Agents page runs a Codex-based Agent in the Hub to inspect connected workstations and perform actions within the selected permission scope. Client PCs do not need the Codex app or Codex SDK installed.",agentPoints:["Suggested tasks currently contains 72 read-only and operational templates with search plus permission, platform, and capability availability checks.","Choose Ask, Safe Auto, Full Access, or Custom. Risky changes go through approval cards and explicit client capability checks.","Limit targets with All connected or Selected. Results use compact per-device status chips and show real RAM, disk, GPU, and process summaries.","Runs stay inside the Hub-isolated runtime and LiveDesk MCP tools, with timeout, cancellation, tool-call limits, and audit-log boundaries."],platformTitle:"5. Current platform and stream state",platformBody:"Windows Wall, Control, file transfer, remote audio, and the RemoteFast path are verified against the current implementation. macOS and Linux keep the same npm command path while capture and permission backends expand.",platformPoints:["Wall uses Mode 3 H.264 and Mode 4 H.264 Atlas. Mode 2/5 compatibility paths are used automatically only for recovery.","Remote audio is available when the selected workstation advertises the capability, with queue, drop, resync, and automatic-restart diagnostics in the browser.","macOS requires Screen Recording and Accessibility permissions for capture and control. RemoteFast logs focus on actionable state.","Linux includes the linux-x64 runtime, grim/gnome-screenshot/import/scrot capture, and xdotool input backend. Audio is still disabled."],firewallTitle:"Firewall and remote locations",firewallBody:"On the same LAN, router forwarding is usually unnecessary. For another office, building, or country, clients must be able to reach the manager client port.",firewallPoints:["Client connection port: TCP 5197.","Client machines normally only need outbound access.","For remote networks, allow inbound TCP 5197 on the manager firewall and forward TCP 5197 from the router to the manager PC.","Screen Wall/API port 5179 is for the manager UI. Expose it only if a remote browser must open the Wall directly.","Prefer VPN, Tailscale, ZeroTier, or fixed-IP allowlists over public internet exposure."],commandsTitle:"Current commands",commandsBody:"The product direction is one terminal command across operating systems instead of finding a website, downloading, and installing manually.",managerCommandLabel:"Start manager",clientCommandLabel:"Connect workstation",slotCommandLabel:"Pin to slot 3",manualCommandLabel:"Advanced manual connection"}),ja:qn({languageName:"日本語",languageLabel:"ドキュメント言語",eyebrow:"LiveDesk Manual",title:"1行でローカル Screen Wall を開く",intro:"LiveDesk は、複数の作業 PC、AI マシン、Mac mini、開発機を1台の manager PC から監視する npm-first のリモート作業デッキです。",managerTitle:"1. manager を実行",managerBody:"画面を集めて見るコンピューターで LiveDesk manager を実行します。UI とローカルサーバーが同時に起動し、http://127.0.0.1:5179 が開きます。",managerPoints:["コマンドは npx -y livedesk です。","Screen Wall/API は 5179、client 接続は 5197 を使います。","古い LiveDesk プロセスがポートを使っている場合は、基本的に自動で整理して起動します。"],clientTitle:"2. workstation を接続",clientBody:"監視される PC で同じ Google アカウントにログインします。manager がまだ無くても client は終了せず、5秒ごとに再試行します。",clientPoints:["空きスロットに入れるには npx -y livedesk client を実行します。","スロットを固定するには npx -y livedesk client 3 のように番号を付けます。","大量の PC でも再ログインなしで待ち続けます。"],syncTitle:"3. Sync Server と自動検出",syncBody:"Sync Server はこの manager を現在の Google アカウントの active Screen Wall として Supabase に登録します。",syncPoints:["host instance、LAN/private アドレス、public 候補、pair token、短い lease を登録します。","client は LAN 候補を優先し、必要なら public 候補も試します。","VPN、firewall、router、manager の場所が変わったら Sync Server を押します。","livedesk.pages.dev の Chrome Local Network Access は標準実行経路ではありません。npm manager アプリが実際のサーバーです。"],platformTitle:"4. 現在のプラットフォーム状態",platformBody:"Windows は live screen transfer まで確認済みです。macOS と Linux も同じ npm コマンド経路を目標に対応を広げています。",platformPoints:["Windows: 動作確認済み。","macOS: 画面取得と制御には Screen Recording/Accessibility 権限が必要です。","Linux: linux-x64 runtime、grim/gnome-screenshot/import/scrot capture、xdotool input backend を追加済み。audio は未対応です。"],firewallTitle:"Firewall と外部拠点",firewallBody:"同じ LAN なら通常 router forwarding は不要です。外部拠点では client が manager の接続ポートへ到達できる必要があります。",firewallPoints:["client 接続ポートは TCP 5197 です。","client 側は通常 outbound だけで足ります。","外部 network では manager PC の firewall で TCP 5197 inbound を許可し、router から manager PC へ forward します。","5179 は manager UI 用なので、外部ブラウザで Wall を開く必要がある時だけ公開を検討します。","公開 internet より VPN、Tailscale、ZeroTier、IP allowlist を優先してください。"],commandsTitle:"現在のコマンド",commandsBody:"Web サイトから installer を探すより、OS をまたいで terminal 1行で動かす方向です。",managerCommandLabel:"manager 起動",clientCommandLabel:"workstation 接続",slotCommandLabel:"slot 3 に固定",manualCommandLabel:"高度な手動接続"}),"zh-CN":qn({languageName:"简体中文",languageLabel:"文档语言",eyebrow:"LiveDesk Manual",title:"用一条命令打开本地 Screen Wall",intro:"LiveDesk 是 npm-first 的远程工作台,用一台 manager PC 监控多台工作站、AI 主机、Mac mini 和开发机器。",managerTitle:"1. 运行 manager",managerBody:"在负责查看屏幕的电脑上运行 LiveDesk manager。它会同时启动 UI 和本地服务器,并打开 http://127.0.0.1:5179。",managerPoints:["命令是 npx -y livedesk。","Screen Wall/API 使用 5179,client 连接使用 5197。","如果旧的 LiveDesk 进程占用端口,默认会清理后重新启动。"],clientTitle:"2. 连接 workstation",clientBody:"在被监控的电脑上使用同一个 Google 账号登录。即使 manager 还没在线,client 也会继续运行并每 5 秒重试。",clientPoints:["自动放入空位: npx -y livedesk client。","固定到 3 号位置: npx -y livedesk client 3。","大量电脑也可以持续等待,不需要反复登录。"],syncTitle:"3. Sync Server 和自动发现",syncBody:"Sync Server 会把当前 manager 作为该账号的 active Screen Wall 写入 Supabase。client 登录后读取记录并依次尝试连接候选地址。",syncPoints:["记录包括 host instance、LAN/private 地址、public 候选、pair token 和短 lease。","优先尝试同一 LAN 地址,需要时再尝试外部地址。","manager 位置、VPN、防火墙或路由变化后请点击 Sync Server。","livedesk.pages.dev 的 Chrome Local Network Access 不再是默认运行方式。npm manager app 才是真正服务器。"],platformTitle:"4. 当前平台状态",platformBody:"Windows 已确认可传输实时画面。macOS 和 Linux 正按同一 npm 命令路径扩展支持。",platformPoints:["Windows: 已确认可用。","macOS: 画面捕获和控制需要 Screen Recording/Accessibility 权限。","Linux: 已加入 linux-x64 runtime、grim/gnome-screenshot/import/scrot 捕获、xdotool 输入后端。音频尚未启用。"],firewallTitle:"防火墙和外部地点",firewallBody:"同一 LAN 通常不需要路由端口转发。不同地点连接时,client 必须能访问 manager 的 client 连接端口。",firewallPoints:["client 连接端口是 TCP 5197。","client 机器通常只需要出站访问。","跨网络时,在 manager 防火墙放行 TCP 5197 入站,并在路由器转发到 manager PC。","5179 是 manager UI 端口,仅在需要远程浏览器直接打开 Wall 时考虑暴露。","优先使用 VPN、Tailscale、ZeroTier 或固定 IP allowlist。"],commandsTitle:"当前命令",commandsBody:"产品方向是跨操作系统使用一条终端命令,而不是先找网站、下载、安装。",managerCommandLabel:"启动 manager",clientCommandLabel:"连接 workstation",slotCommandLabel:"固定到 slot 3",manualCommandLabel:"高级手动连接"}),"zh-TW":qn({languageName:"繁體中文",languageLabel:"文件語言",eyebrow:"LiveDesk Manual",title:"用一行指令開啟本機 Screen Wall",intro:"LiveDesk 是 npm-first 的遠端工作台,用一台 manager PC 監看多台工作站、AI 主機、Mac mini 與開發機。",managerTitle:"1. 執行 manager",managerBody:"在負責看畫面的電腦上執行 LiveDesk manager。它會同時啟動 UI 與本機伺服器,並開啟 http://127.0.0.1:5179。",managerPoints:["指令是 npx -y livedesk。","Screen Wall/API 使用 5179,client 連線使用 5197。","若舊的 LiveDesk 程序占用連接埠,預設會清理後重新啟動。"],clientTitle:"2. 連接 workstation",clientBody:"在被監看的電腦上使用同一個 Google 帳號登入。即使 manager 尚未上線,client 也會持續執行並每 5 秒重試。",clientPoints:["自動放入空位: npx -y livedesk client。","固定到 3 號位置: npx -y livedesk client 3。","大量電腦也能持續等待,不需要反覆登入。"],syncTitle:"3. Sync Server 與自動探索",syncBody:"Sync Server 會把目前 manager 登錄為此帳號的 active Screen Wall。client 登入後讀取 Supabase 記錄並依序嘗試連線候選地址。",syncPoints:["記錄包含 host instance、LAN/private 位址、public 候選、pair token 與短 lease。","優先嘗試 LAN 位址,需要時再嘗試外部位址。","manager 位置、VPN、防火牆或路由設定改變後請按 Sync Server。","livedesk.pages.dev 的 Chrome Local Network Access 不再是預設執行路徑。npm manager app 才是真正伺服器。"],platformTitle:"4. 目前平台狀態",platformBody:"Windows 已確認可傳輸即時畫面。macOS 與 Linux 也沿用相同 npm 指令路徑擴充支援。",platformPoints:["Windows: 已確認可用。","macOS: 畫面擷取與控制需要 Screen Recording/Accessibility 權限。","Linux: 已加入 linux-x64 runtime、grim/gnome-screenshot/import/scrot capture、xdotool input backend。音訊尚未啟用。"],firewallTitle:"防火牆與外部地點",firewallBody:"同一 LAN 通常不需要路由器轉發。不同地點連線時,client 必須能到達 manager 的 client 連線埠。",firewallPoints:["client 連線埠是 TCP 5197。","client 電腦通常只需要對外連線。","跨網路時,請在 manager 防火牆允許 TCP 5197 inbound,並從路由器轉發到 manager PC。","5179 是 manager UI 連接埠,只在需要遠端瀏覽器直接打開 Wall 時才考慮公開。","優先使用 VPN、Tailscale、ZeroTier 或固定 IP allowlist。"],commandsTitle:"目前指令",commandsBody:"產品方向是跨作業系統用一行 terminal 指令,而不是先找網站、下載、安裝。",managerCommandLabel:"啟動 manager",clientCommandLabel:"連接 workstation",slotCommandLabel:"固定到 slot 3",manualCommandLabel:"進階手動連線"}),es:qn({languageName:"Español",languageLabel:"Idioma del documento",eyebrow:"LiveDesk Manual",title:"Abre un Screen Wall local con un comando",intro:"LiveDesk es una consola npm-first para vigilar muchas estaciones, cajas de IA, Mac mini y equipos de desarrollo desde un PC manager.",managerTitle:"1. Ejecuta el manager",managerBody:"Ejecuta LiveDesk en el equipo que verá las pantallas. El manager inicia la UI y el servidor local juntos y abre http://127.0.0.1:5179.",managerPoints:["El comando es npx -y livedesk.","El manager usa 5179 para Screen Wall/API y 5197 para conexiones client.","Si un proceso antiguo ocupa los puertos, el arranque lo limpia por defecto."],clientTitle:"2. Conecta una workstation",clientBody:"En cada equipo monitoreado, inicia sesión con la misma cuenta Google. Si el manager aún no está activo, el client sigue intentando cada 5 segundos.",clientPoints:["Usa npx -y livedesk client para el primer slot libre.","Usa npx -y livedesk client 3 para fijar el equipo al slot 3.","Los clients siguen esperando para no repetir login en muchas máquinas."],syncTitle:"3. Sync Server y descubrimiento",syncBody:"Sync Server publica este manager como Screen Wall activo para la cuenta. Los clients leen el registro en Supabase y prueban los endpoints.",syncPoints:["Incluye host instance, direcciones LAN/private, candidatos public, pair token y lease corto.","Primero se prueban candidatos LAN, luego públicos si hace falta.","Pulsa Sync Server después de cambios de manager, VPN, firewall o router.","Chrome Local Network Access en livedesk.pages.dev ya no es el flujo principal. La app npm manager es el servidor real."],platformTitle:"4. Estado de plataformas",platformBody:"Windows ya fue verificado con transferencia de pantalla. macOS y Linux siguen el mismo camino npm.",platformPoints:["Windows: verificado.","macOS: captura y control requieren permisos Screen Recording/Accessibility.","Linux: agregado linux-x64 runtime, captura grim/gnome-screenshot/import/scrot y entrada xdotool. Audio aún desactivado."],firewallTitle:"Firewall y sedes remotas",firewallBody:"En la misma LAN normalmente no hace falta port forwarding. Para otra red, los clients deben llegar al puerto client del manager.",firewallPoints:["Puerto de conexión client: TCP 5197.","Los equipos client normalmente solo necesitan salida.","Para redes remotas, permite TCP 5197 inbound en el manager y reenvía TCP 5197 al PC manager.","El puerto 5179 es para la UI del manager; expónlo solo si un navegador remoto debe abrir el Wall.","Prefiere VPN, Tailscale, ZeroTier o allowlist de IP fijas."],commandsTitle:"Comandos actuales",commandsBody:"La dirección del producto es un comando de terminal común entre sistemas, no descargar e instalar desde una web.",managerCommandLabel:"Iniciar manager",clientCommandLabel:"Conectar workstation",slotCommandLabel:"Fijar al slot 3",manualCommandLabel:"Conexión manual avanzada"}),fr:qn({languageName:"Français",languageLabel:"Langue du document",eyebrow:"LiveDesk Manual",title:"Ouvrir un Screen Wall local en une commande",intro:"LiveDesk est un deck npm-first pour surveiller plusieurs postes, machines IA, Mac mini et machines dev depuis un PC manager.",managerTitle:"1. Lancer le manager",managerBody:"Lancez LiveDesk sur l’ordinateur qui observe les écrans. Le manager démarre l’UI et le serveur local, puis ouvre http://127.0.0.1:5179.",managerPoints:["La commande est npx -y livedesk.","Le manager utilise 5179 pour Screen Wall/API et 5197 pour les connexions client.","Si un ancien processus utilise les ports, le démarrage le nettoie par défaut."],clientTitle:"2. Connecter une workstation",clientBody:"Sur chaque ordinateur surveillé, connectez-vous avec le même compte Google. Si le manager n’est pas encore actif, le client réessaie toutes les 5 secondes.",clientPoints:["Utilisez npx -y livedesk client pour le premier slot libre.","Utilisez npx -y livedesk client 3 pour fixer la machine au slot 3.","Les clients continuent d’attendre pour éviter les reconnexions répétées."],syncTitle:"3. Sync Server et découverte",syncBody:"Sync Server publie ce manager comme Screen Wall actif du compte. Les clients lisent l’enregistrement Supabase et testent les endpoints.",syncPoints:["Il contient host instance, adresses LAN/private, candidats public, pair token et lease court.","Les candidats LAN sont essayés en premier, puis les candidats publics si besoin.","Cliquez Sync Server après un changement de manager, VPN, firewall ou routeur.","Chrome Local Network Access sur livedesk.pages.dev n’est plus le chemin par défaut. L’app npm manager est le vrai serveur."],platformTitle:"4. État des plateformes",platformBody:"Windows est vérifié avec transfert d’écran live. macOS et Linux suivent le même chemin npm.",platformPoints:["Windows: vérifié.","macOS: capture et contrôle nécessitent Screen Recording/Accessibility.","Linux: runtime linux-x64, capture grim/gnome-screenshot/import/scrot et entrée xdotool ajoutés. Audio désactivé."],firewallTitle:"Firewall et sites distants",firewallBody:"Sur le même LAN, le port forwarding est rarement nécessaire. Depuis un autre réseau, les clients doivent atteindre le port client du manager.",firewallPoints:["Port de connexion client: TCP 5197.","Les machines client ont normalement seulement besoin de sortie réseau.","Pour un réseau distant, autorisez TCP 5197 entrant sur le manager et redirigez TCP 5197 vers le PC manager.","Le port 5179 sert à l’UI manager; exposez-le seulement si un navigateur distant doit ouvrir le Wall.","Préférez VPN, Tailscale, ZeroTier ou allowlist IP fixes."],commandsTitle:"Commandes actuelles",commandsBody:"La direction produit est une commande terminal commune aux OS, plutôt qu’un téléchargement manuel depuis un site.",managerCommandLabel:"Démarrer manager",clientCommandLabel:"Connecter workstation",slotCommandLabel:"Fixer au slot 3",manualCommandLabel:"Connexion manuelle avancée"}),de:qn({languageName:"Deutsch",languageLabel:"Dokumentsprache",eyebrow:"LiveDesk Manual",title:"Lokale Screen Wall mit einem Befehl öffnen",intro:"LiveDesk ist ein npm-first Arbeitsdeck, um viele Workstations, AI-Boxen, Mac minis und Dev-Rechner von einem Manager-PC zu überwachen.",managerTitle:"1. Manager starten",managerBody:"Starte LiveDesk auf dem Computer, der die Screens sieht. Der Manager startet UI und lokalen Server zusammen und öffnet http://127.0.0.1:5179.",managerPoints:["Der Befehl ist npx -y livedesk.","Der Manager nutzt 5179 für Screen Wall/API und 5197 für Client-Verbindungen.","Wenn alte LiveDesk-Prozesse Ports belegen, werden sie beim Start standardmäßig bereinigt."],clientTitle:"2. Workstation verbinden",clientBody:"Melde dich auf jedem überwachten Computer mit demselben Google-Konto an. Wenn kein Manager online ist, versucht der Client alle 5 Sekunden weiter.",clientPoints:["npx -y livedesk client nutzt den ersten freien Slot.","npx -y livedesk client 3 fixiert den Rechner auf Slot 3.","Clients warten weiter, damit große Setups kein wiederholtes Login brauchen."],syncTitle:"3. Sync Server und Discovery",syncBody:"Sync Server veröffentlicht diesen Manager als aktive Screen Wall des Kontos. Clients lesen den Supabase-Eintrag und testen Endpoints der Reihe nach.",syncPoints:["Enthält host instance, LAN/private Adressen, public Kandidaten, pair token und kurze lease.","LAN-Kandidaten werden zuerst versucht, danach public Kandidaten.","Nach Änderungen an Manager, VPN, Firewall oder Router Sync Server drücken.","Chrome Local Network Access auf livedesk.pages.dev ist nicht mehr der Standardpfad. Die npm Manager App ist der echte Server."],platformTitle:"4. Plattformstatus",platformBody:"Windows wurde mit Live-Screen-Transfer geprüft. macOS und Linux folgen demselben npm-Pfad.",platformPoints:["Windows: verifiziert.","macOS: Capture und Control brauchen Screen Recording/Accessibility Rechte.","Linux: linux-x64 Runtime, grim/gnome-screenshot/import/scrot Capture und xdotool Input Backend sind ergänzt. Audio ist deaktiviert."],firewallTitle:"Firewall und entfernte Standorte",firewallBody:"Im gleichen LAN ist Router-Forwarding meist unnötig. Aus anderen Netzwerken müssen Clients den Client-Port des Managers erreichen.",firewallPoints:["Client-Verbindungsport: TCP 5197.","Client-Rechner brauchen normalerweise nur ausgehenden Zugriff.","Für entfernte Netzwerke TCP 5197 inbound am Manager erlauben und vom Router zum Manager-PC forwarden.","Port 5179 ist für die Manager-UI; nur öffnen, wenn ein Remote-Browser die Wall direkt öffnen muss.","VPN, Tailscale, ZeroTier oder feste IP-Allowlists bevorzugen."],commandsTitle:"Aktuelle Befehle",commandsBody:"Die Produktlinie ist ein Terminalbefehl über Betriebssysteme hinweg, statt Website suchen, herunterladen und installieren.",managerCommandLabel:"Manager starten",clientCommandLabel:"Workstation verbinden",slotCommandLabel:"An Slot 3 fixieren",manualCommandLabel:"Erweiterte manuelle Verbindung"}),"pt-BR":qn({languageName:"Português",languageLabel:"Idioma do documento",eyebrow:"LiveDesk Manual",title:"Abra um Screen Wall local com um comando",intro:"LiveDesk é um deck npm-first para monitorar várias estações, caixas de IA, Mac minis e máquinas dev a partir de um PC manager.",managerTitle:"1. Execute o manager",managerBody:"Rode LiveDesk no computador que verá as telas. O manager inicia a UI e o servidor local juntos e abre http://127.0.0.1:5179.",managerPoints:["O comando é npx -y livedesk.","O manager usa 5179 para Screen Wall/API e 5197 para conexões client.","Se um processo antigo ocupa as portas, a inicialização limpa por padrão."],clientTitle:"2. Conecte uma workstation",clientBody:"Em cada computador monitorado, entre com a mesma conta Google. Se o manager ainda não estiver online, o client tenta a cada 5 segundos.",clientPoints:["Use npx -y livedesk client para o primeiro slot livre.","Use npx -y livedesk client 3 para fixar no slot 3.","Clients continuam tentando para evitar login repetido em muitos PCs."],syncTitle:"3. Sync Server e descoberta",syncBody:"Sync Server publica este manager como Screen Wall ativo da conta. Clients leem o registro no Supabase e testam endpoints.",syncPoints:["Inclui host instance, endereços LAN/private, candidatos public, pair token e lease curto.","Candidatos LAN vêm primeiro; public depois se necessário.","Clique Sync Server após mudanças de manager, VPN, firewall ou roteador.","Chrome Local Network Access em livedesk.pages.dev não é mais o caminho padrão. O app npm manager é o servidor real."],platformTitle:"4. Estado das plataformas",platformBody:"Windows foi verificado com transferência de tela. macOS e Linux seguem o mesmo caminho npm.",platformPoints:["Windows: verificado.","macOS: captura e controle precisam de permissões Screen Recording/Accessibility.","Linux: runtime linux-x64, captura grim/gnome-screenshot/import/scrot e entrada xdotool adicionados. Áudio ainda desativado."],firewallTitle:"Firewall e locais remotos",firewallBody:"Na mesma LAN normalmente não é preciso port forwarding. Em outra rede, clients precisam alcançar a porta client do manager.",firewallPoints:["Porta client: TCP 5197.","Máquinas client normalmente só precisam de saída.","Para redes remotas, permita TCP 5197 inbound no manager e encaminhe TCP 5197 para o PC manager.","A porta 5179 é para a UI do manager; exponha apenas se um navegador remoto precisar abrir o Wall.","Prefira VPN, Tailscale, ZeroTier ou allowlist de IP fixo."],commandsTitle:"Comandos atuais",commandsBody:"A direção do produto é um comando de terminal comum entre sistemas, não baixar e instalar manualmente.",managerCommandLabel:"Iniciar manager",clientCommandLabel:"Conectar workstation",slotCommandLabel:"Fixar no slot 3",manualCommandLabel:"Conexão manual avançada"}),it:qn({languageName:"Italiano",languageLabel:"Lingua documento",eyebrow:"LiveDesk Manual",title:"Apri uno Screen Wall locale con un comando",intro:"LiveDesk è un deck npm-first per monitorare workstation, box AI, Mac mini e macchine dev da un solo PC manager.",managerTitle:"1. Avvia il manager",managerBody:"Esegui LiveDesk sul computer che guarderà gli schermi. Il manager avvia UI e server locale e apre http://127.0.0.1:5179.",managerPoints:["Il comando è npx -y livedesk.","Il manager usa 5179 per Screen Wall/API e 5197 per connessioni client.","Se vecchi processi occupano le porte, l’avvio le pulisce di default."],clientTitle:"2. Connetti una workstation",clientBody:"Su ogni computer monitorato, accedi con lo stesso account Google. Se il manager non è online, il client riprova ogni 5 secondi.",clientPoints:["npx -y livedesk client usa il primo slot libero.","npx -y livedesk client 3 fissa la macchina allo slot 3.","I client continuano a provare per evitare login ripetuti."],syncTitle:"3. Sync Server e discovery",syncBody:"Sync Server pubblica questo manager come Screen Wall attivo dell’account. I client leggono Supabase e provano gli endpoint.",syncPoints:["Include host instance, indirizzi LAN/private, candidati public, pair token e lease breve.","Prima LAN, poi public se necessario.","Premi Sync Server dopo cambi di manager, VPN, firewall o router.","Chrome Local Network Access su livedesk.pages.dev non è più il percorso principale. L’app npm manager è il server reale."],platformTitle:"4. Stato piattaforme",platformBody:"Windows è verificato con trasferimento schermo live. macOS e Linux seguono lo stesso percorso npm.",platformPoints:["Windows: verificato.","macOS: capture e control richiedono permessi Screen Recording/Accessibility.","Linux: aggiunti runtime linux-x64, capture grim/gnome-screenshot/import/scrot e input xdotool. Audio disattivato."],firewallTitle:"Firewall e sedi remote",firewallBody:"Nella stessa LAN di solito non serve port forwarding. Da altre reti, i client devono raggiungere la porta client del manager.",firewallPoints:["Porta client: TCP 5197.","I client normalmente richiedono solo uscita.","Per reti remote, abilita TCP 5197 inbound sul manager e inoltra TCP 5197 al PC manager.","La porta 5179 è per la UI manager; esponila solo se un browser remoto deve aprire il Wall.","Preferisci VPN, Tailscale, ZeroTier o IP allowlist."],commandsTitle:"Comandi attuali",commandsBody:"La direzione è un comando terminale comune tra sistemi operativi, invece di download e install manuale.",managerCommandLabel:"Avvia manager",clientCommandLabel:"Connetti workstation",slotCommandLabel:"Fissa allo slot 3",manualCommandLabel:"Connessione manuale avanzata"}),id:qn({languageName:"Bahasa Indonesia",languageLabel:"Bahasa dokumen",eyebrow:"LiveDesk Manual",title:"Buka Screen Wall lokal dengan satu perintah",intro:"LiveDesk adalah deck npm-first untuk memantau banyak workstation, AI box, Mac mini, dan mesin dev dari satu PC manager.",managerTitle:"1. Jalankan manager",managerBody:"Jalankan LiveDesk di komputer yang melihat layar. Manager membuka UI dan server lokal bersama, lalu membuka http://127.0.0.1:5179.",managerPoints:["Perintahnya npx -y livedesk.","Manager memakai 5179 untuk Screen Wall/API dan 5197 untuk koneksi client.","Jika proses lama memakai port itu, startup membersihkannya secara default."],clientTitle:"2. Hubungkan workstation",clientBody:"Di komputer yang dipantau, masuk dengan akun Google yang sama. Jika manager belum online, client tetap mencoba tiap 5 detik.",clientPoints:["npx -y livedesk client memakai slot kosong pertama.","npx -y livedesk client 3 mengunci mesin ke slot 3.","Client terus mencoba agar banyak PC tidak perlu login berulang."],syncTitle:"3. Sync Server dan discovery",syncBody:"Sync Server menerbitkan manager ini sebagai Screen Wall aktif untuk akun. Client membaca Supabase dan mencoba endpoint.",syncPoints:["Berisi host instance, alamat LAN/private, kandidat public, pair token, dan lease pendek.","Kandidat LAN dicoba lebih dulu, lalu public jika perlu.","Tekan Sync Server setelah perubahan manager, VPN, firewall, atau router.","Chrome Local Network Access di livedesk.pages.dev bukan jalur utama lagi. App npm manager adalah server sebenarnya."],platformTitle:"4. Status platform",platformBody:"Windows sudah diverifikasi dengan live screen transfer. macOS dan Linux mengikuti jalur npm yang sama.",platformPoints:["Windows: terverifikasi.","macOS: capture dan control perlu izin Screen Recording/Accessibility.","Linux: runtime linux-x64, capture grim/gnome-screenshot/import/scrot, dan input xdotool sudah ditambahkan. Audio belum aktif."],firewallTitle:"Firewall dan lokasi luar",firewallBody:"Di LAN yang sama biasanya tidak perlu port forwarding. Dari jaringan lain, client harus mencapai port client manager.",firewallPoints:["Port client: TCP 5197.","Mesin client biasanya hanya perlu akses keluar.","Untuk jaringan luar, izinkan TCP 5197 inbound di manager dan forward TCP 5197 ke PC manager.","Port 5179 untuk UI manager; buka hanya jika browser luar harus membuka Wall.","Utamakan VPN, Tailscale, ZeroTier, atau IP allowlist."],commandsTitle:"Perintah saat ini",commandsBody:"Arah produk adalah satu perintah terminal lintas OS, bukan download dan instal manual.",managerCommandLabel:"Mulai manager",clientCommandLabel:"Hubungkan workstation",slotCommandLabel:"Kunci ke slot 3",manualCommandLabel:"Koneksi manual lanjutan"}),vi:qn({languageName:"Tiếng Việt",languageLabel:"Ngôn ngữ tài liệu",eyebrow:"LiveDesk Manual",title:"Mở Screen Wall cục bộ bằng một lệnh",intro:"LiveDesk là deck npm-first để giám sát nhiều workstation, máy AI, Mac mini và máy dev từ một PC manager.",managerTitle:"1. Chạy manager",managerBody:"Chạy LiveDesk trên máy dùng để xem màn hình. Manager khởi động UI và server cục bộ cùng lúc, rồi mở http://127.0.0.1:5179.",managerPoints:["Lệnh là npx -y livedesk.","Manager dùng 5179 cho Screen Wall/API và 5197 cho kết nối client.","Nếu tiến trình cũ giữ port, startup mặc định sẽ dọn và khởi động lại."],clientTitle:"2. Kết nối workstation",clientBody:"Trên mỗi máy được giám sát, đăng nhập cùng tài khoản Google. Nếu manager chưa online, client tiếp tục thử mỗi 5 giây.",clientPoints:["npx -y livedesk client dùng slot trống đầu tiên.","npx -y livedesk client 3 ghim máy vào slot 3.","Client tiếp tục chờ để nhiều máy không cần đăng nhập lại."],syncTitle:"3. Sync Server và tự phát hiện",syncBody:"Sync Server đăng manager này là Screen Wall đang hoạt động của tài khoản. Client đọc Supabase và thử các endpoint.",syncPoints:["Bao gồm host instance, địa chỉ LAN/private, public candidate, pair token và lease ngắn.","Ưu tiên LAN trước, sau đó thử public nếu cần.","Bấm Sync Server sau thay đổi manager, VPN, firewall hoặc router.","Chrome Local Network Access trên livedesk.pages.dev không còn là đường chạy chính. App npm manager mới là server thật."],platformTitle:"4. Trạng thái nền tảng",platformBody:"Windows đã được kiểm chứng với truyền màn hình live. macOS và Linux đi theo cùng đường npm.",platformPoints:["Windows: đã kiểm chứng.","macOS: capture và control cần quyền Screen Recording/Accessibility.","Linux: đã thêm runtime linux-x64, capture grim/gnome-screenshot/import/scrot và input xdotool. Audio chưa bật."],firewallTitle:"Firewall và địa điểm ngoài",firewallBody:"Trong cùng LAN thường không cần port forwarding. Từ mạng khác, client phải truy cập được port client của manager.",firewallPoints:["Port client: TCP 5197.","Máy client thường chỉ cần kết nối outbound.","Với mạng ngoài, cho phép TCP 5197 inbound trên manager và forward TCP 5197 tới PC manager.","Port 5179 dành cho UI manager; chỉ mở nếu trình duyệt từ xa cần mở Wall trực tiếp.","Ưu tiên VPN, Tailscale, ZeroTier hoặc allowlist IP cố định."],commandsTitle:"Lệnh hiện tại",commandsBody:"Hướng sản phẩm là một lệnh terminal dùng chung giữa các OS, thay vì tải và cài thủ công.",managerCommandLabel:"Khởi động manager",clientCommandLabel:"Kết nối workstation",slotCommandLabel:"Ghim vào slot 3",manualCommandLabel:"Kết nối thủ công nâng cao"}),th:qn({languageName:"ไทย",languageLabel:"ภาษาของเอกสาร",eyebrow:"LiveDesk Manual",title:"เปิด Screen Wall ภายในด้วยคำสั่งเดียว",intro:"LiveDesk คือ deck แบบ npm-first สำหรับดู workstation, กล่อง AI, Mac mini และเครื่อง dev หลายเครื่องจาก manager PC เครื่องเดียว",managerTitle:"1. รัน manager",managerBody:"รัน LiveDesk บนเครื่องที่ใช้ดูหน้าจอ Manager จะเปิด UI และ local server พร้อมกัน แล้วเปิด http://127.0.0.1:5179",managerPoints:["คำสั่งคือ npx -y livedesk","Manager ใช้ 5179 สำหรับ Screen Wall/API และ 5197 สำหรับ client connection","ถ้า process เก่ายังใช้ port อยู่ startup จะล้างให้โดย default"],clientTitle:"2. เชื่อม workstation",clientBody:"บนเครื่องที่ต้อง monitor ให้ login ด้วย Google account เดียวกัน ถ้า manager ยังไม่ออนไลน์ client จะลองใหม่ทุก 5 วินาที",clientPoints:["npx -y livedesk client จะใช้ slot ว่างแรก","npx -y livedesk client 3 จะตรึงเครื่องไว้ที่ slot 3","Client จะรอต่อเนื่องเพื่อไม่ต้อง login ซ้ำเมื่อมีหลายเครื่อง"],syncTitle:"3. Sync Server และ discovery",syncBody:"Sync Server จะ publish manager นี้เป็น active Screen Wall ของ account แล้ว client อ่านข้อมูลจาก Supabase และลอง endpoint ต่างๆ",syncPoints:["มี host instance, LAN/private address, public candidate, pair token และ short lease","ลอง LAN ก่อน แล้วค่อยลอง public ถ้าจำเป็น","กด Sync Server หลังเปลี่ยน manager, VPN, firewall หรือ router","Chrome Local Network Access บน livedesk.pages.dev ไม่ใช่ runtime หลักแล้ว app npm manager คือ server จริง"],platformTitle:"4. สถานะ platform",platformBody:"Windows ตรวจสอบแล้วว่าส่งภาพ live ได้ macOS และ Linux ใช้เส้นทาง npm เดียวกัน",platformPoints:["Windows: verified","macOS: capture/control ต้องใช้สิทธิ์ Screen Recording/Accessibility","Linux: เพิ่ม linux-x64 runtime, grim/gnome-screenshot/import/scrot capture และ xdotool input แล้ว audio ยังปิดอยู่"],firewallTitle:"Firewall และเครื่องต่างสถานที่",firewallBody:"ใน LAN เดียวกันปกติไม่ต้อง port forwarding ถ้าอยู่คนละ network client ต้องเข้าถึง client port ของ manager ได้",firewallPoints:["Client port คือ TCP 5197","เครื่อง client ปกติต้องการ outbound เท่านั้น","ถ้าอยู่นอก network ให้เปิด TCP 5197 inbound ที่ manager และ forward TCP 5197 ไปยัง manager PC","Port 5179 เป็น UI ของ manager เปิดเฉพาะเมื่อ browser ระยะไกลต้องเปิด Wall โดยตรง","ควรใช้ VPN, Tailscale, ZeroTier หรือ IP allowlist ก่อนเปิดสู่ public internet"],commandsTitle:"คำสั่งปัจจุบัน",commandsBody:"ทิศทาง product คือคำสั่ง terminal เดียวข้าม OS ไม่ใช่ download/install จากเว็บไซต์",managerCommandLabel:"เริ่ม manager",clientCommandLabel:"เชื่อม workstation",slotCommandLabel:"ตรึง slot 3",manualCommandLabel:"manual connection ขั้นสูง"}),hi:qn({languageName:"हिन्दी",languageLabel:"दस्तावेज़ भाषा",eyebrow:"LiveDesk Manual",title:"एक कमांड से local Screen Wall खोलें",intro:"LiveDesk एक npm-first remote work deck है जिससे एक manager PC से कई workstation, AI box, Mac mini और dev machines देखे जा सकते हैं।",managerTitle:"1. manager चलाएं",managerBody:"जिस computer से screens देखनी हैं उस पर LiveDesk manager चलाएं। यह UI और local server साथ में शुरू करता है और http://127.0.0.1:5179 खोलता है।",managerPoints:["कमांड है npx -y livedesk।","Manager Screen Wall/API के लिए 5179 और client connections के लिए 5197 इस्तेमाल करता है।","अगर पुराने LiveDesk ports बचे हों तो startup default रूप से साफ करता है।"],clientTitle:"2. workstation जोड़ें",clientBody:"हर monitored computer पर उसी Google account से sign in करें। Manager online न हो तब भी client बंद नहीं होता और हर 5 सेकंड retry करता है।",clientPoints:["npx -y livedesk client पहला खाली slot लेता है।","npx -y livedesk client 3 machine को slot 3 पर pin करता है।","बहुत सी machines हों तब भी बार-बार login की जरूरत नहीं रहती।"],syncTitle:"3. Sync Server और discovery",syncBody:"Sync Server इस manager को account का active Screen Wall बनाकर Supabase में publish करता है। Clients record पढ़कर endpoints try करते हैं।",syncPoints:["इसमें host instance, LAN/private addresses, public candidates, pair token और short lease होता है।","LAN candidates पहले try होते हैं, जरूरत हो तो public candidates।","Manager, VPN, firewall या router बदलने के बाद Sync Server दबाएं।","livedesk.pages.dev का Chrome Local Network Access अब default runtime नहीं है। npm manager app ही real server है।"],platformTitle:"4. Platform status",platformBody:"Windows live screen transfer के साथ verified है। macOS और Linux भी इसी npm path पर आगे बढ़ रहे हैं।",platformPoints:["Windows: verified.","macOS: capture/control के लिए Screen Recording/Accessibility permissions चाहिए।","Linux: linux-x64 runtime, grim/gnome-screenshot/import/scrot capture और xdotool input backend जोड़े गए हैं। Audio अभी disabled है।"],firewallTitle:"Firewall और remote locations",firewallBody:"Same LAN में आम तौर पर router forwarding जरूरी नहीं। दूसरे network से clients को manager client port तक पहुंचना होगा।",firewallPoints:["Client connection port: TCP 5197.","Client machines को आम तौर पर सिर्फ outbound access चाहिए।","Remote network के लिए manager firewall में TCP 5197 inbound allow करें और router से TCP 5197 manager PC पर forward करें।","5179 manager UI port है; इसे तभी expose करें जब remote browser को Wall खोलना हो।","Public internet से पहले VPN, Tailscale, ZeroTier या fixed IP allowlist बेहतर है।"],commandsTitle:"Current commands",commandsBody:"Product direction है OS के बीच एक terminal command, website से download/install नहीं।",managerCommandLabel:"Start manager",clientCommandLabel:"Connect workstation",slotCommandLabel:"Pin to slot 3",manualCommandLabel:"Advanced manual connection"}),ar:qn({languageName:"العربية",languageLabel:"لغة المستند",eyebrow:"LiveDesk Manual",title:"افتح Screen Wall محلي بأمر واحد",intro:"LiveDesk هو deck بنمط npm-first لمراقبة عدة workstations وأجهزة AI وMac mini وأجهزة تطوير من كمبيوتر manager واحد.",managerTitle:"1. شغل manager",managerBody:"شغل LiveDesk على الكمبيوتر الذي سيعرض الشاشات. يبدأ manager الواجهة والخادم المحلي معا ويفتح http://127.0.0.1:5179.",managerPoints:["الأمر هو npx -y livedesk.","يستخدم manager المنفذ 5179 للواجهة/API والمنفذ 5197 لاتصالات client.","إذا بقيت عملية LiveDesk قديمة على المنافذ، يتم تنظيفها افتراضيا عند التشغيل."],clientTitle:"2. وصل workstation",clientBody:"على كل كمبيوتر تتم مراقبته، سجل الدخول بنفس حساب Google. إذا لم يكن manager متاحا، يبقى client يعمل ويحاول كل 5 ثوان.",clientPoints:["npx -y livedesk client يختار أول slot فارغ.","npx -y livedesk client 3 يثبت الجهاز في slot 3.","clients تستمر بالمحاولة لتجنب تكرار تسجيل الدخول عند كثرة الأجهزة."],syncTitle:"3. Sync Server والاكتشاف",syncBody:"Sync Server ينشر هذا manager كـ active Screen Wall للحساب. يقرأ clients سجل Supabase ويجربون endpoints بالترتيب.",syncPoints:["السجل يتضمن host instance وعناوين LAN/private وpublic candidates وpair token وlease قصير.","يتم تفضيل LAN أولا، ثم public عند الحاجة.","اضغط Sync Server بعد تغيير manager أو VPN أو firewall أو router.","Chrome Local Network Access على livedesk.pages.dev لم يعد مسار التشغيل الافتراضي. تطبيق npm manager هو الخادم الحقيقي."],platformTitle:"4. حالة المنصات",platformBody:"Windows تم التحقق منه مع نقل شاشة live. macOS وLinux يتبعان نفس مسار npm.",platformPoints:["Windows: تم التحقق.","macOS: capture/control يحتاجان أذونات Screen Recording/Accessibility.","Linux: تمت إضافة linux-x64 runtime وgrim/gnome-screenshot/import/scrot capture وxdotool input. الصوت ما زال معطلا."],firewallTitle:"Firewall والمواقع البعيدة",firewallBody:"داخل نفس LAN غالبا لا تحتاج port forwarding. من شبكة أخرى يجب أن يصل client إلى منفذ manager client.",firewallPoints:["منفذ client: TCP 5197.","أجهزة client تحتاج عادة اتصال outbound فقط.","للشبكات البعيدة، اسمح TCP 5197 inbound على manager ووجه TCP 5197 من router إلى manager PC.","المنفذ 5179 مخصص لواجهة manager؛ اكشفه فقط إذا كان متصفح بعيد يحتاج فتح Wall مباشرة.","يفضل VPN أو Tailscale أو ZeroTier أو fixed IP allowlist بدل التعريض العام."],commandsTitle:"الأوامر الحالية",commandsBody:"اتجاه المنتج هو أمر terminal واحد عبر الأنظمة، وليس تحميل وتثبيت يدوي من موقع.",managerCommandLabel:"Start manager",clientCommandLabel:"Connect workstation",slotCommandLabel:"Pin to slot 3",manualCommandLabel:"Advanced manual connection"}),tr:qn({languageName:"Türkçe",languageLabel:"Belge dili",eyebrow:"LiveDesk Manual",title:"Yerel Screen Wall tek komutla açılsın",intro:"LiveDesk, tek bir manager PC üzerinden birçok workstation, AI box, Mac mini ve dev machine izlemek için npm-first bir çalışma deckidir.",managerTitle:"1. Manager çalıştır",managerBody:"Ekranları izleyecek bilgisayarda LiveDesk manager çalıştır. Manager UI ve local server birlikte başlar ve http://127.0.0.1:5179 açılır.",managerPoints:["Komut: npx -y livedesk.","Manager Screen Wall/API için 5179, client bağlantıları için 5197 kullanır.","Eski LiveDesk process portları tutuyorsa başlangıç varsayılan olarak temizler."],clientTitle:"2. Workstation bağla",clientBody:"İzlenecek bilgisayarda aynı Google hesabıyla giriş yap. Manager henüz online değilse client kapanmaz ve her 5 saniyede tekrar dener.",clientPoints:["npx -y livedesk client ilk boş slota yerleşir.","npx -y livedesk client 3 makineyi slot 3’e sabitler.","Çok makinede tekrar tekrar login gerekmesin diye client beklemeye devam eder."],syncTitle:"3. Sync Server ve discovery",syncBody:"Sync Server bu managerı hesabın active Screen Wall kaydı olarak Supabase’e yazar. Clients bu kaydı okuyup endpoint adaylarını dener.",syncPoints:["Host instance, LAN/private adresler, public adaylar, pair token ve kısa lease içerir.","Önce LAN adayları, gerekirse public adaylar denenir.","Manager, VPN, firewall veya router değişince Sync Server’a bas.","livedesk.pages.dev üzerindeki Chrome Local Network Access artık default runtime yolu değil. Gerçek server npm manager app."],platformTitle:"4. Platform durumu",platformBody:"Windows live screen transfer ile doğrulandı. macOS ve Linux aynı npm yolunu takip ediyor.",platformPoints:["Windows: doğrulandı.","macOS: capture/control için Screen Recording/Accessibility izinleri gerekir.","Linux: linux-x64 runtime, grim/gnome-screenshot/import/scrot capture ve xdotool input backend eklendi. Audio kapalı."],firewallTitle:"Firewall ve uzak konumlar",firewallBody:"Aynı LAN içinde genelde router forwarding gerekmez. Başka ağdan clients manager client portuna ulaşabilmelidir.",firewallPoints:["Client port: TCP 5197.","Client makineler normalde sadece outbound erişim ister.","Uzak ağ için manager firewall üzerinde TCP 5197 inbound aç ve routerdan TCP 5197yi manager PCye forward et.","5179 manager UI portudur; sadece uzak browser Wall açacaksa expose et.","Public internet yerine VPN, Tailscale, ZeroTier veya sabit IP allowlist tercih et."],commandsTitle:"Güncel komutlar",commandsBody:"Ürün yönü, webden indirip kurmak yerine işletim sistemleri arasında ortak tek terminal komutu.",managerCommandLabel:"Manager başlat",clientCommandLabel:"Workstation bağla",slotCommandLabel:"Slot 3’e sabitle",manualCommandLabel:"Gelişmiş manuel bağlantı"})},FM=Object.entries(io).map(([n,a])=>({id:n,label:a.languageName}));function HM(){if(typeof navigator>"u")return"en";const n=navigator.languages?.length?navigator.languages:[navigator.language];for(const a of n){const i=a.toLowerCase();if(io[a])return a;if(i.startsWith("zh-tw")||i.startsWith("zh-hk"))return"zh-TW";if(i.startsWith("pt"))return"pt-BR";const r=i.split("-")[0];if(io[r])return r}return"en"}function sy({index:n}){const a=n+1;return l.jsx("article",{className:"device-tile placeholder-tile","aria-label":`Empty slot ${a}`,children:l.jsxs("div",{className:"tile-screen","aria-hidden":"true",children:[l.jsx("span",{className:"slot-grid","aria-hidden":"true"}),l.jsxs("span",{className:"empty-screen",children:[l.jsx(Jt,{size:24}),l.jsxs("strong",{children:["Slot ",String(a).padStart(3,"0")]})]})]})})}function Xm({device:n,frame:a,selected:i,controlEnabled:r,showStatus:c,monitorIndex:d,monitorCount:m,onSelect:p,onFocusDevice:v,onOpenControl:g,onCycleMonitor:w,onCanvasReady:y,sendInput:b,updateIndicator:C,presentationReady:j,showPresentationSpinner:A=!1}){const T=f.useRef(null),k=f.useRef(null),R=f.useRef(0),E=f.useRef(null),$=Tw(n),F=["cpu","gpu","memory","vram"].map(D=>$.metrics.find(Z=>Z.id===D)).filter(D=>!!D),q=ta(d,m),I=m>1,_=j??!!a,fe=A&&n.connected&&!_,G=xM(n,a,q),ue=G>=dd?100:G/dd*100,Y=G>=dd?dd/G*100:100,ae={"--screen-aspect":G.toFixed(5),"--screen-content-width":`${Math.max(1,Math.min(100,ue)).toFixed(3)}%`,"--screen-content-height":`${Math.max(1,Math.min(100,Y)).toFixed(3)}%`},le=f.useCallback(D=>{T.current=D,y(n.deviceId,D)},[n.deviceId,y]),V=D=>{const Z=D.currentTarget.getBoundingClientRect();return{normalizedX:Math.max(0,Math.min(1,(D.clientX-Z.left)/Math.max(1,Z.width))),normalizedY:Math.max(0,Math.min(1,(D.clientY-Z.top)/Math.max(1,Z.height)))}},z=D=>({shiftKey:D.shiftKey,ctrlKey:D.ctrlKey,altKey:D.altKey,metaKey:D.metaKey}),K=f.useCallback(()=>{E.current!==null&&(window.cancelAnimationFrame(E.current),E.current=null)},[]),Q=f.useCallback(()=>{const D=k.current;if(!D)return;k.current=null;const Z=Number(D.input.normalizedX),ye=Number(D.input.normalizedY);if(!Number.isFinite(Z)||!Number.isFinite(ye))return;b(n.deviceId,{...D.input,normalizedX:Z,normalizedY:ye})&&(R.current=performance.now())},[n.deviceId,b]),P=f.useCallback(()=>{E.current===null&&(E.current=window.requestAnimationFrame(()=>{E.current=null,Q()}))},[Q]);f.useEffect(()=>()=>{K(),k.current=null},[K]);const ie=(D,Z)=>{if(!r)return;const ye={type:Z,monitorIndex:q,...V(D),button:RM(D.button),...z(D)};if(Z==="pointermove"){const be=performance.now();k.current={input:ye},be-R.current>=PA&&(K(),Q()),P();return}k.current&&(K(),Q()),b(n.deviceId,ye)},Se=f.useCallback(D=>{const Z=document.activeElement;Z instanceof HTMLElement&&D.contains(Z)&&Z.classList.contains("monitor-cycle-button")&&Z.blur()},[]);return l.jsx("article",{className:`device-tile ${i?"selected":""} ${n.connected?"online":"offline"}`,"data-live-device-id":n.deviceId,style:ae,children:l.jsxs("div",{className:`tile-screen ${_?"has-frame":"is-empty"}`,role:"button",tabIndex:r?-1:0,"aria-pressed":i,onClick:D=>{D.target instanceof Element&&D.target.closest(".monitor-cycle")||r||p()},onKeyDown:D=>{D.target instanceof Element&&D.target.closest(".monitor-cycle")||r||(D.key==="Enter"||D.key===" ")&&(D.preventDefault(),p())},onDoubleClick:D=>{D.target instanceof Element&&D.target.closest(".monitor-cycle")||(D.preventDefault(),g())},onPointerLeave:D=>Se(D.currentTarget),children:[l.jsx("span",{className:`screen-content ${_?"has-frame":"is-empty"}`,children:l.jsx("canvas",{ref:le,className:`remote-canvas ${_?"has-frame":"is-empty"}`,tabIndex:r?0:-1,onPointerDown:D=>{r&&(D.preventDefault(),D.stopPropagation(),v(),D.currentTarget.focus(),D.currentTarget.setPointerCapture(D.pointerId),ie(D,"pointerdown"))},onPointerMove:D=>{r&&D.preventDefault(),ie(D,"pointermove")},onPointerUp:D=>{r&&(D.preventDefault(),D.stopPropagation(),ie(D,"pointerup"),D.currentTarget.hasPointerCapture(D.pointerId)&&D.currentTarget.releasePointerCapture(D.pointerId))},onPointerCancel:D=>{D.currentTarget.hasPointerCapture(D.pointerId)&&D.currentTarget.releasePointerCapture(D.pointerId)},onWheel:D=>{r&&(D.preventDefault(),b(n.deviceId,{type:"wheel",monitorIndex:q,...V(D),deltaX:D.deltaX,deltaY:D.deltaY,...z(D)}))},onKeyDown:D=>{r&&(D.preventDefault(),D.stopPropagation(),b(n.deviceId,{type:"keydown",monitorIndex:q,key:D.key,code:D.code,keyCode:D.keyCode||D.which||0,location:D.location,text:D.key.length===1?D.key:"",repeat:D.repeat,...z(D)}))},onKeyUp:D=>{r&&(D.preventDefault(),D.stopPropagation(),b(n.deviceId,{type:"keyup",monitorIndex:q,key:D.key,code:D.code,keyCode:D.keyCode||D.which||0,location:D.location,text:D.key.length===1?D.key:"",repeat:!1,...z(D)}))},onContextMenu:D=>r&&D.preventDefault()})}),!_&&l.jsx("span",{className:"empty-screen",children:l.jsx(Jt,{size:26})}),fe&&l.jsxs("span",{className:"wall-presentation-loading",role:"status","aria-live":"polite",children:[l.jsx("span",{className:"wall-presentation-spinner","aria-hidden":"true"}),l.jsx("strong",{children:"Preparing video"})]}),C&&l.jsxs("span",{className:`wall-update-status ${C==="updated"?"updated":""}`,role:"status","aria-live":"polite",children:[C==="updating"?l.jsx("span",{className:"wall-update-spinner","aria-hidden":"true"}):l.jsx(On,{size:20,"aria-hidden":"true"}),l.jsx("strong",{children:C==="updating"?"Updating...":"Updated"})]}),c&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:`tile-health-pill state-${$.state}`,children:$.label}),l.jsx("span",{className:"tile-metrics","aria-label":`${lr(n)} status`,children:F.map(D=>l.jsxs("span",{className:`tile-metric state-${D.state}`,children:[l.jsx("b",{children:D.label}),l.jsx("em",{children:D.value}),D.ratio!==void 0&&l.jsx("i",{style:{width:`${Math.round(D.ratio*100)}%`}})]},D.id))})]}),I&&l.jsxs("span",{className:"monitor-cycle","aria-label":`${lr(n)} display ${q+1} of ${m}`,onPointerDown:D=>D.stopPropagation(),onClick:D=>D.stopPropagation(),onDoubleClick:D=>D.stopPropagation(),children:[l.jsx("button",{className:"monitor-cycle-button previous",onClick:D=>{D.preventDefault(),D.stopPropagation(),w(-1),D.currentTarget.blur()},title:"Previous display",type:"button",children:l.jsx(dy,{size:18})}),l.jsxs("span",{className:"monitor-cycle-count",children:["Screen ",q+1,"/",m]}),l.jsx("button",{className:"monitor-cycle-button next",onClick:D=>{D.preventDefault(),D.stopPropagation(),w(1),D.currentTarget.blur()},title:"Next display",type:"button",children:l.jsx(Ch,{size:18})})]}),i&&l.jsx("span",{className:"device-selection-check","aria-hidden":"true",children:l.jsx(Ec,{size:23,strokeWidth:3.5})})]})})}function $M({visible:n}){return f.useEffect(()=>{if(!n||!$m)return;if(!document.getElementById(Hx)){const i=document.createElement("script");i.id=Hx,i.async=!0,i.crossOrigin="anonymous",i.src=`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${encodeURIComponent(hh)}`,document.head.appendChild(i)}const a=window.setTimeout(()=>{try{window.adsbygoogle=window.adsbygoogle||[],window.adsbygoogle.push({})}catch{}},120);return()=>window.clearTimeout(a)},[n]),n?l.jsxs("aside",{className:`free-ad-banner ${$m?"adsense-ready":"house-ad"}`,"aria-label":"Advertisement",children:[l.jsx("span",{className:"ad-label",children:"Advertisement"}),$m?l.jsx("ins",{className:"adsbygoogle livedesk-ad-unit",style:{display:"block"},"data-ad-client":hh,"data-ad-slot":bw,"data-ad-format":"auto","data-full-width-responsive":"true"}):l.jsxs("div",{className:"house-ad-copy",children:[l.jsx("strong",{children:"Sponsored placement"}),l.jsx("span",{children:"Local AI gear, mini PCs, GPUs, NAS, and developer tools."})]})]}):null}function UM(){const n=JA(),{session:a,loading:i}=y0(),{target:r,error:c,refresh:d}=b0(a),m=f.useMemo(()=>{if(!r?.active)return null;const x=r.expires_at?Date.parse(r.expires_at):Number.POSITIVE_INFINITY;return Number.isFinite(x)&&x<=Date.now()?null:r},[r]),p=f.useMemo(()=>Yv(m),[m]),v=f.useMemo(()=>p.length>0?[...new Set([...p,bn])]:[bn],[p]),[g,w]=f.useState(hM),y=f.useMemo(()=>v.some(x=>!!kc(x)),[v]),b=!y||g,{status:C,devices:j,error:A,refresh:T,hubBaseUrl:k}=w0(v,b),{entitlement:R,licensed:E,loading:$,error:F,refresh:q}=S0(a),[I,_]=f.useState([]),[fe,G]=f.useState(""),[ue,Y]=f.useState(""),[ae,le]=f.useState(""),[V,z]=f.useState(""),[K,Q]=f.useState(""),[P,ie]=f.useState("idle"),[Se,D]=f.useState(!1),[Z,ye]=f.useState(""),be=f.useRef("");be.current=V;const[de,Ne]=f.useState(!1),[Ie,re]=f.useState(!1),Ke=f.useRef(""),De=f.useRef(new Map),Qe=f.useRef(0),[ne,ge]=f.useState(""),[Re,te]=f.useState(""),[oe,Ae]=f.useState(null),Ce=f.useRef(null),st=f.useRef(0),me=f.useCallback(x=>{const N=String(x||"").trim();if(te(N),Ce.current!==null&&(window.clearTimeout(Ce.current),Ce.current=null),!N){Ae(null);return}const L=++st.current;Ae({id:L,message:N});const H=window.setTimeout(()=>{Ae(O=>O?.id===L?null:O),Ce.current===H&&(Ce.current=null)},5e3);Ce.current=H},[]);f.useEffect(()=>()=>{Ce.current!==null&&window.clearTimeout(Ce.current)},[]);const[He,_e]=f.useState("wall"),[Ge,na]=f.useState("large"),[hn,kn]=f.useState(HM),[Wn,Ci]=f.useState(!1),[Na,In]=f.useState(!1),[dr,ps]=f.useState(!1),[mt,An]=f.useState(mM),[Me,ji]=f.useState(bM),[Je,fr]=f.useState(CM),[At,Ta]=f.useState(yM),[Pt,Kn]=f.useState(null),[xa,Ra]=f.useState([]),[qt,Os]=f.useState(Me.fps),[gs,vs]=f.useState(""),[mr,hr]=f.useState(0),[Ea,xs]=f.useState(()=>new Set),Mn=f.useRef(new Map),aa=f.useRef(new Map),en=f.useRef(new Map),Is=f.useRef(new Map),Nn=f.useRef(new Set),X=f.useRef(new Map),je=f.useRef(0),Le=f.useRef(""),We=f.useRef(""),xt=f.useRef(null),gt=f.useRef(new Map),Ue=f.useRef(null),dt=f.useRef(0),tn=f.useRef(new Map),[Ft,Tn]=f.useState({}),Mt=f.useRef(new Map),[Ht,Et]=f.useState({}),[ys,pn]=f.useState(!1),Gt=f.useRef(null),bt=f.useRef(null),Da=f.useRef(0),Wa=f.useRef(""),Ka=f.useRef(new Map),ki=f.useRef(new Map),Bs=f.useRef(performance.now()),ws=f.useRef(new Map),Bn=f.useRef(new Map),on=f.useRef(new Map),pr=f.useRef(new Map),Ai=f.useRef(0),wl=f.useRef(0),Mi=f.useRef(0),Fs=f.useRef(0),co=f.useRef(0),Qn=f.useRef(new Map),La=f.useRef(new Map),[bs,_a]=f.useState(null),[bl,gr]=f.useState(!1),[Ud,Sl]=f.useState([]),[Cl,Fc]=f.useState("all"),[Hs,Ni]=f.useState([]),[Ph,qh]=f.useState(!1),[uo,Qa]=f.useState(!0),vr=f.useRef(null),xr=f.useRef(null),jl=f.useRef(null),kl=f.useRef(null),Hc=f.useRef(!1),Ti=f.useRef(!1),fo=f.useRef(0),Xa=f.useRef(0),gn=f.useRef(0),Al=He==="settings",Ml=He==="pricing",Za=He==="doc",$s=He==="share-files",Ri=He==="agents",mo=!Al&&!Ml&&!Za&&!$s&&!Ri,Ve=He==="control",nt=Me.frameMode==="mode4-h264-atlas",sa=K||Je.frameMode,vn=sa!=="mode3-h264-hw"?Math.min(30,Je.fps):Je.fps,Fn=sa!=="mode3-h264-hw"?{maxWidth:Math.min(1920,Je.maxWidth),maxHeight:Math.min(1080,Je.maxHeight)}:{maxWidth:Je.maxWidth,maxHeight:Je.maxHeight};f.useEffect(()=>{if(C?.started){if(!a?.access_token){Be("/api/remote/license",{method:"DELETE"},k).catch(()=>{});return}Be("/api/remote/license/sync",{method:"POST",headers:{Authorization:`Bearer ${a.access_token}`}},k).catch(x=>{console.warn("[LiveDesk] Hub license sync failed",x)})}},[R?.updated_at,k,a?.access_token,C?.started]),f.useEffect(()=>{!a?.access_token||!C?.started||C.runtimeRole!=="hub"||!C.deviceId||(async()=>{try{const{data:x,error:N}=await fs.rpc("register_livedesk_device",{p_device_id:C.deviceId,p_device_name:C.deviceName||C.deviceId,p_role:"hub",p_assigned_hub_id:null,p_platform:navigator.platform||navigator.userAgent,p_os_version:navigator.userAgent,p_app_version:C.managerVersion||C.managerPackage||""}),L=Array.isArray(x)?x[0]:x;(N||L?.ok===!1)&&console.warn("[LiveDesk] Hub device role registration failed",N||L?.reason||"unknown-error")}catch(x){console.warn("[LiveDesk] Hub device role registration failed",x)}})()},[a?.access_token,C?.deviceId,C?.deviceName,C?.managerPackage,C?.managerVersion,C?.runtimeRole,C?.started]);const Xe=f.useMemo(()=>j.filter(x=>x.connected),[j]),Nl=Cl==="all"?Xe.length:Hs.filter(x=>Xe.some(N=>N.deviceId===x)).length,Pd=f.useMemo(()=>Xe.reduce((x,N)=>Math.max(x,ay(N.slotNumber)),0),[Xe]),Tl=Math.max(HA,Xe.length,Pd),Us=f.useMemo(()=>{const x=Array(Tl).fill(null),N=[];for(const L of Xe){const H=ay(L.slotNumber);H>0&&H<=Tl&&!x[H-1]?x[H-1]=L:N.push(L)}for(const L of N){const H=x.findIndex(O=>!O);H<0?x.push(L):x[H]=L}return x},[Xe]),Ps=f.useMemo(()=>Xe.map(x=>x.deviceId),[Xe]),Ja=f.useMemo(()=>new Set(I),[I]),la=f.useMemo(()=>Xe.filter(x=>Ja.has(x.deviceId)),[Xe,Ja]),Rl=f.useMemo(()=>j.find(x=>x.deviceId===fe)||la[0]||null,[j,fe,la]),Rn=f.useMemo(()=>j.find(x=>x.deviceId===ue)||null,[ue,j]),yr=Rn?ta(At[Rn.deviceId],Vn(Rn)):0,Te=Ve?Rn:Rl,$c=f.useMemo(()=>new Set(Hs),[Hs]),qd=f.useMemo(()=>Cl==="all"?Xe.map(x=>x.deviceId):Xe.filter(x=>$c.has(x.deviceId)).map(x=>x.deviceId),[Xe,$c,Cl]),za=f.useMemo(()=>Te?Tw(Te):null,[Te]),Gd=Te?Nc(Te,"control"):!1,Vd=Te?.platform==="macos"&&Te.capabilities?.controlPermission===!1,El=Te?Nc(Te,"audio")||Nc(Te,"remoteAudio"):!1,Rt=E?R?.plan==="pro"?"pro":"ltd":"free",Uc=er[Rt],wr=Uc.limit,qs=f.useMemo(()=>{if(!Number.isFinite(wr))return new Set(Xe.map(N=>N.deviceId));const x=Te?[Te,...Xe.filter(N=>N.deviceId!==Te.deviceId)]:Xe;return new Set(x.slice(0,wr).map(N=>N.deviceId))},[wr,Xe,Te]),ho=!Te||qs.has(Te.deviceId),Yd=Rt==="free",Vt=ho,Dl=Rt==="ltd"?`Plus includes up to ${vc} workstations. Upgrade to Pro for commercial use and larger walls.`:`Free includes up to ${gc} workstations. Upgrade to Plus for ${vc} devices and no ads.`,Pc=Rt==="free",qc=Vt&&!!Te,es=Vt&&!!Te&&Gd,Gc=Vt&&!!Te&&El,br=f.useMemo(()=>Us.filter(x=>!!x?.connected).slice(0,kM(Ge)).map(x=>x.deviceId),[Us,Ge]),Gs=f.useMemo(()=>nt?Ps:Me.visibleOnlyLive?xa.length>0?xa:br:Ps,[br,nt,xa,Me.visibleOnlyLive,Ps]),Oa=f.useMemo(()=>Ym(Gs.filter(x=>qs.has(x))),[qs,Gs]),cn=f.useMemo(()=>Oa.filter(x=>x!==gs),[Oa,gs]);f.useEffect(()=>{const x=new Set(Oa);xs(N=>{let L=!1;const H=new Set;for(const O of N)x.has(O)?H.add(O):L=!0;return L?H:N})},[Oa]);const Wd=f.useMemo(()=>{const x=O=>Xe.find(pe=>pe.deviceId===O)||null,N=O=>ta(At[O],x(O)?Vn(x(O)):0),L=(O,pe=N(O))=>O===ae&&(P==="connecting"||P==="active"||P==="warm")?en.current.get(O)||aa.current.get(O)||null:nt?gt.current.get(O)||Mn.current.get(O)||null:Mn.current.get(O)||null,H=(O,pe=N(O))=>{const ve=x(O);return`${ve?lr(ve):O} · Monitor ${pe+1}`};return{resolveCurrentTarget(){if(Ve&&Rn){const $e=yr;return{type:"control",deviceIds:[Rn.deviceId],monitorIndex:$e,label:`${lr(Rn)} · Monitor ${$e+1}`,sourceCanvas:L(Rn.deviceId,$e),signature:`control:${Rn.deviceId}:${$e}:${Je.frameMode}`}}const O=la.map($e=>$e.deviceId).filter($e=>cn.includes($e)),pe=Rl&&cn.includes(Rl.deviceId)?Rl.deviceId:"",ve=O.length>0?O:pe?[pe]:cn,Ee=O.length===0&&!pe;if(ve.length===0)return null;if(ve.length===1){const $e=ve[0],Ye=N($e);return{type:Ee?"wall":O.length>1?"selection":"device",deviceIds:ve,monitorIndex:Ye,label:Ee?"Wall":H($e,Ye),sourceCanvas:Ee?null:L($e,Ye),signature:`${Ee?"wall":"device"}:${$e}:${Ye}:${nt?"atlas":"direct"}`}}return{type:O.length>1?"selection":"wall",deviceIds:ve,label:O.length>1?`${ve.length} selected workstations`:"Wall",sourceCanvas:null,signature:`${O.length>1?"selection":"wall"}:${ve.join(",")}:${Ge}`}},getDeviceCanvas:L,composeWall(O,pe={}){return NA(O.map(ve=>{const Ee=N(ve);return{deviceId:ve,label:H(ve,Ee),canvas:L(ve,Ee)}}),pe)}}},[Xe,Rn,ae,P,Je.frameMode,Mn,nt,At,yr,la,Ve,cn,Rl,Ge]),Vc=FA({hubUrl:k,sourceRegistry:Wd,onToast:me}),Ss=f.useMemo(()=>Vt&&ae&&qs.has(ae)&&(P==="connecting"||P==="active"||P==="warm")?[ae]:[],[ae,P,Vt,qs]),Ei=f.useMemo(()=>Ym([...Oa,...Ss]),[Ss,Oa]),Yt=f.useMemo(()=>AM(Me,Ge),[Me,Ge]),Cs=f.useCallback((x,N)=>{if(x.width<=0||x.height<=0)return!1;(N.width!==x.width||N.height!==x.height)&&(N.width=x.width,N.height=x.height);const L=N.getContext("2d",{alpha:!1});return L?(L.imageSmoothingEnabled=!0,L.imageSmoothingQuality="high",L.drawImage(x,0,0,x.width,x.height,0,0,N.width,N.height),!0):!1},[]),Di=f.useCallback(x=>{x&&xs(N=>{if(N.has(x))return N;const L=new Set(N);return L.add(x),L})},[]),Li=f.useCallback(x=>{x&&xs(N=>{if(!N.has(x))return N;const L=new Set(N);return L.delete(x),L})},[]),Ia=f.useCallback((x,N=!1)=>{if(!Nn.current.has(x))return!1;const L=performance.now(),H=X.current.get(x)||0;if(!N&&L-H<150)return!1;const O=en.current.get(x)||aa.current.get(x),pe=nt?gt.current.get(x):Mn.current.get(x);return!O||!pe||!Cs(O,pe)?!1:(X.current.set(x,L),Di(x),!0)},[Di,nt,Cs]);f.useEffect(()=>{Le.current=gs},[gs]);const Yc=f.useCallback((x,N)=>{const L=Mn.current.get(x);if(L&&L!==N&&uc(L),N){Mn.current.set(x,N),Ia(x,!0);return}Mn.current.delete(x),Li(x)},[Li,Ia]),Ll=f.useCallback((x,N)=>{const L=aa.current.get(x);if(L&&L!==N&&uc(L),N){aa.current.set(x,N);const H=en.current.get(x);H&&Cs(H,N);return}aa.current.delete(x)},[Cs]),Sr=f.useCallback((x,N,L)=>{const H=performance.now(),O=ds(x,L.deviceId);let pe=L;if(x==="control"&&L.visualChanged){const Ee=N0(L.deviceId),$e=Qn.current.get(L.deviceId)||0,Ye=Ee?H-Ee.sentAt:Number.POSITIVE_INFINITY;Ee&&Ee.inputSeq>$e&&Ye<=$x&&(pe={...L,inputFeedbackSeq:Ee.inputSeq,inputFeedbackMs:Math.max(0,Ye),inputFeedbackAt:H},Qn.current.set(L.deviceId,Ee.inputSeq))}ki.current.set(O,H);const ve=tn.current.get(O)||{totalFrames:0,totalChangedFrames:0,sampleFrames:0,sampleChangedFrames:0,sampleStartedAt:H,intervalCount:0,intervalSumMs:0,minIntervalMs:Number.POSITIVE_INFINITY,maxIntervalMs:0,intervalSamplesMs:[],seqGapCount:0,maxSeqGap:0,sampleDecoderInputBase:0,sampleDecoderOutputBase:0};x==="control"&&pe.inputFeedbackMs===void 0&&ve.lastInfo?.inputFeedbackMs!==void 0&&ve.lastInfo.inputFeedbackAt!==void 0&&H-ve.lastInfo.inputFeedbackAt<=$x&&(pe={...pe,inputFeedbackSeq:ve.lastInfo.inputFeedbackSeq,inputFeedbackMs:ve.lastInfo.inputFeedbackMs,inputFeedbackAt:ve.lastInfo.inputFeedbackAt}),ve.totalFrames+=1,ve.sampleFrames+=1,Vx(ve,H,pe.frameSeq),pe.visualChanged&&(ve.totalChangedFrames+=1,ve.sampleChangedFrames+=1),ve.lastInfo=pe,tn.current.set(O,ve)},[]),Cr=f.useCallback((x,N)=>{Sr("wall",x,N),x.kind==="live"&&Di(x.deviceId);const L=Se&&ae===x.deviceId;Le.current!==x.deviceId&&!L&&(Nn.current.delete(x.deviceId),X.current.delete(x.deviceId))},[ae,Se,Di,Sr]),Wc=f.useCallback((x,N)=>{Sr("control",x,N),ye(pe=>pe&&"");const L=en.current.get(x.deviceId),H=aa.current.get(x.deviceId);L&&L.width>0&&L.height>0&&(H&&Cs(L,H),Is.current.set(x.deviceId,{...x,payload:new ArrayBuffer(0),byteLength:0}),Nn.current.add(x.deviceId),x.deviceId===ae&&(D(!0),ie(pe=>pe==="connecting"?"active":pe)),Ia(x.deviceId));const O=Gt.current;!O||!ZA(O,x)||pn(!0)},[ae,Cs,Ia,Sr]);f.useEffect(()=>{const x=window.setInterval(()=>{const N=performance.now(),L={};for(const[H,O]of tn.current.entries()){const pe=Math.max(1,N-O.sampleStartedAt);L[H]={totalFrames:O.totalFrames,totalChangedFrames:O.totalChangedFrames,framesPerSecond:O.sampleFrames*1e3/pe,changedFramesPerSecond:O.sampleChangedFrames*1e3/pe,averageIntervalMs:O.intervalCount>0?O.intervalSumMs/O.intervalCount:0,minIntervalMs:Number.isFinite(O.minIntervalMs)?O.minIntervalMs:0,maxIntervalMs:O.maxIntervalMs,p95IntervalMs:xd(O.intervalSamplesMs,.95),intervalCount:O.intervalCount,seqGapCount:O.seqGapCount,maxSeqGap:O.maxSeqGap,decoderInputFps:Math.max(0,(Number(O.lastInfo?.decoderInputCount||0)-O.sampleDecoderInputBase)*1e3/pe),decoderOutputFps:Math.max(0,(Number(O.lastInfo?.decoderOutputCount||0)-O.sampleDecoderOutputBase)*1e3/pe),sampleMs:pe,lastInfo:O.lastInfo},O.sampleDecoderInputBase=Number(O.lastInfo?.decoderInputCount||0),O.sampleDecoderOutputBase=Number(O.lastInfo?.decoderOutputCount||0),O.sampleChangedFrames=0,Gx(O,N)}Tn(L)},1e3);return()=>window.clearInterval(x)},[]);const Vs=f.useCallback((x,N)=>{const L=performance.now(),H=ds(x,N.deviceId);Ka.current.set(H,L),La.current.delete(H),x==="control"&&Bn.current.delete(H);const O=Mt.current.get(H)||{totalFrames:0,sampleFrames:0,sampleStartedAt:L,intervalCount:0,intervalSumMs:0,minIntervalMs:Number.POSITIVE_INFINITY,maxIntervalMs:0,intervalSamplesMs:[],seqGapCount:0,maxSeqGap:0,sampleBytes:0,sampleH264Frames:0,sampleTinyFrames:0,sampleRepeatedFrames:0,sourceSendIntervalsMs:[]};if(O.totalFrames+=1,O.sampleFrames+=1,O.sampleBytes+=Math.max(0,Number(N.byteLength||0)),String(N.frameMode||N.mode||N.codec||N.mimeType||"").toLowerCase().includes("h264")){O.sampleH264Frames+=1,Number(N.byteLength||0)<=KA&&(O.sampleTinyFrames+=1);const $e=String(N.contentHash||"");$e&&O.lastContentHash===$e&&(O.sampleRepeatedFrames+=1),O.lastContentHash=$e}const Ee=Number(N.agentSendGapMs||0);Ee>0&&Ee<1e3&&$h(O.sourceSendIntervalsMs,Ee),O.lastFrame=N,Vx(O,L,N.frameSeq),Mt.current.set(H,O)},[]);f.useEffect(()=>{const x=window.setInterval(()=>{const N=performance.now(),L={};for(const[H,O]of Mt.current.entries()){const pe=Math.max(1,N-O.sampleStartedAt);L[H]={totalFrames:O.totalFrames,framesPerSecond:O.sampleFrames*1e3/pe,averageIntervalMs:O.intervalCount>0?O.intervalSumMs/O.intervalCount:0,minIntervalMs:Number.isFinite(O.minIntervalMs)?O.minIntervalMs:0,maxIntervalMs:O.maxIntervalMs,p95IntervalMs:xd(O.intervalSamplesMs,.95),intervalCount:O.intervalCount,seqGapCount:O.seqGapCount,maxSeqGap:O.maxSeqGap,averageFrameBytes:O.sampleFrames>0?O.sampleBytes/O.sampleFrames:0,tinyFrameRatio:O.sampleH264Frames>0?O.sampleTinyFrames/O.sampleH264Frames:0,repeatedFrameRatio:O.sampleH264Frames>0?O.sampleRepeatedFrames/O.sampleH264Frames:0,sourceSendAverageMs:O.sourceSendIntervalsMs.length>0?O.sourceSendIntervalsMs.reduce((ve,Ee)=>ve+Ee,0)/O.sourceSendIntervalsMs.length:0,sourceSendP95Ms:xd(O.sourceSendIntervalsMs,.95),sourceSendSampleCount:O.sourceSendIntervalsMs.length,sampleMs:pe,lastFrame:O.lastFrame},O.sampleBytes=0,O.sampleH264Frames=0,O.sampleTinyFrames=0,O.sampleRepeatedFrames=0,O.sourceSendIntervalsMs.length=0,Gx(O,N)}Et(L)},1e3);return()=>window.clearInterval(x)},[]);const po=f.useCallback(x=>{Vs("wall",x);const N=Mn.current.get(x.deviceId);N&&Nm(N,x,()=>Mn.current.get(x.deviceId)!==N,Cr,Me.h264DecodeAcceleration).catch(()=>{})},[Cr,Vs,Me.h264DecodeAcceleration]),_l=f.useCallback(x=>{Vs("control",x);let N=en.current.get(x.deviceId);N||(N=document.createElement("canvas"),N.setAttribute("aria-hidden","true"),en.current.set(x.deviceId,N));const L=N,H=be.current;Nm(L,x,()=>en.current.get(x.deviceId)!==L,Wc,Je.h264DecodeAcceleration,"interactive").catch(O=>{be.current!==H||en.current.get(x.deviceId)!==L||ae!==x.deviceId||ye(O instanceof Error?O.message:String(O||"Control H.264 decode failed"))})},[ae,Je.h264DecodeAcceleration,Wc,Vs]),_i=f.useCallback(x=>{const N=xt.current;N&&N!==x&&uc(N),xt.current=x,Ai.current=0,wl.current=0,Mi.current=0,Fs.current=0,co.current=0,dt.current=0},[]),zl=f.useCallback(()=>{const x=xt.current,N=Ue.current;if(!(!x||!N||x.width<=0||x.height<=0||dt.current!==N.layoutVersion))for(const L of N.tiles){const H=gt.current.get(L.deviceId);if(!H||L.width<=0||L.height<=0)continue;const O=Math.max(1,Math.round(L.width)),pe=Math.max(1,Math.round(L.height)),ve=QA,Ee=XA;(H.width!==ve||H.height!==Ee)&&(H.width=ve,H.height=Ee);const $e=H.getContext("2d",{alpha:!1});if($e){$e.imageSmoothingEnabled=!0,$e.imageSmoothingQuality="high";try{$e.drawImage(x,Math.round(L.x),Math.round(L.y),O,pe,0,0,ve,Ee)}catch{}}}},[]),jr=f.useCallback((x,N)=>{if(N){gt.current.set(x,N),window.requestAnimationFrame(zl),window.requestAnimationFrame(()=>Ia(x,!0));return}gt.current.delete(x),Li(x)},[Li,zl,Ia]),go=f.useCallback((x,N)=>{Mi.current=performance.now(),dt.current=Number(x.layoutVersion||0),zl();const L=Ue.current?.tiles||[],H=L.length>0?Math.round(x.byteLength/L.length):x.byteLength;for(const O of L){const pe={...x,deviceId:O.deviceId,width:O.width,height:O.height,sourceWidth:O.width,sourceHeight:O.height,byteLength:H};Cr(pe,{...N,deviceId:O.deviceId,width:O.width,height:O.height,byteLength:H}),Le.current===O.deviceId&&Ia(O.deviceId,!0)}},[Cr,zl,Ia]),Kc=f.useCallback(x=>{const N=performance.now();Ai.current<=0&&(Ai.current=N),wl.current=N;const L=xt.current;if(!L)return;const H=Ue.current?.tiles||[],O=H.length>0?Math.round(x.byteLength/H.length):x.byteLength;for(const pe of H)Vs("wall",{...x,deviceId:pe.deviceId,width:pe.width,height:pe.height,sourceWidth:pe.width,sourceHeight:pe.height,byteLength:O});Nm(L,x,()=>xt.current!==L,go).catch(()=>{})},[go,Vs]),vo=f.useMemo(()=>({fps:qt,maxWidth:Yt.maxWidth,maxHeight:Yt.maxHeight,quality:Me.quality,mode:Me.frameMode,frameMode:Me.frameMode,streamPurpose:"wall",monitorSelections:At,onFrame:po}),[qt,po,Yt,At,Me]),xo=f.useMemo(()=>({fps:vn,maxWidth:Fn.maxWidth,maxHeight:Fn.maxHeight,quality:Je.quality,mode:sa,frameMode:sa,streamPurpose:"control",forceRestart:V!=="",forceRestartToken:V,restartReason:V?"control-session-start":"",monitorSelections:At,onFrame:_l}),[V,Je.quality,_l,vn,sa,Fn.maxHeight,Fn.maxWidth,At]),{frames:yo,state:Ol,error:wo,stats:js,restartLive:kr}=Xv(nt?[]:cn,!nt&&Me.autoStartLive&&cn.length>0,k,vo),{frame:Il,layout:Ys,state:bo,stats:Xn,refreshInputs:Bl}=T0(Gs,nt&&Me.autoStartLive&&Gs.length>0,k,{fps:20,width:1920,height:1080,tileWidth:Yt.maxWidth,tileHeight:Yt.maxHeight,captureDeviceIds:cn,monitorSelections:At,onFrame:Kc});f.useEffect(()=>{Ue.current=Ys,Ys&&window.requestAnimationFrame(zl)},[Ys,zl]),f.useEffect(()=>{if(!nt||bo!=="open"){Ai.current=0,wl.current=0,Mi.current=0;return}const x=window.setInterval(()=>{const N=xt.current,L=performance.now();if(!N||document.visibilityState!=="visible"||L-Bs.current<Um)return;const H=wl.current,O=Ai.current;if(H<=0||O<=0||L-H>500)return;const pe=Mi.current||O,ve=L-pe;if(ve>=GA&&L-co.current>=YA){Am(N)&&(co.current=L,Fs.current=L);return}ve>=qA&&L-Fs.current>=VA&&l0(N)&&(Fs.current=L)},250);return()=>window.clearInterval(x)},[bo,nt]);const{frames:Ar,state:Mr,error:Fl,stats:Qc,restartLive:Hl,reconnectLive:Xc}=Xv(Ss,Ss.length>0,k,xo),ts=f.useMemo(()=>{const x=new Map(yo);if(nt&&Il){const N=new Map((Ys?.tiles||[]).map(H=>[H.deviceId,H])),L=Math.max(1,N.size);for(const H of Gs){const O=N.get(H);x.set(H,{...Il,deviceId:H,width:O?.width||Yt.maxWidth,height:O?.height||Yt.maxHeight,sourceWidth:O?.width||Yt.maxWidth,sourceHeight:O?.height||Yt.maxHeight,byteLength:Math.round(Il.byteLength/L)})}}for(const[N,L]of Ar.entries())x.set(N,L);for(const N of Gs){if(!Nn.current.has(N)||x.has(N))continue;const L=Is.current.get(N);L&&x.set(N,L)}return x},[Il,Ys,Ar,Yt,nt,yo,Gs,mr]),zi=Ve&&Ss.length>0?Mr:nt?bo:Ol,Ws=Ve&&Ss.length>0?Qc:nt?Xn:js;f.useCallback((x,N="browser-stale")=>{const L=kr(x,N),H=Hl(x,N);return L||H},[Hl,kr]),f.useEffect(()=>{nt&&!Ve&&Bl()},[nt,Bl,Ve]);const $l=f.useCallback((x,N,L)=>{const H=N==="control"?en.current.get(x)||null:Mn.current.get(x)||null;if(!H||!Am(H))return!1;const O=performance.now();return pr.current.set(ds(N,x),O),!0},[]),Oi=f.useCallback(x=>{if(sa!=="mode3-h264-hw"||!ae||K)return!1;const N=Xe.find($e=>$e.deviceId===ae)||Rn,L=String(N?.platform||"").toLowerCase(),H=["win32","windows","win32nt"].includes(L)?"mode5-lzo-delta":"mode2-lzo",O=ds("control",ae),pe=performance.now();on.current.set(O,pe),Ka.current.delete(O),ki.current.delete(O),ws.current.delete(O),Bn.current.delete(O),La.current.delete(O),Am(en.current.get(ae)||null),Xc([ae],"control-decode-fallback"),Q(H),z(`control-${H}-fallback-${ae}-${Date.now()}`),D(!1),pn(!1);const ve=x==="no first frame"||x==="control-first-frame-timeout",Ee=H==="mode5-lzo-delta"?"Mode 5":"Mode 2";return ye($e=>$e||(ve?`Control frame transport timeout; retrying Control with ${Ee} (${x})`:`H.264 decode failed; retrying Control with ${Ee} (${x})`)),ie("connecting"),!0},[Xe,Rn,ae,K,sa,Xc]);f.useEffect(()=>{const x=Ve?Rn:null;if(x){Gt.current={deviceId:x.deviceId,monitorIndex:yr,frameMode:sa,startedAtEpochMs:Date.now()},pn(ae===x.deviceId&&Se);return}Gt.current=null,pn(!1)},[Rn?.sessionId,ue,ae,Se,sa,yr,Ve]);const ns=f.useCallback(async x=>{const N=nt,L=j.find(ve=>ve.deviceId===x),H=ta(At[x],L?Vn(L):1),O=N?{fps:8,maxWidth:Yt.maxWidth,maxHeight:Yt.maxHeight,quality:60,mode:"mode2-lzo",frameMode:"mode2-lzo",streamPurpose:"atlas",monitorIndex:H}:{fps:qt,maxWidth:Yt.maxWidth,maxHeight:Yt.maxHeight,quality:Me.quality,mode:Me.frameMode,frameMode:Me.frameMode,streamPurpose:"wall",monitorIndex:H},pe=await Be(`/api/remote/devices/${encodeURIComponent(x)}/live/start`,{method:"POST",body:JSON.stringify(O)},k);if(pe?.ok===!1)throw new Error(pe.error||"wall-stream-start-failed");return pe},[qt,j,Yt.maxHeight,Yt.maxWidth,k,nt,At,Me.frameMode,Me.quality]),Ks=f.useCallback(async x=>{const N=await Be(`/api/remote/devices/${encodeURIComponent(x)}/live/stop`,{method:"POST",body:JSON.stringify({streamPurpose:nt?"atlas":"wall",reason:"control-active"})},k);if(N?.ok===!1)throw new Error(N.error||"wall-stream-stop-failed");return N},[k,nt]),ks=f.useCallback(async(x,N="control-session-stop")=>{const L=await Be(`/api/remote/devices/${encodeURIComponent(x)}/live/stop`,{method:"POST",body:JSON.stringify({streamPurpose:"control",reason:N})},k);if(L?.ok===!1)throw new Error(L.error||"control-stream-stop-failed");return L},[k]),Qs=f.useCallback(x=>{const N=en.current.get(x);N&&(uc(N),en.current.delete(x));const L=aa.current.get(x);L&&uc(L),Is.current.delete(x),Nn.current.delete(x),X.current.delete(x)},[]);f.useEffect(()=>{if(!Ve)return;const x=ue&&Xe.find(O=>O.deviceId===ue)||null;if(!Vt||!x)return;if(ae===x.deviceId&&(P==="active"||P==="warm"||P==="connecting")){ie(O=>O==="warm"?"active":O);return}if(Wa.current===x.deviceId)return;const N=++Da.current,L=ae;Wa.current=x.deviceId,(async()=>{if(L){if(ie("stopping"),await ks(L,"control-session-switch").catch(()=>{}),N!==Da.current)return;Qs(L)}if(N!==Da.current)return;const O=ds("control",x.deviceId),pe=`control-session-${N}-${x.deviceId}`;on.current.set(O,performance.now()),Ka.current.delete(O),ki.current.delete(O),La.current.delete(O),Bn.current.delete(O),Q(""),ye(""),z(pe),le(x.deviceId),D(!1),ie("connecting"),Da.current===N&&Wa.current===x.deviceId&&(Wa.current="")})()},[Xe,ue,ae,P,Vt,Qs,Ve,ks]),f.useEffect(()=>{if(!ae||Xe.some(L=>L.deviceId===ae))return;const x=ae,N=++Da.current;ie("stopping"),ks(x,"control-device-disconnected").catch(()=>{}).finally(()=>{N===Da.current&&(Qs(x),D(!1),z(""),Q(""),ye(""),le(L=>L===x?"":L),ie("idle"))})},[Xe,ae,Qs,ks]),f.useEffect(()=>{if(bt.current!==null&&(window.clearTimeout(bt.current),bt.current=null),!ae||P==="idle"||P==="stopping"||P==="error"||Ve||He==="wall"){ae&&!Ve&&He==="wall"&&ie(L=>L==="warm"||L==="active"?"active":L);return}ie(L=>L==="idle"||L==="stopping"?L:"warm");const x=ae,N=++Da.current;return bt.current=window.setTimeout(()=>{bt.current=null,ie("stopping"),ks(x,"control-session-warm-timeout").catch(()=>{}).finally(()=>{N===Da.current&&(Qs(x),D(!1),z(""),Q(""),ye(""),le(L=>L===x?"":L),ie("idle"))})},WA),()=>{bt.current!==null&&(window.clearTimeout(bt.current),bt.current=null)}},[He,ae,P,Qs,Ve,ks]),f.useEffect(()=>()=>{bt.current!==null&&window.clearTimeout(bt.current)},[]),f.useEffect(()=>{const x=++je.current,N=Se&&(P==="active"||P==="warm")&&ae?ae:"",L=Le.current;if(We.current||!N&&!L||N&&N===L)return;(async()=>{We.current=N||L;try{if(L&&L!==N){if(await ns(L),x!==je.current)return;Le.current="",vs("")}if(!N||x!==je.current)return;if(await Ks(N),x!==je.current){await ns(N).catch(()=>{});return}Le.current=N,vs(N),Nn.current.add(N),me(L&&L!==N?`Wall paused for Control: ${N}`:"")}catch(O){x===je.current&&me(O instanceof Error?O.message:String(O))}finally{We.current===(N||L)&&(We.current="")}})()},[ae,Se,P,nt,ns,Ks]);const{state:Ba,sendInput:Ul,stats:ya,error:So}=R0(es&&de,k),{state:Co,lastFrame:Zc,stats:En,error:jo}=F0(Te?.deviceId||"",Gc&&Ie,k),Nr=f.useRef(new Map);f.useEffect(()=>{const x=[["hub",A],["registry",c],["license",F],["wall-stream",wo],["control-stream",Fl],["control-decode",Z],["remote-input",So],["remote-audio",jo]];for(const[N,L]of x){const H=String(L||"").trim();if(!H){Nr.current.delete(N);continue}Nr.current.get(N)!==H&&(Nr.current.set(N,H),me(H))}},[jo,Z,Fl,A,So,F,c,me,wo]),f.useEffect(()=>{if(!Ve||!de||!es||!Te)return;const x=(H,O)=>{const pe=H.target,ve=pe?.tagName?.toLowerCase();pe?.isContentEditable||ve==="input"||ve==="textarea"||ve==="select"||(H.preventDefault(),H.stopPropagation(),Ul(Te.deviceId,{type:O,monitorIndex:ta(At[Te.deviceId],Vn(Te)),key:H.key,code:H.code,keyCode:H.keyCode||H.which||0,location:H.location,text:H.key.length===1?H.key:"",repeat:O==="keydown"?H.repeat:!1,shiftKey:H.shiftKey,ctrlKey:H.ctrlKey,altKey:H.altKey,metaKey:H.metaKey}))},N=H=>x(H,"keydown"),L=H=>x(H,"keyup");return window.addEventListener("keydown",N),window.addEventListener("keyup",L),()=>{window.removeEventListener("keydown",N),window.removeEventListener("keyup",L)}},[es,de,At,Te,Ul,Ve]),f.useEffect(()=>{const x=()=>{document.visibilityState==="visible"&&(Bs.current=performance.now())};return document.addEventListener("visibilitychange",x),window.addEventListener("pageshow",x),()=>{document.removeEventListener("visibilitychange",x),window.removeEventListener("pageshow",x)}},[]),f.useEffect(()=>{if(!ae||P!=="connecting"&&P!=="active"&&P!=="warm"||Mr!=="open")return;const x=ae,N=ds("control",x),L=window.setInterval(()=>{const H=performance.now();if(document.visibilityState!=="visible"||H-Bs.current<Um)return;const O=Ka.current.get(N)||0,pe=ki.current.get(N)||0,ve=ws.current.get(N)||0,Ee=on.current.get(N)||H;on.current.has(N)||on.current.set(N,Ee);const $e=O<=0,Ye=$e?H-Ee>aM:H-O>Xx,Dt=O>0&&(pe<=0||H-pe>Xx);if(!Ye&&Dt){const Es=pr.current.get(N)||0;H-Es>=Zx&&$l(x,"control","decoder-paint-stale");return}if(!Ye)return;const xn=Bn.current.get(N)||0;if(xn>0){if(H-xn<lM)return;Bn.current.delete(N)}const Dn=La.current.get(N)||0;if(Dn>=iM){if(Oi($e?"no first frame":"stale stream"))return;D(!1),pn(!1),ie("error");return}if(H-ve<Jx(sM,Dn))return;Hl([x],$e?"control-first-frame-timeout":"control-receive-stale")&&(ws.current.set(N,H),Bn.current.set(N,H),on.current.set(N,H),La.current.set(N,Dn+1))},650);return()=>window.clearInterval(L)},[Mr,ae,P,Oi,$l,Hl]),f.useEffect(()=>{!Z||sa!=="mode3-h264-hw"||Oi(Z)},[Z,sa,Oi]),f.useEffect(()=>{!Ve||!ae||!Fl||ie(x=>x==="error"?x:"error")},[Fl,ae,Ve]),f.useEffect(()=>{if(nt||Ol!=="open"||!Me.autoStartLive||cn.length===0)return;const x=window.setInterval(()=>{const N=performance.now();if(document.visibilityState!=="visible"||N-Bs.current<Um)return;const L=1e3/Math.max(1,qt||Me.fps||1),H=Math.max(rM,Math.ceil(L*4)),O=[];for(const pe of cn){if(O.length>=uM)break;const ve=ds("wall",pe),Ee=Ka.current.get(ve)||0;if(Ee<=0)continue;const $e=ws.current.get(ve)||0,Ye=ki.current.get(ve)||0,Dt=N-Ee>H,xn=Ye<=0||N-Ye>H;if(!Dt&&xn){const ra=pr.current.get(ve)||0;N-ra>=Zx&&$l(pe,"wall","decoder-paint-stale");continue}if(!Dt)continue;const Dn=La.current.get(ve)||0;N-$e>=Jx(oM,Dn)&&O.push(pe)}if(O.length>0&&kr(O,"wall-frame-stale"))for(const pe of O){const ve=ds("wall",pe);ws.current.set(ve,N),La.current.set(ve,(La.current.get(ve)||0)+1)}},cM);return()=>window.clearInterval(x)},[qt,nt,$l,kr,Me.autoStartLive,Me.fps,cn,Ol]),f.useEffect(()=>{Os(Me.fps),Xa.current=Date.now(),gn.current=0},[Me.fps,Me.frameMode,Me.adaptiveLoadShedding]),f.useEffect(()=>{QS({h264DecodeAcceleration:Me.h264DecodeAcceleration})},[Me.h264DecodeAcceleration]),f.useEffect(()=>{if(!Vt||Ve||!Me.visibleOnlyLive){Ra([]);return}const x=vr.current;if(!x||typeof IntersectionObserver>"u"){Ra(br);return}const N=Array.from(x.querySelectorAll("[data-live-device-id]"));if(N.length===0){Ra([]);return}const L=new Map,H=()=>{const pe=Ym(N.map(ve=>String(ve.dataset.liveDeviceId||"")).filter(ve=>(L.get(ve)||0)>0));Ra(ve=>Vm(ve,pe)?ve:pe)},O=new IntersectionObserver(pe=>{for(const ve of pe){const Ee=String(ve.target.dataset.liveDeviceId||"");Ee&&L.set(Ee,ve.isIntersecting?ve.intersectionRatio||.01:0)}H()},{root:null,rootMargin:Yn.visibleRootMargin,threshold:[0,.01,.2,.6,1]});return N.forEach(pe=>O.observe(pe)),H(),()=>O.disconnect()},[br,Vt,Ve,Us,Me.visibleOnlyLive,Ge]),f.useEffect(()=>{if(nt||!Me.adaptiveLoadShedding||!Me.autoStartLive||cn.length===0)return;const x=Me.fps;if(cn.length<=Yn.preserveConfiguredFpsDeviceCount){qt!==x&&(Os(x),Xa.current=Date.now(),gn.current=0);return}if(Ol!=="open"||js.sampleMs<500)return;const N=Date.now(),L=cn.length*qt,H=js.framesPerSecond,O=js.bytesPerSecond,pe=Math.max(0,...cn.map(Dt=>Ht[ds("wall",Dt)]?.maxIntervalMs||0)),ve=Math.max(0,...cn.map(Dt=>Ft[ds("wall",Dt)]?.maxIntervalMs||0)),Ee=L>8&&H>0&&H<L*.72;if(H>Yn.maxWallFramesPerSecond||O>Yn.maxWallBytesPerSecond||pe>Yn.maxFrameGapMs||ve>Yn.maxFrameGapMs||Ee){gn.current=0;const Dt=Yn.minFps;if(N-Xa.current>=Yn.downshiftCooldownMs&&qt>Dt){const xn=Math.max(Dt,MM(qt,Dt));xn<qt&&(Os(xn),Xa.current=N)}return}const Ye=H<Yn.maxWallFramesPerSecond*Yn.lowLoadFrameRatio&&O<Yn.maxWallBytesPerSecond*Yn.lowLoadByteRatio;if(!Ye||qt>=x){Ye||(gn.current=0);return}if(!gn.current){gn.current=N;return}if(N-gn.current>=Yn.recoveryCooldownMs){const Dt=Math.min(x,NM(qt,x));Dt>qt&&(Os(Dt),Xa.current=N,gn.current=0)}},[qt,nt,Ft,Ht,cn.length,cn,Ol,js.bytesPerSecond,js.framesPerSecond,js.lastUpdatedAt,js.sampleMs,Me.adaptiveLoadShedding,Me.autoStartLive,Me.frameMode,Me.fps]),f.useEffect(()=>{const x=new URLSearchParams(window.location.search).get("checkout");if(x==="success"){me("Checkout returned. Waiting for Dodo confirmation."),q();const N=window.setInterval(()=>{q()},4e3),L=window.setTimeout(()=>{window.clearInterval(N)},45e3);return()=>{window.clearInterval(N),window.clearTimeout(L)}}x==="cancelled"&&me("Checkout cancelled.")},[q]),f.useEffect(()=>{!Vt&&de&&Ne(!1),!Vt&&Ie&&re(!1)},[Ie,de,Vt]),f.useEffect(()=>{const x=Te?.deviceId||"",N=Ke.current;if(Ke.current=x,!N||N===x)return;const L=++Qe.current,H=x?`audio-${Date.now()}-${Math.random().toString(36).slice(2,8)}`:"";x&&Ie&&De.current.set(x,H);let O=!0;return(async()=>{try{const ve=De.current.get(N);if(De.current.delete(N),await Be(`/api/remote/devices/${encodeURIComponent(N)}/audio/stop`,{method:"POST",body:JSON.stringify(ve?{streamId:ve}:{})},k),!O||L!==Qe.current||!Ie||!x||!Vt||!El)return;const Ee=await Be(`/api/remote/devices/${encodeURIComponent(x)}/audio/start`,{method:"POST",body:JSON.stringify({streamId:H,mimeType:"audio/pcm;format=f32le",sampleRate:48e3,channels:2})},k);if(Ee.ok===!1)throw new Error(Ee.error||"Remote audio start failed.")}catch(ve){O&&(De.current.delete(x),re(!1),me(ve instanceof Error?ve.message:String(ve)))}})(),()=>{O=!1}},[Ie,Vt,k,El,Te?.deviceId]),f.useEffect(()=>{const x=Xe.map(H=>H.deviceId),N=new Set(x),L=new Map(Xe.map(H=>[H.deviceId,H]));_(H=>{const O=H.filter(pe=>N.has(pe));return Vm(H,O)?H:O}),G(H=>H&&N.has(H)?H:""),Y(H=>H&&N.has(H)?H:""),Ta(H=>{let O=!1;const pe={};for(const[ve,Ee]of Object.entries(H)){const $e=L.get(ve);if(!$e){pe[ve]=Ee;continue}const Ye=ta(Ee,$e?Vn($e):1);pe[ve]=Ye,Ye!==Ee&&(O=!0)}return O?pe:H}),Ni(H=>{const O=H.filter(pe=>N.has(pe));return Vm(H,O)?H:O})},[Xe,Tl]),f.useEffect(()=>{Sl([]),Qa(!1)},[Ia]),f.useEffect(()=>{!$s||Cl!=="selected"||Hs.length>0||la.length===0||Ni(la.map(x=>x.deviceId))},[la,Hs.length,Cl,$s]),f.useEffect(()=>{try{localStorage.setItem(pw,mt)}catch{}},[mt]),f.useEffect(()=>{SM(Me)},[Me]),f.useEffect(()=>{jM(Je)},[Je]),f.useEffect(()=>{wM(At)},[At]);const Ii=f.useCallback(async()=>{const x=new Set(v);x.add(bn);try{const pe=await Be("/api/remote/status",void 0,bn);Yv({endpoint:pe.agentEndpoint,endpoint_candidates:[...pe.agentEndpointCandidates||[],...pe.hostTargetEndpointCandidates||[]]}).forEach(ve=>x.add(ve))}catch{}const N=[...x].sort((pe,ve)=>{const Ee=$e=>{const Ye=kc($e);return Ye==="local"?0:Ye==="loopback"?1:2};return Ee(pe)-Ee(ve)||pe.localeCompare(ve)});let L=!1,H="",O=!1;try{for(const pe of N){const ve=kc(pe);try{if(await Be("/api/health",void 0,pe),ve==="local")return w(!0),to(!0),pe;ve==="loopback"&&(L=!0,H=pe)}catch{ve==="local"&&(O=!0)}}return L?(O&&me("LiveDesk Hub is reachable on this PC, but not through the LAN address yet. Restart LiveDesk Hub to bind 5179 on the network."),w(!0),to(!0),H||bn):(w(!1),to(!1),"")}catch{return w(!1),to(!1),""}},[v]),Hn=async()=>{ge("auth"),In(!1),await Ii();const{error:x}=await fs.auth.signInWithOAuth({provider:"google",options:{redirectTo:window.location.origin}});x&&(me(x.message),ge(""))},Tr=async()=>{ge("auth"),In(!1),await fs.auth.signOut(),ge("")};f.useEffect(()=>{if(!Na)return;const x=L=>{L.target instanceof Element&&(L.target.closest(".account-popover, .rail-account")||In(!1))},N=L=>{L.key==="Escape"&&In(!1)};return window.addEventListener("pointerdown",x),window.addEventListener("keydown",N),()=>{window.removeEventListener("pointerdown",x),window.removeEventListener("keydown",N)}},[Na]);const un=f.useCallback(async(x={})=>{const N=x.silent===!0,L=x.takeover===!0,H=x.requestLocalAccess===!0,O=H?await Ii():"";if(!a?.user){N||me("Sign in before publishing this host.");return}if(!Ti.current){Ti.current=!0,N||ge("host");try{const pe=O||k||bn,ve=C||await Be("/api/remote/status",void 0,pe);if(!ve.started)throw new Error("Start LiveDesk on this computer before syncing the server.");const Ee=ve.deviceId||`livedesk-${a.user.id}`,$e=await Be("/api/remote/host-target",{method:"POST",body:JSON.stringify({nodeId:Ee,leaseMs:6e4,takeover:L})},pe);if(!$e.ok)throw new Error($e.error||"host-target-failed");const Ye=await Be("/api/remote/status",void 0,pe),Dt=await Be("/api/remote/registry-credentials",void 0,pe),xn=$e.hostTarget||{},Dn=Ye.hostTargetEndpointCandidates||Ye.agentEndpointCandidates||ve.agentEndpointCandidates||[Ye.agentEndpoint||ve.agentEndpoint].filter(Boolean),{data:ra,error:Es}=await fs.rpc("set_livedesk_remote_host_target",{p_node_id:Ee,p_lease_id:String(xn.leaseId||Ye.hostTargetLeaseId||crypto.randomUUID()),p_host_instance_id:Ye.hostInstanceId||Ee,p_endpoint:Ye.hostTargetEndpoint||Ye.agentEndpoint||ve.agentEndpoint,p_pair_token:Dt.pairToken||"",p_manager_package:"@livedesk/hub",p_manager_version:Ye.managerVersion||"0.1.0",p_agent_package:"@livedesk/client",p_activated_at:new Date().toISOString(),p_expires_at:new Date(Date.now()+6e4).toISOString(),p_takeover:L,p_endpoint_candidates:Dn,p_pairing_pin:Dt.pairingPin||Ye.pairingPin||""});if(Es)throw Es;const Jl=Array.isArray(ra)?ra[0]:ra;if(Jl&&Jl.ok===!1)throw new Error(Jl.reason||"registry-rejected");N||(me("Host published."),(H||y)&&(w(!0),to(!0)),T()),d()}catch(pe){if(!N){const ve=pe instanceof Error?pe.message:String(pe);ve.includes("local network access")&&(w(!1),to(!1)),me(ve)}}finally{Ti.current=!1,N||ge("")}}},[k,y,T,d,Ii,a,C]),Pl=f.useCallback(async()=>{if(!(!C?.update?.canApply||ne==="update")){ge("update");try{const x=await Be("/api/update/apply",{method:"POST",body:JSON.stringify({})},k||bn);if(!x.ok)throw new Error(x.error||"LiveDesk update could not be started.");const N=[...new Set((x.targets||[]).map(L=>String(L.deviceId||"").trim()).filter(Boolean))];N.length>0&&Kn({operationId:String(x.operationId||`wall-update-${Date.now()}`),targetIds:N,stage:x.state==="clients-updated"?"updated":"updating",requiresHubRestart:!!(x.managerUpdateAvailable||x.clientPackageUpdateAvailable),initialHostInstanceId:String(C.hostInstanceId||"")}),me(x.state==="hub-restart-requested"?Pm:qx),T()}catch(x){me(x instanceof Error?x.message:String(x))}finally{ge("")}}},[ne,k,T,C]);f.useEffect(()=>{const x=Pt,N=C?.update;if(!x||x.stage==="updated"||!N)return;if(N.state==="failed"){Kn(O=>O?.operationId===x.operationId?null:O);return}if(N.operationId===x.operationId){!x.requiresHubRestart&&N.state==="clients-updated"&&Kn(O=>O?.operationId===x.operationId?{...O,stage:"updated"}:O);return}if(!x.requiresHubRestart)return;const L=C.started===!0&&(!x.initialHostInstanceId||C.hostInstanceId&&C.hostInstanceId!==x.initialHostInstanceId),H=N.state==="idle"&&N.updateAvailable===!1;L&&H&&Kn(O=>O?.operationId===x.operationId?{...O,stage:"updated"}:O)},[C,Pt]),f.useEffect(()=>{if(!Pt||Pt.stage!=="updated")return;const x=Pt.operationId,N=window.setTimeout(()=>{Kn(L=>L?.operationId===x?null:L)},8e3);return()=>window.clearTimeout(N)},[Pt]),f.useEffect(()=>{if(Re!==qx&&Re!==Pm)return;const x=C?.update,N=String(x?.state||"");if(N==="failed"){me(x?.error||"LiveDesk update failed.");return}(N==="clients-updated"||N==="idle"&&x?.updateAvailable===!1||!C&&A&&Re===Pm)&&me("")},[A,Re,C,C?.update?.error,C?.update?.state,C?.update?.updateAvailable]);const ko=f.useCallback(async()=>{if(!ne){ge("pin");try{const N=await Be("/api/remote/pairing-pin",{method:"POST"},k||bn);if(!N.ok)throw new Error(N.error||"pin-rotation-failed");await T(),a?.user&&await un({silent:!0,takeover:!0}),me("New PIN published.")}catch(x){me(x instanceof Error?x.message:String(x))}finally{ge("")}}},[ne,k,un,T,a]);f.useEffect(()=>{if(!a?.user||!C?.started||A)return;const x=r?.expires_at?Date.parse(r.expires_at):Number.POSITIVE_INFINITY,N=r?.active===!0&&(!r.expires_at||!Number.isFinite(x)||x>Date.now()),L=!!r?.host_instance_id&&!!C.hostInstanceId&&r.host_instance_id===C.hostInstanceId;if(N&&!L)return;let H=!1;const O=()=>{if(H)return;const ve=Date.now();ve-fo.current<25e3||(fo.current=ve,un({silent:!0}))};O();const pe=window.setInterval(O,3e4);return()=>{H=!0,window.clearInterval(pe)}},[A,un,a?.user?.id,C?.agentEndpoint,C?.hostInstanceId,C?.started,r?.active,r?.expires_at,r?.host_instance_id]);const Xs=f.useCallback(x=>{x&&(G(x),_(N=>N.includes(x)?N:[...N,x]))},[]),Bi=f.useCallback(x=>{if(!x)return;const N=Ja.has(x);G(L=>N&&L===x?"":x),_(L=>N?L.filter(H=>H!==x):L.includes(x)?L:[...L,x])},[Ja]),Zs=f.useCallback(()=>{_([]),G("")},[Cs]),As=f.useCallback(()=>{_(Xe.map(x=>x.deviceId)),G("")},[Xe]),Rr=f.useCallback((x,N)=>{const L=Xe.find(O=>O.deviceId===x);if(!L)return;const H=Vn(L);H<=1||(Ta(O=>{const ve=(ta(O[x],H)+N+H)%H;return{...O,[x]:ve}}),Ve&&(pn(!1),Y(x)))},[Xe,Ve]);f.useEffect(()=>{const x=N=>{if(Ve&&de&&es)return;const L=N.target,H=L?.tagName?.toLowerCase();L?.isContentEditable||H==="input"||H==="textarea"||H==="select"||((N.ctrlKey||N.metaKey)&&N.key.toLowerCase()==="a"&&(N.preventDefault(),As()),N.key==="Escape"&&Zs())};return window.addEventListener("keydown",x),()=>window.removeEventListener("keydown",x)},[es,Zs,de,As,Ve]);const Fi=async(x,N={})=>{if(!qs.has(x)){me(Dl);return}const L=N.focused||Ve;L?(pn(!1),Y(x)):Xs(x);try{const H=Xe.find(ve=>ve.deviceId===x),O=L?{maxWidth:Je.maxWidth,maxHeight:Je.maxHeight}:Yt,pe=ta(N.monitorIndex??At[x],H?Vn(H):1);await Be(`/api/remote/devices/${encodeURIComponent(x)}/live/start`,{method:"POST",body:JSON.stringify({fps:L?Je.fps:qt,maxWidth:O.maxWidth,maxHeight:O.maxHeight,quality:L?Je.quality:Me.quality,mode:L?Je.frameMode:Me.frameMode,frameMode:L?Je.frameMode:Me.frameMode,streamPurpose:L?"control":"wall",monitorIndex:pe})},k),T()}catch(H){me(H instanceof Error?H.message:String(H))}},ql=(x,N)=>{const L=Xe.find(O=>O.deviceId===x),H=ta(N,L?Vn(L):1);Ta(O=>({...O,[x]:H})),Ve?(pn(!1),Y(x)):Xs(x)},Ao=async x=>{if(pn(!1),Y(x),_e("control"),!qs.has(x)){Ne(!1),me(Dl);return}Ne(!0)},Zn=async()=>{if(!Te){me("Select a workstation before playing audio.");return}if(!Vt){me(Dl);return}if(!El){me("Selected workstation does not report remote audio support yet.");return}const x=!Ie,N=x?`audio-${Date.now()}-${Math.random().toString(36).slice(2,8)}`:De.current.get(Te.deviceId);x&&N?De.current.set(Te.deviceId,N):x||De.current.delete(Te.deviceId),re(x);try{await Be(`/api/remote/devices/${encodeURIComponent(Te.deviceId)}/audio/${x?"start":"stop"}`,{method:"POST",body:JSON.stringify({...N?{streamId:N}:{},mimeType:"audio/pcm;format=f32le",sampleRate:48e3,channels:2})},k)}catch(L){x&&De.current.delete(Te.deviceId),re(!1),me(L instanceof Error?L.message:String(L))}},Er=async(x,N,L="files")=>{const H=x.filter(Ee=>Ee.file.size>=0);if(H.length===0)return{files:0,bytes:0};if(!Vt)throw new Error(Dl);if(N.length===0)throw new Error("Select at least one connected workstation.");const O=crypto.randomUUID(),pe=H.reduce((Ee,$e)=>Ee+$e.file.size,0);let ve=0;_a({id:O,status:"reading",progress:1,message:`Preparing ${H.length} ${L}`});try{for(let Ee=0;Ee<H.length;Ee+=1){const $e=H[Ee],Ye=$e.file,Dt=Math.max(1,Math.ceil(Ye.size/Hm));for(let xn=0;xn<Dt;xn+=1){const Dn=xn*Hm,ra=Math.min(Ye.size,Dn+Hm),Es=Ye.size===0?new ArrayBuffer(0):await Ye.slice(Dn,ra).arrayBuffer(),Jl=xn===Dt-1;_a({id:O,status:"sending",progress:Math.max(2,Math.min(98,Math.round(ve/Math.max(1,pe)*96))),message:`${Ee+1}/${H.length} ${$e.relativePath}`});const os=await Be("/api/remote/files/chunk",{method:"POST",body:JSON.stringify({transferId:O,deviceIds:N,remoteDirectory:mt.trim(),name:Ye.name,relativePath:$e.relativePath,size:Ye.size,type:Ye.type,lastModified:Ye.lastModified,offset:Dn,totalBytes:Ye.size,final:Jl,dataBase64:TM(Es)})},k);if(!os.ok||os.queued!==N.length)throw new Error(os.error||`file-chunk-not-queued-${os.queued}/${N.length}`);ve+=Es.byteLength,await new Promise(Br=>window.setTimeout(Br,0))}}return _a({id:O,status:"queued",progress:100,message:`Sent ${H.length} file${H.length===1?"":"s"} to ${N.length} workstation${N.length===1?"":"s"}`}),window.setTimeout(()=>{_a(Ee=>Ee?.id===O&&Ee.status==="queued"?null:Ee)},4500),{files:H.length,bytes:pe}}catch(Ee){throw _a({id:O,status:"failed",progress:100,message:Ee instanceof Error?Ee.message:String(Ee)}),Ee}},Fa=async x=>{const N=la.length>0?la.map(L=>L.deviceId):Te?[Te.deviceId]:[];try{await Er(ty(x),N)}catch(L){me(L instanceof Error?L.message:String(L))}},Mo=async x=>{try{await Er(ty(x),qd)}catch(N){me(N instanceof Error?N.message:String(N))}};f.useEffect(()=>{Hc.current=!1},[]);const Dr=x=>{x.preventDefault(),x.stopPropagation(),gr(!1),Fa(x.dataTransfer.files)},Ha=async(x="ltd")=>{if(!a){me("Sign in with Google before checkout.");return}if(E&&x===Rt){me("LiveDesk license is already active.");return}if(E&&Rt==="pro"){me("LiveDesk Pro is already active.");return}ge("checkout");try{const{data:N,error:L}=await fs.functions.invoke("dodo-checkout",{body:{plan:x}});if(L)throw L;if(!N?.checkout_url)throw new Error("Checkout function did not return a checkout URL.");window.location.assign(N.checkout_url)}catch(N){me(N instanceof Error?N.message:String(N)),ge("")}},$a=dM(),Hi=fM(),No=Xe.length,Lr=Ei.filter(x=>ts.has(x)).length,$n=zi==="open"&&Ws.sampleMs>0?`${Ws.framesPerSecond.toFixed(1)} fps`:zi,ke=Te?Ve?Ar.get(Te.deviceId):ts.get(Te.deviceId):void 0,as=Te?ta(At[Te.deviceId],Vn(Te)):0,$i=Te?gM(Te):[],Ui=typeof ke?.monitorIndex=="number"?ta(ke.monitorIndex,Math.max(1,ke.monitorCount||1)):as,Un=(ke&&Ui===as?Mw(ke):null)||(Te?Aw(Te,as):null),Ms=Un?`${Un.width}x${Un.height}`:"-",Jn=Te?ds(Ve?"control":"wall",Te.deviceId):"",St=Jn?Ht[Jn]:void 0,zt=Jn?Ft[Jn]:void 0,lt=zt?.lastInfo,To=St&&St.sampleMs>0?`${St.framesPerSecond.toFixed(1)} fps`:"waiting",Ro=St?`#${St.totalFrames} / ${To}`:"waiting",Jc=zt&&zt.sampleMs>0?`${zt.framesPerSecond.toFixed(1)} fps`:"waiting",dn=zt&&zt.sampleMs>0?`${zt.changedFramesPerSecond.toFixed(1)} fps`:"waiting",Nt=lt?`#${lt.frameSeq} ${lt.decoderLabel} q${lt.queueSize} r${lt.renderQueueSize} d${lt.droppedForLatency} f${lt.decoderFlushCount} t${lt.decoderTimestampFallbacks} io${lt.decoderInputCount}/${lt.decoderOutputCount} ${lt.visualChanged?"changed":"same"}`:"waiting",it=lt?`${Math.round(lt.queuedForMs)}ms total / ${Math.round(lt.decodedForMs)}ms decode / ${Math.round(lt.scheduledForMs)}ms pace / ${lt.drawMs.toFixed(1)}ms draw`:"-",Ns=lt?.targetPaintIntervalMs?`${lt.targetPaintIntervalMs.toFixed(1)}ms / ${(1e3/lt.targetPaintIntervalMs).toFixed(1)} fps`:"-",ia=zt?`${zt.decoderInputFps.toFixed(1)} in / ${zt.decoderOutputFps.toFixed(1)} out fps`:"waiting",Eo=lt?.canvasPresentation||"-",Ts=lt?`${lt.interactiveBufferWaitCount} waits / ${Math.round(lt.interactiveBufferWaitMs)}ms / ${lt.interactiveQueueDrainCount} drains`:"waiting",eu=n.framesPerSecond>0?`${n.framesPerSecond.toFixed(1)} fps / p95 ${n.p95IntervalMs.toFixed(1)}ms / max ${n.maxIntervalMs.toFixed(1)}ms / long ${n.longTaskCount} (${Math.round(n.longTaskMs)}ms)`:"waiting",tu=St?ke?.frameMode==="mode5-lzo-delta"?`${xc(St.averageFrameBytes)} avg / visual ${ke.deltaVisualTileCount||0} + refresh ${ke.deltaRefreshTileCount||0} / ${ke.deltaTotalTiles||0}`:`${xc(St.averageFrameBytes)} avg / tiny ${Math.round(St.tinyFrameRatio*100)}% / repeat ${Math.round(St.repeatedFrameRatio*100)}%`:"waiting",Gl=St&&St.sourceSendSampleCount>0?`${St.sourceSendAverageMs.toFixed(1)}ms avg / p95 ${St.sourceSendP95Ms.toFixed(1)}ms`:"waiting",Js=Yx(St),Do=Yx(zt),Pi=St&&zt?`rx ${Wx(St)} / paint ${Wx(zt)}`:"waiting",qi=ke?ke.frameMode||ke.mode||ke.codec||ke.mimeType:Ve?Je.frameMode:Me.frameMode,ss=Ve?Je.frameMode:Me.frameMode,ls=qi!==ss?`${ss} -> ${qi}`:ss,Rs=ke?`${ke.width}x${ke.height} ${xc(ke.byteLength)}`:Ve?`${Fn.maxWidth}x${Fn.maxHeight}`:`${Me.maxWidth}x${Me.maxHeight}`,is=ke?ke.frameMode==="mode2-lzo"?"independent":`${ke.isKeyFrame?"key":String(ke.chunkType||"delta")}`:"-",Lo=ke&&ke.monitorCount?`${(ke.monitorIndex??0)+1}/${ke.monitorCount}`:"-",_o=ke?[`src ${Math.round(ke.sourceGapMs||0)}ms`,`gap ${Math.round(ke.agentSendGapMs||0)}ms`,`tx ${Math.round(ke.agentSendDurationMs||0)}ms`,`pace ${Math.round(ke.agentPaceMs||0)}ms`,`queue ${Math.round(ke.agentQueueBeforePaceMs||0)}ms`,`age ${Math.round(ke.agentFrameAgeMs||0)}ms`,ke.browserReceivedEpochMs&&ke.receivedAt?`hub ${Math.max(0,Math.round(ke.browserReceivedEpochMs-Date.parse(ke.receivedAt)))}ms`:"",ke.browserReceivedEpochMs&&ke.hubPacketEpochMs?`sock ${Math.max(0,Math.round(ke.browserReceivedEpochMs-ke.hubPacketEpochMs))}ms`:"",ke.droppedByAgent?`drop ${ke.droppedByAgent}`:"",ke.hubIngressDropped?`ingress-drop ${ke.hubIngressDropped}`:"",ke.hubClientDropped?`ws-drop ${ke.hubClientDropped}`:"",ke.captureStageMs?`capture ${Math.round(ke.captureStageMs)}ms`:"",ke.requestedFps?`req ${Math.round(ke.requestedFps)}fps`:"",ke.effectiveFps?`eff ${Math.round(ke.effectiveFps)}fps`:"",ke.captureAverageMs?`avg ${Math.round(ke.captureAverageMs)}ms`:"",ke.captureP95Ms?`p95 ${Math.round(ke.captureP95Ms)}ms`:"",ke.slowFrameCount?`slow ${Math.round(ke.slowFrameCount)}`:"",ke.captureHelperRestarts?`helper ${Math.round(ke.captureHelperRestarts)}`:"",ke.convertMs?`rgb565 ${Math.round(ke.convertMs)}ms`:"",ke.compressMs?`lzo ${Math.round(ke.compressMs)}ms`:"",ke.captureSourceSerial?`cap #${ke.captureSourceSerial}`:"",ke.captureSourceSkipped?`cap skip ${ke.captureSourceSkipped}`:"",ke.frameMode==="mode5-lzo-delta"?`tiles ${ke.deltaVisualTileCount||0}+${ke.deltaRefreshTileCount||0}/${ke.deltaTotalTiles||0}@${ke.deltaTileSize||0}`:"",ke.platformProfile||ke.hardwareEncoder||"-",ke.atlasComposeMs?`atlas ${ke.atlasComposeMs.toFixed(1)}ms`:"",ke.atlasPoolStarved?`pool ${ke.atlasPoolStarved}`:"",ke.atlasTileCount?`tiles ${ke.atlasReadyTiles||0}/${ke.atlasTileCount}`:"",lt?.inputFeedbackMs!==void 0&<.inputFeedbackAt!==void 0&&performance.now()-lt.inputFeedbackAt<=Ux?`feedback ${Math.round(lt.inputFeedbackMs)}ms`:"",ke.contentHash?`enc ${ke.contentHash.slice(0,6)}`:"",lt?.visualHash?`pix ${lt.visualHash.slice(0,6)}`:""].filter(Boolean).join(" / "):"-",Vl=Ba==="open"?[`${ya.sentPerSecond.toFixed(1)} hz`,ya.lastInputSeq>0?`rtt ${Math.round(ya.lastRoundTripMs)}ms`:"",ya.lastInputSeq>0?`apply ${ya.lastAgentApplyMs.toFixed(1)}ms`:"",ya.droppedPerSecond>0?`drop ${ya.droppedPerSecond.toFixed(1)}/s`:"",ya.bufferedAmount>0?`buf ${xc(ya.bufferedAmount)}`:"",ya.lastInputType||"ready"].filter(Boolean).join(" / "):Ba,_r=lt?.inputFeedbackMs!==void 0&<.inputFeedbackAt!==void 0&&performance.now()-lt.inputFeedbackAt<=Ux?`${Math.round(lt.inputFeedbackMs)}ms / input #${lt.inputFeedbackSeq||0}`:"waiting for changed frame",el=Ie?[Co,`context ${En.audioContextState}`,`queue ${Math.round(En.queuedMs)}ms`,`last ${Math.round(En.lastPacketAgeMs)}ms`,`accepted ${Math.round(En.lastAcceptedAgeMs)}ms`,`process ${Math.round(En.localProcessingAgeMs)}ms`,`remote ${Math.round(En.browserAgeMs)}/${Math.round(En.captureAgeMs)}ms`,`heartbeat ${Math.round(En.captureStatusAgeMs)}ms`,`capture ${En.captureAlive&&En.helperAlive?"alive":"down"}`,`drop ${En.drops}`,`resync ${En.resyncs}`,`restart ${En.automaticRestarts}`,En.pendingDecodes>0?`decode ${En.pendingDecodes}`:"",Zc?`#${Zc.frameSeq}`:"waiting"].filter(Boolean).join(" / "):"off",fn=ke?`#${ke.frameSeq} ${lh(ke.receivedAt||ke.capturedAt)}`:"waiting",rs=Math.max(0,Ws.bytesPerSecond*8/1e6),zo=Il?.atlasReadyTiles??Lr,Oo=Il?.atlasTileCount??Lr,Kd=zo===Oo?`${Oo} tiles`:`${zo}/${Oo} tiles`,Qd=Ve?`1 stream / ${$n} / ${rs.toFixed(rs>=10?0:1)}Mbps`:nt?`1 stream / ${Kd} / ${$n} / ${rs.toFixed(rs>=10?0:1)}Mbps`:`${Lr} screens / ${$n} / ${rs.toFixed(rs>=10?0:1)}Mbps`,Ot=A?"offline":C?.started?"online":"starting",Yl=la.length,Gi=Ve?Te?lr(Te):"No workstation":Yl===0?"No workstation":Yl>1?`${Yl} selected`:Te?lr(Te):"No workstation",Wt=io[hn]||io.en,Wl=Wt.sync||io.en.sync,tl=i||$?"checking":E?Rt==="pro"?"Pro LTD active":`Plus LTD ${Xe.length}/${vc}`:Yd?`Free ${Xe.length}/${gc}`:`Upgrade ${Xe.length}/${gc}`,Kl=Rt==="pro"?"Pro active":ne==="checkout"?"Opening":Rt==="ltd"?"Pro $199":"Plus $79",nu=E?Rt==="pro"?"Pro active":"Upgrade to Pro LTD":a?ne==="checkout"?"Opening checkout":Rt==="ltd"?"Buy Pro LTD":"Buy Plus LTD":ne==="auth"?"Opening Google":"Sign in to buy",Xd=Rt==="pro"||ne==="checkout"||ne==="auth"||i||$,Io=a?.user.user_metadata,Ua=ny(Io,"avatar_url","picture"),nl=ny(Io,"full_name","name")||a?.user.email||"Google",Vi=nl.slice(0,1).toUpperCase(),au=C?.started?"Local app ready":"Start LiveDesk",Ql=r?.active?"Published":a?"Not published":"Sign in required",Bo=/^\d{6}$/.test(C?.pairingPin||"")?C?.pairingPin:"------",zr=wd.find(x=>x.width===Me.maxWidth&&x.height===Me.maxHeight)?.id||`${Me.maxWidth}x${Me.maxHeight}`,Or=Me.atlasTileSizeMode==="auto"?"auto":Gm.find(x=>x.width===Me.atlasTileWidth&&x.height===Me.atlasTileHeight)?.id||"320x180",su=qm.find(x=>x.width===Je.maxWidth&&x.height===Je.maxHeight)?.id||`${Je.maxWidth}x${Je.maxHeight}`,lu=yd.find(x=>x.id===Me.frameMode)||yd[0],nn=x=>{ji(N=>{const L=x.frameMode?gh(x.frameMode):N.frameMode,H=x.frameMode!==void 0&&L!==N.frameMode;return{...N,...x,frameMode:L,fps:xh(x.fps??(H?Cw(L):N.fps),L)}})},al=x=>{const N=wd.find(L=>L.id===x);N&&nn({maxWidth:N.width,maxHeight:N.height})},iu=x=>{if(x==="auto"){nn({atlasTileSizeMode:"auto"});return}const N=Gm.find(L=>L.id===x);!N?.width||!N?.height||nn({atlasTileSizeMode:"fixed",atlasTileWidth:N.width,atlasTileHeight:N.height})},sl=x=>{x.frameMode!==void 0&&(Q(""),ye("")),fr(N=>{const L=x.frameMode?vh(x.frameMode):N.frameMode,H=x.frameMode!==void 0&&L!==N.frameMode,O=x.fps??(H?30:N.fps),pe=x.maxWidth??N.maxWidth,ve=x.maxHeight??N.maxHeight;return{...N,...x,frameMode:L,fps:Va(O,20,L==="mode3-h264-hw"?60:30,L==="mode3-h264-hw"?60:30),maxWidth:L==="mode3-h264-hw"?pe:Math.min(1920,pe),maxHeight:L==="mode3-h264-hw"?ve:Math.min(1080,ve)}})},Xl=x=>{const N=qm.find(L=>L.id===x);N&&sl({maxWidth:N.width,maxHeight:N.height})},ll=x=>{if(x==="control"){const N=Rn||Rl;if(N&&(pn(!1),Y(N.deviceId)),_e(x),!Vt){Ne(!1),me(Dl);return}Ne(!0);return}x==="wall"&&hr(N=>N+1),_e(x),Ne(!1)},Ir=ne==="update"||["dispatching","waiting-for-clients","hub-restart-requested"].includes(C?.update?.state||""),Zl=f.useCallback(x=>{if(Pt?.targetIds.includes(x))return Pt.stage},[Pt]);return l.jsxs("main",{className:"app-shell",children:[l.jsxs("aside",{className:"tool-rail","aria-label":"LiveDesk tools",children:[l.jsx("div",{className:"rail-brand",title:"LiveDesk",children:l.jsx(_M,{size:25})}),l.jsx("nav",{className:"rail-tools",children:OM.map(x=>{const N=x.icon;return l.jsxs(f.Fragment,{children:[l.jsxs("button",{className:`rail-tool ${x.id==="sync-server"?"sync-server":""} ${He===x.id?"active":""} accent-${x.accent}`,onClick:()=>x.id==="sync-server"?void un({takeover:!0,requestLocalAccess:!0}):ll(x.id),title:x.label,type:"button",children:[l.jsx(N,{size:19}),l.jsx("span",{children:x.label})]}),x.id==="sync-server"&&C?.update?.updateAvailable&&C.update.canApply&&!Ir?l.jsxs("button",{className:"rail-update-button",onClick:()=>{Pl()},title:`Update LiveDesk to ${C.update.latestVersion||"latest"}`,type:"button",children:[l.jsx(uy,{size:16}),l.jsx("span",{children:"Update"})]}):null]},x.id)})}),l.jsxs("div",{className:"rail-footer",children:[IM.map(x=>{const N=x.icon;return l.jsxs("button",{className:`rail-tool compact ${He===x.id?"active":""} accent-${x.accent}`,onClick:()=>ll(x.id),title:x.label,type:"button",children:[l.jsx(N,{size:18}),l.jsx("span",{children:x.label})]},x.id)}),l.jsxs("button",{className:`rail-tool compact local-settings ${Al?"active":""}`,onClick:()=>{_e("settings"),In(!1),Ne(!1),Ci(!1)},title:"Settings",type:"button",children:[l.jsx(cS,{size:18}),l.jsx("span",{children:"Settings"})]}),l.jsxs("button",{className:`rail-account ${a?"signed-in":""}`,onClick:()=>{In(x=>!x)},disabled:i||ne==="auth","aria-expanded":Na,title:a?`Account: ${a.user.email||nl}`:"Sign in with Google",type:"button",children:[a?Ua?l.jsx("img",{src:Ua,alt:nl,referrerPolicy:"no-referrer"}):l.jsx("span",{className:"avatar-fallback",children:Vi}):l.jsx(ym,{size:18}),l.jsx("span",{children:a?"Account":"Google"})]}),Na&&l.jsxs("section",{className:"account-popover",role:"dialog","aria-label":"LiveDesk account",children:[l.jsxs("div",{className:"account-popover-head",children:[l.jsx("div",{className:"account-popover-avatar",children:a&&Ua?l.jsx("img",{src:Ua,alt:nl,referrerPolicy:"no-referrer"}):a?l.jsx("span",{children:Vi}):l.jsx(ym,{size:18})}),l.jsxs("div",{children:[l.jsx("strong",{children:a?nl:"Account"}),l.jsx("p",{children:a?.user.email||"Not signed in"})]})]}),l.jsxs("dl",{className:"account-popover-facts",children:[l.jsx("dt",{children:"User"}),l.jsx("dd",{children:a?.user.email||"Not signed in"}),l.jsx("dt",{children:"Network"}),l.jsx("dd",{children:au}),l.jsx("dt",{children:"Access"}),l.jsx("dd",{children:Ql}),l.jsx("dt",{children:"Plan"}),l.jsx("dd",{children:tl}),l.jsx("dt",{children:"Ads"}),l.jsx("dd",{children:Rt==="free"?"Standard banner":"Removed"})]}),a?l.jsxs("button",{className:"account-popover-action",onClick:Tr,disabled:ne==="auth",type:"button",children:[l.jsx(uS,{size:16}),"Logout"]}):l.jsxs("button",{className:"account-popover-action primary",onClick:Hn,disabled:ne==="auth",type:"button",children:[l.jsx(ym,{size:16}),"Sign in with Google"]})]})]})]}),l.jsxs("section",{className:`desk-stage ${mo&&!Wn?"dock-open":""} ${Ve?"control-stage":""}`,children:[l.jsxs("header",{className:"topbar",children:[l.jsxs("div",{className:"brand",children:[l.jsx("span",{className:"brand-mark",children:l.jsx(Zt,{size:18})}),l.jsxs("div",{children:[l.jsx("h1",{children:"LiveDesk"}),l.jsx("p",{children:"Control wall for local machines"})]})]}),$s&&!Ve&&l.jsxs("div",{className:"file-share-top-route","aria-label":"File distribution route",children:[l.jsxs("div",{children:[l.jsx(mc,{size:17}),l.jsxs("span",{children:[l.jsx("small",{children:"Source"}),l.jsx("strong",{children:"LiveDesk Hub"})]})]}),l.jsx(Sh,{size:15}),l.jsx(dS,{size:16}),l.jsxs("div",{children:[l.jsx("span",{className:"file-share-top-route-laptops",children:"▣ ▣ ▣"}),l.jsxs("span",{children:[l.jsx("small",{children:"Destination"}),l.jsxs("strong",{children:[Nl," workstation",Nl===1?"":"s"]}),l.jsx("em",{children:mt.trim()||"Desktop/LiveDeskFiles"})]})]})]}),mo&&!Ve&&l.jsxs("div",{className:"top-actions",children:[l.jsx(Bx,{controller:Vc,onError:me}),l.jsx("span",{className:"top-actions-divider","aria-hidden":"true"}),l.jsx("div",{className:"segmented-control","aria-label":"Screen size",children:zM.map(x=>l.jsx("button",{className:Ge===x.id?"active":"",onClick:()=>na(x.id),type:"button",children:x.label},x.id))})]}),Ve&&l.jsx("div",{className:"top-actions",children:l.jsx(Bx,{controller:Vc,onError:me})})]}),Za?l.jsxs("section",{className:"doc-page",lang:hn,dir:hn==="ar"?"rtl":"ltr",children:[l.jsxs("section",{className:"doc-hero",children:[l.jsxs("div",{className:"doc-hero-copy",children:[l.jsxs("span",{className:"pricing-eyebrow",children:[l.jsx(Jm,{size:16}),Wt.eyebrow]}),l.jsx("h2",{children:Wt.title}),l.jsx("p",{children:Wt.intro})]}),l.jsxs("label",{className:"doc-language-picker",children:[l.jsxs("span",{children:[l.jsx(fS,{size:17}),Wt.languageLabel]}),l.jsx("select",{value:hn,onChange:x=>kn(x.target.value),children:FM.map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]})]}),l.jsx("section",{className:"doc-grid",children:Wt.sections.map((x,N)=>{const H=[Ev,hc,yc,wn,wc][N]||Jm;return l.jsxs("article",{className:"doc-card",children:[l.jsx("div",{className:"doc-card-icon",children:l.jsx(H,{size:19})}),l.jsxs("div",{children:[l.jsx("h3",{children:x.title}),l.jsx("p",{children:x.body}),l.jsx("ul",{children:x.points.map(O=>l.jsx("li",{children:O},O))})]})]},x.title)})}),Wl&&l.jsxs("section",{className:"doc-sync",children:[l.jsxs("div",{className:"doc-sync-head",children:[l.jsx(yc,{size:20}),l.jsxs("div",{children:[l.jsx("h3",{children:Wl.title}),l.jsx("p",{children:Wl.body})]})]}),l.jsx("ul",{children:Wl.points.map(x=>l.jsx("li",{children:x},x))})]}),l.jsxs("section",{className:"doc-firewall",children:[l.jsxs("div",{className:"doc-firewall-head",children:[l.jsx(wn,{size:20}),l.jsxs("div",{children:[l.jsx("h3",{children:Wt.firewall.title}),l.jsx("p",{children:Wt.firewall.body})]})]}),l.jsx("ul",{children:Wt.firewall.points.map(x=>l.jsx("li",{children:x},x))})]}),l.jsxs("section",{className:"doc-command-panel",children:[l.jsxs("div",{className:"doc-command-head",children:[l.jsx(hc,{size:20}),l.jsxs("div",{children:[l.jsx("h3",{children:Wt.commands.title}),l.jsx("p",{children:Wt.commands.body})]})]}),l.jsxs("div",{className:"doc-command-list",children:[Wt.commands.manager&&l.jsxs("div",{className:"doc-command-row",children:[l.jsx("span",{children:Wt.commands.manager}),l.jsx("code",{children:Hi}),l.jsx("button",{className:"icon-button",onClick:()=>ar(Hi),title:"Copy command",type:"button",children:l.jsx(Xi,{size:16})})]}),l.jsxs("div",{className:"doc-command-row",children:[l.jsx("span",{children:Wt.commands.primary}),l.jsx("code",{children:$a}),l.jsx("button",{className:"icon-button",onClick:()=>ar($a),title:"Copy command",type:"button",children:l.jsx(Xi,{size:16})})]}),l.jsxs("div",{className:"doc-command-row",children:[l.jsx("span",{children:Wt.commands.slot}),l.jsx("code",{children:`${$a} 3`}),l.jsx("button",{className:"icon-button",onClick:()=>ar(`${$a} 3`),title:"Copy command",type:"button",children:l.jsx(Xi,{size:16})})]})]})]})]}):Ri?l.jsx(bA,{hubUrl:k,devices:j}):$s?l.jsx(jk,{hubUrl:k,devices:Xe,localFeatureAccess:Vt,upgradeNotice:Dl,remoteDirectory:mt,onRemoteDirectoryChange:An,targetMode:Cl,selectedTargetIds:Hs,onTargetModeChange:Fc,onTargetToggle:x=>Ni(N=>N.includes(x)?N.filter(L=>L!==x):[...N,x]),filePickerRef:jl,folderPickerRef:kl,onBrowserFileImport:x=>{Mo(x)},onBrowserFolderImport:x=>{Mo(x)},onNotice:me,onTransferChange:x=>{if(!x){_a(null);return}const N=x.state==="failed"||x.state==="partially-failed"||x.state==="cancelled"?"failed":x.state==="completed"?"queued":x.state==="sending"?"sending":"reading";_a({id:x.id,status:N,progress:x.progress,message:x.message}),["completed","partially-failed","failed","cancelled"].includes(x.state)&&window.setTimeout(()=>_a(L=>L?.id===x.id?null:L),4500)}}):Al?l.jsx($0,{hubUrl:k,runtimeRole:C?.runtimeRole||"hub",runtimeDeviceId:C?.deviceId||"",sessionAccessToken:a?.access_token||"",pin:l.jsxs(U0,{children:[l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card settings-pairing-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Pair a workstation"}),l.jsx("h3",{children:"Connect another local PC"})]}),l.jsx(Jt,{size:20})]}),l.jsxs("div",{className:"settings-pin-display",children:[l.jsx("span",{children:"Hub PIN"}),l.jsx("strong",{children:Bo}),l.jsxs("button",{className:"text-button ghost compact",onClick:ko,disabled:!C?.started||ne==="pin",type:"button",children:[l.jsx(Tc,{size:15}),ne==="pin"?"Creating":"New PIN"]})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Hub status"}),l.jsx("h3",{children:Ot})]}),l.jsx("span",{className:`settings-status-dot state-${Ot}`})]}),l.jsxs("dl",{className:"settings-facts",children:[l.jsx("dt",{children:"Address"}),l.jsx("dd",{children:k||"-"}),l.jsx("dt",{children:"Connected workstations"}),l.jsxs("dd",{children:[No,"/",Tl]}),l.jsx("dt",{children:"Sync access"}),l.jsx("dd",{children:C?.started?"Local app ready":"Start Hub first"}),l.jsx("dt",{children:"Plan"}),l.jsx("dd",{children:tl})]}),l.jsxs("div",{className:"settings-action-row",children:[l.jsxs("button",{className:"text-button primary",onClick:()=>un({takeover:!0,requestLocalAccess:!0}),disabled:!a||ne==="host",type:"button",children:[l.jsx(yc,{size:16}),"Sync access"]}),l.jsxs("button",{className:"text-button buy",onClick:()=>Ha(Rt==="ltd"?"pro":"ltd"),disabled:ne==="checkout"||Rt==="pro",type:"button",children:[l.jsx(pc,{size:16}),Kl]})]})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"File transfer"}),l.jsx("h3",{children:"Client destination folder"})]}),l.jsx(Cc,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Remote folder"}),l.jsx("input",{value:mt,onChange:x=>An(x.target.value),placeholder:"Desktop/LiveDeskFiles"})]}),l.jsx("p",{className:"settings-help",children:"Blank uses Desktop/LiveDeskFiles on each workstation."})]})]}),wall:l.jsx(P0,{children:l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Wall stream"}),l.jsx("h3",{children:"Frame delivery"})]}),l.jsx(Rc,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Frame mode"}),l.jsx("select",{value:Me.frameMode,onChange:x=>nn({frameMode:gh(x.target.value)}),children:yd.map(x=>l.jsxs("option",{value:x.id,children:[x.label," - ",x.detail]},x.id))})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"H.264 decode"}),l.jsx("select",{value:Me.h264DecodeAcceleration,onChange:x=>nn({h264DecodeAcceleration:Dd(x.target.value)}),children:ph.map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]}),l.jsxs("div",{className:"settings-field-grid",children:[l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"FPS"}),l.jsx("select",{value:Me.fps,onChange:x=>nn({fps:xh(x.target.value,Me.frameMode)}),children:Uh.filter(x=>x<=jw(Me.frameMode)).map(x=>l.jsx("option",{value:x,children:x},x))})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:nt?"Atlas tile":"Resolution"}),l.jsx("select",{value:nt?Or:zr,onChange:x=>nt?iu(x.target.value):al(x.target.value),children:(nt?Gm:wd).map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Quality"}),l.jsx("select",{value:Me.quality,onChange:x=>nn({quality:Va(x.target.value,20,95,ma.quality)}),children:Kx.map(x=>l.jsx("option",{value:x,children:x},x))})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Wall behavior"}),l.jsx("h3",{children:"Visibility and load"})]}),l.jsx(Zt,{size:20})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.autoStartLive,onChange:x=>nn({autoStartLive:x.target.checked})}),l.jsx("span",{children:"Auto live on connected screens"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.visibleOnlyLive,onChange:x=>nn({visibleOnlyLive:x.target.checked})}),l.jsx("span",{children:"Stream visible tiles first"})]}),!nt&&l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.adaptiveSizeByWall,onChange:x=>nn({adaptiveSizeByWall:x.target.checked})}),l.jsx("span",{children:"Fit stream size to Wall"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.adaptiveLoadShedding,onChange:x=>nn({adaptiveLoadShedding:x.target.checked})}),l.jsx("span",{children:"Reduce FPS under load"})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Me.showScreenStatus,onChange:x=>nn({showScreenStatus:x.target.checked})}),l.jsx("span",{children:"Screen status overlay"})]}),l.jsxs("div",{className:"settings-summary",children:[l.jsx("span",{children:lu.label}),l.jsxs("strong",{children:[Yt.maxWidth,"x",Yt.maxHeight," / ",qt,"fps"]})]}),l.jsxs("button",{className:"settings-reset",onClick:()=>ji(ma),type:"button",children:[l.jsx(Sc,{size:15})," Reset Wall settings"]})]})]})}),control:l.jsx(q0,{children:l.jsxs("div",{className:"settings-section-grid",children:[l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Control stream"}),l.jsx("h3",{children:"Low-latency delivery"})]}),l.jsx(hd,{size:20})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Frame mode"}),l.jsx("select",{value:Je.frameMode,onChange:x=>sl({frameMode:vh(x.target.value)}),children:tM.map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]}),Je.frameMode==="mode3-h264-hw"&&l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"H.264 decode"}),l.jsx("select",{value:Je.h264DecodeAcceleration,onChange:x=>sl({h264DecodeAcceleration:Dd(x.target.value)}),children:ph.map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]}),l.jsxs("div",{className:"settings-field-grid",children:[l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"FPS"}),l.jsx("select",{value:Je.fps,onChange:x=>sl({fps:Va(x.target.value,20,60,ha.fps)}),children:nM.filter(x=>Je.frameMode==="mode3-h264-hw"||x<=30).map(x=>l.jsx("option",{value:x,children:x},x))})]}),l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Resolution"}),l.jsx("select",{value:su,onChange:x=>Xl(x.target.value),children:qm.filter(x=>Je.frameMode==="mode3-h264-hw"||x.width<=1920).map(x=>l.jsx("option",{value:x.id,children:x.label},x.id))})]})]}),Je.frameMode==="mode3-h264-hw"&&l.jsxs("label",{className:"settings-field",children:[l.jsx("span",{children:"Quality"}),l.jsx("select",{value:Je.quality,onChange:x=>sl({quality:Va(x.target.value,20,95,ha.quality)}),children:Kx.map(x=>l.jsx("option",{value:x,children:x},x))})]})]}),l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Control behavior"}),l.jsx("h3",{children:"Session display"})]}),l.jsx(Jt,{size:20})]}),l.jsxs("label",{className:"settings-toggle",children:[l.jsx("input",{type:"checkbox",checked:Je.showScreenStatus,onChange:x=>sl({showScreenStatus:x.target.checked})}),l.jsx("span",{children:"Screen status overlay"})]}),l.jsxs("div",{className:"settings-summary control",children:[l.jsx("span",{children:Je.frameMode==="mode5-lzo-delta"?"Mode 5 tile delta":Je.frameMode==="mode2-lzo"?"Mode 2 RGB565":"Mode 3 H.264"}),l.jsxs("strong",{children:[Fn.maxWidth,"x",Fn.maxHeight," / ",vn,"fps"]})]}),l.jsxs("button",{className:"settings-reset",onClick:()=>fr(ha),type:"button",children:[l.jsx(Sc,{size:15})," Reset Control settings"]})]})]})}),agent:l.jsx(G0,{hubUrl:k}),captureGallery:l.jsx(MA,{hubUrl:k,onToast:me}),advancedExtras:l.jsxs("section",{className:"settings-section-card",children:[l.jsxs("div",{className:"settings-section-heading",children:[l.jsxs("div",{children:[l.jsx("span",{children:"Connection commands"}),l.jsx("h3",{children:"Developer setup"})]}),l.jsx(Xi,{size:20})]}),l.jsxs("div",{className:"settings-command-list",children:[l.jsxs("div",{className:"settings-command-row",children:[l.jsx("span",{children:"Client"}),l.jsx("code",{children:$a}),l.jsx("button",{className:"icon-button",onClick:()=>ar($a),title:"Copy client command",type:"button",children:l.jsx(Xi,{size:16})})]}),l.jsxs("div",{className:"settings-command-row",children:[l.jsx("span",{children:"Slot example"}),l.jsx("code",{children:`${$a} 3`}),l.jsx("button",{className:"icon-button",onClick:()=>ar(`${$a} 3`),title:"Copy slot command",type:"button",children:l.jsx(Xi,{size:16})})]}),l.jsxs("div",{className:"settings-command-row",children:[l.jsx("span",{children:"Hub"}),l.jsx("code",{children:Hi}),l.jsx("button",{className:"icon-button",onClick:()=>ar(Hi),title:"Copy Hub command",type:"button",children:l.jsx(Xi,{size:16})})]})]})]})}):Ml?l.jsxs("section",{className:"pricing-page",children:[l.jsxs("header",{className:"pricing-header",children:[l.jsxs("div",{children:[l.jsxs("span",{className:"pricing-eyebrow",children:[l.jsx(Zm,{size:15})," LiveDesk plans"]}),l.jsx("h2",{children:"Choose the plan that fits your wall"}),l.jsx("p",{children:"Start free with a local screen wall. Upgrade when you need ad-free monitoring, more workstations, or commercial controls."})]}),l.jsx("button",{className:"pricing-close",onClick:()=>ll("wall"),title:"Close pricing",type:"button",children:l.jsx(rr,{size:18})})]}),l.jsxs("div",{className:"pricing-status","aria-live":"polite",children:[l.jsx("span",{children:"Current plan"}),l.jsx("strong",{children:Uc.name}),l.jsxs("small",{children:[Xe.length,"/",eM(wr)," connected devices"]})]}),l.jsxs("div",{className:"pricing-cards","aria-label":"LiveDesk plans",children:[l.jsxs("article",{className:`pricing-plan-card ${Rt==="free"?"current":""}`,children:[l.jsxs("div",{className:"pricing-plan-topline",children:[l.jsx("span",{className:"pricing-plan-badge free",children:"Free"}),l.jsx("strong",{children:"$0"})]}),l.jsx("p",{className:"pricing-plan-audience",children:er.free.audience}),l.jsx("h3",{children:"Monitor your local wall"}),l.jsx("p",{children:er.free.note}),l.jsxs("ul",{children:[l.jsxs("li",{children:[l.jsx(On,{size:16})," Up to ",gc," devices"]}),l.jsxs("li",{children:[l.jsx(On,{size:16})," Live view and local control"]}),l.jsxs("li",{children:[l.jsx(On,{size:16})," Standard ad-supported banner"]})]}),l.jsx("span",{className:"pricing-current-label",children:Rt==="free"?"Current plan":"Included for everyone"})]}),l.jsxs("article",{className:`pricing-plan-card featured ${Rt==="ltd"?"current":""}`,children:[l.jsxs("div",{className:"pricing-plan-topline",children:[l.jsxs("span",{className:"pricing-plan-badge plus",children:[l.jsx(mS,{size:14})," Plus"]}),l.jsx("strong",{children:"$5"})]}),l.jsx("p",{className:"pricing-plan-audience",children:er.ltd.audience}),l.jsx("h3",{children:"Ad-free monitoring"}),l.jsx("p",{children:"More room for personal AI workstations without the standard banner."}),l.jsxs("ul",{children:[l.jsxs("li",{children:[l.jsx(On,{size:16})," Up to ",vc," devices"]}),l.jsxs("li",{children:[l.jsx(On,{size:16})," No standard ad banner"]}),l.jsxs("li",{children:[l.jsx(On,{size:16})," ",er.ltd.ltd]})]}),l.jsxs("button",{className:"pricing-plan-button",onClick:a?()=>Ha("ltd"):Hn,disabled:Rt!=="free"||ne==="checkout"||ne==="auth"||i||$,type:"button",children:[l.jsx(pc,{size:16}),Rt==="free"?a?"Choose Plus":"Sign in for Plus":"Plus active"]})]}),l.jsxs("article",{className:`pricing-plan-card pro ${Rt==="pro"?"current":""}`,children:[l.jsxs("div",{className:"pricing-plan-topline",children:[l.jsxs("span",{className:"pricing-plan-badge pro",children:[l.jsx(wn,{size:14})," Pro"]}),l.jsx("strong",{children:"$15"})]}),l.jsx("p",{className:"pricing-plan-audience",children:er.pro.audience}),l.jsx("h3",{children:"For serious operations"}),l.jsx("p",{children:"Commercial-ready monitoring for larger AI labs, studios, and teams."}),l.jsxs("ul",{children:[l.jsxs("li",{children:[l.jsx(On,{size:16})," 30+ workstation walls"]}),l.jsxs("li",{children:[l.jsx(On,{size:16})," Commercial use included"]}),l.jsxs("li",{children:[l.jsx(On,{size:16})," ",er.pro.ltd]})]}),l.jsxs("button",{className:"pricing-plan-button",onClick:a?()=>Ha("pro"):Hn,disabled:Rt==="pro"||ne==="checkout"||ne==="auth"||i||$,type:"button",children:[l.jsx(pc,{size:16}),Rt==="pro"?"Pro active":a?"Choose Pro":"Sign in for Pro"]})]})]}),l.jsxs("section",{className:"pricing-includes",children:[l.jsxs("div",{children:[l.jsx(Jt,{size:17}),l.jsx("span",{children:"Screen wall"}),l.jsx("strong",{children:"120+ slots"})]}),l.jsxs("div",{children:[l.jsx(hd,{size:17}),l.jsx("span",{children:"Focused control"}),l.jsx("strong",{children:"Local-first"})]}),l.jsxs("div",{children:[l.jsx(Dv,{size:17}),l.jsx("span",{children:"Remote audio"}),l.jsx("strong",{children:"Available"})]}),l.jsxs("div",{children:[l.jsx(Cc,{size:17}),l.jsx("span",{children:"File transfer"}),l.jsx("strong",{children:"Included"})]})]}),l.jsxs("p",{className:"pricing-note",children:[l.jsx(On,{size:15})," Commercial use requires Pro. Plus LTD is for personal, creator, and homelab use."]}),l.jsxs("button",{className:"pricing-primary-cta",onClick:a?()=>Ha(Rt==="ltd"?"pro":"ltd"):Hn,disabled:Xd,type:"button",children:[l.jsx(pc,{size:18}),nu]})]}):l.jsx(l.Fragment,{children:l.jsxs("section",{className:`monitor-layout ${Wn?"dock-collapsed":""}`,children:[l.jsxs("section",{ref:vr,className:`screen-wall-panel ${bl?"drop-active":""}`,onClick:x=>{x.currentTarget===x.target&&Zs()},onDragEnter:x=>{x.preventDefault(),gr(!0)},onDragOver:x=>{x.preventDefault(),x.dataTransfer.dropEffect="copy"},onDragLeave:x=>{x.currentTarget===x.target&&gr(!1)},onDrop:Dr,children:[nt&&l.jsx("canvas",{ref:_i,className:"atlas-source-canvas",width:Ys?.width||1920,height:Ys?.height||1080,"aria-hidden":"true"}),Ve?l.jsx("section",{className:"control-focus",children:l.jsxs("div",{className:"control-wall",children:[Te&&$i.length>1&&l.jsx("div",{className:"control-monitor-tabs","aria-label":"Select monitor",children:$i.map(x=>l.jsxs("button",{className:x.index===as?"active":"",onClick:()=>ql(Te.deviceId,x.index),title:vM(x),type:"button",children:[l.jsx("span",{children:x.name||`Display ${x.index+1}`}),x.width>0&&x.height>0&&l.jsxs("small",{children:[x.width,"x",x.height]})]},x.index))}),Te?l.jsx(Xm,{device:Te,frame:ke,selected:!1,controlEnabled:es&&de,showStatus:Je.showScreenStatus,monitorIndex:ta(At[Te.deviceId],Vn(Te)),monitorCount:Vn(Te),onSelect:()=>{},onFocusDevice:()=>Y(Te.deviceId),onOpenControl:()=>Ao(Te.deviceId),onCycleMonitor:x=>Rr(Te.deviceId,x),onCanvasReady:Ll,sendInput:Ul,presentationReady:ys},Te.deviceId):l.jsxs("div",{className:"control-empty",children:[l.jsx(Jt,{size:30}),l.jsx("strong",{children:"No workstation"}),l.jsx("span",{children:"Open a workstation from the Wall."})]}),Te&&!ys&&l.jsxs("div",{className:"control-connection-overlay",role:"status","aria-live":"polite",children:[P!=="error"&&l.jsx("span",{className:"control-connection-spinner","aria-hidden":"true"}),l.jsx("strong",{children:P==="error"?"Connection failed":"Connecting"}),l.jsx("small",{children:P==="error"?"See the notification for details. Reopen Control to retry.":Fl||Z?"Control stream is recovering. See the notification for details.":zi==="open"?"Preparing the first control frame":"Opening the Control stream"})]})]})}):nt?l.jsx("div",{className:`screen-wall atlas-slot-wall size-${Ge}`,onClick:x=>{x.currentTarget===x.target&&Zs()},children:Us.map((x,N)=>x?l.jsx(Xm,{device:x,frame:ts.get(x.deviceId),selected:Ja.has(x.deviceId),controlEnabled:!1,showStatus:Me.showScreenStatus,monitorIndex:ta(At[x.deviceId],Vn(x)),monitorCount:Vn(x),onSelect:()=>Bi(x.deviceId),onFocusDevice:()=>Xs(x.deviceId),onOpenControl:()=>Ao(x.deviceId),onCycleMonitor:L=>Rr(x.deviceId,L),onCanvasReady:jr,sendInput:Ul,updateIndicator:Zl(x.deviceId),presentationReady:Me.autoStartLive&&Oa.includes(x.deviceId)?Ea.has(x.deviceId):void 0,showPresentationSpinner:Me.autoStartLive&&Oa.includes(x.deviceId)},x.deviceId):l.jsx(sy,{index:N},`slot-${N}`))}):l.jsx("div",{className:`screen-wall size-${Ge}`,onClick:x=>{x.currentTarget===x.target&&Zs()},children:Us.map((x,N)=>x?l.jsx(Xm,{device:x,frame:ts.get(x.deviceId),selected:Ja.has(x.deviceId),controlEnabled:es&&de&&Te?.deviceId===x.deviceId,showStatus:Me.showScreenStatus,monitorIndex:ta(At[x.deviceId],Vn(x)),monitorCount:Vn(x),onSelect:()=>Bi(x.deviceId),onFocusDevice:()=>Xs(x.deviceId),onOpenControl:()=>Ao(x.deviceId),onCycleMonitor:L=>Rr(x.deviceId,L),onCanvasReady:Yc,sendInput:Ul,updateIndicator:Zl(x.deviceId),presentationReady:Me.autoStartLive&&Oa.includes(x.deviceId)?Ea.has(x.deviceId):void 0,showPresentationSpinner:Me.autoStartLive&&Oa.includes(x.deviceId)},x.deviceId):l.jsx(sy,{index:N},`slot-${N}`))}),l.jsx($M,{visible:Pc&&!Ve})]}),!Al&&l.jsxs("aside",{className:`right-dock actions-mode ${Wn?"collapsed":""}`,"aria-label":"LiveDesk tools",children:[l.jsx("button",{className:"dock-toggle",onClick:()=>Ci(x=>!x),"aria-label":Wn?"Show control panel":"Hide control panel",title:Wn?"Show control panel":"Hide control panel",type:"button",children:Wn?l.jsx(dy,{size:18}):l.jsx(Ch,{size:18})}),!Wn&&l.jsxs(l.Fragment,{children:[l.jsxs("section",{className:"action-dock",children:[l.jsxs("div",{className:"action-context",children:[l.jsx("span",{children:Ve?"Control target":Yl>0?"Selection":"No selection"}),l.jsx("strong",{children:Gi})]}),l.jsx("input",{ref:xr,className:"hidden-file-input",type:"file",multiple:!0,onChange:x=>{x.currentTarget.files&&Fa(x.currentTarget.files),x.currentTarget.value=""}}),l.jsxs("div",{className:"action-grid",children:[l.jsxs("button",{className:"action-tile primary",onClick:()=>Te&&Fi(Te.deviceId),disabled:!qc,type:"button",children:[l.jsx(Lv,{size:21}),l.jsx("span",{children:"Live"})]}),l.jsxs("button",{className:`action-tile ${de?"active":""}`,onClick:()=>Ne(x=>!x),disabled:!es,title:Vd?"Allow Accessibility for the terminal app that starts LiveDesk, then restart the Mac client.":es?"Remote keyboard and mouse control":"Remote control is not available on this workstation",type:"button",children:[l.jsx(hd,{size:21}),l.jsx("span",{children:Ba!=="idle"?Ba:"Control"})]}),l.jsxs("button",{className:`action-tile ${Ie?"active":""}`,onClick:Zn,disabled:!Gc,type:"button",title:El?"Remote PC audio":"Remote audio is not supported by this workstation yet",children:[l.jsx(Dv,{size:21}),l.jsx("span",{children:Ie&&Co!=="idle"?Co:"Audio"})]}),l.jsxs("button",{className:"action-tile",onClick:()=>xr.current?.click(),disabled:!Vt||(Ve?!Te:la.length===0),type:"button",title:"File transfer",children:[l.jsx(Cc,{size:21}),l.jsx("span",{children:"Files"})]}),l.jsxs("button",{className:"action-tile",disabled:!0,type:"button",title:"Reboot",children:[l.jsx(Sc,{size:21}),l.jsx("span",{children:"Reboot"})]}),l.jsxs("button",{className:"action-tile",disabled:!0,type:"button",title:"Power",children:[l.jsx(hS,{size:21}),l.jsx("span",{children:"Power"})]}),l.jsxs("button",{className:"action-tile",disabled:!0,type:"button",title:"Terminal",children:[l.jsx(hc,{size:21}),l.jsx("span",{children:"Shell"})]})]})]}),Te&&za&&l.jsxs("section",{className:"side-panel selected-panel",children:[l.jsxs("div",{className:"machine-detail-head",children:[l.jsxs("div",{className:"panel-title",children:[l.jsx(Jt,{size:17}),l.jsx("h2",{children:"Machine detail"})]}),l.jsx("span",{className:`machine-health state-${za.state}`,children:za.label})]}),l.jsxs("div",{className:"machine-title",children:[l.jsx("strong",{children:lr(Te)}),l.jsx("span",{children:za.role})]}),l.jsx("div",{className:"machine-metric-grid",children:za.metrics.map(x=>l.jsxs("article",{className:`machine-metric state-${x.state}`,children:[l.jsx("span",{children:x.label}),l.jsx("strong",{children:x.value}),l.jsx("small",{children:x.detail}),x.ratio!==void 0&&l.jsx("i",{children:l.jsx("b",{style:{width:`${Math.round(x.ratio*100)}%`}})})]},x.id))}),l.jsxs("section",{className:"machine-section",children:[l.jsxs("div",{className:"machine-section-title",children:[l.jsx(Zt,{size:15}),l.jsx("span",{children:"Stream"})]}),l.jsxs("dl",{className:"facts compact",children:[l.jsx("dt",{children:"Frames"}),l.jsx("dd",{children:Ro}),l.jsx("dt",{children:Ve?"Control RX":nt?"Atlas RX":"Wall RX"}),l.jsx("dd",{children:Qd}),l.jsx("dt",{children:"Painted"}),l.jsx("dd",{children:Jc}),l.jsx("dt",{children:Ve?"Encoded changes":"Visual samples"}),l.jsx("dd",{children:dn}),l.jsx("dt",{children:"Decoder"}),l.jsx("dd",{children:Nt}),l.jsx("dt",{children:"Decoder IO"}),l.jsx("dd",{children:ia}),l.jsx("dt",{children:"Canvas"}),l.jsx("dd",{children:Eo}),l.jsx("dt",{children:"Control buffer"}),l.jsx("dd",{children:Ts}),l.jsx("dt",{children:"Browser RAF"}),l.jsx("dd",{children:eu}),l.jsx("dt",{children:"Latency"}),l.jsx("dd",{children:it}),l.jsx("dt",{children:"Cadence"}),l.jsx("dd",{children:Ns}),l.jsx("dt",{children:"Source send"}),l.jsx("dd",{children:Gl}),l.jsx("dt",{children:"Packet mix"}),l.jsx("dd",{children:tu}),l.jsx("dt",{children:"Receive gap"}),l.jsx("dd",{children:Js}),l.jsx("dt",{children:"Paint gap"}),l.jsx("dd",{children:Do}),l.jsx("dt",{children:"Seq gap"}),l.jsx("dd",{children:Pi}),l.jsx("dt",{children:"Selected"}),l.jsx("dd",{children:fn}),l.jsx("dt",{children:"Requested"}),l.jsx("dd",{children:ls}),l.jsx("dt",{children:"Mode"}),l.jsx("dd",{children:qi}),l.jsx("dt",{children:"Chunk"}),l.jsx("dd",{children:is}),l.jsx("dt",{children:"Size"}),l.jsx("dd",{children:Rs}),l.jsx("dt",{children:"Native"}),l.jsx("dd",{children:Ms}),l.jsx("dt",{children:"Monitor"}),l.jsx("dd",{children:Lo}),l.jsx("dt",{children:"Source"}),l.jsx("dd",{children:_o}),l.jsx("dt",{children:"Input"}),l.jsx("dd",{children:Vl}),l.jsx("dt",{children:"Audio"}),l.jsx("dd",{children:el}),Ve&&l.jsxs(l.Fragment,{children:[l.jsx("dt",{children:"Visual feedback"}),l.jsx("dd",{children:_r})]})]})]}),l.jsxs("section",{className:"machine-section",children:[l.jsxs("div",{className:"machine-section-title",children:[l.jsx(hc,{size:15}),l.jsx("span",{children:"Local services"})]}),l.jsx("div",{className:"tool-probe-list",children:za.tools.map(x=>l.jsxs("span",{className:`tool-probe state-${x.status}`,children:[l.jsx("b",{children:x.label}),l.jsx("em",{children:x.detail})]},x.id))})]}),l.jsxs("section",{className:"machine-section",children:[l.jsxs("div",{className:"machine-section-title",children:[l.jsx(Cd,{size:15}),l.jsx("span",{children:"Workload"})]}),l.jsxs("div",{className:"workload-card",children:[l.jsx("strong",{children:za.taskLabel}),l.jsx("span",{children:za.taskStatus}),za.taskSummary&&l.jsx("p",{children:za.taskSummary})]})]}),l.jsxs("div",{className:"machine-section",children:[l.jsxs("div",{className:"machine-section-title",children:[l.jsx(Ev,{size:15}),l.jsx("span",{children:"System"})]}),l.jsxs("dl",{className:"facts compact",children:[l.jsx("dt",{children:"Platform"}),l.jsxs("dd",{children:[Te.platform||"-"," ",Te.arch||""]}),l.jsx("dt",{children:"Release"}),l.jsx("dd",{children:pa(Te.status,"release")||"-"}),l.jsx("dt",{children:"Uptime"}),l.jsx("dd",{children:Nw(It(Te.status,"uptimeSec"))}),l.jsx("dt",{children:"Last seen"}),l.jsx("dd",{children:lh(Te.lastSeenAt||Te.connectedAt)}),l.jsx("dt",{children:"Agent"}),l.jsx("dd",{children:Te.agentVersion||"-"}),l.jsx("dt",{children:"Address"}),l.jsx("dd",{children:Te.remoteAddress||"-"})]})]}),l.jsxs("button",{className:"text-button full",onClick:()=>Te&&Fi(Te.deviceId),disabled:!qc,type:"button",children:[l.jsx(Lv,{size:16}),"Start live"]})]})]})]})]})})]}),bs&&l.jsxs("aside",{className:`transfer-bar state-${bs.status}`,"aria-live":"polite",children:[l.jsx("span",{className:"transfer-bar-icon","aria-hidden":"true",children:bs.status==="queued"?l.jsx(On,{size:18}):bs.status==="failed"?l.jsx(rr,{size:18}):l.jsx(iy,{size:18})}),l.jsxs("div",{className:"transfer-bar-copy",children:[l.jsx("p",{children:bs.message}),l.jsx("div",{className:"transfer-bar-track",children:l.jsx("span",{style:{width:`${Math.max(0,Math.min(100,bs.progress))}%`}})})]}),l.jsxs("strong",{children:[Math.max(0,Math.min(100,bs.progress)),"%"]})]}),oe&&l.jsxs("aside",{className:"livedesk-toast",role:"alert","aria-live":"assertive",children:[l.jsx("span",{children:oe.message}),l.jsx("button",{className:"livedesk-toast-close",onClick:()=>me(""),type:"button","aria-label":"Dismiss notification",title:"Dismiss notification",children:l.jsx(rr,{size:15})})]})]})}function PM(){if(typeof window>"u")return[];const n=window.location.origin;return window.location.port==="5198"||window.location.port==="5179"?[n]:["http://127.0.0.1:5198","http://127.0.0.1:5179"]}function qM(){const n="".trim().toLowerCase(),a=n==="hub"?"hub":"client",[i,r]=f.useState(a);return f.useEffect(()=>{if(n==="client"||n==="hub")return;let c=!1;return(async()=>{for(const m of PM())try{const p=await fetch(`${m}/api/runtime`,{cache:"no-store"});if(!p.ok)continue;const g=(await p.json()).role==="client"?"client":"hub";c||r(g);return}catch{}})(),()=>{c=!0}},[n]),i==="client"?l.jsx(AS,{}):l.jsx(UM,{})}SS.createRoot(document.getElementById("root")).render(l.jsx(f.StrictMode,{children:l.jsx(qM,{})}));
|